摘要: 设计模式可以分为三大类:创建型模式(Creational Patterns)、结构型模式(Structural Patterns)、行为型模式(Behavioral Patterns)。当然,我们还会讨论另一类设计模式:J2EE 设计模式。 工厂模式(Factory Pattern) 抽象工厂模式( 阅读全文
posted @ 2019-06-19 12:31 tjjloveworld 阅读(70) 评论(0) 推荐(0) 编辑
摘要: 用并发解决的问题大体上可以分为“速度”和“设计可管理性”两种。 阅读全文
posted @ 2019-06-19 09:35 tjjloveworld 阅读(104) 评论(0) 推荐(0) 编辑
摘要: Java只支持类之间的单继承,但支持接口之间的多继承。 线程必须由Thread类或其子(孙)类来创建。通常有两种方法来创建线程:其一,使用型构为Thread(Runnable)的构造子类将一个实现了Runnable接口的对象包装成一个线程,其二,从Thread类派生出子类并重写run方法,使用该子类 阅读全文
posted @ 2019-06-17 10:09 tjjloveworld 阅读(163) 评论(0) 推荐(0) 编辑
摘要: Spring的两个核心特性:依赖注入(DI)和面向切面编程(AOP) 为了降低Java开发的复杂性,Spring采取了以下4种关键策略: 基于POJO的轻量级和最小侵入性编程 通过依赖注入和面向接口实现松耦合 基于切面和惯例进行声明式编程 通过切面和模板减少样板式代码 阅读全文
posted @ 2019-06-17 00:02 tjjloveworld 阅读(120) 评论(0) 推荐(0) 编辑
摘要: 自顶向下伸展树 红黑树 Treap树 后缀树 后缀树的一小部分应用列举如下: 1. 找到T中最长的重复子串:遍历树,找到带最大字母深度的内部节点,这就表示了最大的LCP。运行时间是O(|T|)。好可以推广到重复了至少k遍的最长子串。 2. 找到两个字符串T1和T2的最长公共子串:合成一个字符串T1# 阅读全文
posted @ 2019-03-30 17:54 tjjloveworld 阅读(455) 评论(0) 推荐(0) 编辑
摘要: 哈夫曼算法 算法对由树组成的一个森林进行。一棵树的权等于它的树叶的频率的和。任意选取最小权的两棵树T1和T2,并任意形成以T1和 T2为子树的新树,将这样的过程进行C - 1次。在算法的开始,存在C棵单节点树——每个字符一棵。在算法结束时得到一棵树,这棵树就是最优哈夫曼编码树。 10.1.3 近似装 阅读全文
posted @ 2019-03-25 09:16 tjjloveworld 阅读(268) 评论(0) 推荐(0) 编辑
摘要: 拓扑排序是对有向无圈图的顶点的一种排序,使得如果存在一条从Vi到Vj的路径,那么在排序中Vj就出现在Vi的后面。 一个简单的求拓扑排序的算法是先找出任意一个没有入边的顶点。然后显示出该顶点,并将它及其边一起从图中删除。然后,我们对图的其余部分同样应用这样的方法处理。 简单拓扑排序的伪代码 入度的计算 阅读全文
posted @ 2019-03-22 11:25 tjjloveworld 阅读(255) 评论(0) 推荐(0) 编辑
摘要: 等价关系是满足下列三个性质的关系R 1. (自反性)对于所有的a属于S,aRa。 2. (对称性)aRb 当且仅当 bRa。 3. (传递性)若aRb且bRc则aRc。 不相交集合 union(不是最好的方法) 按高度(秩)求并的程序 用路径压缩对不相交集进行find的程序 部分路径压缩 算法A是标 阅读全文
posted @ 2019-03-22 09:40 tjjloveworld 阅读(86) 评论(0) 推荐(0) 编辑
摘要: 插入排序由N - 1趟排序组成。对于p = 1到N - 1趟,插入排序保证从位置0到位置p上的元素为已排序状态。插入排序利用了这样的事实:已知位置0到位置p - 1上的元素已经处于排过序的状态。 O(N^2). 希尔排序使用一个序列h1,h2,...,ht,叫作增量序列。 堆排序 O(N logN) 阅读全文
posted @ 2019-03-20 13:52 tjjloveworld 阅读(174) 评论(0) 推荐(0) 编辑
摘要: 优先队列(堆) 左式堆 二项队列 阅读全文
posted @ 2019-03-20 10:19 tjjloveworld 阅读(188) 评论(0) 推荐(0) 编辑