摘要: http://msdn.microsoft.com/zh-sg/magazine/ee291528.aspx 阅读全文
posted @ 2014-02-08 13:49 jiangfei5945 阅读(131) 评论(0) 推荐(0) 编辑
摘要: 转载 http://www.jb51.net/article/31042.htm 阅读全文
posted @ 2014-01-19 10:58 jiangfei5945 阅读(106) 评论(0) 推荐(0) 编辑
摘要: 多态的实现序列化,乍一听有点蒙,其实就是序列化的时候序列化子类,反序列化的时候能多态的反序列化出子类来。举例来说,下面的代码,定义了三个类ClassToSerialize是父类,ConcreteClassToSerializeA 和ConcreteClassToSerializeB 子类。当我们序列化是序列化ConcreteClassToSerializeA,反序列化的时候我们希望反序列化出ConcreteClassToSerializeA对象,而不是ConcreteClassToSerializeB ,更不是ClassToSerialize。 [Serializable] [Xm... 阅读全文
posted @ 2013-12-20 13:15 jiangfei5945 阅读(1799) 评论(0) 推荐(0) 编辑
摘要: 1.安装Git Extensions下载地址:http://gotgit.github.com/gotgithub/10-appendix/030-install-on-windows-cygwin.html记得下载带complere字样的安装包,我的安装包名称是GitExtensions244SetupComplete,可以搜一下下载。开始安装后,一路点确定,记得勾选msysGit 和 KDiff3。2.安装Git Source Control Provider因为这是vs的一个插件,所以需要在vs里安装,点击工具=》Extension Manager搜索Git Source Control 阅读全文
posted @ 2013-11-18 15:58 jiangfei5945 阅读(2947) 评论(0) 推荐(0) 编辑
摘要: var是c# 3.0新加的特性,叫做隐式类型局部变量,大家都知道c#其实是一种强类型的语言,为什么会引入匿名类型呢?我猜测是因为linq的原因吧,因为感觉var在linq中被大量使用。下面说下var优缺点。优点:coder不用在关心变量的实际类型,编译器会为我们选择最合适的类型。 省去了using的引用。缺点:代码的可读性降低 如它的名字,不能用来声明为字段和属性,不能做参数传递。适用场景:个人认为,凡是能明确知道类型的还是用具体的类型声明,这样的话敲代码的麻烦一些,但方便以后的阅读和维护; 不知道具体类型的,例如匿名类型,ling可以用var。 阅读全文
posted @ 2013-11-08 14:55 jiangfei5945 阅读(1940) 评论(0) 推荐(0) 编辑
摘要: 之前认真的研究过并发和并行,个人感觉并发是同时处理不同的任务,并行是同时处理同一个任务。概念略显抽象,举例来说。衡量一个接口性能好坏的一个关键指标叫做用户并发数,何为用户并发数呢,其实就是一个接口同时可支持的最大访问数,拿webservice的用户并发量其实就是iis的并发数,其实就是来一个请求iis起一个线程,并发量就是iis可以启用的最大线程数。再来说并行,最典型的属hadoop和.net的TPL,都是来了一个任务,把任务拆分成查分成小的任务,多个小任务同时执行,最后把执行结果汇总,其实就是算法中的分治法。hadoop和.net的TPL的不同点就是,hadoop是把小任务放在不同的机器上跑 阅读全文
posted @ 2013-11-08 10:06 jiangfei5945 阅读(243) 评论(0) 推荐(0) 编辑
摘要: 类型的转换在日常的变成中是经常被用到的,我们最常用的类型转换的方法就是Convert和Parse,下面来说一下这两者null值处理的区别。 int i1 = Convert.ToInt32(null);//i1=0 int i2 = Int32.Parse(null);//throw an expection:Value cannot be null.由此可见,Convert对null值是有容错的,如果是null则返回0,而Parse没有做容错,会抛出异常。多说一句。 object obj = null; ... 阅读全文
posted @ 2013-11-01 15:39 jiangfei5945 阅读(391) 评论(0) 推荐(0) 编辑
摘要: Clever response Dave, but insufficient. I'll admit I've suggested this myself for certain questions but I think more is needed here. The OP may run one query where count(*) and count(1) return the same result and have the same performance, but that doesn't mean they always will. Similarl 阅读全文
posted @ 2013-10-30 13:48 jiangfei5945 阅读(175) 评论(0) 推荐(0) 编辑
摘要: 1.定义的委托和方法 delegate void TestDelegate(string s); static void M(string s) { Console.WriteLine(s); }2.常规委托:// Original delegate syntax required // initialization with a named method. TestDelegate testdelA = new TestDelegate(M);3.匿名方法 // C# 2.0: A delegate can be initi... 阅读全文
posted @ 2013-10-29 15:29 jiangfei5945 阅读(328) 评论(0) 推荐(0) 编辑
摘要: 事件功能:当某个动作发生时,能够回调一些方法来达到执行一系列操作的功能。原理:委托是方法的接口,定义了方法的规范,包括参数和返回值,这样也是为了安全的回调,而事件是委托的实力,一个事件被定义后可以被多次实例化(+=),这就依赖一个叫委托链的概念,通过调用委托可顺次调用一些列的方法。道理讲明白了,不在罗搜,开始上代码。1.定义委托public delegate void PropertyChangedEventHandler(object sender, PropertyChangedEventArgs e);2.定义事件public event PropertyChangedEventHand 阅读全文
posted @ 2013-10-24 15:56 jiangfei5945 阅读(441) 评论(0) 推荐(0) 编辑