B+树与B树比较

摘要: B+树还有一个最大的好处,方便扫库,B树必须用中序遍历的方法按序扫库,而B+树直接从叶子结点挨个扫一遍就完了,B+树支持range-query非常方便,而B树不支持。这是数据库选用B+树的最主要原因。比如要查5-10之间的,B+树一把到5这个标记,再一把到10,然后串起来就行了,B树就非常麻烦。B树的好处,就是成功查询特别有利,因为树的高度总体要比B+树矮。不成功的情况下,B树也比B+树稍稍占一点点便宜。B树比如你的例子中查,17的话,一把就得到结果了,有很多基于频率的搜索是选用B树,越频繁query的结点越往根上走,前提是需要对query做统计,而且要对key做一些变化。另外B树也好B+树也 阅读全文
posted @ 2013-09-05 15:46 宋荣 阅读(180) 评论(0) 推荐(0)

提高磁盘文件io的技巧

摘要: 首先磁盘的读写是靠机械方式运作的,尤其是寻找磁道的过程,所以其读写速度大大低于内存;然而磁盘的顺序读写速度还是很块的,大约是40-60mb/s,有的磁盘甚至达到了百兆以上的速度。磁盘的随机读写速度是很慢的总结下几种环境下提高磁盘文件io效率的技巧:1.高并发读写磁盘在并发读写环境下,要尽量减少并发读写的线程数,以减少寻址磁道大范围的变化,主要有以下策略:使用专门的线程负责磁盘读写;采用锁机制2.一次尽可能多写入或多读取。也就是说,将程序的读写buffer设置得尽可能大一些。3.当有众多小文件,而有时需要同时读写其中多个小文件时就会性能降低。业界主流做法是: 业界流行的做法是将多个小文件合并存储 阅读全文
posted @ 2013-09-03 15:00 宋荣 阅读(414) 评论(0) 推荐(0)

stl源码学习之内存配置器

摘要: sgi stl 定义了两种内存配置器:符合stl规范的std::allocator,以及具有高效率的std:alloc.1.std::allocatorallocator是对c++标准程序库中::operator new 和 delete的简单封装,没有考虑到性能问题。2.std:alloc(注意没有模板参数)alloc是具备次配置能力的内存配置器,这里的次配置能力我的理解是alloc根据申请内存块的大小决定请用第一级配置器还是第二级配置器已达到最大化效率,减少内存碎片的效果。当配置内存区块大于128字节时,视为做够大的内存则调用地一级配置器,否则为了较少内存碎片则采用第二级配置器。第一级配置 阅读全文
posted @ 2013-08-28 22:52 宋荣 阅读(134) 评论(0) 推荐(0)

测试用例的选取

摘要: 软件测试用例的选取主要考虑一下三个原则:正常情况下输入数据满足预期结果非法输入情况下满足预期结果正确处理边界条件 阅读全文
posted @ 2013-08-27 21:19 宋荣 阅读(150) 评论(0) 推荐(0)