摘要:
B-tree 又叫平衡多路查找树。一棵 m 阶的 B-tree (m 叉树)的特性如下(其中 ceil(x)是一个取上限的函数) 1. 树中每个结点至多有 m 个孩子;2. 除根结点和叶子结点外,其它每个结点至少有有 ceil(m / 2)个孩子;3. 若根结点不是叶子结点,则至少有 2 个孩子(特 阅读全文
posted @ 2022-07-25 20:22
开源遗迹
阅读(96)
评论(0)
推荐(0)
摘要:
红黑树的特性(1)每个节点或者是黑色,或者是红色。(2)根节点是黑色。(3)每个叶子节点(NIL)是黑色。 [注意:这里叶子节点,是指为空(NIL 或NULL)的叶子节点! ](4)如果一个节点是红色的,则它的子节点必须是黑色的。(5)从一个节点到该节点的子孙节点的所有路径上包含相同数目的黑节点。左 阅读全文
posted @ 2022-07-25 20:18
开源遗迹
阅读(51)
评论(0)
推荐(0)
摘要:
前缀树(Prefix Trees 或者 Trie)与树类似,用于处理字符串相关的问题时非常高效。它可以实现快速检索,常用于字典中的单词查询,搜索引擎的自动补全甚至 IP 路由。下图展示了“top”, “thus”和“their”三个单词在前缀树中如何存储的 阅读全文
posted @ 2022-07-25 20:09
开源遗迹
阅读(106)
评论(0)
推荐(0)
摘要:
首先如果普通二叉树每个节点满足:左子树所有节点值小于它的根节点值,且右子树所有节点值大于它的根节点值,则这样的二叉树就是排序二叉树。 插入操作 首先要从根节点开始往下找到自己要插入的位置(即新节点的父节点);具体流程是:新节点与当前节点比较,如果相同则表示已经存在且不能再重复插入;如果小于当前节点, 阅读全文
posted @ 2022-07-25 20:07
开源遗迹
阅读(47)
评论(0)
推荐(0)
摘要:
散列表(Hash table,也叫哈希表)是一种查找算法,与链表、树等算法不同的是,散列表算法在查找时不需要进行一系列和关键字(关键字是数据元素中某个数据项的值,用以标识一个数据元素)的比较操作。散列表算法希望能尽量做到不经过任何比较,通过一次存取就能得到所查找的数据元素,因而必须要在数据元素的存储 阅读全文
posted @ 2022-07-25 20:00
开源遗迹
阅读(179)
评论(0)
推荐(0)
摘要:
链表是一种数据结构,和数组同级。比如, Java 中我们使用的 ArrayList,其实现原理是数组。而LinkedList 的实现原理就是链表了。链表在进行循环遍历时效率不高,但是插入和删除时优势明显。 阅读全文
posted @ 2022-07-25 19:58
开源遗迹
阅读(165)
评论(0)
推荐(0)
摘要:
队列是一种特殊的线性表,特殊之处在于它只允许在表的前端(front)进行删除操作,而在表的后端(rear)进行插入操作,和栈一样,队列是一种操作受限制的线性表。进行插入操作的端称为队尾,进行删除操作的端称为队头。 阅读全文
posted @ 2022-07-25 19:55
开源遗迹
阅读(47)
评论(0)
推荐(0)
摘要:
栈( stack)是限制插入和删除只能在一个位置上进行的表,该位置是表的末端,叫做栈顶(top)。它是后进先出(LIFO)的。对栈的基本操作只有 push(进栈)和 pop(出栈)两种,前者相当于插入,后者相当于删除最后的元素。 阅读全文
posted @ 2022-07-25 19:52
开源遗迹
阅读(144)
评论(0)
推荐(0)
摘要:
17、zookeeper是如何保证事务的顺序一致性的? zookeeper采用了全局递增的事务id来标识,所有的proposal(提议)都在被提出来的时候就被加上了zxid,zxid实际上是一个64位的数字·,高32位是epoch(时期,纪元,世;新时代)用来标识leader周期,如果有新的 lea 阅读全文
posted @ 2022-07-25 19:45
开源遗迹
阅读(350)
评论(0)
推荐(0)
摘要:
每个 sever 首先给自己投票,然后用自己的选票和其他 sever 选票对比,权重大的胜出,使用权重较大的更新自身选票箱。 具体选举过程如下: 1. 每个 Server 启动以后都询问其它的 Server 它要投票给谁。对于其他 server 的询问,server 每次根据自己的状态都回复自己推荐 阅读全文
posted @ 2022-07-25 19:45
开源遗迹
阅读(64)
评论(0)
推荐(0)

浙公网安备 33010602011771号