数据结构
九品神元师
AI平台、分布式存储、分布式计算、微服务
展开
-
全局ID生成器
snowflake的结构如下(每部分用-分开): 0 - 0000000000 0000000000 0000000000 0000000000 0 - 00000 - 00000 - 000000000000 第一位为未使用,接下来的41位为毫秒级时间(41位的长度可以使用69年),然后是5位datacenterId和5位workerId(10位的长度最多支持部署1024个节点) ,最后12位是毫秒内的计数(12位的计数顺序号支持每个节点每毫秒产生4096个ID序号)一共加起来刚好64...原创 2020-05-24 15:12:30 · 1858 阅读 · 2 评论 -
跳表SkipList(go语言实现)
网上找到一个开源的代码https://github.com/AceDarkknight/ConcurrentSkipList数据结构我们用 ConcurrentSkipList 这个数据结构代表整个 skip list,可以看到里面是一个包含多个 skipList 的切片。// ConcurrentSkipList is a struct contains a slice of concurrent skip list.type ConcurrentSkipList struct {原创 2020-05-23 16:50:30 · 472 阅读 · 0 评论 -
跳表SkipList
跳表是redis的一个核心组件,也同时被广泛地运用到了各种缓存地实现当中,它的主要优点,就是可以跟红黑树、AVL等平衡树一样,做到比较稳定地插入、查询与删除。理论插入查询删除的算法时间复杂度为O(logN)。什么是跳表 链表,相信大家都不陌生,维护一个有序的链表是一件非常简单的事情,我们都知道,在一个有序的链表里面,查询跟插入的算法复杂度都是O(n)。我们能不能进行优化呢,比如我们一次比较两个呢?那样不就可以把时间缩小一半?同理,如果我们4个4个比,...原创 2020-05-23 16:36:04 · 171 阅读 · 0 评论