草庐IT

splay-tree

全部标签

B+Tree树

实际上它就是B树的变种,以一颗最大度数(max-degree)为4(4阶)的b+tree为例:所有的元素都会出现在叶子节点,叶子节点形成一个单向链表,每一个节点都会通过一个指针指向下一个元素。Mysql索引数据结构对经典的B+Tree树结构进行了优化。在原B+Tree树的基础上,增加了一个指向相邻叶子节点的链表指针,就形成了一个带有顺序指针的B+Tree,提高区间的访问性能。有利于数据库的排序操作。每个数据节点都是存储在一个页当中的。可以通过一个数据结构可视化的网站来简单演示一下。https://www.cs.usfca.edu/~galles/visualization/BPlusTree.

B+Tree树

实际上它就是B树的变种,以一颗最大度数(max-degree)为4(4阶)的b+tree为例:所有的元素都会出现在叶子节点,叶子节点形成一个单向链表,每一个节点都会通过一个指针指向下一个元素。Mysql索引数据结构对经典的B+Tree树结构进行了优化。在原B+Tree树的基础上,增加了一个指向相邻叶子节点的链表指针,就形成了一个带有顺序指针的B+Tree,提高区间的访问性能。有利于数据库的排序操作。每个数据节点都是存储在一个页当中的。可以通过一个数据结构可视化的网站来简单演示一下。https://www.cs.usfca.edu/~galles/visualization/BPlusTree.

「学习笔记」平衡树基础:Splay 和 Treap

「学习笔记」平衡树基础:Splay和Treap点击查看目录目录「学习笔记」平衡树基础:Splay和Treap知识点平衡树概述Splay旋转操作Splay操作插入\(x\)查询排名为\(k\)的数查询\(x\)的排名查询\(x\)的前驱查询\(x\)的后继删除\(x\)代码替罪羊树TreapFHQ_Treap树套树平衡树的区间操作例题P3391文艺平衡树思路P4036[JSOI2008]火星人思路P4309[TJOI2013]最长上升子序列思路星系探索思路代码知识点平衡树概述二叉搜索树(BST)的简单定义:根节点的左子树权值\(根节点权值\(根节点的右子树权值;左子树和右子树均为二叉搜索树。这样

「学习笔记」平衡树基础:Splay 和 Treap

「学习笔记」平衡树基础:Splay和Treap点击查看目录目录「学习笔记」平衡树基础:Splay和Treap知识点平衡树概述Splay旋转操作Splay操作插入\(x\)查询排名为\(k\)的数查询\(x\)的排名查询\(x\)的前驱查询\(x\)的后继删除\(x\)代码替罪羊树TreapFHQ_Treap树套树平衡树的区间操作例题P3391文艺平衡树思路P4036[JSOI2008]火星人思路P4309[TJOI2013]最长上升子序列思路星系探索思路代码知识点平衡树概述二叉搜索树(BST)的简单定义:根节点的左子树权值\(根节点权值\(根节点的右子树权值;左子树和右子树均为二叉搜索树。这样

索引 - B+Tree

B+树索引是B+树在数据库中的一种实现,是最常见也是数据库中使用最为频繁的一种索引。B+树中的B代表平衡(balance),而不是二叉(Binary),因为B+树是从最早的平衡二叉树演化而来的。二叉查找树二叉树性质:左子树的键值小于根的键值,右子树的键值大于根的键值二叉树搜索相当于一个二分查找,时间复杂度可以达到O(log2(n))二叉树以第一个插入的数据作为根节点,在数据基本有序的情况下,二叉树的构建基本上就是一个线性链表结构。查找最后一个数据等于遍历整个链表,查询效率很低,不稳定。平衡二叉树(AVLTree)平衡二叉树(AVL树)是一颗空树或它的左右两个子树的高度差的绝对值不能超过1,并且

索引 - B+Tree

B+树索引是B+树在数据库中的一种实现,是最常见也是数据库中使用最为频繁的一种索引。B+树中的B代表平衡(balance),而不是二叉(Binary),因为B+树是从最早的平衡二叉树演化而来的。二叉查找树二叉树性质:左子树的键值小于根的键值,右子树的键值大于根的键值二叉树搜索相当于一个二分查找,时间复杂度可以达到O(log2(n))二叉树以第一个插入的数据作为根节点,在数据基本有序的情况下,二叉树的构建基本上就是一个线性链表结构。查找最后一个数据等于遍历整个链表,查询效率很低,不稳定。平衡二叉树(AVLTree)平衡二叉树(AVL树)是一颗空树或它的左右两个子树的高度差的绝对值不能超过1,并且

LSM Tree 数据库底层索引

数据库中非常常用的索引数据结构——B+树,在过去很多年里它都是数据库索引的首选实现方式,但是这种数据结构也并不是很完美。因为,每次修改数据都很有可能破坏B+树的约束,我们需要对整棵树进行递归的合并、分裂等调整操作,而不同节点在磁盘上的位置很可能并不是连续的,这就导致我们需要不断地做随机写入的操作,而随机写入的性能是比较差的,这个问题在写多读少的场景下会更加明显。LSMTree(LogStructureMergeTree)是比B+树更适合写多读少场景的索引结构,也广泛应用在各大NoSQL中。比如基于LSM树实现底层索引结构的RocksDB、LevelDB。LSMTree的实现原理:LSM树包含了

LSM Tree 数据库底层索引

数据库中非常常用的索引数据结构——B+树,在过去很多年里它都是数据库索引的首选实现方式,但是这种数据结构也并不是很完美。因为,每次修改数据都很有可能破坏B+树的约束,我们需要对整棵树进行递归的合并、分裂等调整操作,而不同节点在磁盘上的位置很可能并不是连续的,这就导致我们需要不断地做随机写入的操作,而随机写入的性能是比较差的,这个问题在写多读少的场景下会更加明显。LSMTree(LogStructureMergeTree)是比B+树更适合写多读少场景的索引结构,也广泛应用在各大NoSQL中。比如基于LSM树实现底层索引结构的RocksDB、LevelDB。LSMTree的实现原理:LSM树包含了

利用print.js + el-tree 动态修改打印字段(支持全选所有字段)

         >全选    >             :data="treePrintData"     ref="treePrintData"     show-checkbox     default-expand-all     node-key="id"     :props="defaultProps"    >      handleCheckAllChange(val){   if(this.checkAll){    //全选    this.$refs.treePrintData.setCheckedNodes(this.treePrintData);   }else{

利用print.js + el-tree 动态修改打印字段(支持全选所有字段)

         >全选    >             :data="treePrintData"     ref="treePrintData"     show-checkbox     default-expand-all     node-key="id"     :props="defaultProps"    >      handleCheckAllChange(val){   if(this.checkAll){    //全选    this.$refs.treePrintData.setCheckedNodes(this.treePrintData);   }else{