Project 2:EXTENDIBLE HASH INDEX

EXTENDIBLE HASH INDEX

概述

  • 第二个编程项目是为BusTub DBMS实现一个以磁盘为媒介的哈希表。

  • 需要使用可扩展的散列哈希方案实现一个哈希表。

  • 这个索引包括一个目录页,它包含指向桶状页的指针。该表将通过你的缓冲池从Project#1访问页面。该表包含一个目录页,它存储了该表和桶的所有元数据。你的哈希表需要支持满/空桶的桶分割/合并,以及全局深度必须改变时的目录扩展/收缩。

任务

技术坑点

这里先讲一下自己做实验2时所遇到的技术坑点,具体代码就不公开了,希望小伙伴萌避雷,

  1. 随着项目的逐渐变大,学会把握整个项目框架很重要,与之相关的头文件(.h)啥的不用多说了,其次是不相关的头文件,它里面包含了其他类的定义与一些宏定义,通过将它们include后,便可以将整个项目分为多个板块,便于开发与学习,为此把不相干的头文件也需要知晓将它引入的用处。

  2. 面对每个类定义的庞大的成员函数数量,要学会取其精华,简而言之就是要合理取用,需要的函数就实现,不需要的可以不管,删除也行(我就删了)

  3. 对于类中私有成员变量的定义一定要摸清楚每个的含义,千万在实现类的时候忘掉他们的作用与用途!!!(曾经的我就是忘掉了comparator_)

  4. 对于强制转换技术: reinterpret_cast 的窥探,说白了就是static_cast的升级版,能够重新从底层方面解释一个类,但是要保证两个类的大小相同,否则会出现问题

  5. 键和值都相同,插入才会错误,如果只是键相同也可以进行插入。

  6. 位操作要捡起来了。(假设有一个名为array的char类型的数组)

    • 定位到目标位:

      int numIndex = i / sizeof(char);
      
      int bitIndex = i / sizeof(char);
      

      通过这两个数就可以访问目标了。

    • 获取第i个bit:

      int s = (array[numIndex] >> bitIndex) & 1;
      
    • 把第i个bit置为1:

      array[numIndex] = array[numIndex]<
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值