- 博客(11)
- 收藏
- 关注
原创 MIT 6.5840 Lab2C - (持久化)persist of Raft
labC的内容相较于A和B来说是比较简单的,因为lab中的持久化机制也比较粗糙(只需要关注3个变量——Term(当前的任期),Log(存放操作的序列),以及VotedFor(当前任期投票的对象))所以在本次lab中我们只需要完善持久化的两个函数,然后再在修改上面这三个变量的值的地方调用 persist() 函数就可以了一、持久化函数实验的example中已经给出了我们具体的步骤,我们只需要按照给出的方式编写代码就好了//Example:returnvar (= nil ||= nil ||
2025-02-04 12:22:40
447
原创 MIT 6.5840 Lab2B - (日志复制)log replication of Raft
这是某位大佬的总结,个人觉得很有用,仅供日后复习所用nextIndex是leader对follower日志同步进度的猜测,matchIndex则是实际获知到的同步进度,leader需要不断的appendEntries来和follower进行反复校对,直到PrevLogIndex、PrevLogTerm符合Raft论文约束。
2025-01-25 15:20:03
839
原创 MIT 6.5840 Lab2A:Leader Election
其实整个实验并不算难,因为最绕的log赋值还没来,所以目前整个投票选举和心跳检测的逻辑就只考虑到了服务器任期之间的关系。最后再贴上一些我参考的大佬们的文章连接。
2025-01-24 16:38:07
771
原创 MIT 6.5840分布式系统 Lab1 - MapReduce
这是这个实验的原链接我在写这个实验的时候还参考了MIT6.5840Lab1:MapReduce(6.824)_mit6.5840mapreduce-优快云博客和MIT6.5840Lab1-MapReduce_mit6.5840-优快云博客毕竟只有站在巨人的肩膀上才能看得更高,所以我会结合一些别人的精华再结合自己的思考去完成这个实验。
2025-01-17 17:40:15
861
2
原创 MIT 6.824 分布式系统 Lecture 4 - 主/备复制(Primary/Backup Replication)
这是对Lecture03课中讲解的知识点的归纳和总结,以及会有一些延伸出来的知识点讲解。这篇笔记主要是参照了MIT6.824网课学习笔记-01 (ashiamd.github.io)这两篇文章,大家有兴趣的话也可以自行去看一下,对这门课程的学习都是很有帮助的为什么需要复制:容错本身是为了提供高可用性。例如,当你想构建一个服务时,尽管计算机硬件总是有可能故障,但是我们还是希望能稳定的提供服务,甚至,即使出现了网络问题我们还是想能够提供服务。我们所使用到的工具就是复制。
2025-01-16 15:06:48
526
原创 MIT 6.824 分布式系统-Lecture 3 GFS
这是对Lecture03课中讲解的知识点的归纳和总结,以及会有一些延伸出来的知识点讲解。这篇笔记主要是参照了MIT6.824网课学习笔记-01 (ashiamd.github.io)这两篇文章,大家有兴趣的话也可以自行去看一下,对这门课程的学习都是很有帮助的GFS是一个可扩展的分布式文件系统,用于大型的、分布式的、对大量数据进行访问的应用。它运行于廉价的普通硬件上,并提供容错功能。它可以给大量的用户提供总体性能较高的服务。一、存储类型的分布式系统设计难点。
2025-01-16 14:10:58
1052
原创 MIT 6.824 分布式系统- Lecture 2 RPC and Threads
这是对Lecture01课中讲解的知识点的归纳和总结,以及会有一些延伸出来的知识点讲解。这篇笔记主要是参照了MIT6.824网课学习笔记-01 (ashiamd.github.io)这篇文章,大家有兴趣的话也可以自行去看一下,对这门课程的学习都是很有帮助的一、Threads关于线程的一些基本概念和当多线程并发的时候会遇到的问题等相关内容我就不追述了,因为相信大家也一定烂熟于心了,所以这里我更想跟大家分享一下go语言中的特别的线程goroutine(也叫做协程)1.协程(Goroutine)
2025-01-15 13:22:30
834
原创 MIT6.824分布式课程-Lecture 01 - Introduction
这是对Lecture01课中讲解的知识点的归纳和总结,以及会有一些延伸出来的知识点讲解。这篇笔记主要是参照了和MIT6.824网课学习笔记-01 (ashiamd.github.io)这两篇文章,大家有兴趣的话也可以自行去看一下,对这门课程的学习都是很有帮助的其实就我个人理解来看,分布式系统的复杂性(难点)也就是容错性和一致性上,因为需要容错,所以把原先只需要一台计算机资源就可以完成的服务进行拆分,把拆分后的服务扩展到更多的计算机资源上(也就是微服务的体现。
2025-01-15 13:01:00
1193
原创 用C++11仿写muduo网络库
先从底层讲再学习陈硕大佬的muduo库中,真的学到了很多的新知识和思想,还有一些代码习惯也是对我受益良多,我利用了c++11的一些新特性来代替原来muduo库中对c++ boost库的依赖。但其实muduo库中还有很多的模块我还没有实现。但没办法为了今年大三上的时候要去找实习,现在必须要花更多的时间在八股文和算法上,所以后面有时间的话我还会继续更新这个项目的,毕竟还有很多的功能没有实现。所以继续努力吧!
2024-06-07 17:34:19
1241
原创 设计模式的个人学习总结
抽象工厂是一个产品簇的概念,一个工厂可以生产多种业务相关的产品。我们在工厂方法的基础上扩充一下代码:定义一个抽象工厂接口AbstractFactory,通过不同的方法生产出一个“抽象”产品簇(Phone和PC)。回过头来再看工厂方法,事实上它就是抽象工厂最简单的一种场景设计——只生成一种产品。抽象工厂模式通过在AbstarctFactory中增加创建产品的接口,并在具体子工厂中实现新加产品的创建,当然前提是子工厂支持生产该产品。否则继承的这个接口可以什么也不干。
2024-05-23 14:53:44
718
1
原创 Rec.自学路上的第一个小项目Tiny-Webserver的实现总结
*进行读写数据并调用httprequest 来解析数据以及httpresponse来生成响应*/public://初始化客户端的地址数据//从读缓冲区读数据//从写缓冲区写数据//关闭客户端的请求//接口,返回客户端的sockfd//接口,返回客户端的端口号//接口,返回客户端的IP//接口,返回客户端的sockaddr//流程函数,包含reques解析请求,response响应报文int The_WriteBytes() //获取响应报文的总大小。
2024-05-06 20:28:43
1738
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅