
大家好，我是Jackey，目前在一家创业公司的架构组做Java开发工作。因为工作需要，我也会做一些Node、Python以及运维相关的工作，所以称自己为“半栈工程师”。今天，我想和你说说我学习这个专栏的一些心得。

## 我平时是如何学习的？

我先来和你说说我的经历吧。

本科毕业后，我去了一家国企做项目开发，日常工作就是使用已有框架去快速搭建一套可用的内部管理系统，然后做些定制化。

做了一年多，我感觉工作内容大量重复，所用技术也与行业严重脱节。但同时我也发现，我竟然连自己做的项目是什么原理都说不清楚，没办法通过其他公司的面试。然后，我开始深入研究所用框架，为日后的面试做知识储备。

**当我在调用框架提供的某个方法时，不再停留在是什么、怎么用，而是去研究源码看看它是如何实现的。**比如，NIO是怎么实现的，为什么用select而不是epoll；再比如，某个类的实例为什么要用单例，单例还有哪些写法；又比如，某处代码用到了线程池，用的是哪种阻塞队列，为什么要用有界队列，队列的参数是怎么设置的。

每次点开一段源码，我都感觉打开了新世界的大门。每次遇到新知识点，我都会通过搜索引擎去查看官方文档、技术博客或其他资料。在阅读这些技术资料的过程中，我又会发现一些新的知识盲区，进而**通过递归学习去触达更多的知识**。

经过半年多的研究，我终于搞清楚当时所用框架的基本原理了。而在这期间，我也从一个写Bug的小菜鸟变成了带领他人开发项目的小组长，顺利入职了一家AI公司，负责自有商城的开发。

团队人数不多，但技术足够新、氛围也很好，并且开发流程非常规范，编码格式要求严格。这，对我的个人成长帮助很大，因为代码就是开发者的名片，“优雅可读”的代码给人的印象总是好于“惨不忍睹”的代码。

因此，我感谢自己之前对技术原理的积累，让我有了一个更好的发展平台。

## 我为什么要学习“分布式技术原理与算法解析”专栏？

后来，因为内部调岗等因素，不想远离技术的我再次选择了离开，这次我打算去一家大公司。

由于我之前积累了比较多的基础知识，再加上读过一些Redis源码，在一面中的表现都很不错。但二面问到关于系统设计的问题时，我就有些无从下手了。

我记得在美团二面时，面试官让我设计一个注册中心。我了解一些Eureka的原理，所以简单阐述了下自己的想法，然后，面试官在此基础上增加难度，问我：如何保证高可用、如何应对高并发。这时，我想到了要使用分布式技术，但如何做分布式、机器间怎么联系在一起、如何保证机器间数据的一致性呢？

当时，我对分布式技术并没有一个清晰的认识，也不了解这些问题具体要如何解决，更不清楚引入分布式系统后会提升多少复杂度。所以，我面试的回答大都止步于提出分布式概念。

这时，我意识到自己需要去学习一些分布式系统的设计方法。互联网发展到今天，稍微有些规模的软件几乎都离不开分布式部署，多数基础组件也都建议进行分布式部署，分布式技术更是高并发、高性能的重要保证。

所以说，作为一名互联网从业者，如果不了解分布式的原理，就快与时代脱节了。也许，你会用“分久必合”来反驳我，但目前来看，硬件的发展已经明显降速，可能很难再看到“合”的场景了。因此，我相信分布式技术将会成为程序员的一项必备基础技能，看到“分布式技术原理与算法解析”专栏时毫不犹豫地就入手了。

## 学习这个专栏，我有哪些收获？

我学习专栏的习惯是，每周一三五更新后，当天上班的地铁上就抓紧学习，如果遇到不懂的知识点，就第一时间去查阅相关资料。看完一篇文章后，我会在评论区留下说说哪里有困惑，以及对应的课后思考题的解答思路，并会关注其他同学的留言，加深对这篇文章的理解。

一路学习下来，所有的辛苦都是值得的，所有的付出都是有收获的。**跟随专栏到现在，对于我来讲是“温故”和“知新”的过程。**

比如，我在学习“[分布式事务：all or nothing](https://time.geekbang.org/column/article/144970)”这一篇后，不仅对熟悉的二阶段提交有了更透彻的认识，还学到了它的改良版，三阶段提交的原理。

再比如，我在学习“[分布式锁：关键重地，非请勿入](https://time.geekbang.org/column/article/145505)”这一篇后，除了对基于缓存的分布式锁有了更深的理解外，还学习到了基于ZooKeeper实现的分布式锁，让我在日后的系统设计时又多了一种思路。

目前，我们公司还处在搭建基础架构的初期。随着对分布式架构的不断了解，我在公司担任的角色也更加重要了，设计新系统时Leader也总会听听我的意见。同时，我也希望能通过学习这个专栏，在公司内做一些关于分布式技术的分享，来提升自己的技术影响力。

我觉得，这都是这个专栏给我带来的收获吧。

## 给新同学的一些建议

如果你已经订阅了这个专栏，我的建议很简单，那就是抓紧时间学习吧，早学就是优势。当你养成学习习惯以后，你就发现自己已经比身边的大部分人都优秀了。

另外，我想说的是，学习专栏的过程不要局限于某个知识点，你可以再根据文章内容进行二次发散，去学习更多的知识，由点及面，构建自己的核心知识体系。

如果你还在犹豫的话，可以对比一下我的经历，如果你有所感触的话，真心建议你能认真学完整个专栏，再去挑战大厂，成功率会大很多。


