PROJECT #4: CONCURRENCY CONTROL
撰写本文的目的:记录本人在不参考其他任何形式的解决方法(思路/源码)、仅靠课程提供的资源(课本/参考资料)和Discord中high level的讨论的情况下,独立完成该课程的过程。 欢迎大家和我讨论学习中所遇到的问题。 ZiHao’s Blog 在gradescope获得80分,后续有时间再完成 实际完成时间:5.1-5.7 Task #1 - Timestamps- [✅] 1.1 Timestamp Allocation When a transaction begins, the read timestamp will be the timestamp of the latest committed transaction, so that the transaction will be able to see everything committed before the transaction begins. 即,该事务能够读到,每个对象的指定版本:时间戳小于等于read stamp中最大的那个版本 Commit timestamp i...
Project #3: Query Execution
撰写本文的目的:记录本人在不参考其他任何形式的解决方法(思路/源码)、仅靠课程提供的资源(课本/参考资料)和Discord中high level的讨论的情况下,独立完成该课程的过程。 欢迎大家和我讨论学习中所遇到的问题。 ZiHao’s Blog 已在grade scope获得100分,但是性能仍有待提升 实际完成时间:4.6、4.24-4.30 If you are using CLion to run the BusTub shell, please add a –disable-tty parameter to the shell, so that it works correctly in the CLion terminal. Task #1 - Access Method Executors- [✅] SeqScan给SeqScanExecutor增加了一个iterator_字段,不知道是不是多此一举哈 - [✅] Insert called_字段 - [✅] Update called_字段 - [✅] Delete- [✅] I...
rustlings
说来惭愧,大三寒假的时候学过一次Rust,但是只是过了一遍语法,并且没有真正有项目实践,所以很快就遗忘了。 这次开始尝试实践/项目驱动学习,正好最近需要写一个Web项目,尝试使用Rust来编写,以巩固对Rust的学习。 首先用rustlings对Rust的基本语法体系进行最小化学习 后续会根据需要来拓展对相关概念深入的学习(the book/async/rustdoc) rustlings:需要完整做一遍,并把相关概念汇总到此页面,后续作为复习/字典查阅 the book:根据需要对Rust中的概念进行复习,作为字典查看 Asynchronous Programming:web编程中涉及到异步时再深入学习 [toc] Book Chapter Mapping Exercise Book Chapter variables §3.1 functions §3.3 if §3.5 primitive_types §3.2, §4.3 vecs §8.1 move_semantics §4.1-2 ...
基于Actix-Web(Rust)和Vue的Web开发记录
后端(基于actix-web)login 登录后,使用session存储用户的相关信息用于导出功能 登录后,生成token返回给前端作为信息认证 register 注册后转到登录界面 Homeexport & export_in_db 用户使用该功能时,需要在请求header中传回token来认证 bug: 1GET http://localhost:8080/export/x x x 401 (Unauthorized) 分析:授权问题 solution:logger + debug 发现是 actix-session中设置的内容并没有在后续操作被访问, 因为在postman中,actix-session返回的set-cookie会默认填充到cookie中 而浏览器并没有这个功能,需要前端实现。 这波是postman的锅 bug:为了actix-session能够正常使用(需要将actix-session放置于响应头中的set-cookie,置于其他请求头中),需要使用axios的axios.defaults.withC...
Project#2: Extendible Hash Index
撰写本文的目的:记录本人在不参考其他任何形式的解决方法(思路/源码)、仅靠课程提供的资源(课本/参考资料)和Discord中high level的讨论的情况下,独立完成该课程的过程。 欢迎大家和我讨论学习中所遇到的问题。 ZiHao’s Blog Project #2: Extendible Hash Index 先记录完成的过程,然后再总结和思考 准备Due:四个星期左右(通过本地测试-4天左右+通过线上测试-一周左右,但由于中途有其他事情,时间跨度很大) 在开始完成该项目之前,首先确保两件事 确保Project#1的代码实现是正确的,最好多提交几次,因为测试用例可能会有不同 一定要先从原bustub仓库pull最新的代码,不然可能会缺少一些给定的实现 实验环境: MacOS CLion/VSCode Task #1-Read/Write Page Guards 数据成员:存储指针 指向BPM 指向Page对象 析构函数:确保当BasicPageGuard对象离开作用域的时候:自动调用UnpinPage 方法成员:...
Extendible Hash Table
Extendible Hash Table hash function 对于给定key生成32bit的值 bucket address table 对于每个32bit的hash value,都有一个table entry相对应 但在某一时刻该table的实际使用大小由global prefix控制 global prefix:用于生成global mask 在实际使用时,global prefix用于控制当前bucket address table实际使用的大小 具体为2^(global prefix)个条目 local prefix:用于生成local mask 不会为所有hash value都生成一个bucket,而是按需生成 用于判断当前table entry指向的bucket 如果local prefix == glocal prefix: 则说明只有该entry拥有指向的bucket 按需体现在local prefix < global prefix: 拥有相同local prefix的entry指向同一...
Project#1: Buffer Pool
撰写本文的目的:记录本人在不参考其他任何形式的解决方法(思路/源码)、仅靠课程提供的资源(课本/参考资料)和Discord中high level的讨论的情况下,独立完成该课程的过程。 欢迎大家和我讨论学习中所遇到的问题。 ZiHao’s Blog 由于gradescope中对non-cmu students仅开放了Project#0,本文方法仅通过了本地测试,极有可能有错误(并发访问) 目前通过了GradeScope所有测试并且拿到了100.0/100.0,但是性能较差(与Leaderboard上第一名有十倍的性能差距),打算在下一篇文章记录一下对BPM的性能进行优化,例如本文中提到的DiskScheduler创建的对Request的处理Thread实际上是串行的,后续再保证顺序正确的情况下对其进行适当的并行处理。 Task#1 - LRU-K Replacement Policy思路: 基本可以参考源码中给出的注释,一步一步实现 每次RecordAccess一个Frame时,都会使得leu_replacer的current_timestamp_自增1,...
Project#0: C++ Primer
撰写本文的目的:记录本人在不参考其他任何形式的解决方法(思路/源码)、仅靠课程提供的资源(课本/参考资料)和Discord中high level的讨论的情况下,独立完成该课程的过程。 欢迎大家和我讨论学习中所遇到的问题。 ZiHao’s Blog Task#1 - Copy-On-Write Trie按照源码中给的提示即可完成 总体思路:use std::shared_ptr to traverse, then reuse nodes that do not need to be modified and use std::shared_ptr with Clone to build and modify memebers from the bottom up on nodes that need to be modified. GetGet函数实现较为简单 Put 遍历trie,在vector中存储每个遍历过的TrieNode,判断key对应的node是否存在 若存在: 则直接创建一个新的TrieNodeWithValue(可能有孩子节点) 并且利用v...
Paper Reading: TECCD: A Tree Embedding Approach for Code Clone Detection
摘要 & 引言“Abstract” (Gao 等, 2019, p. 145) (pdf) [摘要——background: Code Clone Detection Techniques:自动化的检测源码中重复或者高度相似的代码片段,提高代码的维护性、可读性等。 过去的技术:基于字符串匹配、语法分析以及机器学习技术。what: 解决代码克隆检测how: 引入tree embedding技术: 1. 获得AST每个intermediate node的node vector 2. 从所相关的node vectors集合组合出tree vector 3. 计算出tree vector之间的欧式几何距离,作为code clones的衡量标准novelty: 首次引入tree embedding到代码克隆检测中] embeddingterm-embedding“term-embedding” (Gao 等, 2019, p. 145) (pdf) 「embedding: 将一组离散的文本特征(例如单词或字符)映射到一个实数域上的连续向量的过程。...
Git
记录一下因为各种需求而对Git缝缝补补的学习 比较本地仓库分支 和 远程仓库分支commit的不同 git fetch local_repo git log local_branch..remote_repo/remote_branch ..作差集









