Closed disschen closed 5 years ago
对于叶子是否没有被使用,这是依靠leafgroup头的bitmap确定,1表示用了,0表示没用,freelist记录的是所有没有使用的,方便直接获取。详情看下PAllocator。 对于文件格式,每个文件都由定长的变量组成,对应的取多少字节,在哪个位置取都是可以知道的,文件操作就是移动至想要获取变量的开头,然后获取固定长度的变量即可。
比如catalog的freeNum,打开catalog后,跳过前8字节,然后取8字节,这个就是获取到freeNum
那freeList文件就是(fid,offset),(fid,offset)...(fid,offset)吗,是不是我要逐个字符getchar进来读到左括号了表示读到了一个空的叶子。这些文件测试的时候要自己生成吗?希望您能上传一些数据文件让我们参考一下。
freelist里面没有括号和逗号,我在说明里补充说明里,就是为了方便你们理解。fid和offset都是8字节,所以一个持久化指针就是固定16字节,假设你想取第3个,那就跳过前两个,就是32字节,然后取16字节即可。假设存新的持久化指针,freelist已经存了2个指针,那就跳过32字节,追加写在文件尾就行。数据都是二进制的,给你们文件也看不了
OK,谢谢TA
TA你好,有关主要数据文件
另外,关于一个叶子,怎么判断是free还是used,是不是只有遍历freeList才可以