💎一站式轻松地调用各大LLM模型接口,支持GPT4、智谱、星火、月之暗面及文生图 广告
我刚工作的时候,就有一些大佬推荐我来阅读 Java 源码,那时候的我懵懵懂懂,只觉得大佬说的是对的,于是就去读,当时的目的很简单,主要是两个:一个是应付面试,一个是想让自己更强。 当时边工作边读源码,一开始真心是一点都看不懂,逻辑都看得很迷糊,更不用说去探究作者为什么这么写,用到哪些设计模式了,但也不知道为什么,还是咬牙把源码都读完了。 读完之后,还是比较骄傲的,虽然说读完之后,很多细节都不记得了,但不知道为啥,总是有股莫名的自信,原来自己已经是读过源码的人了,而且在平时的工作中,用到一些 API 时,脑海中突然就会蹦出一些火花来:比如说初始化 List、Map 时如何初始化其大小;比如说如何根据场景来设置线程池;比如说如何根据业务写出优雅的锁,这时候就会自我感觉代码写的好,其实我一直有个理念:只有紧密贴合业务,能帮助解决业务复杂度的代码才是好代码,读了第一遍 Java 源码之后,突然就有了这种感觉,对自己写的代码也越来越有自信了。 随着工作年龄的增加,又陆续读过几次 Java 源码,现在除了对自己写代码的自信,还多了一种帮助别人的自信,在同事遇到困难,或者 代码 review 时,一些漏洞,你很容易就看出来,不知不觉你就会成为团队中的技术专家。 所以我们才一直强调,我们读源码真心是为了更好的实践,这种好处当你认真读完源码之后,慢慢就会感受到了。 同学们的问题 在这几个月内,我收到很多问题,但比较频繁的是两类问题,第一类问题主要是说自己看不懂源码,问我怎么办?这个问题其实我也没有答案,Java 源码本身就很枯燥,它并不是电视剧,也不是小说,它是需要我们静下心来,一行一行琢磨思考的东西,同学们都很聪明,不是看不懂,只是不想静下心来罢了。当然当代码太复杂时,我们只看也是不行的,需要亲自动手 debug。 第二类问题主要是作者为什么这么写?这个问题其实也很难回答,但问这些问题的同学,我基本都一一作答了,在和这些同学交流的过程中,发现一小部分同学的确对源码很有研究,我也受益匪浅,但大部分同学其实并没有搞懂源码本身的逻辑,试想如果在没有搞懂源码本身的逻辑下, 又如何去猜测并理解原作者用代码的本意呢?恐怕很难,所以还是建议大家先把源码本身逻辑弄懂后,再去推测本意和设计模型,不然这又会成为你阅读源码的阻碍(话虽然难听,但是真心的建议)。 感谢 这是我第一篇在慕课网的专栏,非常感谢慕课网的编辑和商务,给我了很多帮助。 当然最要感激的是各位同学,虽然我们一直内部强调,专栏不求快,只求质量和内容,但 Java 源码实在博大精深,由于我个人的理解问题和笔误,的确出现了一些理解不当的地方和笔误,在同学们的包容和指正下,我们也一起做了更正,所以非常感谢同学的包容和指正,真心的感谢大家的包容,谢谢。 最后留下我的个人微信(luanqiu0)吧,真心想交流后端技术和架构的可以加我,当然其它的我也不会了,再次谢谢各位同学一起走过我们的专栏,来过,看过,希望你能有所收获,谢谢。