咸鱼回响

望之天回,即之云昏

0%

接上篇,上篇其实写的有些着急了,因此在按照方案修改的时候发现还有很多地方存在问题,除了一些显眼的代码复用修改外遇到的另外问题就是方法过长。下面通过一个读取日志函数的改进过程记录下自己对方法优化的方式。

阅读全文 »

记录的是我的个人项目Epidemic的改进经历,一个阶段写完之后发现问题还是很多,在有针对地画出UML图后就连我这种新手也能对一些问题一目了然。果然设计系统的前期准备工作还是不充分以及还是代码写的少。

阅读全文 »

构建网络拓扑

Epidemic采用Kademlia协议来构建网路拓扑,通过在配置文件中设置的随机字符串(可选)生成一个160位的二进制数作为网络节点的Id。
两个节点之间的距离通过他们各自的id进行异或(XOR)计算,定义两个节点之间的距离为两个id之间前缀相同的位数。

Dis(M, N) = XOR(M, N)

阅读全文 »

前置概念:

页表是一种特殊的数据结构,放在系统空间的页表区,存放逻辑页与物理页帧的对应关系。 每一个进程都拥有一个自己的页表,PCB表中有指针指向页表。

阅读全文 »

最近在设计一个P2P分布式存储系统,网络路由方面采用的是Kalelima协议,在这个协议的实现中主要有四个RPCs:

  • Ping:节点发起ping请求,主要用来检测与其他节点网络连接是否通顺
  • Store:存储请求,参数为<key, value>键值对,key是value的SHA1值,value是要保存的数据。
  • FindNode:寻找节点,参数是一个节点SHA1值,返回的是一个三元组<ip, 端口, 节点id>集合
  • FindValue:寻找值,参数是一个文件的SHA1值,如果不存在该文件,则返回距离这个文件最近的一个三元组<ip, 端口, 节点id>集合,如果存在文件,则直接返回文件的数据内容
    阅读全文 »