在这里我一直在考虑page的读写锁的作用,后来发现其实在这个project里面是不需要用到page的读写锁的。 flush + unpin,UnpinPage函数代码给的注释很少,我一开始被误导了,做到project 2后面才清楚unpin函数的作用,我最开始理解的是要强制将page的is dirty设为传入参数里面输入的is_dirty_,所以一直过不了测试。后来突然...
注意不只要删除规定节点,在遍历过程中,如果规定节点的父节点只有这一子节点并且自己不是一个value_node,则需要递归向上把父节点也清理掉。 由于测试用例的问题,其实只删除规定节点是能够通过Spring2023的测试的,但无法通过Fall2023的测试。 Task #2 - Concurrent Key-Value Store COW使得Trie的并发编程更简单,实验模板...
这一步骤我使用的是vscode debug, 配合使用cout输出, 很方便. 这个问题我最让我花时间的地方是, 之前对cmake以及make的测试不够熟悉. 这里我测试的方式是进入CMU_15-445/build/test目录下, 然后我们可以找到每一个需要测试的测试文件, 实际上Project下面的Testing里面也有写, 我当时没注意看, 后来全靠自己猜的...
本项目需要在linux/mac环境下进行开发,如果是windows最好是整个linux的环境,比如云服务器、虚拟机、wsl等。 整个课程需要仔细看文档,包括bustub的readme,每篇project的描述。 整个课程需要仔细看文档,包括bustub的readme,每篇project的描述。 整个课程需要仔细看文档,包括bustub的readme,每篇project的描述。 项目大意 本...
CMU 15445 2023fall #Project0 实现一个简单的k-v存储引擎 前言 实验要求网站 太吓人了,这甚至只是个课程入门实验,但是前两部分主要的内容差不多花了我一整天🥲🥲🥲(可能是我的C++基础太差了😥😥😥。 主要是考察一下对C++的熟练程度,比如智能指针、移动语义、并发控制,还有数据结构的基础。
为了完成CMU15445(Spring 2023)PROJECT #1 - Buffer Pool任务,需要遵循三个主要部分的实现策略。任务包括实现LRU-K替换策略、缓冲池管理和RAII思想的PageGuard。本篇内容将详细阐述这三个任务的实现步骤与要点。在开始之前,请确保了解了课程官网提供的资源,包括课程网站、源代码、自动测评网站GradeScope和...
近期专注于算法学习,今日抽空完成 Project1 的第一部分,即 LRU-K 置换策略。虽然整体并不复杂,但在执行过程中仍遇到了一些挑战,颇感费解。2023-05-06 全部完成,但遇到一个难以解决的 bug,耗费了一整天的时间。导致最后一个测试无法通过,原因在于写回页面与 pincount 协调不当。因此,最后两部分...
CMU 15445 2023fall Project1 Buffer Pool Manager 前言 实验要求 通过本地测试大概花了三天,第一次提交线上测试只有45分😭😭😭。后来又陆陆续续修改,又花了两天时间终于过了。不过这个实现基本毫无性能可言,bpm的每个函数都是简单粗暴地直接上scope lock锁住整个函数作用域,所以QPS rank排在200靠后了,后面...
2023年的 #project0 实现与往年不同,实现的是一棵可持久化的字典树。具体什么是可持久化的字典树,不建议上网搜索,网上的版本普遍和这个项目的版本有实现上的区别。 其实官方描述中写的较为清晰,建议反复阅读直到真正看懂再开始实践做题。 这一部分,我们要完成 Get、Put、Remove操作 ...
CMU15445-2023spring 笔记:Project 0 - Copy-On-Write Trie In this project, you will implement a key-value store backed by a copy-on-write trie. Tries are efficient ordered-tree data structures for retrieving a value for a given key. To simplify the explanation, we will assume that the key...