10 2011 档案

 
Visual Studio 2008 单元测试
摘要:开发组件的时候使用VS集成的单元测试功能会很方便1.新建一个类库项目,并为其中的类添加一个方法,方法任意之后右键点击代码窗口选择方法为新建项目命名然后在解决方案管理中就多了相应的Test Project和一个叫Solution Items的解决方案文件夹。相关的文件作用如下:localtestrun.testrunconfig 本地测试运行配置文件;MySchoolPro.vsmdi 测试管理文件;AuthoringTest.txt 提供创建测试的说明,包括向项目增加其他测试的说明;XXXXTest.cs 包含测试对象对应的测试方法,以及测试初始化和测试清除的方法.修改输入参数,及对比参数,还 阅读全文
posted @ 2011-10-28 11:32 卡莱 阅读(172) 评论(0) 推荐(0)
一个C#分析html的包,从老外的一个Spider程序里提取出来的
摘要:一个C#分析html的包,以前思考如何分析html,总是毫无头绪,情况太多,太复杂。后来在一个老外写的Spider程序里发现了这个。非常好用,屡试不爽,现在才知道自己写程序还在一个很低的层次,尤其是面向对象思想的理解。利用继承的思想来分解问题,利用多个类来实现多种情况的变化,这个才是OO思想,而自己很多时候只是为了OO而去OO,其实水平还是停留在面向过程里。好好分析下这些代码,受益颇多。/// <summary> /// Attribute holds one attribute, as is normally stored in /// an HTML or XML file. 阅读全文
posted @ 2011-10-27 17:12 卡莱 阅读(386) 评论(1) 推荐(1)
Visual Studio自定义调试窗体两个小技巧
摘要:这篇文章讲述如何自定义你的调试窗体。这些技巧在你调试应用程序的时候是非常有用的。当你调试的时候,你可能希望简化调试窗体的信息,或者在调试窗体上除去对你不重要的不必要的信息,这篇文章将会帮助到你。本文翻译:Few Tips on Customizing Debugging Window View in Visual Studio。 使用DebuggerBrowsable特性可以自定义调试窗体。 使用DebuggerDisplay特性可以自定义调试信息的显示。 要使用这些特性,需要引用System.Diagnostics命名空间。技巧1、使用DebuggerBrowsable特性 你可以通过在. 阅读全文
posted @ 2011-10-27 16:17 卡莱 阅读(273) 评论(0) 推荐(0)
C#中的多态
摘要:封装、继承、多态,面向对象的三大特性,前两项理解相对容易,但要理解多态,特别是深入的了解,对于初学者而言可能就会有一定困难了。我一直认为学习OO的最好方法就是结合实践,封装、继承在实际工作中的应用随处可见,但多态呢?也许未必,可能不经意间用到也不会把它跟“多态”这个词对应起来。在此抛砖引玉,大家讨论,个人能力有限,不足之处还请指正。 之前看到过类似的问题:如果面试时主考官要求你用一句话来描述多态,尽可能的精炼,你会怎么回答?当然答案有很多,每个人的理解和表达不尽相同,但我比较趋向这样描述:通过继承实现的不同对象调用相同的方法,表现出不同的行为,称之为多态。例1:public class Ani 阅读全文
posted @ 2011-10-26 17:46 卡莱 阅读(270) 评论(0) 推荐(0)
.Net 自定义应用程序配置
摘要:引言几乎所有的应用程序都离不开配置,有时候我们会将配置信息存在数据库中(例如大家可能常会见到名为Config这样的表);更多时候,我们会将配置写在Web.config或者App.Config中。通过将参数写在配置文件(表)中,我们的程序将变得更加灵活,只要对参数进行修改,再由程序中的某段代码去读取相应的值就可以了。而如果直接将配置值写在程序中,当配置需要改变时,则只能通过修改代码来完成,此时往往需要重新编译程序集。本文不是讲述.Net Framework中诸多的内置结点如何设置,比如httpHandler、httpModule、membership、roleManager 等。而是讲述.Net 阅读全文
posted @ 2011-10-25 09:17 卡莱 阅读(241) 评论(0) 推荐(0)
Redis-Sampler:深入了解你的Redis存储
摘要:redis-sampler是Redis作者@antirez同学开发的一个ruby 小工具,用于对Redis存储概况进行抽样检测并给出分析结果。项目地址:https://github.com/antirez/redis-sampler使用方式:下载源码,执行下面命令:./redis-sampler.rb host,port和db三个参数都不用解释(db默认为0),samplesize 就是这个抽样检测的样本数量。脚本输出如下例:Sampling localhost:6379 DB:4 with 1000000 RANDOMKEYS TYPES ===== zset: 873268 (8... 阅读全文
posted @ 2011-10-20 16:20 卡莱 阅读(482) 评论(0) 推荐(0)
Redis实现MongoDB的getlasterror功能
摘要:MongoDB有一个命令叫getlasterror,从名字上看它的作用好像是获取最近的一个error。但其实这是MongoDB的一种客户端阻塞的方式。官方的解释如下:MongoDB does not wait for a response by default when writing to the database. Use thegetLastErrorcommand to ensure that operations have succeeded.MongoDB 在写操作时,默认不会等数据写完后才返回,你可以通过使用getLastError命令来保证你的写是成功的。说白了,MongoDB 阅读全文
posted @ 2011-10-20 16:17 卡莱 阅读(495) 评论(0) 推荐(0)
Redis学习资料参考地址
摘要:www.nosqlfan.comwww.redis.iohttp://redis.readthedocs.org/en/latest/http://try.redis-db.com/ 阅读全文
posted @ 2011-10-19 09:07 卡莱 阅读(111) 评论(0) 推荐(0)
C#中Split用法
摘要:1、用字符串分隔:usingSystem.Text.RegularExpressions;stringstr="aaajsbbbjsccc";string[]sArray=Regex.Split(str,"js",RegexOptions.IgnoreCase);foreach(stringiinsArray)Response.Write(i.ToString()+"<br>");输出结果:aaabbbccc2、用多个字符来分隔:stringstr="aaajbbbscccjdddseee";strin 阅读全文
posted @ 2011-10-18 14:26 卡莱 阅读(167) 评论(0) 推荐(0)
值类型的相等比较
摘要:5.3.2 值类型的相等比较在进行值类型的相等比较时,采用与引用类型相同的规则:ReferenceEquals()用于比较引用,Equals()用于比较值,比较运算符可以看作是一个中间项。但最大的区别是值类型需要装箱,才能把它们转换为引用,才能对它们执行方法。另外,Microsoft已经在System.ValueType类中重载了实例方法Equals(),以便对值类型进行合适的相等测试。如果调用sA.Equals(sB),其中sA和sB是某个结构的实例,则根据sA和sB是否在其所有的字段中包含相同的值,而返回true或false。另一方面,在默认情况下,不能对自己的结构重载==运算符。在表达式 阅读全文
posted @ 2011-10-17 17:16 卡莱 阅读(218) 评论(0) 推荐(0)
引用类型的相等比较
摘要:5.3 对象的相等比较在讨论了运算符,并简要介绍了等于运算符后,就应考虑在处理类和结构的实例时相等意味着什么。理解对象相等比较的机制对编写逻辑表达式非常重要,另外,对实现运算符重载和数据类型转换也非常重要,本章的后面将讨论运算符重载。对象相等比较的机制对于引用类型(类的实例)的比较和值类型(基本数据类型,结构或枚举的实例)的比较来说是不同的。下面分别介绍引用类型和值类型的相等比较。5.3.1 引用类型的相等比较System.Object的一个初看上去令人惊讶的方面是它定义了3个不同的方法,来比较对象的相等性:ReferenceEquals()和Equals()的两个版本。再加上比较运算符==, 阅读全文
posted @ 2011-10-17 17:03 卡莱 阅读(541) 评论(0) 推荐(0)
实际举例C#引用类型和值类型的区别
摘要:我们都知道,C#的两大数据类型分别为值类型和引用类型。很多人或许闭着眼睛都能说出值类型包括简单类型、结构体类型和枚举类型,引用类型包括自定义类、数组、接口、委托等,但是当被问及到二者之间的联系和区别,什么时候用struct什么时候用class时,就常常混淆不清了。为此,了解值类型和引用类型的本质差异就变的很有必要了。1.值类型直接存储其值,变量本身就包含了其实例数据,而引用类型保存的只是实例数据的内存引用。因此,一个值类型变量就永远不会影响到其他的值类型变量,而两个引用类型变量则很有可能指向同一地址,从而发生相互影响。2.从内存分配上来看,值类型通常分配在线程的堆栈上,作用域结束时,所占空间自 阅读全文
posted @ 2011-10-17 16:44 卡莱 阅读(208) 评论(0) 推荐(0)
C# 类型基础
摘要:引言本文之初的目的是讲述设计模式中的 Prototype(原型)模式,但是如果想较清楚地弄明白这个模式,需要了解对象克隆(Object Clone),Clone其实也就是对象复制。复制又分为了浅度复制(Shallow Copy)和深度复制(Deep Copy),浅度复制 和 深度复制又是以 如何复制引用类型成员来划分的。由此又引出了 引用类型和 值类型,以及相关的对象判等、装箱、拆箱等基础知识。于是我干脆新起一篇,从最基础的类型开始自底向上写起了。我仅仅想将对于这个主题的理解表述出来,一是总结和复习,二是交流经验,或许有地方我理解的有偏差,希望指正。如果前面基础的内容对你来说过于简单,可以跳跃 阅读全文
posted @ 2011-10-17 15:32 卡莱 阅读(138) 评论(0) 推荐(0)
ManualResetEvent详解
摘要:1. 源码下载: 下载地址:http://files.cnblogs.com/tianzhiliang/ManualResetEventDemo.rar Demo:2. ManualResetEvent详解 ManualResetEvent 允许线程通过发信号互相通信。通常,此通信涉及一个线程在其他线程进行之前必须完成的任务。当一个线程开始一个活动(此活动必须完成后,其他线程才能开始)时,它调用 Reset 以将 ManualResetEvent 置于非终止状态,此线程可被视为控制 ManualResetEvent。调用 ManualResetEvent 上的 WaitOne 的线程将阻止,并 阅读全文
posted @ 2011-10-17 09:03 卡莱 阅读(173) 评论(0) 推荐(0)
C#事件(event)解析
摘要:事件(event),这个词儿对于初学者来说,往往总是显得有些神秘,不易弄懂。而这些东西却往往又是编程中常用且非常重要的东西。大家都知道windows消息处理机制的重要,其实C#事件就是基于windows消息处理机制的,只是封装的更好,让开发者无须知道底层的消息处理机制,就可以开发出强大的基于事件的应用程序来。先来看看事件编程有哪些好处。在以往我们编写这类程序中,往往采用等待机制,为了等待某件事情的发生,需要不断地检测某些判断变量,而引入事件编程后,大大简化了这种过程:- 使用事件,可以很方便地确定程序执行顺序。- 当事件驱动程序等待事件时,它不占用很多资源。事件驱动程序与过程式程序最大的不同就 阅读全文
posted @ 2011-10-16 15:05 卡莱 阅读(241) 评论(0) 推荐(0)