2021-12-04发表 zhaommmmomo Code / 实现 / 数据结构7 分钟读完 (大约1003个字)SkipList原理及实现重点randLevel算法 12345678910111213141516/** * Redis实现 * 初始层数为1,每次随机生成一个随机数,取低16位 * 当取的这个值小于0.25倍的0xFFFF时,level++,否则退出。 * 返回level和maxLevel的最小值 * * 这里的ZSKIPLIST_P是晋升的概率。对应的期望层高是E=1/(1-p)。 */#define ZSKIPLIST_MAXLEVEL 64#define ZSKIPLIST_P 0.25private int randLevel() { int level = 1; while ((random() & 0xFFFF) < (ZSKIPLIST_P * 0xFFFF)) level += 1; return (level < ZSKIPLIST_MAXLEVEL) ? level : ZSKIPLIST_MAXLEVEL;}阅读更多
2021-11-03发表 zhaommmmomo Code / 实现 / 分布式 / 协议 / 算法26 分钟读完 (大约3929个字)通过Java实现Raft算法前言7月份的时候参加了一个阿里天池的性能优化比赛,后面在复赛的时候因为是集群场景,需要考虑各个节点之间数据的一致性,本来想自己实现的,但奈何时间太短(ps: 太菜了😭),最终还是找了市面上成熟的中间件来实现(Ignite)。这不,还是手痒,自己实现一个基于Raft的一致性服务。 Github:zraft 个人博客:zhaommmmomo阅读更多