你好,我是聂鹏程。今天,我要和你分享的是,一名专栏订阅用户“崔新”的一些学习方法,主题是“追根溯源,拨开云雾见青天”。

虽然专栏已经更新结束,但我仍会关注会回复你的留言,并针对因时间问题未做到最好的文章做一次迭代。所以,我希望你也可以继续关注专栏,继续与我分享你在学习、工作过程中遇到的问题。

话不多说,现在就来看看崔新的故事吧。

大家好,我是崔新,昵称“随心而至”,一名后端开发者,坐标上海,工作一年多,在这里分享下自己学习“分布式技术原理与算法解析”专栏的心得。

我为什么要学这个专栏?

说来惭愧,我对单机的很多内容(比如操作系统、计算机组成原理)还是一知半解,但就是对分布式特别感兴趣,想知道成千上万的机器是如何协作共同完成一个任务的,想让自己的见识更广阔些。所以,我学习这个专栏的初衷,更多的是兴趣,也坚信兴趣就是最好的老师

聂老师在开篇词中提到“知识碎片化、不成体系、见树不见林”,感觉一下就点到了我的死穴。我也听说过很多分布式概念,但只知其一不知其二。所以,通过这个专栏,我想要系统化地学习分布式技术,了解其背后原理。

另外,分布式框架发展得实在是太快了,如果我只是跟随发展热度去学习,焦虑、疲惫不说,收效甚微也是个大问题。所以,我选择学习这个专栏的另一个目的是,想要看看技术的源头是什么样的,从根儿消除焦虑。

我去年大学毕业参加工作,Redis、Kafka、MongoDB、Elasticsearch、Storm、Spark、Hadoop等框架,几乎是一瞬间同时跳到我眼前,只能一个个去学习。学习一段时间后,我发现这些框架有很多共性,比如通信、选主、复制、协调。之后,我开始有针对地去看一些文章,对比着学习这些框架,但总感觉不得要领,学不透。

直到看到聂老师的开篇词,我豁然开朗,也更坚信“Software comes and goes, but hardware is forever”。只有追溯到技术的源头,明白它从哪里来要到哪里去,学习起来才能事半功倍。

我是怎么学习这个专栏的?

在专栏更新的过程中,我都是按照专栏更新的节奏在学习,大多会利用上班路上的时间,像追剧一样。有时我需要反复看几遍才能理解一个知识点,有时我需要停下来思考一段时间才能搞明白一个知识点,所以充分的学习时间对我来说很重要。追专栏更新的这个过程,也帮助我养成了一个良好的学习习惯。

说到学习方法,我感触最深的有两点:一是,形象化和类比,可以帮助我更深入地理解知识;二是,实践很重要。

不知道你有没有注意到,每一篇文章的题目都恰到好处,比如“分布式选举:国不可一日无君”。用熟悉的事件来类比技术问题,一下子就让我明白了这个技术的精髓,可谓四两拨千斤。其实,我们也可以尝试用熟悉的事件将知识形象化,先有个感性的认识。

比如,聂老师讲到“分布式技术是多台机器(集群)如何协同完成一件事儿”,你会不会想到通过单机的多进程、多线程等场景来理解呢。我对Java还算熟悉,所以会用JUC中的知识来类比。适当的类比、举一反三,可以帮助我更好地理解新知识和巩固旧知识。

这个专栏的设定是“技术原理与算法解析”,估计很多同学和我开始的想法一样,希望能多一些实践性的内容。但学完几篇文章后,我细想,聂老师想讲的是“道”,是一般性、普适性的原理,而具体的框架、实现只是在这些核心原理的基础上又添加了很多细节。

在框架中验证原理,可以让我们理解得更深刻;将知识点与业务场景联系起来,才能真正发挥其作用,进而提升自己的业务能力。

所谓,师傅领进门修行在个人,我觉得要想搞清楚、弄明白一个知识点,学完技术原理后,一定要多实践,去看具体框架的官方文档、源码,并上手操作。

学到现在,我的收获和体会

因为我学习这个专栏的目的很明确,所以学完已经更新的这些文章,感觉收获也非常大。

首先,我的眼界更开阔了,知识也逐渐成体系了。学习时,我经常会遇到自己不甚了解的技术,比如Actor、单体调度等,感觉非常爽。

同时,不得不说的是,聂老师对分布式技术体系“四纵四横”的划分,非常清晰明了,让我知道应该学习哪些知识,以及这些知识间的内在联系是什么样的。专栏每一站都会讲到最常用的那些技术点,各个站串联起来,就是一张分布式技术的知识地图,我要做的就是,按图索骥、多加实践。

其次,我逐渐形成了一套自己的学习方法。我觉得这个专栏最大的一个特点就是,都是分布式中最最核心的那部分技术。我可以集中精力去学这些最关键的主干知识,然后再去丰富枝叶,比如具体的框架实现、知识延伸。这种思路其实就符合80/20法则。

我感触比较深的另一个点是,学习知识要多思考、勤总结。聂老师在每篇文章后都提供了一个知识扩展模块和一张思维导图,不仅有助于我复习,还能帮我从广度和深度上完善自己的知识体系。对我来说,这是一个非常好的方法。

我想对专栏初学者说的话

工作一年多来,我总结了些学习方法,也有很多感触,想和你分享、交流。

首先,基础要扎实,学习要系统。虽然我是计算机专业出身,但大学时净忙着学习各种编程语言了,反倒是计算机基础知识没打牢。意识到这一点后,我开始系统地学习计算机组成原理、操作系统、数据库、数据结构与算法等基础知识了。

如果你的基础也和我一样不那么扎实的话,不要着急,静下心来一点一点地学习就好了。

其次,眼光放长远,关注复利效应。现在市面上充斥着各种速成系列,我觉得要离这些东西远一些,否则会一直在低水平重复。不求速成,日拱一卒才更适合我。只要保持增长,即使增长速度没那么快,日积月累的效果也会很可观。这,就是复利效应的魔力。

评论