diff --git a/report.md b/report.md index f701d6f..5f18354 100644 --- a/report.md +++ b/report.md @@ -41,11 +41,9 @@ using Field = std::pair; // field_name:field_value using FieldArray = std::vector>; ```` ##### 编码函数: -`void DBImpl::SerializeValue(const FieldArray& fields, std::string &value, size_t slot_num)` +`void DBImpl::SerializeValue(const FieldArray& fields, std::string &value)` -**功能:** 将传入的字段数组和 slot_num 序列化为字符串,并存到 value - -注:slot_num 字段用于实现KV分离 +**功能:** 将传入的字段数组序列化为字符串,并存到 value **字符串形式:** @@ -57,7 +55,7 @@ using FieldArray = std::vector>; **具体实现如下:** ```` -void DBImpl::SerializeValue(const FieldArray& fields, std::string &value, size_t slot_num) { +void DBImpl::SerializeValue(const FieldArray& fields, std::string &value) { // 先构建 slot_num 之后的字符串,存到 tmp_value 中 std::string tmp_value; // slot_num 之后的总长度 @@ -290,10 +288,6 @@ struct executor_param { - [`/db/vlog_cache.cpp`](./db/vlog_cache.cpp):实现 VlogCache 类中的函数 - [`/db/vlog_set.cpp`](./db/vlog_set.cpp): 定义函数: get_value, get_writable_vlog_info, put_value, del_value, register_new_vlog, remove_old_vlog, vlog_need_gc, register_inconfig_file, remove_from_config_file, create_vlog, restore_vlog_inmaps, register_vlog_inmaps, remove_vlog_from_maps, read_vlog_value, write_vlog_value, mark_del_value -- [`/test/db_test3.cc`](./test/db_test3.cc):测试 value 的字段功能 -- [`/test/db_test4.cc`](./test/db_test4.cc) -- [`/test/db_test5.cc`](./test/db_test5.cc) -- - [`CMakeLists.txt`](CMakeLists.txt):添加可执行文件 **数据结构设计:** @@ -350,7 +344,8 @@ return DB::Put(opt, key, slot_val); **实现步骤:** 1. 获取互斥锁; 2. 判断当前 bitmap 是否有空闲槽位,就是遍历 bitmap,找到第一个为 0 的位,然后设置该位为 1,返回该位对应的 slot_num。 - **具体实现如下:** + +**具体实现如下:** ```` size_t alloc_slot() { // 获取互斥锁 @@ -742,7 +737,8 @@ void VlogSet::del_value(const struct slot_content &sc) { 2. 调用 delete_vlog_value 函数删除 vlog 中的条目,并返回被删除的日志项的大小; 3. 更新信息; 4. 判断是否需要 GC - **具体实现如下:** + +**具体实现如下:** ```` void VlogSet::mark_del_value(const struct slot_content &sc) { // 根据 sc.vlog_num 获取 vlog 文件信息