11 2017 档案
摘要:SkipList在Leveldb以及lucence中都广为使用,是比较高效的数据结构。由于它的代码以及原理实现的简单性,更为人们所接受。首先看看SkipList的定义,为什么叫跳跃表? "Skip lists are data structures that use probabilistic ba
阅读全文
摘要:先来看看Leveldb的基本框架,几大关键组件,如图1-1所示。 Leveldb是一种基于operation log的文件系统,是Log-Structured-Merge Tree的典型实现。LSM源自Ousterhout和Rosenblum在1991年发表的经典论文《The Design and
阅读全文
摘要:1、申请的内存所在位置 new操作符从自由存储区(free store)上为对象动态分配内存空间,而malloc函数从堆上动态分配内存。自由存储区是C++基于new操作符的一个抽象概念,凡是通过new操作符进行内存申请,该内存即为自由存储区。而堆是操作系统中的术语,是操作系统所维护的一块特殊内存,用
阅读全文
摘要:1、申请方式 (1)栈(stack):由系统自动分配。 (2)堆(heap):需程序员自己申请(C:调用malloc,realloc,calloc申请free来释放),并指明大小,并由程序员进行释放。容易产生内存泄漏。 2、申请大小的限制 (1)栈:在windows下栈是向低地址扩展的数据结构,是一
阅读全文
摘要:首先说明一下Little_endian和Big_endian是怎么回事。 Little_endian模式的CPU对操作数的存放方式是从低字节到高字节,而Big_endian模式则是从高字节到低字节,比如32位的数0x12345678在两种模式下的存放如下: Little_endian: 内存地址 存
阅读全文
摘要:(1)DELETE语句执行删除的过程是每次从表中删除一行,并且同时将该行的删除操作作为事务记录在日志中保存以便进行回滚操作。 TRUNCATE TABLE 则一次性地从表中删除所有的数据并不把单独的删除操作记录记入日志保存,删除行是不能恢复的。并且在删除的过程中不会激活与表有关的删除触发器。执行速度
阅读全文
摘要:1、锁表发生在insert、update、delete中 2、锁表的原理是:数据库使用独占式封锁机制,当执行上面的语句时,对表进行锁住,直到发生commit提交或者rollback回滚退出数据库用户。 3、锁表的原因: 1)A程序执行了对tableA的insert,并还未commit时,B程序也对t
阅读全文