CMU 15445 vs MIT6.824

CMU 15445

一、学习资料

课程地址

课堂笔记

数据库杂谈博客

除了这些,还有很多博客,太多就不一一列举了,因为导师规定,必须去实验室,所以我都是在实验室学的,(没看视频,怕被发现),看的都是文字资料。

二、课程总结

准备学习这么公开课也是偶然在知乎上看到的,当时看完网络编程相关的书,也写了一些小demo,但感觉写的有点无聊(都是抄的),就想找一些更硬核的项目试试手,于是就误打误撞的选择了这门课,相较于单纯知识点的课程,该课程还有配套的4个lab,循序渐进,难度大概是lab2 > lab4 > lab3 > lab1。因为时间有限,所以大部分实验的优化都没有做。但通关的感觉真的太爽了,课程的实验部分做的很好,每个实验的task都是循序渐进的,可能是因为页面的原因,我感觉Mit 6.824的实验界面像是十多年前的。

时间花最多的是在lab2,并发控制那块,打log眼睛都快打花了,最后发现居然是lab1中的问题(看来实验满分并不代表写的代码就满分了),这些实验也是我正式的第一个C++大项目,虽然之前写过一些关于socket网络编程的小demo,但我感觉那些大多是照猫画虎,大家都做烂了,都是同一套流程,但CMU这个实验还是很硬核的,缓冲池,B+树索引,算子,并发控制,这些都是之前未接触的,同时该实验还有一个相对较好的评分机制,评测实验的完整性、准确性。也没想到自己最后几乎完成了所有实验(并发控制 task3 没完成,可能我太迟开始实验了,从github上面clone下来的代码更新了好多内容,前面lab3也是更新了好多代码,我还废了好大劲把代码改了过来,但lab 4 task 3的代码改动太多了,自己也无能无力了),在lab 2并发控制那块一度想放弃,就想着一把全局锁直接过去做后面的实验算了,但每次打开vscode,都想再改改这部分代码,可能就能找到错误了,最后才发现是因为lab1中的,移动构造函数那块有点问题,导致锁二次释放了。

再结束完lab 2后自己也是信心大增,lab 3虽然简单一些,但是代码嵌套太多了,这继承,那继承的,不过好在需要完成的都是一些简单的算子(这部分可以看一下我前面推荐的数据库杂谈博客,这里面讲的细一些,还有很多优化),lab 4则是对与当前活跃事务相关数据加锁,从实验代码,或者课上讲的内容来看,实验一个事务的管理都是相当有难度的,好在实验中需要实现的内容相对较简单,检查死锁对事物回滚,以及加锁解锁等等,多花点时间总是能过的。

MIT 6.824

一、学习资料

课程地址

[课程文字中文版](Lecture 01 - Introduction - MIT6.824 (gitbook.io)),虽然只记录了12节课内容,但还是要感谢这位老哥,非常给力。

博客

同样还有很多很好的博客就不一一列举了,自己不知道的知识点,网上搜搜一般都有好心的大哥写有质量很高的博客,再次感谢这些技术大佬的分享。

二、课程总结

之前在开始CMU 15445既有在这两门课纠结先做哪个项目,当时也看到6.824实验语言使用的是go,但go我还没用过就先做445了,但做完824感觉,用没用过go其实问题不大,(老话说 语言只是工具),在lab 1开始之前,我只花了不到一天的时间在github上面找了一个[go的学习资料](rubyhan1314/Golang-100-Days: Golang - 100天从新手到大师 (github.com)),把前20章看完,大致知道怎么用,就直接开始做lab 1了。在项目中学习,遇到不会的语法再去学,比如下面这个结构,对于多线程编程真的太友好了。

select{
	case <- msg
}

课程的设计,相对于445以课堂知识点的形式,824则是通过阅读论文讲解论文的方式来引出知识点(我的观点可能,分布式系统比较偏实践,所以课程中的论文好多都是工业界发表的,已经商用的系统,在这简单吐槽一下我的研究方向,我感觉是基本是不可能落地,但是就是好水文章,该方向这几年发的文章数量爆炸式增长,当感觉也快不行了,迟迟落不了地,一群人都是把别的领域的东西放到这来,创新点其实很小,包括我自己的创新点也是,只想赶紧毕业)。

剩下的三个实验的主体都是raft,lab 2是实现一个raft,包括log 同步,leader 选举,持久化以及快照(这部分和lab 3重叠了)以及应对各种突发情况的crash。lab 3则是在lab 2的基础上实现一个简单kv,,通过调用lab 2中的接口使得这个kv数据库能够具有容错性,但其本质上只是让这个数据库有了可用性,还没有真正用分布式来提高性能。

lab 4则是实现一个分片kv,先使用raft实现了一个配置器,用这个配置器管控整个分布式系统的结构,在配置改变时,能够迁移数据到其他存储器上。使得数据库能够真正的通过横向添加机器实现性能的增加。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值