如何成长
如何成长?
现在的Java程序员可以说微服务、分布式都是要求必会的技能了,有的小伙伴就会非常的着急,什么都想学,结果什么学的都不精,单纯学个api而已
分布式这些确实得会,但学习一定要有计划,不要最后丢了西瓜拣了芝麻,对于还在上学或者工作没有几年的这类人来说,切忌盲目的乱学!那么重要的是什么? 说一千道一万,说到底还是基础,只有基础打牢了,学习高层次的技术才会不吃力,正如厨师做菜一样,考验厨师手艺的并不是鲍鱼、龙虾这些,这些食材本身就很好, 做的难度自然就低,真正考虑厨艺的往往是蛋炒饭这些简单的东西,因为这些是纯粹的,而这就是基础,真正的基石所在
有的人干了很多年,心中始终没有 面向对象 高内聚低耦合 的思想,就是单纯的面向过程的写代码,而这恰恰就是Java的核心所在,我举一个例子:设计模式 相信大家一定都知道,网上关于设计模式讲解的文章非常多,但又有多少人真正的掌握了设计模式呢?学了忘,忘了学。
这里我要说一个关键点 为什么有的人学了很多遍还是会忘,而有的人学了一遍就记住了呢?其实就是没有学习到设计模式的真正落地场景,有的人就是简单看个demo而已, 我们最首先要知道的是,在什么场景下应用什么设计模式?
比如就有这么个场景,要设计集成物流快递功能,用户可以下快递 和查快递,但集成的快递有很多家, 每家提供的sdk操作都是不一样,要怎么设计成统一呢?这里就需要到了设计模式,至于需要哪些设计模式,这里就留给小伙伴自己思考了。
知道了场景后,接下来就要知道项目中设计模式的实际应用,这里推荐大家去看源码,看看大神们是如何玩转设计模式的,首先推荐先从JDK
开始,从util
包中的集合工具
再到concurrent
并发包中的并发工具
源码中是偏向工具类方向的设计,而对于业务和组件方向的设计,小伙伴可以到本人的开源项目 大麦网 来学习,里面运用了大量常用的设计模式
到了这里,也就需要自己 真正的实践,也就是学以致用,看了一百遍,都不如自己在项目中真正的应用一遍。
源码学习的正确思路
现在面试另一个方向就是很爱问源码,而这部分更是让小伙伴逃避,相比八股文源码更是晦涩难懂,有的小伙伴看完过了没过长时间就忘了,这里我说下学习源码的正确思路
学习源码两大原则:
- 学习源码不能盲目的看,要有大致的方向,一开始就想着都看明白是不现实的
- 学习源码不能陷入过多的细节,属于是白白浪费时间
比较好的方案是带着问题来看,就比如说线程池的源码,心中要有个问题,这几个参数都是什么时候起作用的?运行到什么阶段生效的?要是一下子看这些参数觉得还是难, 那就把这几个参数再拆,盯着一个参数来看,当看明白了第一个参数后,再接着看下一个参数
带着问题来看的技巧在解决生产问题中更加适用,很多时候中间件的文档并不全面,github或者gitee也没有类似的问题,这时候只能一点点的看源码来排查问题,这样的经历 本人不知道有多少次了,光Nacos的源码看了不下几十遍了吧
这里有的小伙伴会说,我就是个初级,出了问题后,也轮不到让我排查啊,不要这么想!现在的你确实还轮不到排查公司问题,但出了问题后,自己是不是也能试着看一看呢, 试试自己能不能找到一些蛛丝马迹,把自己的想法和当时解决问题的架构师或者技术经理聊一聊,只要不是太操蛋的人都会很热情的,甚至就通过这次机会,对你高看一眼呢
本人也分享了大量的源码分析系统文章,用通俗易懂+流程图的方式帮助小伙伴更好的理解,欢迎小伙伴来学习