在使用LINQ的时候常常会用到Distinct()方法来获取一个List中不重复的元素.对于简单的元素,如string,int等类型可以直接使用无参数的Distinct()方法.但是如果需要对复杂的类型元素进行Distinct操作,就需要自己实现IEqualityComparer接口. IEqualityComparer有两个方法,一个是Equals()方法,一个是GetHashCode()方法.对于Equals()方法很好理解,用来比较两个元素是否相等,但是对于GetHashCode()就不那么容易理解了.很多人认为这个方法不重要,直接返回对象或者的GetHashCode(),或者随便返回一个常数就可以了.而且这样写似乎有时候也能够正常工作.那么GetHashCode()方法真的不重要吗?事实上,正确的GetHashCode()方法必须是能够跟Equals()方法匹配的.我们来设计一个实验来验证一下. 首先我们新建一个Item类: ?View Code CSHARP public class Item { public int ID { get; set; } public string Value { get; set; } } 然后用建个不同的类来实现IEqualityComparer接口: 第一个,直接返回对象的GetHashCode() ?View Code CSHARP public class CompareWithObjHashCode : IEqualityComparer { public bool Equals(Item x, …

继续阅读 »

posted @ 2011-12-07 20:15 KunZhu 阅读(42) 评论(0) 编辑
这两天写了个东西,使用html 的控件<input type="file">上传文件,在后台使用Request.Files获取文件.在chrome上可以正常工作,但是在IE和firefox上始终都无法工作.后来发现我把enctype="multipart/form-data"写错了中间少了一横,写成了enctype="multipart/formdata" . 而且在解决这个问题的过程中还发现,在IE和firefox下还必须为input设置name属性才能正常上传文件,而chrome却不需要.chrome的容错性实在是太强大了!
posted @ 2011-10-18 11:53 KunZhu 阅读(25) 评论(0) 编辑
今天在用asp.net mvc做一个给上传图片加水印的功能时,发现使用WebImage.GetImageFromResponse()始终返回null,而Response.Files集合里面确是有上传的文件的.后来google了很久,终于找到了这篇帖子 原来这是WebImage的一个bug,在使用这个方法的时候,文件名的扩展是大小写敏感的,它只支持小写的.jpg,.gif等等,如果电脑上存的图像文件是大写的扩展名,传上去它就不认了...还真是个很奇怪的bug.目前也没有比较好的解决方法,只能自己手动去实现一个从request中取得image文件的方法: ?View Code CSHARP public static class WebImageUtil { public static WebImage GetImageFromRequest(HttpRequestBase request, string fileName=null) {   if (request.Files.Count == 0) { return null; }   try { HttpPostedFileBase postedFile; if (fileName == null) { postedFile = …

继续阅读 »

posted @ 2011-10-15 12:06 KunZhu 阅读(10) 评论(0) 编辑
python是一种动态语言,变量不需要预先声明,因此我们可能常常会写出以下代码: ?View Code PYTHONtry: f = open('1.txt','r') s=f.read() except Exception as e: print e finally: f.close() 当1.txt存在时,这段代码能够正常运行,但是当f不存在导致异常时,运行finally代码块中的代码会抛出另外一个异常: NameError: name 'f' is not defined 由于python无法预先声明变量,所以我们无法在try前面先定义f为文件类型,但是我们可以这样解决这个问题: ?View Code PYTHONf=None try: f = open('2.txt','r') s=f.read() except Exception,e: print e finally: if f is …

继续阅读 »

posted @ 2011-08-17 12:23 KunZhu 阅读(4) 评论(0) 编辑
工作后用了这么久的XML,在今天对一个XML使用XPath查询的时候,始终查不到所需的node,调试了好久,才发现是XML namespace的影响. 例如对于以下这个XML: ?View Code XML<books> <book author ="Bill Gates"> <name> Wihdows </name> </book> <book author ="Steve Bob"> <name> Apple </name> </book> </books> 使用XPath "/books/book" 是可以查询到两个book节点的,但是如果给这个XML加上namespace: ?View Code XML<books xmlns="http://www.example.com"> <book author ="Bill Gates"> <name> Wihdows </name> </book> <book author …

继续阅读 »

posted @ 2011-07-20 20:06 KunZhu 阅读(8) 评论(0) 编辑
posted @ 2011-05-29 11:26 KunZhu 阅读(8) 评论(0) 编辑
posted @ 2011-04-11 13:56 KunZhu 阅读(14) 评论(0) 编辑
posted @ 2011-03-16 21:29 KunZhu 阅读(6) 评论(0) 编辑
posted @ 2011-03-03 15:32 KunZhu 阅读(21) 评论(0) 编辑
posted @ 2011-03-02 21:41 KunZhu 阅读(5) 评论(0) 编辑