Posts
All the articles I've posted.
-
分布式系统:向量时钟
技术笔记在上一篇文章分布式系统:Lamport 逻辑时钟中我们知道Lamport 逻辑时钟帮助我们得到了分布式系统中的事件全序关系,但是对于同时发生的关系却不能很好的描述,导致无法描述事件的因果关系。向量时钟是在 Lamport 时间戳基础上演进的另一种逻辑时钟方法,它通过向量结构不但记录本节点的 Lamp...
-
IDEA 插件开发入门教程
技术笔记IntelliJ IDEA 是目前最好用的 JAVA 开发 IDE,它本身的功能已经非常强大了,但是每个人的需求不一样,有些需求 IDEA 本身无法满足,于是我们就需要自己开发插件来解决。工欲善其事,必先利其器,想要提高开发效率,我们可以借助 IDEA 提供的插件功能来满足我们的需求。如果没有我需要...
-
分布式系统:一致性模型
技术笔记分布式系统中一个重要的问题就是数据复制,数据复制一般是为了增强系统的可用性或提高性能。而实现数据复制的一个主要难题就是保持各个副本的一致性。本文首先讨论数据复制的场景中一致性模型如此重要的原因,然后讨论一致性模型的含义,最后分析常用的一致性模型。 为什么需要一致性模型 数据复制主要的目的有两个:可用...
-
分布式系统:持续一致性
技术笔记在分布式系统中,数据复制一般是为了增强系统的可用性或提高性能,但是数据一致性跟系统性能往往是矛盾的,对于数据复制的一致性问题没有最好的解决方法。除非放宽对一致性的要求才能获取特定场景下面的有效解决方法。那么放宽一致性的标准是什么?为此,Yu 和 Vahdat 提出了一种用于衡量不一致性以及表述系统中...
-
分布式系统:CAP 理论的前世今生
技术笔记CAP 理论是分布式系统设计中的一个重要理论,虽然它为系统设计提供了非常有用的依据,但是也带来了很多误解。本文将从 CAP 诞生的背景说起,然后对理论进行解释,最后对 CAP 在当前背景下的一些新理解进行分析,澄清一些对 CAP 的误解。 CAP 理论诞生的背景 CAP 理论的是在“数据一致性 VS...
-
编写高质量代码的思考
技术笔记前言 最近在看《代码大全》,可以说是一本软件开发的百科全书,特别厚,但是干货也很多。平时写代码,代码规范是一个最低的要求(很多老代码连最低要求都达不到),为什么要这样规定代码要这么写,而不是那么写?这是一个值得深究的问题。而不是说我照着代码规范写代码就算完了,高质量的代码是一个专业工程师的追求。要知...
-
代码生成利器:IDEA 强大的 Live Templates
技术笔记前言 Java 开发过程经常需要编写有固定格式的代码,例如说声明一个私有变量,logger或者bean等等。对于这种小范围的代码生成,我们可以利用 IDEA 提供的 Live Templates功能。刚开始觉得它只是一个简单的Code Snippet,后来发现它支持变量函数配置,可以支持很复杂的代码...
-
IDEA代码生成插件CodeMaker
技术笔记前言 Java 开发过程中经常会遇到编写重复代码的事情,例如说:编写领域类和持久类的时候,大部分时候它们的变量名称,类型是一样的,在编写领域类的时候常常要重复写类似的代码。类似的问题太多,却没找到可以支持自定义代码模板的插件,只能自己动手,丰衣足食,开发了一个 IDEA 的代码生成插件,通过 Vel...
-
2016 我的校招经历与经验
随笔前言 我的校招今年结束得比较早,主要是因为拿的都是 9 月初提前批的 offer。今年的校招我拿了网易,阿里的 offer,而且都不是批发价。网易内推比较早,发 offer 也早,所以是我第一个拿到的 offer。不过我最想去的是阿里,所以在阿里给我发了 offer 之后,我就没有再参加腾讯,百度的...
-
图解 Paxos 一致性协议
技术笔记前言 Paxos 一致性协议可以说是一致性协议研究的起点,也以难以理解闻名。其实协议本身并没有多难理解,它的难理解性主要体现在:为何如此设计协议以及如何证明其正确性。本文尝试通过流程图来说明协议的内容以及基本应用过程,不涉及如何证明其正确性。 基本概念 Paxos 可以分为两种: Single De...