【数据结构与算法】【算法思想】【MySQL数据库索引】B+树

B+树特点

在这里插入图片描述

考虑因素

支持按照区间来查找数据
磁盘 IO 操作
N叉树

树的高度就等于每次查询数据时磁盘 IO 操作的次数
在选择 m 大小的时候,要尽量让每个节点的大小等于一个页的大小。读取一个节点,只需要一次磁盘 IO 操作。(分裂成两个节点)
在这里插入图片描述

问题

跳表和B+树在实现难度和性能上有什么区别,在数据量很大的情况下,表现性能如何,为什么redis选跳表?
b+树主要是用在外部存储上,为了减少磁盘IO次数。
跳表比较适合内存存储。
实际上,两者本质的设计思想是雷同的,性能差距还是要具体看应用场景,无法从时间复杂度这么宽泛的度量标准来度量了。

B+ 树中,将叶子节点串起来的链表,是单链表还是双向链表?为什么?

对于B+tree叶子节点,是用双向链表还是用单链表,得从具体的场景思考。我想,大部分同学在开发中遇到的数据库查询,都遇到过升序或降序问题,即类似这样的sql: select name,age, … from where uid > startValue and uid < endValue order by uid asc(或者desc),此时,数据底层实现有两种做法:
1)保证查出来的数据就是用户想要的顺序
2)不保证查出来的数据的有序性,查出来之后再排序
以上两种方案,不加思考,肯定选第一种,因为第二种做法浪费了时间(如果选用内存排序,还是考虑数据的量级)。那如何能保证查询出来的数据就是有序的呢?单链表肯定做不到,只能从头往后遍历,再想想,只能选择双向链表了。此时,可能有的同学又问了:双向链表,多出来了一倍的指针,不是会多占用空间嘛? 答案是肯定的。可是,我们再细想下,数据库索引本身都已经在磁盘中了,对于磁盘来说,这点空间已经微不足道了,用这点空间换来时间肯定划算呀。顺便提一下:在实际工程应用中,双向链表应用的场景非常广泛,毕竟能大量减少链表的遍历时间

如果我们把散列表中的结点,也用链表串起来,能否支持按照区间查找数据呢?

答案是「肯定的」。JDK中的LinkedHashMap为了能做到保持节点的顺序(插入顺序或者访问顺序),就是用双向链表将节点串起来的。

在这里插入图片描述

笔记整理来源: 王争 数据结构与算法之美

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/424708.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

第十七期:2019人工智能统计数字和一些重要事实

人工智能(AI)每天在以惊人的速度发展。这项技术在2018年已经取得了巨大的成功&#xff0c;简化医疗保健业的工作流程&#xff0c;降低制造业的间接费用&#xff0c;并减少教育业的行政工作量。现在是2019年&#xff0c;每天似乎都有一家新的AI初创公司冒出来&#xff0c;致力于…

[Leetcode][第78题][JAVA][子集][位运算][回溯]

【问题描述】[中等] 【解答思路】 1. 位运算 复杂度 class Solution {List<Integer> t new ArrayList<Integer>();List<List<Integer>> ans new ArrayList<List<Integer>>();public List<List<Integer>> subsets(int[] n…

第十八期:闲鱼上哪些商品抢手?Python分析后告诉你

经常看到有朋友在闲鱼卖些小东西又或是自己擅长的一些技能&#xff0c;都能为他们带来不错的 睡后收入。 作者&#xff1a;星安果 1.目标场景 经常看到有朋友在闲鱼卖些小东西又或是自己擅长的一些技能&#xff0c;都能为他们带来不错的睡后收入。 闲鱼上大量的商品&#xf…

[Leetcode][第1143题][JAVA][最长公共子序列][LCS][动态规划]

【问题描述】[中等] 【解答思路】 时间复杂度&#xff1a;O(N^2) 空间复杂度&#xff1a;O(N^2) class Solution {public int longestCommonSubsequence(String text1, String text2) {int m text1.length(), n text2.length();int[][] dp new int[m 1][n 1];for (int i …

第十九期:程序员节,女朋友偷偷送了我这个...

10 月 24 日&#xff0c;本是个寻常的日子&#xff0c;但是在新时代的中国&#xff0c;却赋予了它新的意义。 作者&#xff1a;技术栈 10 月 24 日&#xff0c;本是个寻常的日子&#xff0c;但是在新时代的中国&#xff0c;却赋予了它新的意义。 正是广大的程序员们&#xff…

第二十期:黄金三步法 | 汇报时,如何让老板快速抓住重点?

对事物的归类分组是我们人类的天性&#xff0c;我们的大脑会自动将发现的所有事物以某种持续组织起来。但如何组织才能帮助我们解决工作和生活中出现的各种复杂问题?今天&#xff0c;我们请阿里高级技术专家张建飞分享他的黄金三步法。 作者&#xff1a;从码农到工匠 对事物的…

vs设置html的模板快

打开vs编辑器&#xff0c;点击文件--》首选项--》用户代码片段 之后选择先对应的编辑器模板 进入里面编写相对应的代码块 之后直接在编辑器中调用。 转载于:https://www.cnblogs.com/zengsf/p/10929653.html

第二十一期:干货盘点!推荐程序员使用的5款工具软件

说到程序员&#xff0c;大多数人脑袋里显现出来的第一个画面应当就是一个面容冷漠的人指尖在键盘上快速飞跃敲出一行行看不懂的字符就能轻而易举入侵别人的系统。然而想象很丰满&#xff0c;现实是很骨感的&#xff0c;大多数程序员都只是一个简单的码农。 作者&#xff1a;四…

第二十二期:New一个对象的时候发生了什么?

如你所知&#xff0c;Java是一门面向对象的编程语言。我们平常在写代码的时候也是在不停的操作各种对象&#xff0c;那么当你在写出User user new User();这样一行代码的时候&#xff0c;JVM都做了些什么呢&#xff1f; 作者&#xff1a;湖人总冠军 一、引言 如你所知&#…

【数据结构与算法】【算法思想】Dijkstra算法

图的两种搜索算法&#xff0c;深度优先搜素和广度优先搜索。这两种算法主要是针对无权图的搜索算法。针对有权图&#xff0c;也就是图中的每条边都有一个权重&#xff0c;该如何计算两点之间的最短路径&#xff1f;最短路径算法&#xff08;Shortest Path Algorithm&#xff09…

第二十三期:程序员节Keep被曝突然裁员300多人,60%是开发和运营

社交健身App “Keep”突然裁员超300人&#xff0c;而且是在1024程序员节。此次被裁的人员中&#xff0c;大约有60%的人是开发和运营&#xff0c;补偿方案为N1。 作者&#xff1a;三言财经 10月24日脉脉有多条消息称&#xff0c;社交健身App “Keep”突然裁员超300人&#xff0…

542. 01 Matrix

输入&#xff1a;元素值为0或者1的矩阵。 输出&#xff1a; 每个元素距离0的最近距离是多少。 规则&#xff1a;相邻单元格的距离是1&#xff0c;相邻是指上下左右4个方向。 分析&#xff1a;这类似于学习课程安排&#xff0c;可以从元素值为0的单元开始沿4个方向遍历。matrix[…

第二十四期:管理 | 成功领导远程IT团队的7个技巧

管理虚拟工作环境需要各种真实世界的技能和工具。以下是激发创造力和生产力的策略。为了在日益缺乏人才和竞争激烈的IT世界中取得成功&#xff0c;越来越多的企业开始依赖于地理上分散的劳动力。 作者&#xff1a;John Edwards 管理虚拟工作环境需要各种真实世界的技能和工具…

310. Minimum Height Trees

输入&#xff1a;包含n个节点的无向图。n&#xff1a;表示从0到n-1&#xff0c;n个节点。edges&#xff1a;int数组&#xff0c;是从一个节点到另外一个节点。但是没有方向。 输出&#xff1a;以哪些节点为根节点&#xff0c;具有最小高度的树&#xff0c;返回这些根节点。 规则…

计算获取最小值和最大值

比如&#xff0c;在下面的销售业绩中&#xff0c;统计业务员的销售业绩中最大值和最小值。 下面是业务数据&#xff1a; CREATE TABLE [dbo].[SalesPerformance]([ID] [int] IDENTITY(1,1) NOT NULL,[Salesman] NVARCHAR(30) NOT NULL,[OrderDate] [DATE] NULL,[Sell] DECIM…

第二十五期:知乎用Go替代Python,说明了啥

众所周知&#xff0c;知乎早在几年前就将推荐系统从 Python 转为了 Go。于是乎&#xff0c;一部分人就说 Go 比 Python 好&#xff0c;Go 和 Python 两大社区的相关开发人员为此也争论过不少&#xff0c;似乎&#xff0c;谁也没完全说服谁。 作者&#xff1a;hello架构 大概每…

[Leetcode][第106题][JAVA][ 从中序与后序遍历序列构造二叉树][分治][递归]

【问题描述】[中等] 【解答思路】 public class Solution {public TreeNode buildTree(int[] inorder, int[] postorder) {int inLen inorder.length;int postLen postorder.length;// 特判if (inLen ! postLen) {throw new RuntimeException("输入错误");}return …

第二十六期:英国建设下一代IOT基础设施的历史机遇和挑战

无论未来物联网发展的中心在哪里&#xff0c;都会带来一笔巨大的财富。但许多地区面临的真正障碍是缺乏可用的光纤基础设施来形成回程网络。接下来看一看全光纤在英国的推广情况。 作者&#xff1a;风车云马编译 世界各地的市政当局都在呼吁制定支持5G的基础设施计划。这些基…

[Leetcode][第889题][JAVA][根据前序和后序遍历构造二叉树][分治][递归]

【问题描述】[中等] 【解答思路】 copyOfRange class Solution {public TreeNode constructFromPrePost(int[] pre, int[] post) {if(prenull || pre.length0) {return null;}return dfs(pre,post);}private TreeNode dfs(int[] pre,int[] post) {if(prenull || pre.length0)…

第二十七期:Deepfake视频正在快速传播,也许区块链能够阻止这波“瘟疫”

“假新闻”一词已经成为当下的热门话题&#xff0c;而Deepfake(即看似真实&#xff0c;但实为伪造的视频操纵行为)则会进一步加剧民众与媒体之间的不信任危机。 作者&#xff1a;佚名来源 “假新闻”一词已经成为当下的热门话题&#xff0c;而Deepfake(即看似真实&#xff0c;…