算法导论笔记——第十八章 B树】的更多相关文章

18.1 B树的定义  18.2 B树的基本操作 与一棵二叉搜索树一样,可以在从树根到叶子这个单程向下过程中将一个新的关键字插入B树中.为了做到这一点,当沿着树向下查找新的关键字所属位置时,就分裂沿途遇到的每个满结点(包括叶节点本身).如分裂一个满的根,首先要让根成为一个新的空根结点的孩子.树的高度因此增加1,分裂是树长高的唯一途径. 18.3 从B树中删除关键字 我们设计的这个过程必须保证无论何时,结点x递归调用自身时,x中关键字个数至少为最小度数t.使得有时在递归下降至子结点之前,需要把一个…
详细MIT算法导论笔记 (网络链接) 第一讲:课程简介及算法分析 (Sheridan) 第二讲:渐近符号.递归及解法  (Sheridan) 第三讲:分治法(1)(Sheridan) 第四讲:快排及随机化算法 (Sheridan) 第五讲:线性时间排序 (Sheridan) 第六讲:顺序统计.中值(Sheridan)…
一.高级数据结构 本章以后到第21章(并查集)隶属于高级数据结构的内容.前面还留了两章:贪心算法和摊还分析,打算后面再来补充.之前的章节讨论的支持动态数据集上的操作,如查找.插入.删除等都是基于简单的线性表.链表和树等结构,本章以后的部分在原来更高的层次上来讨论这些操作,更高的层次意味着更复杂的结构,但更低的时间复杂度(包括摊还时间). B树是为磁盘存储还专门设计的平衡查找树.因为磁盘操作的速度要远远慢于内存,所以度量B树的性能,不仅要考虑动态集合操作消耗了多少计算时间,还要考虑这些操作执行了多…
第十八章调试 18.1 准备开始          需要准备的东西: l  一个bug:大部分bug通常都不是行为可靠而且定义明确的 l  一个藏匿bug的内核版本:找出bug首先出现的版本 l  相关内核代码的知识和运气 最好能让bug重现,有一些bug存在而且有人没办法让他重现,因为内核与用户程序和硬件间的交互很微妙. 18.2内核中的bug 可以有无数种原因产生,表象也变化多端.代码中的错误往往引发一系列连锁反应,目击者才看到bug. 18.3通过打印来调试 内核提供了打印函数printk…
磁盘作为辅存,它的容量要比内存大得多,但是速度也要慢许多,下面就是磁盘的的结构图: 磁盘驱动器由一个或多个盘片组成,它们以固定的速度绕着主轴旋转,数据存储于盘片的表面,磁盘驱动器通过磁臂末尾的磁头来读写盘片.礠臂可以将磁头向主轴移近或移远.当一个磁头处于静止的时候,它下面经过的磁盘表面称为磁道. 磁盘之所以比主存要慢,是因为它有机械运动的部分:盘片旋转和磁臂运动.为了摊还机械移动所花费的等待时间,磁盘会一次存取多个数据项.磁盘上的数据被组织成页面.每次磁盘读写的数据都是以页面为单位. 本章考虑运…
当关键字是有界范围内的整数时,能够规避Ω(lglgn)下界的限制,那么在类似的场景下,我们应弄清楚o(lgn)时间内是否可以完成优先队列的每个操作.在本章中,我们将看到:van Emde Boas树支持优先队列操作及一些其他操作,每个操作最后情况运行时间为O(lglgn).而这种数据结构限制关键字必须为0~n-1的整数且无重复. 下面以n为元素个数,u为全域大小. 20.1 基本方法 直接寻址 即位图bitmap方法. insert,delete和member:复杂度O(1) minimum,m…
课程链接:http://open.163.com/special/opencourse/algorithms.html 第一课:算法分析基础 1.介绍插入排序与归并排序,计算并比较最坏运行时间 2.算法分析重点与渐近分析方法 以下为个人笔记,根据字幕整理 第一课 算法分析 总结 解决问题的方法和方式 算法:关于计算机程序性能和资源利用的研究 算法:性能.速度 在程序设计方面,什么比性能更重要呢? 正确性,可维护,健壮性 模块化,安全,用户友好 为什么关注性能? 1.直接决定方法可行不可行 算法能…
第18章 调试 18.1 准备开始 准备工作需要的是: 一个bug 一个藏匿bug的内核版本 相关内核代码的知识和运气 18.2 内核中的bug 内核中bug的产生原因 从明白无误的错误代码——没有把正确的值存放在恰当的位置 同步时发生的错误——共享变量锁定不当 错误地管理硬件——错误的控制寄存器发送错误的指令 危害: 从降低所有程序的运行性能到毁坏数据 使得系统处于死锁状态 18.3 通过打印来调试 prink()是内核的格式化打印程序. 18.3.1 健壮性 prink()函数健壮性——任何…
一.前言 前两节分别介绍了 Linux 的高可用集群和负载均衡集群,也可以将这两者相结合,即 Keepalived+LVS 组成的高可用负载均衡集群,Keepalived 加入到 LVS 中的原因有以下几点: 1)LVS 拥有一个很关键的角色 Dir(分发器),如果分发器宕机,所有的服务和访问都将会中断.因为入口全部都在 Dir 上,所以需要对分发器做高可用,使用 Keepalived 来实现高可用,Keepalived 其实也具有负载均衡的作用. 2)在使用 LVS 时,如果没有其他额外的操作…
一.前言 Linux 集群从功能上可以分为两大类:高可用集群和负载均衡集群.上一篇已经讲解了 HA 高可用集群,此节讲解负载均衡集群. 负载均衡集群(Load Balance Cluseter,简称 LB),就是让多台服务器均衡地去承载压力,是一种服务器或网络设备的集群技术.负载均衡将特定的业务(网络服务.网络流量等)分担给多个服务器或网络设备,这样可以解决网络拥塞问题,从而提高了业务处理能力,为用户提供较一致的访问质量.实现负载均衡集群的开源软件有 LVS,Keepalived.Haproxy…