BufDesc frame 们的 descriptor(见BufHashTbl注释),包括 pageNo: 这个 frame 在文件里的id,page number prevframe: -1 表示此 frame 为空,如果是hash slot的第一个则为 slot number,否则就是前一个 frame的frame number 注意 frame number 是在 buffer pool 里的 id,page number 是在文件里的 id nextframe: 下一个 frame 的…
DB 管理数据库的类 file_entry:dir page的元素,保存不同文件对应的page directory_page:dir page的专用结构体,里面有个初始长度为0的variable sized array用来保存file entry first_page:保存整个数据库的信息,包括整个数据库有多少page和dir page的结构体 整个数据库构造是这样的:整个数据库是一个超大文件,第0页是header page,包含整个数据库的全局信息:第1页是dir page,后面的page保存…
Heapfile 用来管理heap file里的dir page们 成员 _firstDirPageId:这个文件的第一个dir page _ftype:文件类型 _file_deleted:删除的时候用的falg _fileName:文件名 方法 HeapFile:接收名字,如果是null就开个临时的heapfile(离开的时候会被destructor干掉),否则打开已有文件or创建新文件 先假设文件已经被干掉,设置filedeleted与_fileName 如果name是null,起一个临时…
HFPage heap file的page的类 成员 slot_t:用来表示页里的slot,包括offset和length slot[]:倒着生长的slot array slotCnt:有多少已用slot,注意是倒着数的 freePtr:data[]中第一个free的byte的offset freeSpace:data[]里一共有多少free bytes type:里面数据的类型 prevPage,nextPage,curPage:各种page id 方法 init:初始化,设置好一堆变量 in…
Spark源代码阅读笔记之DiskStore BlockManager底层通过BlockStore来对数据进行实际的存储.BlockStore是一个抽象类,有三种实现:DiskStore(磁盘级别的持久化).MemoryStore(内存级别的持久化)和TachyonStore(Tachyon内存分布式文件系统级别的持久化). DiskStore通过DiskBlockManager来实现Block和相应磁盘文件的映射关系,从而将Block存储到磁盘的文件里.DiskBlockManager依据YA…
Mongodb源代码阅读笔记:Journal机制 Mongodb源代码阅读笔记:Journal机制 涉及的文件 一些说明 PREPLOGBUFFER WRITETOJOURNAL WRITETODATAFILES REMAPPRIVATEVIEW 涉及的文件 mongoDB中和持久性相关的文件只要有以下几个: dur.h: dur.cpp,dur_preplogbuffer.cpp,dur_writetodatafiles.cpp ,dur_commitjob.h: dur_commitjob.…
上一篇博客(CI框架源代码阅读笔记4 引导文件CodeIgniter.php)中.我们已经看到:CI中核心流程的核心功能都是由不同的组件来完毕的.这些组件类似于一个一个单独的模块,不同的模块完毕不同的功能,各模块之间能够相互调用,共同构成了CI的核心骨架. 从本篇開始,将进一步去分析各组件的实现细节.深入CI核心的黑盒内部(研究之后.事实上就应该是白盒了,只对于应用来说,它应该算是黑盒),从而更好的去认识.把握这个框架. 依照惯例.在開始之前.我们贴上CI中不全然的核心组件图: 因为BenchM…
从本篇開始.将深入CI框架的内部.一步步去探索这个框架的实现.结构和设计. Common.php文件定义了一系列的全局函数(一般来说.全局函数具有最高的载入优先权.因此大多数的框架中BootStrap引导文件都会最先引入全局函数,以便于之后的处理工作). 打开Common.php中,第一行代码就很诡异: if ( ! defined('BASEPATH')) exit('No direct script access allowed'); 上一篇(CI框架源代码阅读笔记2 一切的入口 index…
上一节(CI框架源代码阅读笔记1 - 环境准备.基本术语和框架流程)中,我们提到了CI框架的基本流程.这里再次贴出流程图.以备參考: 作为CI框架的入口文件.源代码阅读,自然由此開始. 在源代码阅读的过程中,我们并不会逐行进行解释.而仅仅解释核心的功能和实现. 1.       设置应用程序环境 define('ENVIRONMENT', 'development'); 这里的development能够是不论什么你喜欢的环境名称(比方dev,再如test).相相应的,你要在以下的switch c…
三.源代码阅读 3.元素包括containsKey(Object key) /** * Returns <tt>true</tt> if this map contains a mapping for the * specified key. * * @param key The key whose presence in this map is to be tested * @return <tt>true</tt> if this map contain…