happyhippy

这个世界的问题在于聪明人充满疑惑,而傻子们坚信不疑。--罗素
摘要: 海报:Silverlight 1.1 阅读全文
posted @ 2007-05-06 20:47 Silent Void 阅读(427) 评论(0) 推荐(0) 编辑
摘要: 目前也有一些技术可以支持我们将合理假设明确化,例如测试驱动开发(Test-Driven Development,TDD)和基于契约设计(Design by Contract,DBC)。但是有谁知道设计的使用者会作出什么样的合理假设呢?大多数这样的假设都很难预料。如果我们预测所有的假设的话,我们设计的系统可能也会充满不必要的复杂性。PPP一书中推荐的做法是:只预测那些最明显的违反LSP的情况,而推迟对所有其他假设的预测,直到出现相关的脆弱性的臭味(Bad Smell)时,才去处理它们。我觉得这句话还不够直白,Martin Fowler的《Refactoring》一书中“Refused Bequest”(拒收的遗赠)描述的更详尽:子类继承父类的methods和data,但子类仅仅只需要父类的部分Methods或data,而不是全部methods和data;当这种情况出现时,就意味这我们的继承体系出现了问题。例如上面的Rectangle和Square,Square本身长和宽相等,几何学中用边长来表示边,而Rectangle长和宽之分,直观地看,Square已经Refused了Rectangl 阅读全文
posted @ 2007-05-06 12:58 Silent Void 阅读(2440) 评论(10) 推荐(2) 编辑
摘要: “你不必严格遵守这些原则,违背它们也不会被处以宗教刑罚。但你应当把这些原则看成警铃,若违背了其中的一条,那么警铃就会响起。” ----- Arthur J.Riel 阅读全文
posted @ 2007-05-04 14:26 Silent Void 阅读(1129) 评论(1) 推荐(0) 编辑
摘要: O(1)判断无符号整数x是否是2的幂; O(1)判断一个无符号整数是否为2^n-1的形式; O(1)求整数能被最大的2的幂(?)整除 : 析出最右侧为1的位; 计算整数中有多少个为1的位; 获取下一个具有同样数量的1位的更大的数;应用:在用位串表示集合的子集时 阅读全文
posted @ 2007-04-24 13:10 Silent Void 阅读(1209) 评论(3) 推荐(0) 编辑
摘要: 过滤或转义危险字符; 参数化SQL查询或存储过程; 使用最小特权; 在服务器上处理错误; 阅读全文
posted @ 2007-04-21 21:07 Silent Void 阅读(704) 评论(0) 推荐(0) 编辑
摘要: 默认情况下,C#编译器会在引用类型上运用[StructLayoutAttribute(LayoutKind.Auto)]特性,即按照CLR认为的最佳方式来排序实例中的字段顺序;当运用[StructLayout(LayoutKind.Sequential)]特性时,CLR会按照字段成员在被导出到非托管内存时出现的顺序依次布局,但我的测试结果是:貌似使用LayoutKind.Sequential与使用LayoutKind.Auto的结果相同;当运用[StructLayout(LayoutKind.Explicit)]时,我们可以自己设置实例中字段的位置。 在32位的计算机上,默认情况下,对于引用类型的实例,CLR总是按4byte进行内存对齐。 阅读全文
posted @ 2007-04-17 16:42 Silent Void 阅读(6953) 评论(12) 推荐(0) 编辑
摘要: 前面10篇介绍了使用dOOdads做ORM映射的基本使用方法和我在使用过程中的总结的一些技巧,这里我再对dOOdads项目做一个概要的总结: 1. 使用dOOdads的概要步骤:详细步骤及我在使用中遇到的问题,我以前都有记录http://www.cnblogs.com/happyhippy/category/79938.html 2. dOOdad的架构: 阅读全文
posted @ 2007-04-16 16:38 Silent Void 阅读(4640) 评论(16) 推荐(0) 编辑
摘要: Web Parts的功能是相当强大的,如果两个Web Part之间不能通讯,那就相当郁闷的,所以Asp.Net提供了两种方式来使得Web Part之间可以互相通讯,一种是静态通讯方式,另一种时使用ConnectionZone进行动态通讯。(这里所谓的“Web Part通讯”是指多个WebPart中用户控件之间的通讯)…… 阅读全文
posted @ 2007-04-14 12:50 Silent Void 阅读(1726) 评论(1) 推荐(0) 编辑
摘要: Web Parts连SqlServer的解决办法是:(1) 在VS2005的命令行下运行aspnet_regsql.exe,根据“Asp.net SQL Server Setup Wizard”向导来在SQL Server 2005中创建aspnetdb数据库(当然也可以用此方法在其他版本的SQL Server数据库中创建aspnetdb数据库);(2) 在web.config文件中修改connectionStrings配置节如下: 阅读全文
posted @ 2007-04-13 19:17 Silent Void 阅读(2676) 评论(5) 推荐(0) 编辑
摘要: MSDN中解释bool与Boolean的关系是:“bool 关键字是 System.Boolean 的别名”。观察上面的Boolean类型定义,在其继承的泛型接口和成员变量中,我们找到了“bool”的影子(我想可能时Reflector将IL代码反汇编时将类型Boolean翻译成C#中的关键字bool),也就是说Boolean的定义依赖与bool(Boolean)。这就好比鸡蛋与鸡,到底是先有鸡蛋还是先有鸡?到底是先有Boolean的类型定义还是先有Boolean类型呢? 阅读全文
posted @ 2007-04-12 16:58 Silent Void 阅读(2071) 评论(4) 推荐(0) 编辑
摘要: 默认(LayoutKind.Sequential)情况下,CLR对struct的Layout的处理方法与C/C++中默认的处理方式相同,即按照结构中占用空间最大的成员进行对齐(Align); 使用LayoutKind.Explicit的情况下,CLR不对结构体进行任何内存对齐(Align),而且我们要小心就是FieldOffset; 使用LayoutKind.Auto的情况下,CLR会对结构体中的字段顺序进行调整,使实例占有尽可能少的内存,并进行4byte的内存对齐(Align)。 阅读全文
posted @ 2007-04-12 16:58 Silent Void 阅读(6012) 评论(9) 推荐(2) 编辑
摘要: 值类型实例的创建位置;引用类型实例的创建位置;托管对象被引用的七种途径;托管对象在托管堆上的结构 阅读全文
posted @ 2007-04-12 06:07 Silent Void 阅读(6461) 评论(13) 推荐(3) 编辑
摘要: SOS(Son of Strike)扩展调试器可以用来显示CLR数据结构的内容。SOS是作为.net framework的一部分安装的(SOS.dll),位于%windir%\Microsoft.NET\Framework\v*.*.****(版本号)\目录下。在使用SOS(加载SOS.dll)进行调试的步骤 阅读全文
posted @ 2007-04-11 03:34 Silent Void 阅读(7704) 评论(6) 推荐(2) 编辑
摘要: 优先选择强异常安全保证;最小化互操作;优先选择安全代码;掌握相关工具与资源;为C#2.0做准备;了解ECMA标准 阅读全文
posted @ 2007-04-11 01:04 Silent Void 阅读(538) 评论(0) 推荐(0) 编辑
摘要: 重写函数优于事件处理器;理使用.NET运行时诊断;使用标准配置机制;定制和支持数据绑定;使用.NET验证;根据需要选用恰当的集合;优先选择DataSet,而不是使用自定义结构;利用特性简化反射;避免过度使用反射 阅读全文
posted @ 2007-04-09 23:21 Silent Void 阅读(655) 评论(0) 推荐(0) 编辑