源码的阅读,意识的觉醒

谁说我不能喝 提交于 2020-01-07 02:16:33

引言

开篇

本篇没有干活,只有水货;不谈技术,只谈“风阅”。讲的是思想上的觉悟,也是意识的觉醒。虽然很水,但是也是相对比较重要。作为一名中级码农,想要提升(获取更高的薪水)享受编程的乐趣,不仅仅是横向发展(即浮于更多技能的学习了解和使用更多的框架),更应该纵向发展,而且纵向发展更加重要。纵发展就是技术深度的挖掘,就需要了解技术的本质,能明白框架设计者的思想。

举个栗子

生活中最简单的一个利息计算公式:利息=本金×利率×存款期限。本金是现有的积累这个无法改变,当利率越高时,存款时间越长我们收获的利息越多(利息是央行规定我们无力改变( ̄(工) ̄),时间吗也只有一生,因此这个提高利息嘛,我们只能另想法啦。
但是对于我们的薪水来说,总薪水=时薪×时间,这两个变量都可由我们来控制。时薪嘛,增加单位时间的产出,提升对公司的贡献价值,拿到更高的薪水;时间嘛,你可以996再不行就007╮( ̄▽  ̄)╭)。哈哈第二条这个是不可能啦也不现实,毕竟是大部分都是普通人,我们不是机器不可能一天24小时干活,我们总是还要生活的。所以,我们还是重点就是要提升时薪啦。提升薪水小技巧,和老板反馈加薪,加薪不行就换工作(据说,换工作后工资翻一番,你可以试一试٩( ´︶)( ´︶ )۶),但能力不提升,薪水终究提升有限,除非你再换行业:-P。
最后的最后,我们就朝着只能提升自身的技能方向发展啦。

学习方向

作为java开发人员,我就简单说下从什么方面去提升并如何去提升java的能力。

1.精通java编程,熟悉java sdk提供的主要能力;
2.理解java运行时工作原理,熟悉jvm性能调优,能够充分利用java特性支持框架与程序库的设计开发;
3.熟悉多线程编程,熟练使用java并发包下的各项常用基础设施;
4.熟悉网络编程,能够熟练使用java nio开发高并发、高吞吐量的服务;
5.熟悉常用网络协议,如TCP/IP, HTTP;
6.能够熟练使用linux,能够利用常用的工具对程序进行跟踪诊断;
7.对消息服务、负载均衡、高可用机制等有深入理解;

仔细看看,是不是很熟悉,没错就是网易社招上的一则java招聘信息,大公司的招聘要求,就是可以作为我们的提升方向。看要求,“精通”、“熟练”两个关键词很重要,熟练掌握所运用技术的原理也是是提及最多的,而非知道了解。大部分比如我大多停留在"了解知道"层面,在小公司工作,不知道学习什么,公司也不会用到dubbo、spring cloud等分布式框架,碰到的问题也是增、删、改、查,修修补补,代码也没有任何规范性可言,设计模式也可能只是知道,很少去运用,架构可能也是前辈搭好的,遇到报错或困难首先想到的就是Google,如果一直持续这种态度,可能永远无法提升。

学习方式

提升的方式很多,如网络课程、各种技术论坛、以及看像java,spring这些官方文档。但都有其局限性,不可能指望在网络课程上学习到一门技术的方方面面,那样课程体系就变的很庞大;而官方文档介偏重的是使用方面,而不是降级其原理,如spring框架,因为框架本身的目的就是给大家提供便利性,封装一些复杂底层操作。

阅读源码

因此还一种更好的学习方式就是jdk以及优秀框架源码的阅读,阅读jdk和框架的源码不仅能够让我们更好的掌握jdk和框架的使用,更能让我们学习到框架设计者的思想,以及有优秀的编码风格。当问题的时候,以后解决问题的方式也多了一种,就是看源码,而不是第一时间想到Google。

多米诺骨牌效应

刚刚开始看源码时,应该遵守几条原则:
1.不能为看源码而看源码,应该掌握阅读源码的方式;
2.源码的通读在精不再多;
3.找一种舒服的姿势看源码。
前两点是因为框架很多,现有成百上千,新框架也在不停的推出,我们没有精力去把所有源码都阅读一遍,应该在初期的找准目标,先从一个最熟悉框架开始阅读,比如我们的Spring或Netty;第三点了是为了让自己有兴趣和毅力坚持下去,可以参考现有的源码解析的书籍或资料,模仿别人阅读源码的思路,因为我们直接从源代码开始,可能无从下手,直接迷失,最终放弃,归于平淡。当我们能真正坚持阅读完一个框架的源码,并培养出自己的源码阅读姿势时,这是就一个好的开始,这将形成多米诺骨牌效应,让自己有质的提升。

参考

小白

如果选择从spring开始,推荐一个本书《Spring源码深度解析》,另外也可以参考"写出高级bug"的blog(点击直接访问),他的blog也是结合《Spring源码深度解析》来分析Spring 5.0.6版本的源代码的,如果对看书没趣,可直接看他的blog。

进阶

当层次更高点,我们就可以脱离书和文档,看看带中文说明的源码,例如网易云课堂的Tony老师的附中文说明的netty源码Githu地址https://github.com/crazyFeng/netty/tree/netty-4.1.32.final-remark,也可直接访问码云上的镜像地址https://gitee.com/xxyi/nettyTony

登堂入室

一步一步一个脚印直至我们不借助辅助接触一个新的框架时,直接可以通读源码时,恭喜你成为一代“武林高手”,草木皆可为兵٩(*Ӧ)و。同时也恭喜你进入新坑,再接再厉,往更高的层次发展。

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!