理解 FLP-Impossibility 论文
FLP 这篇论文在分布式领域有着重要的作用,当然,这篇文章也写得晦涩难懂。这是第一篇我死扣每个字读下来的分布式论文,十分吃力,在此记录下,并且竟可能写的简单,希望能够帮助初入分布式计算的新人们够更加容易理解 FLP 论文。当然再怎么简单,数学的符号是跑不了的,但是不要害怕,一个一个字看下来即可。 论文原文的名字叫:Impossibility of …
理解 TCP
此文章仅为笔记,不推荐大家观看。 TCP Header 上面每一个方格代表 8 位,所以序列号有 4x8 = 32 位 源端口,目标端口:TCP 里面不包含 IP 地址,因为那是网络层(IPv4)应该干的事情。TCP 通过源 IP,端口,目标 IP,端口 4 个特征标识一个 TCP 连接。本地向远程80端口发起请求时,本地的端口是随机申请的。序列号…
操作系统并发
Terms Critical section: piece of code that accesses a shared resource.Race condition: 多个线程同时进去 critical section。Indeterminate:指程序在多线程情况下,程序结果不唯一。Mutual exclusion:排他。 Locks Eva…
CPU Scheduling Policies 调度算法
本文只写给自己,所以比较粗糙。 调度衡量指标 Turnaround time Turnaround time = 任务完成时间-任务到达时间$$T_{turnaround} = T_{completion} - T_{arrival}$$ Response time 如果通过 turnaround time 来衡量调度的算法,STCF 算法是最好的…
用 Java 实现一个可用的布隆过滤器(Bloom Filter)
布隆过滤器可以使用极少的空间来判断一个元素是否存在某一个集合中,本文不具体讨论布隆过滤器的原理,而是探讨如何实现一个可用的布隆过滤器。  GitHubSmith-Cruise/java-bloom-filter   本文代码提取自 Apache ORC 项目。 基本概念 这里附带一些链接,适合不了解布隆过滤器的人阅读。 https://zhuanl…
HTrace 与 Zipkin 简单教程
最近阅读 HDFS 的源码,看到在 DFSClient 中很多地方用到了 HTrace 这款框架,所以特意学习下。 HTrace 是一款由 Cloudera 开发的分布式追踪框架,在设计上借鉴了 Google 的 Dapper 论文,虽然 HTrace 已经停止了更新,在 Apache 里面孵化失败了,但是它现在任然被 Hadoop 和 HBase…
JDK 动态代理踩坑
最近阅读 Hadoop 的源码,看到各种动态代理,打算学习下。虽然以前也学过,但是感觉就是死记硬背的代码,有些地方根本不懂。温习了一遍网上 JDK 动态代理的教程后,自己尝试再一次死记硬背的写一写,结果错误百出。于是打算狠下心来系统的学习下动态代理。 在这篇博客中我不会具体的说明动态代理的实现,但是我会贴上我参考的博客供大家参考。 疑问 如果你和我…
解决 IDEA 阅读 Hadoop 源码报错问题
最近阅读 Hadoop 源码,使用 IDEA 打开 Hadoop,正常导入 maven 依赖后,发现某些类里面总是会报各种类不存在的错误,如下图: 一开始以为是因为我配置了国内 maven 镜像仓库,然后国内镜像仓库里面某些 jar 包没有及时同步,导致的缺失。但是我看了看 maven 中的导入记录,发现并没有报 jar 包找不到的错误。 看了看缺…
Log-Structured File System
Introduction Log-Structured File System (LFS)发明的背景就是建立在 CPU 高速发展,磁盘读取写入速度极速发展,单位内存越来越便宜,而磁盘的寻道耗时(受限于物理因素,快不起来)没有什么进步的情况下。 LFS 假设文件可以缓存在内存中,而且随着内存变大,能缓存的文件越多。而写入文件终究还是要写入磁盘,所以只…
Fast File System
Fast File System(FFS)一个具有里程碑意义的文件系统。它没有修改上层调用的 API,例如( open(), read(), write() 等等),而修改了内部实现,提升文件系统的效率。基本此后所有的文件系统都基于这种模式进行开发。 Old Unix File System 再开始介绍 Fast File System之前,我们简…