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之前,我们简…
Amdahl’s law(阿姆达尔定律)公式推导与思考
介绍 Amdahl's law(阿姆达尔定律) 由计算机科学家 Gene Amdahl 在 1967 年提出,旨在用公式描述在并行计算中,多核处理器理论上能够提高多少倍速度,公式如下:$$S=\frac{1}{1-a+\frac{a}{n}}$$$S$ 为 speedup,代表全局加速倍速(原来总时间/ 加速后总时间),$a$ 为并行计算所占比例(…
分布式系统中的 Partial ordering 和 Global ordering 的理解
在分布式系统中,我们在阅读关于事务一致性的论文中,经常会看到 partial ordering 和 global ordering。这里简单的说明下。 Partial ordering 部分有序。指在一系列的事件中,只保证部分的事件按照一定的顺序进行处理。 Global ordering / Total ordering 全局有序。很简单,就是所有…
Proxmox Centos cloud-init 模板制作
原文地址:https://www.inlighting.org/archives/make-proxmox-centos-cloud-init-template 因为自己使用 Proxmox 进行开发,需要频繁的创建删除虚拟机,所以制作 cloud-init 模板来方便虚拟机的创建。 这里我没有自己在原系统上面安装 cloud-init 进行操作,…
有限状态机( Finite State Machine )JAVA 版
介绍 有限状态机通常用于模拟序列逻辑,换句话说,就是用于代表和控制执行流程。 有限状态机所需条件: 一个物体只有固定的几种状态(例如交通灯只有绿灯、黄灯和红灯三个状态)。有固定的变化顺序(例如交通灯只能绿灯->黄灯->红灯->绿灯循环)物体同一时间点上只有一种状态。 例子 这里拿一个空调做例子,图是用了别人的,这里说明下下面三个状…
Kubernetes 之 Minikube 国内安装
国内网络环境很差,如果没有科学上网利器,基本很难学习 kubernetes 。本篇使用阿里云镜像来完成 Kubernetes 的官方 Getting Started 教程。 官方教程地址:https://kubernetes.io/docs/setup 阿里云官方参考教程:https://yq.aliyun.com/articles/221687 …