随笔分类 - [01-1].NET
摘要:BitBlt 该函数对指定的源设备环境区域中的像素进行位块(bit_block)转换,以传送到目标设备环境。 BitBlt 该函数对指定的源设备环境区域中的像素进行位块(bit_block)转换,以传送到目标设备环境。 函数原型 [DllImport("gdi32.dll")] public sta
阅读全文
摘要:注:该随笔受启发于《重构与模式》 第七章 第7.6小节用Command替换条件调度程序 。对于Command不做过多解释,这里我找了两个例子、供部分园友参阅:Command例子1Command例子2。条件调度程序:我对这个名词的理解为,它是相对简单的选择结构 与 相对独立的业务逻辑的结合体。话不是很...
阅读全文
摘要:一、64位系统中的注册表以 LocalMachine 中的启动项为例: 64位应用的注册表位置还是在:SOFTWARE\Microsoft\Windows\CurrentVersion\Run而 32位应用的注册表位置却是在:SOFTWARE\Wow6432Node\Microsoft\Windo...
阅读全文
摘要:上一篇随笔.NET 扩展方法 (一)已经对 扩展方法有了大致的介绍,这篇算是一个补充,让我们来看一下扩展方法的几个细节:一、扩展方法具有继承性当使用扩展方法扩展一个类型的时候,其也扩展了派生类,所以上一篇的遗留问题“如果给object添加一个扩展方法会出现什么效果呢?” 的答案就是——所有类型都将扩...
阅读全文
摘要:我还记得刚刚学编程的时候,老师经常会提到一句话:注意空指针。所以经常在某些“入口”位置,进行代码校验,空指针的判断就是其中的一项工作。string类型作为常用的数据类型,它在项目中出现的机率极高,所以往往会有如下的代码片段: // str 是 string 类型 ...
阅读全文
摘要:委托和事件是什么呢,他们之间有什么异同呢? 委托由delegate关键字进行定义,它是一种特殊的类型。 委托可以像其他类型那样进行定义,也可以像其他类型那样通过参数进行传递,更可以做为方法返回值类型和属性类型。 又由于委托在本质上保存的是方法指针(在保存方法指针的同时,如果是实例化方法、还会保存其对
阅读全文
摘要:呵呵,由于正则不熟,所以另谋出路——利用XML去解析html。要想将抓取到的数据(直接抓取到的是byte[]) 转为XML文档(即XMLDocument对象),有两个要点:一、判断编码(http头 charset 在某些网站上是不准确的)我利用的是 第三方的一开源项目去判断编码的,效果还不错:链接。二、将html转为XHTML我利用的是 : SgmlReaderDll.dll ,微软提供的,虽然不是100%的准确,但是足以满足 轻量级的商业需求 。核心代码如下: public class XHtmlTools { private const string RegBod...
阅读全文
摘要:编码、乱码一直算是一大问题,是几乎不能精确识别的。在这里有一开源项目,可用来检测编码,识别率还算可观。http://code.google.com/p/nuniversalchardet/有编码识别方面需求的朋友可以试试。如果code.google.com 不可以访问,这里也有源码。http://files.cnblogs.com/08shiyan/UniversalCharDet.rar
阅读全文
摘要:时候我们需要在内存中转换Image格式到Icon 根据经验,通常我们应该可以这样做 Image image = xxxx;///假设这里已经有一个Image对象 System.IO.MemoryStream mStream = new System.IO.MemoryStream();///创建内存流 image.Save(mStream, System.Drawing.Imaging.ImageFormat.Icon); Icon icon = Icon.FromHandle(new Bitmap(mStream).GetHicon()); mStream.Close(); 但这里在imag
阅读全文
摘要:publicstaticWebResponseGetResponseNoCache(Uri uri){ // Set a default policy level for the "http:" and "https" schemes. HttpRequestCachePolicy policy =newHttpRequestCachePolicy(HttpRequestCacheLevel.Default); HttpWebRequest.DefaultCachePolicy= policy; // Create the request. WebReq
阅读全文
摘要:铁血规则:事件预订与取消预订 在编码的时候,我们经常预订某个事件来处理它,但很少取消事件的预订,这种做法可能导致程序在运行时出现一些异常。 如果你的某个用于处理事件的对象不是在运行期内永久存在的(比如,不是Singleton对象),那么请记住一条规则:在该对象(事件预订者)的生命周期中只要预订了其他对象(事件发布者)的事件,那么在该对象释放时,一定要取消这些事件的预订。否则,在预订者被释放后,发布者仍然保持着预订者的引用,在对应的事件被触发时,发布者仍然会持有预订者的引用(导致内存泄露),并且调用预订者的处理函数,而由于预订者已经被释放,所以可能引发莫名其妙的问题。(这条规则很早就总结出来了.
阅读全文
摘要:三、农历类的使用既然.net框架不支持直接将日期转换成农历格式的字符串,那么要将显示农历格式的日期,就只要自已写代码了。不过由于已经有了ChineseLunisolarCalendar类实现了公历转换为农历日期的功能,所以要写这样的代码也比较简单。需要用到ChineseLunisolarCalendar以下几个主要方法:int GetYear (DateTime time) 获取指定公历日期的农历年份,使用的还是公历纪元。在每年的元旦之后春节之前农历的纪年会比公历小1,其它时候等于公历纪年。虽然农历使用传说中的耶稣生日纪元似乎不太妥当,不过我们确实已经几十年没有实行一个更好的纪年办法,也只有将
阅读全文
摘要:还记得上一次的猜测了windows右键菜单 “发送到 Evernote”的功能实现方案,呵呵,今天又猜了一次,不过换成了IE右键菜单。我想任何一个不明白其中原理和实现方案的人、在刚遇到这个问题时肯定是“丈二的和尚”——摸不着头脑。我也是这样、一头雾水,不过还大概的有点头绪,就是弄清楚“Add To Evernote”用到了哪些东西、那些文件,然后再和其他应用程序的相似功能进行对比,这样就能把“狐狸尾巴”揪出来了。开始揪尾巴…打开360安全卫士,找功能大全,里面有一项叫“右键菜单管理”的功能。嘿嘿,这招有点狠,尾巴立马被抓到了,如下图:右键菜单.png (39.21 KiB) 被浏览 1 次我的
阅读全文
摘要:在某些情况下(例如通过网络访问数据),常常不希望程序卡住而占用太多时间以至于造成界面假死。在这时、我们可以通过Thread、Thread + Invoke(UI)或者是 delegate.BeginInvoke 来避免界面假死,但是这样做时,某些代码或者是某个方法的执行超时的时间还是无法操控的。那么我们又是否有一种比较通用的方法、来设定某一个方法的执行超时的时间,让其一旦超过指定时间则跳出指定方法、进而继续向下执行呢?答案当然是肯定的。delegate.BeginInvoke可以实现代码代码的异步执行,在这种情况下,只要让程序可以等待一个Timespan,如果在Timespan到达之前方法内的
阅读全文
摘要:如果你在使用vs2010的.net4.0运行不了.net2.0项目的话,可以来看看本文。由于 .NET 4.0 使用新版本的 CLR,变化也不少,例如:mscoree.dll 变为 mscoree.dll 和 mscoreei.dll,mscorwks.dll 变为 clr.dll,mscorjit...
阅读全文
摘要:昨天经过网友提醒,提取汉字拼音的方法可以使用微软的一个类库 Visual Studio International Pack ,今天试了一试,确实好用!下面分享下使用方法:首先下载Visual Studio International Pack 2.0,官方下载地址:http://www.microsoft.com/downloads/zh-cn/details.aspx?FamilyID=7D1DF9CE-4AEE-467F-996E-BEC826C5DAA2。1.0 SR1 下载地址:http://www.microsoft.com/zh-cn/download/details.aspx?
阅读全文
摘要:.NET的反射(Reflection)是非常完善和强大的,例如有名的.NET反编译工具Red Gate's .NET Reflector就是使用了.NET自身的反射机制,这里有一个比较简单的实例(使用控制台程序),看看.NET中如何使用反射。using System; using System.Reflection; namespace Mengliao.CSharp.C13.S02 { class MyClass { private int count; public MyClass(int value) { count = value; } public void m1() { C
阅读全文
摘要:扩展方法是C# 3.0的又一个特性,它允许开发人员在不创建派生类型和不修改原始类型的基础上,直接向现有类型"添加"方法。扩展方法是一种特殊的静态方法,但可以像扩展类型上的实例方法一样进行调用。包含扩展方法的类必须定义为静态(static)类,扩展方法也必须定义为静态(static)方法,它的第一个参...
阅读全文
摘要:昨天的文章中介绍了怎样使ListBox隔行显示不同的颜色,今天接着介绍怎样扩展ListView控件,使他也具有这样的功能,而且重绘他的Header,使其更美观。在这篇文章中,我只对View 为 Details的时候进行了重绘,至于其他的Ttile,List,SmallIcon,LargeIcon,大家可以照着代码自己实现。这个控件的美化大致跟ListBox的差不了多少,我们还是一步一步的来实现它吧:1、 继承ListView,并把 OwnerDraw 设为True,如下: public ListViewEx() : base() { base.OwnerDraw = true;}2、 给继承的
阅读全文
摘要:1 简介 1.1Log4net的优点: 几乎所有的大型应用都会有自己的用于跟踪调试的API。因为一旦程序被部署以后,就不太可能再利用专门的调试工具了。然而一个管理员可能需要有一套强大的日志系统来诊断和修复配置上的问题。 经验表明,日志记录往往是软件开发周期中的重要组成部分。它具有以下几个优点:它可以提供应用程序运行时的精确环境,可供开发人员尽快找到应用程序中的Bug;一旦在程序中加入了Log 输出代码,程序运行过程中就能生成并输出日志信息而无需人工干预。另外,日志信息可以输出到不同的地方(控制台,文件等)以备以后研究之用。 Log4net就是为这样一个目的设计的,用于.NET开发环境的日志记录
阅读全文