随笔分类 -  DP

设计与思想!
摘要:使用Redis锁机制。 偽代碼: 阅读全文
posted @ 2016-09-30 17:20 _DN 阅读(1694) 评论(1) 推荐(0) 编辑
摘要:1.XML读写(配置文件以及自定义XML); 2.服务组件(轮训定时+线程); 3.资源文件(Resource,管理字符、图片等); 4.自定义异常(将异常区分); 5.三层架构(Model,DAL,BLL,应对数据库操作); 6.公共库(如诸多的Helper,Extension); 7.服务安装脚本; 8.缓存(内存级别的); ... 阅读全文
posted @ 2014-10-18 09:57 _DN 阅读(244) 评论(0) 推荐(0) 编辑
摘要:每个浏览器厂商都会自己有设计的主观性,而这些出发点看似很好的却往往深深地伤害程序员。1.需求呈现指定为Google浏览器,字号为6-8px(为了打印细小的尺寸)。2.探索2.1 CSS HACK搜索了N多的网页,都指向一个结果:html { -webkit-text-size-adju... 阅读全文
posted @ 2014-09-27 12:20 _DN 阅读(347) 评论(0) 推荐(0) 编辑
摘要:题目:有两个表,有一个相同的字段,现在要选出这两个字段相同的记录,除了用两重循环之外,还有什么办法?(某面试题)这个问题,其实有很多不明确的地方,但就题目本身而言,很明显,当前复杂度是O(n2),如果解答不能讲这个复杂度降低的话,就根本不算什么优化。这里假定,选择一条 记录的复杂度为O(1)。各位大... 阅读全文
posted @ 2014-09-27 11:50 _DN 阅读(317) 评论(2) 推荐(0) 编辑
摘要:1.标题是什么意思?1.1什么是单元测试?单元测试,目的是为了保证代码的质量;1.2什么是解耦?解耦,目的是为了方便单元测试。当然,另一个目的是为了保持程序的扩展性。思想工具:为了同时达到单元测试与代码解耦(或者称为设计优良的OO代码),那么依赖注入的思想是必不可少的工具。之所以说是思想,从设计的角... 阅读全文
posted @ 2014-06-27 20:14 _DN 阅读(1939) 评论(9) 推荐(2) 编辑
摘要:可能是我们共同的强迫症,不要说看到,就算想到太多的try-catch也很难接受。于是,开始了一些尝试,这些尝试都算是思维的锻炼、场面的见识、经验的积累。Version1 —— 原始版本一开始,在ConcreteService中,拥有了太多的try-catch,而影响码字的兴趣。代码1 原始代码///... 阅读全文
posted @ 2014-06-24 18:09 _DN 阅读(1423) 评论(8) 推荐(4) 编辑
摘要:线程同步模型:http://www.xue5.com/Developer/CSharp/755821_2.htmlhttp://www.cftea.com/c/2012/03/5518.asphttp://www.cnblogs.com/aarond/p/AA.htmlhttp://www.newxing.com/Tech/DotNet/jichu/SOCKET_370.html 阅读全文
posted @ 2014-03-04 00:03 _DN 阅读(257) 评论(0) 推荐(0) 编辑
摘要:IMessageHandler :消息同步处理接口AbsQueue:消息队列处理层,可以使用Template Method进行设计INetWorkLayer:专门处理网络IO的,并附带多线程与异步模型。 阅读全文
posted @ 2014-03-03 23:31 _DN 阅读(177) 评论(0) 推荐(0) 编辑
摘要:如下所示,ConcurrentQueue做到了代码的简化,在并发模型中充当同步对象private ConcurrentQueue inQueue = new ConcurrentQueue();private object lockObject = new object();private Queue queue = new Queue();MSDN例子(还是并行库强大): static void Main(string[] args) { // Construct a ConcurrentQueue. Concurren... 阅读全文
posted @ 2014-03-03 23:04 _DN 阅读(8828) 评论(0) 推荐(1) 编辑
摘要:定义一个值对象类型,使其实例是可复制的。当它用来和另一个线程通信时,确保复制该值。此模式主要用于解决在多线程中没有必要进行同步的数据对象的传递——使用值传递方式,即可复制。故没有加锁开销,每一个副本可以随意改变,但是改变只针对副本本身发生,可以看作原型模式的另一种存在。C++中的复制构造函数即为此而生,C#中的Struct就是值对象类型的,而Java则需要手动进行对象的副本。简单示例,可以看出struct直接赋值之后得到的对象是一个副本,这是Copyed Value的本意using System;namespace ConsoleApplication1{ struct CopyedVa... 阅读全文
posted @ 2014-03-03 22:54 _DN 阅读(231) 评论(0) 推荐(0) 编辑
摘要:如题,这是一个典型的CS结构的模式,至少曾经在CS结构中用过,只是没用好。当年用UDP死活都处理不过来网络命令,用此模式轻松解决。 此模式是典型的三层架构,同步层在一个线程内处理业务逻辑;异步层接受并分发命令消息,专门对网络IO,最后,加上一个处理共享的队列中间层,则全部连起来。 其实这个模式是不难的,回想起来,很多技术都需要一定的基础的,但是往往我们得高度达不到,就不能深刻地区理解和运用。 以下知识能够帮助更好地理解这个模式: 1)PV源语,锁,同步对象;——操作系统 2)线程;——操作系统 3)事务;——数据库 4)异步;——网络 5)队列;——数据结构 事实上,我想... 阅读全文
posted @ 2014-03-02 16:13 _DN 阅读(353) 评论(0) 推荐(0) 编辑
摘要:之前一直以为桥是简单地沟通几个不同接口,使之能够按照一定流程工作。但重新查了一下解释,才有新解。 对于同一个产品的不同影响因子,如果使用继承的话,则这些影响因子则会按照M1*M2* ... Mn的数量增长子类,如果使用桥模式的话,则只是M1+M2+...+Mn的子类数量。 示例:所给出的图形和颜色就是两个因子。 关键:引用《模式工程化实现及其扩展》的“三步法”: 1)把依赖具体变成依赖抽象;——依赖倒置 2)如果同时存在多个正交的变化因素,那就顺次展开,逐个抽象。每次将一个而且只有一个“因子”进行抽象,将依赖于N个变化因子的复杂性消减为依赖于1个抽象+(N-1)个变化因子的复... 阅读全文
posted @ 2014-03-02 15:57 _DN 阅读(175) 评论(0) 推荐(0) 编辑