红黑树、B+Tree、B—Tree

news2024/11/15 11:03:48

红黑树

B-Tree

这三个通常都是把内存全部加载到内存里,然后再内存中进行处理的,数据量通常不会很大。

内存一般容量都在GB级别,比如说现在常见的4G、8G或者16G。

如果要处理的数据规模非常大,大到内存根本存不下的时候。这个时候只能先存到硬盘里,硬盘呢

容量又比内存大的多,因为没有办法把大规模的数据读到内存里,所以只能分批次的把需要处理的

数据从硬盘调到内存里,进行进一步处理。

操作数据是需要CPU去执行相关的指令的,cpu是不能直接和硬盘进行交互的。硬盘里的数据必需

先调到内存里头,才能进一步和CPU进行交互,进行数据处理。可以叫做一次硬盘I/O,然而这个

访问速度是非常慢的,内存单次的访问时间是纳秒级别,但是硬盘的访问的毫秒级的,1毫秒等于

100万纳秒。

降低树高就可以减少非常耗时的硬盘操作。

B+Tree

节点之间是用指针连接成了一个链表的结构

B+Tree常被用作数据库中的索引结构,那实际上每个元素都包含指向对应记录存储地址的指针。那此时呢,结点内的元素又被称为关键字(key),通过关键字中包含的指针可以索引到数据库中的某一条记录。

B+Tree相当于数据表中的一个索引,可以通过关键字,快速定位到数据表中的某一条记录,实际

上关键字的指针指向的是数据文件中这一条(id=23)这一条的地址,其他关键字也是一样的都在最

下面画的那一排下面记录呢。B+Tree本身也是作为一个索引文件存储在硬盘里的,但在实际应用

中不一定非要以ID作为关键字,也可以将姓名作为关键字等(可以给同一个数据表构建多个不同关

键字的索引来应对各种各样的查询需求)。

因为叶子节点包含了所有的关键字,所以要顺序查找所有的关键字的记录,就像遍历链表一样,

非常的方便。如果要随机查找某一关键字,也需要挨个遍历去寻找呢?那么B+Tree的叶子节点不

就是解决这个问题吗?可以帮助我们快速定位到叶子节点某一关键字,相当于给叶子节点建立的索

引,目的就是实现以log级别的复杂度,去查找叶子节点上的某一关键字记录。

所以整个B+Tree是一套多级索引结构,目的就是为了加速查询的速度。我们只需要通过指向根节

点的指针,就可以以log级别的复杂度查找到指定关键字对应的记录。

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

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

相关文章

基于微信小程序靓丽内蒙古APP(源码+定制+辅导)

博主介绍: ✌我是阿龙,一名专注于Java技术领域的程序员,全网拥有10W粉丝。作为CSDN特邀作者、博客专家、新星计划导师,我在计算机毕业设计开发方面积累了丰富的经验。同时,我也是掘金、华为云、阿里云、InfoQ等平台…

验证码功能的思路和做法

验证码登录的思路和流程 步骤 1.导入依赖 <dependency><groupId>com.github.axet</groupId><artifactId>kaptcha</artifactId><version>0.0.9</version> </dependency> 2.写一个验证码的配置类 package com.lzy.config;im…

IM即时通讯软件,企业即时通讯系统就选WorkPlus

在现代企业中&#xff0c;高效的沟通和协作是推动业务发展的关键。随着科技的不断进步&#xff0c;团队成员和企业之间的沟通已经超越了传统的邮件和电话方式&#xff0c;转向了更实时、更便捷的方式&#xff0c;即即时通讯软件。在众多即时通讯软件中&#xff0c;WorkPlus作为…

滑动窗口解决子串问题

问题解析&#xff1a; 以这道题为例子&#xff1a;. - 力扣&#xff08;LeetCode&#xff09;找长度最小的子数组&#xff0c;子数组和必须大于条件中的target 暴力解法&#xff1a;左右指针列举出每一种子数组的可能&#xff0c;每种可能去求子数组的和&#xff0c;找到最小的…

17 深入理解 C 语言 main 函数:返回值意义、命令行参数接收、跨环境差异及CMD乱码解决

目录 1 main 主函数 2 main 函数的返回值 2.1 返回值的意义 2.2 默认返回值 2.3 返回值类型 3 main 函数的参数 3.1 参数内容 3.2 案例&#xff1a;循环遍历主函数的参数 3.3 不传递参数 3.4 powershell 环境下传参 3.5 cmd 环境下传参 3.6 解决 cmd 输出乱码问题 …

pytorch深度学习基础 7 (简单的线性拟合+检验模型在验证集上的效果)

我们之前做的目的都是评估训练的损失&#xff0c;训练的损失Loss告诉我们&#xff0c;我们的模型是否能够完全拟合训练集&#xff0c;也就是说我们的模型是否有足够的能力处理数据中的相关信息。但是我们之前都是评价训练的好坏&#xff0c;并没有引入验证集。接下来我们就需要…

Java基础——自学习使用(多态)

一、多态的定义 父类的引用指向子类的对象。 B继承A&#xff0c;A abnew B();——父类引用指向子类的对象。 二、创建对象了解多态的内部结构 &#xff08;1&#xff09;父类即A类对象的内存结构图 &#xff08;2&#xff09;子类即B类对象的内存结构图 由于B中重写了父类A中…

EazyDraw for Mac 矢量图绘制设计软件

Mac分享吧 文章目录 效果一、下载软件二、开始安装1、双击运行软件&#xff0c;将其从左侧拖入右侧文件夹中&#xff0c;等待安装完毕2、应用程序显示软件图标&#xff0c;表示安装成功 三、运行测试安装完成&#xff01;&#xff01;&#xff01; 效果 一、下载软件 下载软件…

SSRF和CSRF实战复现

文章目录 SSRFWeb-Hacking-Lab-master1、Centos未授权访问2、Ubuntu未授权访问3、Ubuntu传入公钥访问4、ssrf_redis_lab_pickle_redis_lab CSRF:windphp SSRF SSRF(Server-Side Request Forgery:服务器端请求伪造) 是一种由攻击者构造形成由服务端发起请求的一个安全漏洞。 f…

第三课《排序》

前言 排序是将一组数据&#xff0c;按照指定的顺序或要求来进行排列的过程。是数据结构相关课程和内容较为重要和核心的内容之一&#xff0c;常常作为考试题和面试题目来考察学生和面试者&#xff0c;因此熟练掌握经典的排序算法原理和代码实现是非常重要的 本文介绍了几大较为…

AJAX(5)——Promise

Promise Promise对象用于表示一个异步操作的最终完成或失败及其结果值 语法&#xff1a; //创建Promise对象const p new Promise((resolve, reject) > {//执行异步代码setTimeout(() > {// resolve(成功结果)reject(new Error(失败结果))}, 2000)})//获取结果p.then(r…

坚鹏讲人才第13期:个人数字化转型——个人与时代的共赢之选

坚鹏讲人才第13期&#xff1a;个人数字化转型——个人与时代的共赢之选 在这个日新月异的时代&#xff0c;数字化转型已经成为当今时代的必然趋势&#xff0c;它不仅改变了我们的生活方式&#xff0c;也正在改变着各行各业的运营模式。数字化时代&#xff0c;不仅需要数字化企…

网络udp及ipc内存共享

大字符串找小字符串 调试 1. 信号处理函数注册&#xff1a;•一旦使用 signal 函数注册了信号处理函数&#xff0c;该函数就会一直有效&#xff0c;直到程序结束或者显式地取消注册。2. 注册多次的影响&#xff1a;•如果多次注册同一信号的处理函数&#xff0c;最后一次注册的…

快9月了刚结束基础,武忠祥强化vs张宇18讲应该如何选择?

快9月了&#xff0c;最近有一部分同学刚结束基础&#xff0c;在后台提问&#xff1a;强化到底该学武忠祥还是张宇18讲&#xff1f;其实这个问题&#xff0c;如果你是6月份开始强化&#xff0c;很好回答&#xff0c;但是现在已经快9月份了&#xff0c;很多同学都开始做真题了&am…

代码随想录 刷题记录-16 贪心算法(1)贪心理论基础及习题

一、理论基础 什么是贪心 贪心的本质是选择每一阶段的局部最优&#xff0c;从而达到全局最优。 贪心的套路&#xff08;什么时候用贪心&#xff09; 贪心算法并没有固定的套路。 所以唯一的难点就是如何通过局部最优&#xff0c;推出整体最优。 靠自己手动模拟&#xff0c…

深度学习 回归问题

1. 梯度下降算法 深度学习中, 梯度下降算法是是一种很重要的算法. 梯度下降算法与求极值的方法非常类似, 其核心思想是求解 x ′ x x′, 使得 x ′ x x′ 在取 x ⋆ x^{\star} x⋆ 时, 可以使得 l o s s 函数 loss函数 loss函数 的值最小. 其中, 在求解 x ′ x x′ 的过…

罗德与施瓦茨RS、UPV 音频分析仪 250KHZ 双通道分析仪UPL

罗德与施瓦茨 UPV 音频分析仪的规格包括&#xff1a; 模拟 双通道分析仪&#xff1a;带宽高达 250 kHz 生成正弦波信号&#xff1a;单通道最高 185 kHz&#xff08;需要 B1&#xff09;和双通道最高 80 kHz FFT本底噪声&#xff1a;< -140dB 固有频率响应&#xff08;20 …

链动 2+1 模式小程序 AI 智能名片商城源码培训邀约策略研究

摘要&#xff1a;本文深入剖析链动 21 模式小程序 AI 智能名片商城源码的培训邀约策略&#xff0c;从该源码的价值出发&#xff0c;阐述邀约的重要性&#xff0c;并详细介绍具体的邀约策略&#xff0c;旨在为相关培训活动提供切实可行的指导&#xff0c;提高邀约成功率&#xf…

前端如何快速切换node版本:nvm

安装之前最好卸载计算机已经安装的node&#xff08;通过Windows菜单找到Node.js的卸载程序&#xff0c;运行卸载程序&#xff09;。下载nvm安装包&#xff1a;nvm安装地址。安装nvm&#xff0c;选择nvm安装根路径指定nodejs的安装路径打开命令行&#xff0c;输入nvm -v 可查看版…

Object.create的原型继承

● 首先我们来从这种方法来创建一个和之前一样计算年龄的方法 const PersonProto {cacleAge() {console.log(2038 - birthYear);} };const zhangsan Object.create(PersonProto); console.log(zhangsan);● 发现确实可以实现原型继承的特性 const PersonProto {cacleAge()…