CMU15-445 2023 Fall Project#0实践记录

        最近在学习数据库相关知识,首当其冲的入门课程就是著名的CMU15-445,在此记录下学习2023 fall课程的一些过程。

2023-11-28~2023-12-01

        大致用了几天的时间,完成了Project#0的一个学习,总体来说感觉有些难度,编码逻辑与过程比较清晰,但是debug的过程就走了不少的弯路,花费了大量的时间。

项目总体介绍:

        整体的要求是完成一个写时复制的树形数据结构,包含三个不同的部分:TrieNode、TrieNodeWithValue、Trie,前两个是树中两种不同类型的节点(即节点中是否存在value),Trie是整体的一个树形结构。

Step1:写时复制        

        这个过程要求完成一个Trie结构的写时复制,主要是针对于Put与Remove方法的。对于Get方法来说,只是一个根据Key获取Value的一个过程,需要注意的时当Key为空串时,是在根节点root上获取value,相对的在Put方法中,key的参数也可以为空串。

对于Put来说我的思路下有两种情况,第一种是更新一个节点的值,这个节点有可能是有值的,也有可能是没有值的;第二种情况就是加入一个或多个全新的节点,用最后一个节点来存储value。在整个存储的过程中,因为Put方法的要求是最后返回的是一个新的Tire结构,这就使得我们在从根节点出发寻找插入位置的过程中,需要不断把遍历过的节点用Clone方法复制,直到找到插入位置或是在节点上Overwrite。为了完成这个过程,我采用的方法是双指针,pre和next,将新的节点与前一节点复制并连接,然后进行插入操作,最终返回的是一个全新的Trie结构。

对于Remove方法,他要求我们同样返回新的Trie结构,做法和Put类似,就是找到节点后将节点delete即可,同时要注意题目中要求将其他无效节点一并删除掉,这需要在某些情况下进行一些剪枝的操作。

Step2:并发存储

        这一部分相对简单,只需要活用rootlock和writelock即可,是比较基础的内容

Step3、Step4:调试与Sql Function:

        调试上花了很多时间,主要还是自身的经验与水平还不熟练,犯了一些逻辑上的错误,同时对于智能指针的使用不是很熟练,一时半会儿没有转过弯来,其实是些比较基础的问题,还是需要加强对于新特性的学习,并且加大平时使用的频率,强迫自己去使用,养成良好的习惯。Sql的函数很简单,就是简单的大小写转换,几行代码就可以搞定。同时也用了一下CMU的bustub来给写好的结构进行必要的测试,结果也没什么问题。

2023-12-01~2023-12-02

        完成了一下课程中的homework1,虽然之前有上过数据库的课程,但是sql语法什么的还是忘记的比较多,就做了一下这10道sql联系来回想一下,总体感觉是比较基础的,但是可能我终究还是不够熟练,也花费了几个小时在上面,基础上面需要加强的地方还有很多。

        接下来就是继续去看课程,继续完成剩下的Project,希望在这个过程中能不断进步吧。

  • 8
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值