摘要: 说到延迟加载(Lazy Load), 有些文章或书籍翻译为懒加载,虽然我不太喜欢这个翻译,但是这个“懒”字能贴近生活的。很多事情我们懒得去做,如果事情没有发生,我们就赚到了。延迟加载,Martin Flower在《企业应用架构模式》中给了这样一个定义:一个对象,它虽然不包含所需要的所有数据,但是知道怎么获取这些数据。为了理解这句话,还是先来举个场景,在某些时候,从数据库里得到一条记录,需要与数据库建立连接,网络请求,执行SQL,关闭连接,费了很大的力气,很大的代价,把所需的数据拿到手,但是悲剧的事情发生了,这个记录的实际数据从不曾用到,这种情况下,能不能"懒一下",需要使用 阅读全文
posted @ 2012-08-31 17:00 _小阳 阅读(2944) 评论(7) 推荐(6) 编辑
摘要: 自己接触NHibernate,Spring.Net,Moq这些框架有一段时间了,觉得很多很Cool的功能在这些框架中的实现都建立在动态代理这个技术之上,特来跟大家分享一下,希望大家一起讨论,一起进步,我的计划是这个系列将会有四篇文章:1..Net动态代理Castle系列(一)---初步认识2..Net动态代理Castle系列(二)---ORM中延迟加载及实现3..Net动态代理Castle系列(三)---在Mock框架中的运用及实现4..Net动态代理Castle系列 (四)---在AOP中的运用及实现 今天先开始对动态代理有个初步的认识,并通过实例来让大家能认识到Castle,并能使用Cas 阅读全文
posted @ 2012-08-27 01:43 _小阳 阅读(3430) 评论(7) 推荐(10) 编辑
摘要: 最近正在给一个项目扩展一些功能,这个项目在处理依赖关系的时候使用了Spring.net,但是最让人头痛的是这个项目没有单元测试,这就让我不敢对代码进行重构,开发效率极其低下,最后还是下定决心还是给这个“遗留代码”添加单元测试吧。虽然这事后写单元测试的过程很是不爽,但是更郁闷的是写着写着发现有些代码是很难测试的?查看全文 阅读全文
posted @ 2012-07-26 22:03 _小阳 阅读(318) 评论(0) 推荐(0) 编辑
摘要: 最近在学习TDD,在测试驱动开发的时候常常会遇到测试的模块依赖到其他模块的时候,就会使用Mock对象,所以将自己最近学习的心得拿出来分享一下,有什么说的不对的地方,还希望大家跟我指出来! 想必大家都知道单元测试,是一个最小的对程序正确性检查的单位。在面向对象的开发中,往往我们是对一个方法进行测试,我们的测试目的是为了验证这个方法是否正确,也就是说如果这个方法错了,我希望的是一定是这个方法错了,而不是它所依赖的方法错了。如果整个单元测试跑下来,有10个错误,我们希望的是确实有10个方法错了。所以单元测试的独立性很重要,但是单元测试往往会依赖于其他方法,就算我们想尽一切办法解耦,为我们所依赖的方. 阅读全文
posted @ 2012-07-02 22:17 _小阳 阅读(1799) 评论(0) 推荐(1) 编辑
摘要: 对于C、C++程序员来说,是没有垃圾收集器的,这就意味着程序员必须抽出时间来关心内存的问题,自己分配的内存空间需要自己手动的释放掉。这样往往会引发二个问题: 1.内存泄露(没有释放掉已分配的内存空间) 2.访问了已经释放的内存空间。 上述2个问题,往往会让程序变得很不稳定,变得不可预测。为了避免这些问题,同时把程序员解放出来,Java、.Net平台出现了垃圾回收器这个概念。记得,曾经听到过这就得比喻,在国外的麦当劳,顾客是需要自己收拾吃剩的食物(明显是C、C++程序员)。而在中国,顾客是上帝,你吃完东西可以直接转身离开。(服务员帮你收集,这里可以垃圾为垃圾收集器!) 想必大家已经了... 阅读全文
posted @ 2012-06-21 22:04 _小阳 阅读(805) 评论(0) 推荐(1) 编辑
摘要: 项目中使用的Nhibernate,在遇到某些问题的时候感觉执行的效率不高,这里就有个实际的场景,并用笛卡尔积来解决了这个问题。关于Orm最近看了Maintin Flower的文章OrmHate也让我对Orm有了更深刻的认识,在这个例子中我们我看到Orm并不是让我们不需要了解数据库,不需要知道数据库的底层知识,它并不是万能的,所以数据库的底层知识还是很重要的,还有我们的程序不能脱离数据,有数据往往就有数据库的参与,这样可想而知,数据库的底层知道对我们是多么重要。阅读全文 阅读全文
posted @ 2012-06-17 12:11 _小阳 阅读(1403) 评论(0) 推荐(1) 编辑
摘要: 协变与逆变是.NET 4.O 的新特性,协变和逆变允许数组类型、委托类型和泛型类型参数进行隐式引用转换。 协变保留分配兼容性,逆变与之相反. 一.协变 1.介绍概念之前,先看个例子 /// <summary> /// 在.NET 4.0之前编译报错 /// </summary> class Program { public abstract class Person { public string Name { get; set; } } public class Student : Person {} p... 阅读全文
posted @ 2012-04-03 02:31 _小阳 阅读(305) 评论(0) 推荐(0) 编辑