摘要: CountDownLatch: 允许N个线程等待其他线程完成执行。无法进行重复使用,只能用一次。 比如有2个任务A,它要等待其他4个任务执行完毕之后才能执行,此时就可以利用CountDownLatch来实现这种功能了。 CyclicBarrier 实现让N个线程等待至某个状态(达到初始化数量值)之后 阅读全文
posted @ 2016-08-14 01:23 wade&luffy 阅读(473) 评论(0) 推荐(0) 编辑
摘要: 现在连接6台mysql数据库,路由分库算法是根据id的hash值%6,根据值不同分别存入6台数据库。现在不知道如何做分页查询列表? 先决原则: 数据分库时尽量选择索引字段,最好此字段还是唯一的。 数据分库时建表时结合业务,选择where后查询比较频繁的字段。 解决方案泛泛之谈: 1、直接使用跨库的多 阅读全文
posted @ 2016-08-14 00:38 wade&luffy 阅读(3875) 评论(0) 推荐(0) 编辑
摘要: 设计模式六大原则(1):单一职责原则 定义:不要存在多于一个导致类变更的原因。通俗的说,即一个类只负责一项职责。 问题由来:类T负责两个不同的职责:职责P1,职责P2。当由于职责P1需求发生改变而需要修改类T时,有可能会导致原本运行正常的职责P2功能发生故障。 解决方案:遵循单一职责原则。分别建立两 阅读全文
posted @ 2016-08-13 23:50 wade&luffy 阅读(252) 评论(0) 推荐(0) 编辑
摘要: 1NF:字段不可分; 2NF:有主键,非主键字段依赖主键; 3NF:非主键字段不能相互依赖; 解释: 1NF:原子性 字段不可再分,否则就不是关系数据库; 2NF:唯一性 一个表只说明一个事物; 3NF:每列都与主键有直接关系,不存在传递依赖; 不符合第一范式的例子(关系数据库中create不出这样 阅读全文
posted @ 2016-08-13 23:25 wade&luffy 阅读(230) 评论(0) 推荐(0) 编辑
摘要: ZooKeeper的基本原理 ZNode的基本概念 ZooKeeper数据模型的结构与Unix文件系统很类似,整体上可以看作是一棵树,每个节点称做一个ZNode。每个ZNode都可以通过其路径唯一标识,在每个ZNode上可存储少量数据(默认是1M, 可以通过配置修改, 通常不建议在ZNode上存储大 阅读全文
posted @ 2016-08-13 13:28 wade&luffy 阅读(3509) 评论(0) 推荐(0) 编辑
摘要: 枚举的序列化和反序列化 在序列化的时候Java仅仅是将枚举对象的name属性输出到结果中,反序列化的时候则是通过java.lang.Enum的valueOf方法来根据名字查找枚举对象。 同时,编译器是不允许任何对这种序列化机制的定制的,因此禁用了writeObject、readObject、read 阅读全文
posted @ 2016-08-13 03:02 wade&luffy 阅读(499) 评论(0) 推荐(0) 编辑
摘要: AOP使用场景 AOP用来封装横切关注点,具体可以在下面的场景中使用: Authentication 权限 Caching 缓存 Context passing 内容传递 Error handling 错误处理 Lazy loading 懒加载 Debugging 调试 logging, traci 阅读全文
posted @ 2016-08-13 02:12 wade&luffy 阅读(1371) 评论(0) 推荐(0) 编辑
摘要: java thread的运行周期中, 有几种状态, 在 java.lang.Thread.State 中有详细定义和说明: NEW 状态是指线程刚创建, 尚未启动 RUNNABLE 状态是线程正在正常运行中, 当然可能会有某种耗时计算/IO等待的操作/CPU时间片切换等, 这个状态下发生的等待一般是 阅读全文
posted @ 2016-08-12 21:07 wade&luffy 阅读(339) 评论(0) 推荐(0) 编辑
摘要: CAS原语 CAS(compare and swap)是一组原语指令,用来实现多线程下的变量同步。 public final boolean compareAndSet(int expect, int update) { return unsafe.compareAndSwapInt(this, v 阅读全文
posted @ 2016-08-12 20:50 wade&luffy 阅读(355) 评论(0) 推荐(0) 编辑
摘要: org.jboss.netty.util.internal.ConcurrentHashMap 通过分析Hashtable就知道,synchronized是针对整张Hash表的,即每次锁住整张表让线程独占,ConcurrentHashMap允许多个修改操作并发进行,其关键在于使用了锁分离技术。它使用 阅读全文
posted @ 2016-08-12 15:28 wade&luffy 阅读(911) 评论(0) 推荐(0) 编辑