随笔分类 - 技术杂说
摘要:分布式锁常见的三种实现方式: 数据库乐观锁; 基于Redis的分布式锁; 基于ZooKeeper的分布式锁。 Redis要实现分布式锁,以下条件应该得到满足: 互斥性:在任意时刻,只有一个客户端能持有锁。 不能死锁:客户端在持有锁的期间崩溃而没有主动解锁,也能保证后续其他客户端能加锁。 容错性:只要
阅读全文
摘要:懒汉模式 懒汉模式是变种最多的单例模式。 所谓懒汉即先不初始化单例,等第一次使用的时候再初始化,即“懒加载”。 基础的懒汉 // 饱汉 // UnThreadSafe public class Singleton1 { private static Singleton1 singleton = nu
阅读全文
摘要:保证消息是有顺序的,这是生产系统中常见的问题。 面试题剖析 举个例子,我们以前做过一个 mysql binlog 同步的系统,压力还是非常大的,日同步数据要达到上亿,就是说数据从一个 mysql 库原封不动地同步到另一个 mysql 库里面去(mysql -> mysql)。常见的一点在于说比如大数
阅读全文
摘要:分库分表后需要一个全局唯一的 id 来支持。 基于数据库的实现方案 数据库自增id 系统里每次需要得到一个 id的时候,都是往一个库的一个表里插入一条没任何业务含义的数据,获取到一个数据库自增的一个 id。拿到这个 id 之后再往对应的分库分表里去写入。 这个方案的好处就是方便简单,谁都会用;缺点就
阅读全文
摘要:TreeMap<K,V>的Key值是要求实现java.lang.Comparable,所以迭代的时候TreeMap默认是按照Key值升序排序的;TreeMap的实现是基于红黑树结构。适用于按自然顺序或自定义顺序遍历键(key)。 TreeMap中默认是按照升序进行排序的,如果想要降序,需要通过自定义
阅读全文
摘要:首先简单说一下(以下为一个回答的参考模板) (1) 实例化一个Bean -- 也就是我们常说的new; (2) 按照Spring上下文对实例化的Bean进行配置 -- 也就是IOC注入; (3) 如果这个Bean已经实现了BeanNameAware接口,会调用它实现的setBeanName(Stri
阅读全文