摘要: Redis低级数据结构 简单动态字符串 一般的可变字符串用的都是这个,好处就是返回长度和剩余的长度都是O(1)的复杂度,另外自动提供扩容,不会溢出,另外因为free扩容后会自动预分配一些,阈值在不同情况下是不同的,最大多分配1MB的空间,因此减少了重分配次数,另外减少字符串长度时,除了清掉buf[] 阅读全文
posted @ 2019-11-22 13:07 六月过半 阅读(133) 评论(0) 推荐(0) 编辑
摘要: 分布式Barrier 解决线程同步问题 jdk中的Barrier 分布式的Barrier(根据等待线程数量触发,同时进入 and 同时退出) 阅读全文
posted @ 2019-11-18 13:59 六月过半 阅读(306) 评论(0) 推荐(0) 编辑
摘要: 分布式计数器介绍 和分布式锁类似,下面是实现分布式计数器的功能 代码 每个DistributedAtomicXXX里面都有一个AtomicValue,这个是分布式的核心实现类。 阅读全文
posted @ 2019-11-18 13:17 六月过半 阅读(608) 评论(0) 推荐(0) 编辑
摘要: 分布式锁介绍 分布式执行一些不需要同时执行的复杂任务,curator利用zk的特质,实现了这个选举过程。其实就是利用了多个zk客户端在同一个位置建节点,只会有一个客户端建立成功这个特性。来实现同一时间,只会选择一个客户端执行任务 代码 InterProcessMutex 是一个可重入的排他锁,获取锁 阅读全文
posted @ 2019-11-18 12:20 六月过半 阅读(1247) 评论(0) 推荐(0) 编辑
摘要: Master选举介绍 分布式执行一些不需要同时执行的复杂任务,curator利用zk的特质,实现了这个选举过程。其实就是利用了多个zk客户端在同一个位置建节点,只会有一个客户端建立成功这个特性。来实现同一时间,只会选择一个客户端执行任务 代码 选举是无限循环的,可以看到下面的值,会依次增加 阅读全文
posted @ 2019-11-15 16:07 六月过半 阅读(456) 评论(0) 推荐(0) 编辑
摘要: 监控节点值的变化 通过NodeCache 来监控节点值的变化。 代码 监控子节点值的变化 还有另外一个类可以监控子节点的变化,就是PathChildrenCache 代码 上面代码可以发现,监控的是p1节点,但是只有p2节点更改才会收到通知,ephe_nd节点变化是没有通知的。所以,只能监控子节点, 阅读全文
posted @ 2019-11-15 15:36 六月过半 阅读(650) 评论(0) 推荐(0) 编辑
摘要: 代码 概念 1.inBackground() 该方法就是添加一个异步的回调方法,参数是BackgroundCallback接口,是一个函数式接口。 2.BackgroundCallback的接口参数为client(当前客户端实例)及event(服务端事件) 3.事件类型,CuratorEventTy 阅读全文
posted @ 2019-11-15 14:08 六月过半 阅读(349) 评论(0) 推荐(0) 编辑
摘要: 前言 记录下ZK客户端的使用学习,初步想法是从几个方面来记录 1. 如何开始使用及api介绍(创建会话以及增删查改) 2. 异步调用 3. 事件监听 4. Master选举 5. 分布式锁 6. 计数器 7. Barrier 仓库介绍 GroupID/Org | ArtifactID/Name | 阅读全文
posted @ 2019-11-15 13:02 六月过半 阅读(547) 评论(0) 推荐(0) 编辑
摘要: ArrayList源码分析,基本和Vector一致,去掉了synchronized 阅读全文
posted @ 2019-10-25 13:20 六月过半 阅读(149) 评论(0) 推荐(0) 编辑
摘要: 一个双向队列的结构分析, java //添加到队首 public void addFirst(E e) { if (e == null) throw new NullPointerException(); //head从队尾依次往前 elements[head = (head 1) & (eleme 阅读全文
posted @ 2019-10-25 12:59 六月过半 阅读(205) 评论(0) 推荐(0) 编辑