2018-03-28
大文件内容对比多线程版本

线程池 线程池消费拆分任务 线程池消费合并任务 测试这是上一篇的续作,对于这个算法,其中可以同时进行的部分有 拆分后对每一个块的排序可以同时进行 合并时的不同范围之间可以同时进行,例如拆分为10个小块,那么1-5小块的合并跟6-10小块的合并过程可以同时进行 合并的不同阶段之间不可以同时进行,因为...

Read More
 2018-03-26
大文件内容对比

大文件内容排序 测试最近接到一个需求,要对两个系统的订单进行对比,找出其中的差异,对比结果有4种:一致、不一致、丢失、多余。如果数据量少,处理起来就很简单,例如要对A,B两份数据进行对比: 将数据A放入哈希表 遍历数据B,依据id从A中查找对应的订单 若从A中找到了对应的订单,则比较是否一致,并将此订...

Read More
 2014-06-22
设计模式与原则

设计模式的定义:在某情境下,针对某问题的某种解决方案。但是满足此定义的方案并不一定是设计模式,设计模式要求解决方案必须是可复用的。 设计模式的作用大体上是:优化结构,消除依赖,将面向过程转为面向对象。按照功能,一般可以将设计模式分为创建型行为型结构型三大类。 本文将列举这些设计模式,并对每个设计模式进行简要描述,描述格式为:名称,定义,案例,适用性,结构,效果,应用,相关。

Read More
 2013-11-26
Effective Java

一 创建和销毁对象 1.考虑用静态工厂方法代替构造器 2.遇到多个构造器参数时要考虑用构建器 3.用私有构造器或者枚举类型强化Singleton属性 4.通过私有构造器强化不可实例化的能力 5.避免创建不必要的对象 6.消除过期的对象引用 ...

Read More
 2012-09-17
为什么要用补码表示负数

抛开二进制不谈,我们先来看看10进制假设世界上没有负号且数字最大只有3位,我们要把 0~999 分成两部分,一部分表示负数,一部分表示正数,而且不影响他们的运算规律,应当如何去做?首先,最大的负数加上一等于零,那么用999表示最大的负数再合适不过,现在需要正负数各一半,那么正数部分应当为 0 ~ 499,负数部分...

Read More
 2014-06-22
设计模式与原则

设计模式的定义:在某情境下,针对某问题的某种解决方案。但是满足此定义的方案并不一定是设计模式,设计模式要求解决方案必须是可复用的。 设计模式的作用大体上是:优化结构,消除依赖,将面向过程转为面向对象。按照功能,一般可以将设计模式分为创建型行为型结构型三大类。 本文将列举这些设计模式,并对每个设计模式进行简要描述,描述格式为:名称,定义,案例,适用性,结构,效果,应用,相关。

Read More
 2012-09-17
为什么要用补码表示负数

抛开二进制不谈,我们先来看看10进制假设世界上没有负号且数字最大只有3位,我们要把 0~999 分成两部分,一部分表示负数,一部分表示正数,而且不影响他们的运算规律,应当如何去做?首先,最大的负数加上一等于零,那么用999表示最大的负数再合适不过,现在需要正负数各一半,那么正数部分应当为 0 ~ 499,负数部分...

Read More
 2013-11-26
Effective Java

一 创建和销毁对象 1.考虑用静态工厂方法代替构造器 2.遇到多个构造器参数时要考虑用构建器 3.用私有构造器或者枚举类型强化Singleton属性 4.通过私有构造器强化不可实例化的能力 5.避免创建不必要的对象 6.消除过期的对象引用 ...

Read More
 2018-03-28
大文件内容对比多线程版本

线程池 线程池消费拆分任务 线程池消费合并任务 测试这是上一篇的续作,对于这个算法,其中可以同时进行的部分有 拆分后对每一个块的排序可以同时进行 合并时的不同范围之间可以同时进行,例如拆分为10个小块,那么1-5小块的合并跟6-10小块的合并过程可以同时进行 合并的不同阶段之间不可以同时进行,因为...

Read More
 2018-03-26
大文件内容对比

大文件内容排序 测试最近接到一个需求,要对两个系统的订单进行对比,找出其中的差异,对比结果有4种:一致、不一致、丢失、多余。如果数据量少,处理起来就很简单,例如要对A,B两份数据进行对比: 将数据A放入哈希表 遍历数据B,依据id从A中查找对应的订单 若从A中找到了对应的订单,则比较是否一致,并将此订...

Read More