09 2011 档案
摘要:今日公司一个网络共享盘600G,活生生的被我们塞满到了只剩下300MB,我就在想如何可以从中释放出更多的空间来。共享盘的使用时间有很多年,其中必定有很多文件其实是重复的,被不同的人存了好几份,久而久之就导致了硬盘空间的极度浪费。我们平时在自己电脑中可能也会存在这种文件,特别是mp3啊,图片啊啥么的。
为了解决这个问题,我写了一个简单的小程序来遍历制定的目录,并找出其中相同的两个文件。想法很简单,遍历目录下的所有文件(包含所有子目录),算出遍历到的文件的MD5值,如果有多个文件的MD5值相等就说明这几个文件就是冗余的。说白了这个程序主要就三个主要功能需要实现:遍历目录 + 计算MD5值 + 找到相等后处理。
核心代码如下,利用递归的方法遍历制定目录下的所有文件,并计算哈希值。
///
/// A Recursive way to traverse all file in
阅读全文
摘要:C#中有一个String类,有一个string类型,有一个StringBuilder类用来操作字符串,对于初学者来说这三个东西往往很容易产生困扰。
string 类型表示一个字符序列(零个或更多 Unicode 字符)。string 是 .NET框架中 String类的别名。所以说string和String在本质上并没有什么区别。String对象是一个不可变的,对象创建完以后其中的内容就不能够进行修改,当我们对一个已经创建好的String对象进行复制的时候,实际上返回的是一个包含修改完内容的新的对象。原来的对象所对应的那块内存就变为垃圾内存,会被GC给回收。所以说string类型是不能够真正修改其中的值的。
阅读全文
摘要:之前在用LINQ TO SQL 时使用过 “=>”运算符来进行数据的操作,当时不是很明白这个运算符的来源。今天碰到一段代码也使用这个运算符,甚是好奇。
这个运算符是C#3.0之后才加进来的,是Lambda运算符,该运算符读作”goes to”。该运算符左边是输入的参数,右边可以是一个语句也可以是一个程序块。Lambda表达式是用来写一个匿名的函数,也可以当作一个匿名函数传入到另一个函数中被其使用。
在介绍Lambda表达式之前,先了解一下在Lambda出现之前,C#中是如何将函数作为参数传递给方法的。我举一个排序的例子来说明这个方法。
阅读全文
摘要:众所周知,C++项目的编译时间一般都很就,稍微大一点的项目完全编译可能就需要几十分钟,有的可能需要好几个小时甚至更久。这对于现在的开发人员来说是非常难以忍受的一件事情!所以就有人开发了一种叫做分布式编译的东西,这个东西的思想其实很简单,就是把一个项目中的没有依赖关系的工程分给不同的机器进行同时编译,编译完以后把编译出来的结果传回来。这样的话理论上来说,如果网络内可用的空闲机器数量足够,编译时间可以缩短到一个很短的范围内。但是不排除网络通信上的影响因素。
阅读全文