摘要: 归并排序非常简单,远没有想象中的那么难,本文将详细解释归并排序内部原理与实现细节,备忘。 阅读全文
posted @ 2014-10-25 19:29 梦烬 阅读(9109) 评论(0) 推荐(0)
摘要: 问题背景是找到原串中能够与给定串完全匹配的部分,最容易想到的双重循环比对当然不行(时间复杂度太高),最经典的解法就是KMP算法,先构造跳转表(next表),再比对,避免主串上的回溯,以节省时间。KMP算法比较难理解,本文主要对其核心next函数作以解析。 阅读全文
posted @ 2014-10-17 23:09 梦烬 阅读(2635) 评论(1) 推荐(1)
摘要: 耗费一个半月时间细细读完了《Head First设计模式》,本文将对书中介绍到的所有模式作以总结。虽然现阶段的工作大多是围绕“实现”的,但个人认为在陷入“编码”的漩涡之前有必要了解一些“设计”相关的东西,这些思想与理论会慢慢的影响我们的代码和思维。 阅读全文
posted @ 2014-10-15 16:16 梦烬 阅读(4128) 评论(0) 推荐(2)
摘要: 复合模式可不只是多个模式的组合,虽然我们可以轻易地拿来几个模式应用到我们的项目中,但这绝不能被称为复合模式。 阅读全文
posted @ 2014-10-14 12:37 梦烬 阅读(3589) 评论(0) 推荐(0)
摘要: 前一篇关于代理模式的博文中详细介绍了远程代理,本篇将补充一些其它代理(虚拟代理、保护代理、防火墙代理……) 阅读全文
posted @ 2014-10-06 18:26 梦烬 阅读(1142) 评论(0) 推荐(0)
摘要: 代理模式通过插入第三方(代理对象)来分离调用者和被调用者(不同于执行者),而远程代理是最经典的代理之一,被调用者不在本地(处于另一个JVM中),无法直接调用它,此时就需要一个远程代理,调用者把调用请求发送给远程代理,代理对象和被调用者通信,再把调用结果传递给调用者 阅读全文
posted @ 2014-10-05 09:36 梦烬 阅读(5263) 评论(2) 推荐(0)
摘要: 状态模式是用来封装某种状态下的一整套行为的,状态模式隐藏了状态切换过程,调用者并不清楚模块内部的状态转换细节,状态模式实现了程序运行时的多态。如果代码中出现了大量相似的if-else结构,你可能需要使用状态模式来消除这些不和谐的条件块。 阅读全文
posted @ 2014-10-02 15:06 梦烬 阅读(1168) 评论(2) 推荐(4)
摘要: 组合模式,提供一种层级结构,使得我们能够忽略对象与对象集合间的差异,一视同仁地对待它们。更重要的是组合模式与迭代器模式组合起来可以轻松地完成一些神奇的事情(比如封装层级结构的遍历,以及在遍历基础上扩展的其它操作),牺牲类的单一责任原则,来换取透明性。 阅读全文
posted @ 2014-09-30 16:15 梦烬 阅读(1419) 评论(0) 推荐(0)
摘要: 迭代器模式是一种比较简单的模式,说白了就是用迭代器来封装遍历细节。集合对象大都支持遍历操作(如Array,List,Set,Map等等),但由于各个集合对象内部实现方式不同,遍历时需要调用的接口也不同,迭代器就是为了给集合对象提供一个统一的接口以支持遍历操作 阅读全文
posted @ 2014-09-27 17:32 梦烬 阅读(1179) 评论(0) 推荐(0)
摘要: 模版方法模式,用来封装算法骨架(流程),某些步骤由子类实现。此外还有另一个模式:策略模式,二者都是用来封装算法的,但侧重点不同,本文展开详细讨论。 阅读全文
posted @ 2014-09-26 13:58 梦烬 阅读(1429) 评论(0) 推荐(1)
摘要: 外观模式,用来为复杂的子系统提供简单易用的高层接口。如果你发现调用某个子系统实现一个简单的功能也需要调用很多个低层组件,那么你可能需要外观模式来拯救你。 阅读全文
posted @ 2014-09-16 13:43 梦烬 阅读(1239) 评论(0) 推荐(3)
摘要: 适配器模式,用来实现接口的转换 阅读全文
posted @ 2014-09-15 13:30 梦烬 阅读(1504) 评论(0) 推荐(0)
摘要: 命令模式,用来解耦请求者与执行者的一种设计模式,其扩展应用主要有队列请求(把运算限制在指定的工作线程中)和日志请求(用于生成日志及恢复事务)。 阅读全文
posted @ 2014-09-13 12:07 梦烬 阅读(1328) 评论(6) 推荐(1)
摘要: 单件模式又被称为单例模式,定义很简单——只允许存在指定类的唯一实例(instance),并由该类提供全局访问点。但在实际应用的时候会遇到很多问题,比如在多线程,或多个classloader环境下,如何保证单件模式的正确性等等 阅读全文
posted @ 2014-09-12 17:08 梦烬 阅读(2143) 评论(0) 推荐(0)
摘要: 之前一直以为定义一个XXXFactory类来负责new对象就是工厂模式了,而且一般为了方便使用,都把工厂类中的Create定义为static方法,仔细学习过后才发现工厂模式远没有这么简单,而且,严格地说,这种被称为“简单工厂模式”的方式根本不能称之为“模式” 阅读全文
posted @ 2014-09-11 13:17 梦烬 阅读(1101) 评论(0) 推荐(0)