随笔分类 -  C#

语言基础,如正则表达式、序列化、委托、事件、反射、泛型、线程等等
Request 接收参数乱码原理解析三:实例分析
摘要:通过前面两篇《Request 接收参数乱码原理解析一:服务器端解码原理》和《Request 接收参数乱码原理解析二:浏览器端编码原理》,了解了服务器和浏览器编码解码的原理,接下来结合项目中遇到的具体问题,分析乱码问题的解决方法。 1.用户身份验证Cookie乱码问题 用户登录后,通常用Co... 阅读全文
posted @ 2014-12-30 22:35 陈晨 阅读(3413) 评论(2) 推荐(0) 编辑
Request 接收参数乱码原理解析二:浏览器端编码原理
摘要:上一篇《Request 接收参数乱码原理解析一:服务器端解码原理》,分析了服务器端解码的过程,那么浏览器是根据什么编码的呢? 1. 浏览器解码 浏览器根据服务器页面响应Header中的“Content-Type: text/html;charset=gb2312”解码。修改web.co... 阅读全文
posted @ 2014-12-24 22:29 陈晨 阅读(28234) 评论(0) 推荐(2) 编辑
Request 接收参数乱码原理解析一:服务器端解码原理
摘要:“Server.UrlDecode(Server.UrlEncode("北京")) == “北京””,先用UrlEncode编码然后用UrlDecode解码,这条语句永远为true吗?答案是否定的,结果可能与很多人预想的不大一样。本文主要分析这一问题出现的原理,研究下Server.UrlEn... 阅读全文
posted @ 2014-12-18 22:15 陈晨 阅读(21923) 评论(10) 推荐(5) 编辑
Newtonsoft.Json(Json.Net)学习笔记
摘要:Newtonsoft.Json,一款.NET中开源的Json序列化和反序列化类库(下载地址http://json.codeplex.com/)。下面是Json序列化和反序列化的简单封装: /// /// Json帮助类 /// public class JsonHelp... 阅读全文
posted @ 2014-12-13 23:07 陈晨 阅读(164729) 评论(17) 推荐(33) 编辑
List和Dictionary泛型类查找效率浅析
摘要:List和Dictionary泛型类查找效率存在巨大差异,前段时间亲历了一次。事情的背景是开发一个匹配程序,将书籍(BookID)推荐给网友(UserID),生成今日推荐数据时,有条规则是同一书籍七日内不能推荐给同一网友。 同一书籍七日内不能推荐给同一网友规则的实现是程序不断优化的过程,... 阅读全文
posted @ 2014-12-10 22:55 陈晨 阅读(17539) 评论(8) 推荐(3) 编辑
XML解析文件出错解决方法
摘要:在解析xml时,经常因为文件中含特殊字符而解析失败。原因有两个:一是内容中含有XML预定义好的实体,二是内容中含有低位非打印字符。 1.内容中含有xml预定好的实体,如“<”和“&”,对xml来说是禁止使用的,针对这种字符,解决方式是使用CDATA部件以"<![CDATA[" 标记开始,以"]]>"标记结束,是CDATA内部内容被解析器忽略。具体说明参考《XML CDATA是什么?》。 2.内容中含有低位非打印字符,解析时会报错:""(十六进制值 0x1D)是无效的字符.加载或保存XML时引发的异常.Syst 阅读全文
posted @ 2013-02-28 18:29 陈晨 阅读(47666) 评论(0) 推荐(0) 编辑
合并DataTable并排除重复数据的通用方法
摘要:网上合并DataTable通用方法的文章很多,结合项目开发中的常用需求,并借鉴网上的做法,写了一个合并DataTable的通用方法,主要功能是合并两个DataTable(结构可以不同,如字段不完全一致),并可以根据某一列值进行排重处理。代码如下:View Code ///<summary> /// 将两个列不同的DataTable合并成一个新的DataTable ///</summary> ///<param name="dt1">源表</param> ///<param name="dt2"... 阅读全文
posted @ 2011-11-25 22:04 陈晨 阅读(6668) 评论(1) 推荐(0) 编辑
小心枚举陷阱
摘要:枚举类型无疑给我们开发带来了很大的方便,智能感应+代码可读性就让我们有足够的理由在项目开发中使用枚举类型。但枚举类型使用不当也存在着温柔陷阱,而且陷阱很难发现,让我们一点一点解开隐藏在枚举类型背后的陷阱。 阅读全文
posted @ 2010-07-18 11:14 陈晨 阅读(3329) 评论(15) 推荐(3) 编辑
C#正则表达式类Match和Group类的理解
摘要:正则表达式可以看做一种有特定功能的小型编程语言,它很重要的一个应用就是在文本中提取字符串,这一功能的实现主要是靠Match类和Group类,因此理解匹配和组的概念至关重要。 阅读全文
posted @ 2008-08-30 14:02 陈晨 阅读(15871) 评论(2) 推荐(8) 编辑
多线程:如果在调用线程时传递参数
摘要:使用.NET我们可以很容易的创建一个线程,但是它提供的创建线程和启动线程的方法没有明显的提供参数,假如我们要用线程来启动类里面一个带参数的方法该怎么办?本文重要介绍三种方法:1.利用类的构造函数,2.用ThreadPool类,3.利用ParameterizedThreadStart委托实例化Thread类。 阅读全文
posted @ 2008-08-28 23:38 陈晨 阅读(8092) 评论(3) 推荐(2) 编辑
小心VB.NET中的除运算符"/"和"\"
摘要:VB.NET中除运算符有两种,普通除"/"和整数除"\",如果我们写程序时不注意两者的区别,很容易造成潜在的错误,这种错误很隐蔽,不容易被发现。而且VB.NET中类型转换和C#差别很大,应该引起我们足够的重视,这些看似微不足道的细节却直接关系都我们代码的健壮性。 阅读全文
posted @ 2008-08-27 00:06 陈晨 阅读(17337) 评论(1) 推荐(1) 编辑
多线程:C#线程同步lock,Monitor,Mutex,同步事件和等待句柄(下)
摘要:在对线程同步机制lock,Monitor,同步事件EventWaitHandler,互斥体Mutex的基本用法有了一定了解的基础上,我们对它们用法进行比较,并给出什么时候需要锁什么时候不需要的几点建议。最后,介绍几个FCL中线程安全的类,集合类的锁定方式等,做为对线程同步系列的补充。 阅读全文
posted @ 2008-08-07 00:10 陈晨 阅读(5777) 评论(1) 推荐(2) 编辑
多线程:C#线程同步lock,Monitor,Mutex,同步事件和等待句柄(中)
摘要:抛开.NET环境看线程同步,无非是执行两种操作:一是互斥/加锁,目的是保证临界区代码操作的“原子性”;另一种是信号灯操作,目的是保证多个线程按照一定顺序执行,如生产者线程要先于消费者线程执行。本篇继续介绍WaitHandler类及其子类Mutex,ManualResetEvent,AutoResetEvent的用法。 阅读全文
posted @ 2008-07-30 01:08 陈晨 阅读(4781) 评论(1) 推荐(1) 编辑
多线程:C#线程同步lock,Monitor,Mutex,同步事件和等待句柄(上)
摘要:本文从Monitor,Mutex,ManualResetEvent,AutoResetEvent,WaitHandler的类关系图开始,希望通过本篇的介绍能对常见的线程同步方法有一个整体的认识,而对每种方式的使用细节,适用场合不会过多解释。 阅读全文
posted @ 2008-07-29 22:08 陈晨 阅读(8088) 评论(5) 推荐(1) 编辑
委托和事件:从猫和老鼠的故事看事件
摘要:1.委托的含义:(MSDN)A delegate declaration defines a reference type that can be used to encapsulate a method with a specific signature.Adelegate instance encapsulates a static or an instance method.Delegate... 阅读全文
posted @ 2008-07-17 21:40 陈晨 阅读(2392) 评论(6) 推荐(0) 编辑
HttpContext.Current.Cache vs. HttpRuntime.Cache
摘要:.NET中Cache有两种调用方式:HttpContext.Current.Cache 和 HttpRuntime.Cache,这两种方式有什么区别呢?我们先看MSDN上的解释: HttpContext.Current.Cache:为当前 HTTP 请求获取Cache对象。 HttpRuntime.Cache:获取当前应用程序的Cache。 阅读全文
posted @ 2008-07-15 23:47 陈晨 阅读(7985) 评论(6) 推荐(2) 编辑