一些...
Time总是在你有所忙碌时匆匆溜走,在你无所是事时放慢脚步。无论如何,不要让它放慢脚步,只有那样才会觉得充实。
不扯了,总结一下前几天学到的知识点:
- Cache:除总所周知的客户端缓存,服务器端缓存,缓存服务器外,发现还存在客户端代理缓存(如CDN),服务器端代理缓存。由于工作相关,只阐述下服务器端缓存。对于服务器端缓存,从项目架构角度考虑,也要细分,比如数据库端(DbCache),服务端(SeviceCache),前端(UICache)。缓存的处理和DB数据集的处理不同,缓存的主要操作就是添加,更新的处理采用关联的形式,可将对应缓存关联到文件,时间片,具体时间或其他缓存。常用的是基于时间的缓存,但又有绝对(在具体某一时刻清除),相对(某一时间片后清除)和永久(永驻内存)之分。
- UnitTest:平时所说的单元测试大都指代基于状态的测试,即测试的是对象处理后的状态是否与预期一致(TDD)。最近看到BDD,它是基于行为的测试,测试的是代码执行的逻辑,比如执行过程中要调用的方法及其次序,次数等。关于上述测试,桩对象和模拟对象提及较多,桩对象大都用在基于State的测试,而模拟对象用在基于Behaviour的测试。
- IOC:对于代码阅读者来说,它是噩梦,具体实现在哪?在哪完成的装配?跟踪代码看到的只是定义的接口(或约定)(学习delegate时也有同感)。但对于使用者来生活无疑是蜜罐。对象的管理和装配完全转交给IOC,使用时直接从容器获取即可。IOC的好处就在于此,只要你预先设置好相关对象的装配规则,比如对象所在的程序集,对象的生命周期,对象相关组件的装配等等。这些特性扩展了项目的灵活性,项目的组件间的耦合性大大降低,具体实现和服务接口之间由接口关联,具体实现对服务而言是未知的,这样我们就可以通过简单的配置IOC来动态更改实现。IOC的实现主要采用DI(独立性注入)机制,包括构造函数注入,属性注入,函数参数注入。IOC的流行把面向接口编程提到了一个新的高度。