在计算机中磁盘存储数据最小单元是扇区,一个扇区的大小是 512 字节,而文件系统(例如 XFS/EXT4)他的最小单元是块,一个块的大小是 4K。...这里我们先假设 B+ 树高为 2,即存在一个根节点和若干个叶子节点,那么这棵 B+ 树的存放总记录数为:根节点指针数*单个叶子节点记录行数。...其实这也很好算,我们假设主键 ID 为 bigint 类型,长度为 8 字节,而指针大小在 InnoDB 源码中设置为 6 字节,这样一共 14 字节。...怎么得到 InnoDB 主键索引 B+ 树的高度? 上面我们通过推断得出 B+ 树的高度通常是 1-3,下面我们从另外一个侧面证明这个结论。...最后回顾一道 MySQL 面试题:为什么 MySQL 的索引要使用 B+ 树而不是其他树形结构?比如 B 树?现在这个问题的复杂版本可以参考本文。
innodb为什么选择B+ Tree而不是跳表,Redis为什么选择跳表而不是B+ Tree 跳表 B+ Tree 跳表和B+ tree相同之处 跳表和B+ tree在数据插入方面的性能 B+ tree...插入性能分析 跳表插入性能分析 为什么Innodb选择B+ tree而不是跳表 为什么Redis有序集合底层选择跳表而非B+ tree 小结 参考 ---- 跳表 链表和数组相比,数组可以通过下标快速定位...---- 为什么Innodb选择B+ tree而不是跳表 B+ tree是多叉树结构,每个结点都是一个16k的数据页,能存放较多的索引信息,所以扇出很高。三层左右就可以存储2kw左右的数据。...因此,redis最终选择的是跳表,而不是B+ tree。...读写全在内存中,不涉及磁盘IO,无需考虑索引层高度,同时由于跳表实现起来更加简单,相比B+ tree而言,少了选择树结构的开销,因此redis使用跳表来实现zset,而不是B+ tree。
前言 MySQL数据库是日常开发或者面试中最常遇到的数据库之一,你在使用过程是否有过类似的疑问:为什么它的索引使用的设计结构是B+树而不是B树呢?下面一起来看看吧。...,只是作为索引使用,其内部节点比B树要小,快能够容纳的结点关键数量更多,一次性读入内存中的关键字也更多,相对的I/O次数也减少了,而I/O读写次数是影响索引检索效率的最大因素) B+树的查询效率更加稳定...而B+树任何关键字的查询都必须从根节点到叶子结点,所有的关键字的查询路径长度一样,导致每一个关键字的查询效率相当。...B+树的叶子节点使用指针顺序连接在一起,只要遍历叶子节点就可以实现整棵树的遍历,而且在数据库中基于范围的查询是非常频繁的,而B树不支持这样的操作。 增删文件(节点)时,效率更高。...因为B+树的叶子节点包含所有关键字,并以有序的链表结构存储,这样可很好提高增删效率 B树只适合随机检索,而B+树同时支持随机检索和顺序检索。
在计算机中,磁盘存储数据最小单元是扇区,一个扇区的大小是512字节,而文件系统(例如XFS/EXT4)的最小单元是块,一个块的大小是4k,而对于InnoDB存储引擎也有自己的最小储存单元,页(Page)...其实这也很好算,假设主键ID为bigint类型,长度为8字节,而指针大小在InnoDB源码中设置为6字节,这样一共14字节 我们一个页中能存放多少这样的单元,其实就代表有多少指针,即16384/14=1170...怎么得到InnoDB主键索引B+树的高度? 上面通过推断得出B+树的高度通常是1-3,下面从另外一个侧面证明这个结论。...面试题 有一道MySQL的面试题,为什么MySQL的索引要使用B+树而不是其它树形结构?比如B树?...如果你想了解什么是 B+ 树,请点击下面链接进行阅读。 心里没点 B 树。。。
在计算机中磁盘存储数据最小单元是扇区,一个扇区的大小是512字节,而文件系统(例如XFS/EXT4)他的最小单元是块,一个块的大小是4k 而对于我们的InnoDB存储引擎也有自己的最小储存单元——页(Page...其实这也很好算,我们假设主键ID为bigint类型,长度为8字节,而指针大小在InnoDB源码中设置为6字节,这样一共14字节 我们一个页中能存放多少这样的单元,其实就代表有多少指针,即16384/14...怎么得到InnoDB主键索引B+树的高度? 上面我们通过推断得出B+树的高度通常是1-3,下面我们从另外一个侧面证明这个结论。...,B+树高度为3,customer表数据行数只有15万,B+树高度也为3。...最后回顾一道面试题 有一道MySQL的面试题,为什么MySQL的索引要使用B+树而不是其它树形结构?比如B树?
面试题1: MySQL为什么用B+树,而不用B树?...1.b+树只有叶子节点存数据 b树是每个节点都存数据 在相同数据量下b树的高度更高,所以查询效率更低 2.b树每一层存的是数据+索引; b+树是除了叶子节点存的是数据+索引以外,其余节点只存索引,所以在相同数据量的情况下...,b树的高度会比b+ 树高很多 面试题2:微服务架构中日志有什么好方案吗?...看一下是不是数据库堵塞了,然后排查一下插入的数据是不是特别大,然后看一下是不是到达数据库瓶颈了。...微服务是一种架构方式,拆分这个事不是核心问题,重点在服务治理能力。服务治理跟不上,拆分就是灾难。 那么问题来了,服务治理一般都包括哪些工作?
在可预见的趋势当中,B2B3.0正在不断地向供应链方面深耕,将打通供应链,触及生产端,衍生出物流、仓储、金融信贷等一系列的服务,B2B企业要拥抱趋势,顺势而上: 1、大数据赋能平台,助力企业降本增效 不确定性企业管理的天敌...而大数据可以给企业决策提供数据支持,有助于运营者对具有深度价值的信息进行提取,掌控正确的数据信息,并尽快做出决策,进一步打破信息孤岛,实现数据共享,大大提高企业的管理效率。...2、搭乘“供应链金融的”发展快轨,促进企业新发展 从资本市场的关注趋势还有微观主体的主动性战略,不难发现供应链金融正处于大爆发时期,而平台是基于供应链金融业务提高风控水平的,得在交易场景运用到供应链金融...B2B3.0时代是供应链平台优化的时代,在很多方面都产生出新的竞争因素,以致于整个的发展局面是激进的,要完全实现这一切可真有点把千钧之石推上万仞之巅之意,企业想要走上巅峰,就必须造就更强大的武器,而无论是部署一套供应链综合解决方案还是供应链系统构建都不是易事...B2B发展到3.0阶段,酣战激烈的进阶之路给电商人带来了一场饕餮盛宴,不得不说这也是厚积薄发的结果,企业就得做一个识时务者,顺势而上,积极拥抱B2B3.0趋势。
B树和B+树 开头,我们先回忆一下,B树和B+树的结构以及特点,如下所示: B树 ? 注意一下B树的两个明显特点 树内的每个节点都存储数据 叶子节点之间无指针相邻 B+树 ?...注意一下B+树的两个明显特点 数据只出现在叶子节点 所有叶子节点增加了一个链指针 针对上面的B+树和B树的特点,我们做一个总结 (1)B树的树内存储数据,因此查询单条数据的时候,B树的查询效率不固定,最好的情况是...因此,我们可以做一个推论:没准是Mysql中数据遍历操作比较多,所以用B+树作为索引结构。而Mongodb是做单一查询比较多,数据遍历操作比较少,所以用B树作为索引结构。...而Mongodb做数据遍历操作少呢? 因为Mysql是关系型数据库,而Mongodb是非关系型数据。 那为什么关系型数据库,做数据遍历操作多? 而非关系型数据库,做数据遍历操作少呢?...我:"巴拉巴拉" 面试官:"为什么Mongodb索引用B树,而Mysql用B+树?" 然后你就回去等通知了! 套路三 你简历既没写mysql,没写mongodb!
B树和B+树 开头,我们先回忆一下,B树和B+树的结构以及特点,如下所示: B树 ? 注意一下B树的两个明显特点 树内的每个节点都存储数据 叶子节点之间无指针相邻 B+树 ?...注意一下B树的两个明显特点 数据只出现在叶子节点 所有叶子节点增加了一个链指针 针对上面的B+树和B树的特点,我们做一个总结 (1)B树的树内存储数据,因此查询单条数据的时候,B树的查询效率不固定,最好的情况是...因此,我们可以做一个推论:没准是Mysql中数据遍历操作比较多,所以用B+树作为索引结构。而Mongodb是做单一查询比较多,数据遍历操作比较少,所以用B树作为索引结构。...而Mongodb做数据遍历操作少呢? 因为Mysql是关系型数据库,而Mongodb是非关系型数据。 那为什么关系型数据库,做数据遍历操作多? 而非关系型数据库,做数据遍历操作少呢?...我:"巴拉巴拉" 面试官:"为什么Mongodb索引用B树,而Mysql用B+树?" 然后你就回去等通知了! 套路三 你简历既没写mysql,没写mongodb!
引言 如果面试官问的是,为什么Mysql中Innodb的索引结构采取B+树?这个问题时,给自己留一条后路,不要把B树喷的一文不值。因为网上有些答案是说,B树不适合做文件存储系统的索引结构。...B树和B+树 开头,我们先回忆一下,B树和B+树的结构以及特点,如下所示: B树 ? 注意一下B树的两个明显特点 树内的每个节点都存储数据 叶子节点之间无指针相邻 B+树 ?...注意一下B+树的两个明显特点 数据只出现在叶子节点 所有叶子节点增加了一个链指针
摘要: 本篇写的是触发器和外键约束 关键词: 触发器 | 外键约束 | 储存表链接更新 | Mysql 之所以用这个标题而没用触发器或者外键约束的原因, 1、是因为在做出这个需求之前博主是对触发器和外键约束丝毫理不清楚的...2这个标题比较接地气,因为老板就是这样给我提需求的 先说需求: A关联B表派生C表 C随着A,B 的更新而更新 走的弯路: 关联更新,所以我的重点找到关联上去了,然后就找到了外键,看了一大波外键的文章博客
(2)局限性 由于维护这种高度平衡所付出的代价比从中获得的效率收益还大,故而实际的应用不多,更多的地方是用追求局部而不是非常严格整体平衡的红黑树。...B/B+树上操作的时间通常由存取磁盘的时间和CPU计算时间这两部分构成,而CPU的速度非常快,所以B树的操作效率取决于访问磁盘的次数,关键字总数相同的情况下B树的高度越小,磁盘I/O所花的时间越少。...我们就举个文件查找的例子:有3个文件夹a、b、c, a包含b,b包含c,一个文件yang.c,a、b、c就是索引(存储在非叶子节点), a、b、c只是要找到的yang.c的key,而实际的数据yang.c...(3)应用 1、B和B+树主要用在文件系统以及数据库做索引,比如MySQL; B/B+树性能分析 n个节点的平衡二叉树的高度为H(即logn),而n个节点的B/B+树的高度为logt((n+1)/2...2、B+树的查询效率更加稳定:由于非终结点并不是最终指向文件内容的结点,而只是叶子结点中关键字的索引。所以任何关键字的查找必须走一条从根结点到叶子结点的路。
输入两棵二叉树A,B,判断B是不是A的子结构。...(ps:我们约定空树不是任意一个树的子结构) public static boolean check(TreeNode h, TreeNode t2) { if (t2 == null) {...return check(t1, t2) || HasSubtree(t1.left, t2) || HasSubtree(t1.right, t2); } 输入一个整数数组,判断该数组是不是某二叉搜索树的后序遍历的结果
为什么MySQL InnoDB 存储引擎 要用B+树做索引,而不用B树?...而因为B+树的内部节点只是作为索引使用,而不像B树那样每个节点都需要存储硬盘指针。...而B+ 树内部结点只需要1个盘快。当需要把内部结点读入内存中的时候,B 树就比B+ 树多一次盘块查找时间(在磁盘中是盘片旋转的时间)。...而B树则需要进行每一层的递归遍历。相邻的元素可能在内存中不相邻,所以缓存命中性没有B+树好。 树高度越小,I/O次数越少。...为什么是B+树而不是B树呢,因为它内节点不存储data,这样一个节点就可以存储更多的key。
题目描述 输入两棵二叉树A,B,判断B是不是A的子结构。(ps:我们约定空树不是任意一个树的子结构) 思路 首先找到root1结点值和root2结点值相等的点,遍历比对这两个结点的子树是否完全一致....我们在比对子树时候,如果我们比对当前结点值和目标结点值一致,我们仍然需要比对它的左右子树,这里我们必须保证,左右子树必须都要和目标结点的左右子树相同才行,因此第二个子树判断函数最后一行代码里用的是&&而不是
3.2 当有两次继承时,演示super指向他紧邻的父类 我们把上面的例子扩展成两次继承, 就看出:马克-to-win,Super是一个参考(或说指针)指向他紧邻的父类,而不是最底层的基类。...ZMark_to_win: " + i); } } class A extends ZMark_to_win { int i; void show() { super.show...(); System.out.println("i in A: " + i); } } class B extends A { int i; public B(...int x, int y) { super.i = x; i = y; } public void show() { super.show...(String[] args) { B b = new B(2, 3); b.show(); } 更多请见:https://blog.csdn.net/qq
▌关注人而不是产品 做项目,一定要发掘项目组每个成员的优秀潜能,让大家理解并热爱软件产品最终的蓝图和愿景,做到了这点,项目的成员就会自我驱动,自觉合作,寻找达成目标的最优路径并坚韧不拔地持续前进。...有些企业喜欢挖优秀的人,而不是去把自己打造成一个培养优秀人才的地方。殊不知:是事情成就了人,而不是人成就了事。指望优秀的人来帮自己成事,不如做成一件事让自己和参与的人都变得优秀。...▌成就他人 我们活着不是为了工作,不是为了做设计、写程序,这些不是我们生活的目的。我们活着是为了成就我们自己,而要想成就自己,就必须首先成就他人。...▌不屑于沟通 很多公司非常重视架构师的硬技能,而不是特别重视他的软技能。无论是跟项目之间的沟通,还是聊需求也好,他认为这些“low逼”的事是项目经理干的,不是自己做的。...▌眼高手低 架构师在晋升之前可能是负责一部分的业务系统,出现的问题也只需要考虑在当前这部分解决就好了,而晋升之后则需要考虑整个业务系统,和之前完全不是一个维度的问题,这可能就会影响你对整个事情的掌控力和决策
f = new F(); // f能得到a,b吗?...回到这个题,我一看题目就明白,这是个js原型链的东西,于是我老神入定的脑补了几分钟,得出结论“f可以得到a,b”,呵呵, 然后打开F12控制台,运行了一下,然后我挨了一耳光,“f得不到b” 万事皆有因缘...,f和b为何无缘?...简单的说, f.a === Object.prototype.a //=> true f.b === Function.prototype.b //=> false 就是“原型链上找不到b”, 这个题的关键词有二个...想真正完全彻底的学会js,真的不是件容易的事情。
做视频一定要去B站 我的公众号的打开率已经到了惨不忍睹的程度了,4%都不到,内容创作行业现在面临着视频化的趋势,大家看一下自己每天花在互联网上的时间,是不是看视频的时间比阅读文字的时间长了?...最近看了一些关于B站的研究报告(具体参考在文末),结论是:B站真是个好社区。 总结3个我认为B站最大的优势:高速增长、用户年轻、内容丰富。 高速增长 11月19日,B站发布 2020 年第三季度财报。...财报显示,三季度B站月活用户达1.97亿,同比增长54%;其中移动端月活用户达1.84亿,同比增长61%。8月,B站单月月活用户突破2亿,创历史新高。...必然是B站哇,QuestMobile数据显示,B站位列24岁及以下年轻用户偏爱的十大APP榜首。...B站是不是学习网站肯定因人而异,但是作为up主,就不得不顺势而为。古罗马诗人贺拉斯倡导的“寓教于乐 寓学于乐”也是从人性角度既劝谕读者,又使他喜爱,才能符合众望。
领取专属 10元无门槛券
手把手带您无忧上云