题目来源: syu练习题
基准时间限制:1 秒 空间限制:131072 KB 分值: 5 难度:1级算法题
“排序相减”操作是指对于任意一个四位数n,将四个数字分别进行顺序排序和逆序排序,得到两个数取相减后结果的绝对值n1,然后继续将n1中的四个数字进行顺序排序和逆序排序,得到两个数取相减后结果的绝对值n2,以此类推,最后总会得到一个数字黑洞,无法跳出。
例如:样例2中4176 = 6532 - 2356
最近开始阅读陆敏技先生在机械工业出版社出版的《编写高质量代码:改善C#程序的157个建议》一书,打算把其中涉及的所有的观点做一下总结和分析,用于总结和事后翻阅,如果有侵权请联系我删除。
在自己编写的代码中,应当尽可能地避免编写不必要的装箱代码。
1 | var str1 = "str1" + 9; |
第一句代码中,+ 连接时是将 值类型 int 转换为 引用类型 string 之后在进行 Concat 操作,故而性能更差。
装箱之所以带来性能损耗的原因是,装箱需要以下三个步骤:
频繁的进行字符串的拼接操作时,最好使用 StringBuilder,字符串的任何方法或者进行任何运算都会在内存中创建一个新的字符串对象。
1 | public void A2(object obj) |
Parse 和 TryParse 如果执行成功,他们的效率在一个数量级上,但如果执行失败,Parse 方法在转化失败的时候会引发异常,极大地消耗效率,而 TryParse 并不会。
业务需求中,int 类型的字段在无意义时在业务上为 null 比它的默认值 0 更为合适。
1 | static class Program |
开始做的时候也遇到了奇葩的情况、创智提供的dll只能在有UI的Winform、WPF上使用,WebForm、WPF、WebService完全没办法使用,Console在加上了[STAThread]的线程Attribute之后也可以成功调用,推测和dll使用MFC编写有关、但是各种引入MFC的dll均无果,一筹莫展之际把问题提到了交流群里,吾乐吧的牛总给出了可行的解决方案—-使用WCF来调用。
有了具体解决方案一切就顺风顺水了,但是完成程序之后又出现了奇葩的问题,部署到服务器也会出现外部组件异常的问题,本机调试可以部署却不行,很明显就是环境的问题了,由于dll为非托管dll,我们无法从错误中得到有效的错误信息,从环境下手尝试解决,虽然最终成功了,但是目前还并不清楚到底是因为什么,这里的经验是MSSOAP、MSXML、WebMatrix一定要装,如果还是不能成功运行可以考虑安装VS环境试试看。期待能有高手给出具体的解决之道。
1 | //声明和需进行跨线程调用的方法相同形参表的委托 |
流程清晰之后,我们就可以制作软件来对网盘地址链接批量处理得到下载链接。
redhat 的更新包只对注册的用户生效,所以我们需要自己手动更改成CentOS 的更新包,CentOS几乎和redhat是一样的,所以无需担心软件包是否可安装,安装之后是否有问题。