2018年学习计划总结

2018年学习总结

写在前面:

制定计划固然重要,对完成计划之后自我总结我认为是更重要的,这篇文章将对2018下半年学习进行一个大总结,并说一些自己的感想。

在2018年6月份,也就是去年下半年前期,我针对2018年下半年的时间计划并发表了一篇文章:2018年下半年学习计划,在这里针对这个计划做一个总结,并寻找不足之处(例如未完成的计划,为什么没完成),同时也总结完成了的地方,或者有哪些超额完成的学习进度,鼓舞一下自己。

关于书籍

在书籍方面,2018年下半年6个月的时间,我花了3个月时间将《Java编程思想》看完,2个月时间将《Spring源码深度解析》 看透,又额外看了一个月多,进度一半多的《Spring Cloud 微服务实战》,期间偶尔翻翻《Effective Java》、《深入分析Java Web》,没有看的书是《深入理解JVM》、《并发编程实战》,这四本没怎么看的原因是自己还太弱,很多基础没有打牢,导致很多地方看不懂,不理解=不吸收=没看过,所以一些比较有深度的书现阶段的能力处于看了等于没看的尴尬境地,又由于本人酷爱研究Spring源码,导致2018年下半年大部分时间都花在研究源码这条道理上。

注意在看过的书中有些是看完,有些是看透,其实看完一本书很简单,但是要看透一本书,不仅仅需要书本上的知识,还需要很多实践以及别的材料,验证你所学习到的理解到的知识,我几乎看完的三本书中,可以说《Spring源码深度解析》 这本是我看的最透彻的一本书,最少来回翻了两到三遍,个人认为至少重复这些次数,你才能真正理解作者中心思想,并且将知识理解起来成为自己的东西,能够举一反三,遇到书本之外的知识也能独立解决,理解书本上每句话并深有感触个人认为才算读过这本书,所以严格意义上来讲,我在2018年下半年只读过《Spring源码深度解析》,最大的收获还是Spring框架,并且对SpringBoot、SpringCloud极其感兴趣,将在2019年继续深入研究。

关于《Java编程思想》这本书,虽然通读过一遍,但我觉得我只理解书中30%-40%的部分,甚至更少?我认为读一遍是远远不够的,但我为什么2018年不再继续读呢?我认为知识是一个渐进的过程,《Java编程思想》这本书我认为有些地方需要有一定的基础才能看懂并理解,此书的知识点并不是A -> B -> C -> D的,是A -> D的模式,你要读懂作者A的意思传达的是D的思想,你必须有B、C的基础,而此书有些地方就是A -> D,而我恰恰缺少了B、C的基础,所以我希望自己再好好沉淀一段时间,然后再来拜读此书,计划也是2019年再来拜读(等我搞定了SpringBoot、SpringCloud就来搞定你!)。

书籍总结

  1. 读透了《Spring源码深度解析》,并对Spring框架有自己更深入的理解。
  2. 浅读了一遍《Java编程思想》,在2019年某个成熟时期继续拜读。
  3. 即将读完《Spring Cloud微服务实战》,预计春节过后读完,并从头回顾,付诸实践验证理解知识点。

对于书籍的阅读进度还是可以的,收获了很多Spring框架的知识、Java基础知识,期间看过很多关于这类的视频与文章,一定不能只看书,所以,书不在多,关键看你获得了什么

关于知识点

在2018年学习计划中,我列出了许多许多知识要学,其中有中间件的学习,有并发编程的学习,代码优化类学习,JVM的学习等等等等,现在看来是幼稚之极的,在半年时间就算能执行完成,也一定只是浅尝辄止,停留在知道,或是会用的层面,绝对达不到深入理解的层面。但这个过程又是必要的,为什么这么说呢?学习的过程首先你必须知道你要学什么,你如果都不知道要学什么,这里学一下那里学一下,这种行为与无头苍蝇无二异。所以首先你必须先列出所有你必学的项目,所以2018年的学习计划,应该叫编程路上的学习目标更为恰当。在你知道你需要学习哪些东西之后,你才可以在剩下的时间付诸行动,走对方向,并时刻调整你的学习目标,在实践下执行更为实际的学习计划。就比如我,虽然列出了一堆学习计划,但我明白有些东西是需要前置技能才能学习的,我就找计划的前置技能进行学习,如果前置技能也需要前置技能,那就再去巩固更前置的东西,这样才最为重要。有了这样一个Java学习目标,你就知道你的学习方向,并保证你一直对其付诸行动,这样就算计划上的知识点完成度不高,也是很完美的。并且你必须经历这样一个过程,你才能制定更成熟的学习计划,不要怕自己计划定的太广,先定下来,再付诸实际行动,你将在学习中更懂自己在目标中最需要什么!

所以,扯了这么多,看看我在2018下半年都学习了什么吧!

  1. 数据结构:看过HashMap、ArrayList、LinkedList源码,并理解了底层数据结构的设计。Btree、B+tree在结合数据库调优时也有学习到。
  2. 设计模式:理解面向对象思想(在阅读源码过程中,一直在理解此思想),理解了设计模式几大原则,并能理解各个设计模式的抽象思想。(此项本人认为是阅读源码的前置技能,理解它会更好理解复杂源码的类结构)
  3. 框架:原定只研究一下SpringAOP、IOC,结果越陷越深,变成研究整个Spring,对Spring框架有自己的理解。并且看过MyBatis源码,并手写了一个自己的MyBatis。浅略看过Shiro源码(相关资料看的比较多),并能针对公司业务对Shiro框架进行改造,使其能运行在公司业务逻辑上。
  4. Java基础:在实际工作中编写代码的过程里结合《Java编程思想》一书有了Java基础的巩固,个人认为还不够,预计会额外拜读《码出高效:Java开发手册》等书继续巩固Java基础。
  5. 中间件:目前只停留在用的阶段,用过Redis、MQ
  6. 性能调优:了解MySQL的运行机制、了解了在底层查询过程中各阶段的几个调优入口点,此知识点将在2019年写几篇博客巩固知识。
  7. .NET:这个算番外了吧,由于公司需要,让我在工作时间花一个月时间学习.NET开发,由于一心JAVA,所以.NET并没有深入研究,仅仅停留在会使用C#并使用.NET进行WEB开发。

知识点总结

虽然看起来不是很多?但自己还是挺满意的。说实话2018年是比较迷茫的一年,发散学习知识点,在自己一步一个脚印的过程中越来越知道自己需要学习什么,我相信在2019年自己会学到比2018年学习到的更多东西。在2018年很多时间我都花在研究Spring上了,我认为这是非常值得的,经常看到有人说重复造轮子才去看Spring,一般人不要去看,这句话其实说反了,其实看Spring才会重复造Spring的轮子这是真的,但看Spring好处太多了,不仅仅只限于重复造轮子,有这种不推荐别人看Spring源码的言论的,我认为都是自己没有看过或是没有尝到看源码的好处的。这里我列几个在阅读Spring源码获得的一些知识点:

  1. 更加理解面向对象的思想、设计模式与其的设计模式几大原则,这些知识点将是不仅仅停留在理论层面。
  2. 一些编程思想,例如面向Bean编程、面向函数式编程、面向接口等抽象编程思想。
  3. 获得了深入学习SpringBoot的前置条件,注意是深入学习,如果仅仅是使用的话是非常简单的,但如果你想要深入研究,更加灵活使用它,学习Spring源码是必不可少的。并且获得了深入学习SpringCloud的前置前置技能,如果你想深入学习SpringCloud,你必须了解SpringBoot的机制,才能灵活使用SpringCloud,但如果你连SpringBoot的前置Spring都没有深入了解过,谈何深入理解SpringCloud?
  4. 锻炼阅读源码能力。阅读源码,是高级程序员的必经之路,在编程之路上,难免要阅读源码,Spring可以说是我看过几个框架里面最最复杂的框架,这也是为什么Spring发行这么多年以来,在使用上几乎没怎么变过的原因,Spring框架是经过深思熟虑,极大限度地发挥语言的抽象性写出的一个框架,健壮性不言而喻,如果你连Spring源码都可以看,那么大部分框架的源码又岂在话下?
  5. 增加对编程的热爱。此条因人而异,但我是这样的,在学习Spring的过程中越来越佩服写Spring的这群人,感受到了编程的魔力,这完美的设计使我乐在其中,对Java的热爱程度是越来越多,不愧是Java的“春天”。

拒绝浅尝辄止

到这里基本是总结完毕了,对于2018年的学习个人还是比较满意的,但还是觉得不够,2019年一定要更加努力!

这一节将谈谈我的一些感想,标题是拒绝浅尝辄止,我认为技术不能仅仅停留在会用的层面上,更应该深入理解其底层原理(如果仅仅是为了应付工作,不想提升的话当我没说)。就像暖床,为什么钻进被子里就能很暖和?有的人觉得,无缘无故研究它的原理做什么,钻进被子暖和和的就完事了!这里提出一个问题,如果将一个冰块放在床上用厚被子盖紧,是不是它就会融化?在以前我第一反应感觉冰块肯定会很快融化,但仔细思考其原理,你会发现恰恰相反,不仅不会很快融化而且会很长时间保持冰块的温度不会融化。正确回答这个问题你需要知道被子的原理是隔绝温度流失而不是产生热量,真正产生热量的其实是人体,如果你不知道,或是没思考过,一定会不知道答案或是答错。有人就会问了,我好端端的理解被子的原理有什么意义呢?其实这很有用,为了保持外卖中食物的温度,或是不让冰淇淋化掉,你只需要用被子捂好就可以了,这是目前保温最简便的方法,如果人类不去思考,只是浅尝辄止,又怎么让食物不那么快凉,冰淇淋不那么快化?当然这里只是举个例子而已,现实生活中有类似更加简便的方法保温,例如锡箔纸箱等,主要想让读者明白理解底层的作用,在进阶为一个高级程序员来说,是一定需要具备的素质!当然本人希望从事中间件或是架构的设计,浅尝辄止更是不被允许的。

插一条题外话:说到高级程序员,在第一家公司实习的时候,我曾经问过研发部老大,一个架构师一个问题:高级程序员和低级程序员有什么区别?我认为他回答的并不好,在现在我的理解看来,高级程序员与低级最大的区别就是拒绝浅尝辄止,能理解大部分的底层原理。

博客文章的深度

反观自己以前写的大部分博客文章,多是贴些代码说一些JS如何使用,又或者是代码异常的处理方法,我认为都是“废博文”,在那之后深度提升了一点点,写了设计模式系列,可能还算及格,在后来的Shiro、MyBatis、Spring源码解析才略微满意。对于博客文章的深度,绝对不能那么浅,这也是由于刚写博客,探索道路上迷路还是可以原谅的。

总结来说严格意义上我在2018下半年60篇博文中仅仅有30多篇博文还算博文,其中Spring系列最为满意,质量也最高。这样算下来一个月有5篇+博文的产出量,还算满意吧。

发布了84 篇原创文章 · 获赞 85 · 访问量 10万+

猜你喜欢

转载自blog.csdn.net/qq_41737716/article/details/86761769