快过年了,我给小明制定了一份价值60万的Java学习计划

96
Java黎先生
0.6 2019.01.22 21:20 字数 2594

1.

有些人觉得,学习计划有什么好制定的——今天是一天,明天是一天,后天还是一天,一天一天的就这样过好了。

但我不这么觉得。

2.

高尔基曾说过:“书籍是人类进步的阶梯。”那,要想在2019年取得比2018年更长足的进步,给自己列一份书单是必不可少的。

理想可以谈,但要先有面包。面包钱怎么来?靠工作啊!

我是一名正儿八经的程序员,以写代码为生,因此我的第一份书单是这样的:

一、《深入理解Java虚拟机:JVM高级特性与最佳实践》

如果你不满足于做一个只会写if…else…的Java程序员,而是希望更进一步,我随便举几个例子吧:

1、了解Java代码的底层运行机制

2、定位性能问题

3、对整个系统进行性能调优

4、解决各种奇奇怪怪的线上线下问题

5、更加高级别的,为自己的项目量身定做一款适合自己项目的虚拟机

那 么Java虚拟机是你必学的一门技术。《深入理解Java虚拟机:JVM高级特性与最佳实践》作者是周志明,这本书可以说是国内写得最好的有关Java虚 拟机的书籍,近半年,前前后后这本书我起码看了有5遍。国内写虚拟机的书除了这本,其实还有一些其他的,我也买过,不过粗略看下来,很多内容也是《深入理 解Java虚拟机:JVM高级特性与最佳实践》此书里面的。

二、《Java并发编程实战》

这本书常常被列入Java程序员必读十大书籍排行榜前几位,不过个人不是很推荐这本书。

《Java并发编程实战》作者是Brian Goetz,怎么说呢,这本书前前后后我也看了两遍左右,个人感受是:

1、文字多代码少

2、讲解多实践少

我 觉得这可能就是老外写书的特点吧,因为Java是北美国家(加拿大、美国)开发和维护的,所以老外对Java方方面面的理论知识体系都掌握得是非常清楚和 透彻的。翻开这本书看,多线程什么用、什么是死锁、什么是竞争、什么是线程安全等等,方方面面的知识点都用大量的文字篇幅讲解,不免让人感觉十分枯燥,也 难让读者有实质性的进步。我这本书看了两遍也属于一目十行意思,有兴趣的地方就重点看一下。

无论如何,作为一本常常位于Jva程序员必读十大书籍排行榜前几名的书,还是一定要推荐给大家的。

三、《Java多线程编程核心技术》

Java多线程编程核心技术》作者高洪岩。想要学习多线程的朋友,这本书是我大力推荐的,我的个人博客里面二十多篇的多线程博文都是基于此书,并且在这本书的基础上进行提炼和总结而写出来的。

此书和《Java并发编程实战》 相反,这本书的特点是大篇幅的代码+小篇幅的精讲解,可能这和中国人写的书比较偏向实用主义的风格有关。本书关于线程安全、synchronized、 Reentrant、Timer等等都用详细的代码进行了讲解,而且每个大知识点下的多个小知识点都会详细讲解到,非常有实践价值。

有兴趣的朋友们,我相信只要你们跟着这本书里面的代码敲、运行、思考,三步走,对于多线程的使用与理解一定会进几大步。

不 过这本书的缺点就是对于Java并发包下的一些类像CountDownLatch、Semphore、CyclicBarrier、Future、 Callable等都没有讲到,重点的CAS和AQS也没有触及,重点类的实现原理也没有提。当然,这很深入了,在学习了这本书之后如果能再去对这些知识 进行一些学习、研究的话,你一定会慢慢成长为一个很厉害的多线程高手。

四、《大型网站技术架构 核心原理与案例分析》

一个字评价这本书,屌;两个字评价这本书,很屌;三个字评价这本书,非常屌。呵呵,好了,再说下去可能别人以为我是水军了。

《大型网站技术架构 核心原理与案例分析》的作者是李智慧,原阿里巴巴技术专家。

Java 的大多数应用都是用在Web上的,现在只要稍微大型一点的Web应用,都一定是一个分布式系统,那么一个分布式系统用到了哪些技术?一个大型网站是如何从 一个小型网站成长起来的?如何保证你的网站安全?分布式系统使用到了缓存,有哪些缓存?缓存的使用有哪些值得注意的事项?

关于分布式的知识点,都在这本书里面有体现,只有你想不到,没有他写不到,而且写得非常易懂,基本属于看一两遍,再记一些笔记就知道是怎么一回事儿了。多看 几遍,对分布式的理解一定会加深不少。而且里面不仅仅是分布式的知识,还非常接地气地写了如何做一个好的架构师,其实我认为这不仅仅是写给想做架构师的读 者看的,就是给读者一些建议,如何更好地提出意见、如何更让别人关注你的声音、如何看到他人的优点,入木三分,让人获益匪浅。

五、《Spring源码深度解析》

Spring 这个框架做得太好了,功能太强大了,以至于很多开发者都只知Spring,不知什么是工厂、什么是单例、什么是代理(我面试别人的真实体会)。这种功能强 大的框架内部一定是很复杂的实现,这就导致一旦你的程序使用Spring,出了问题,可能是Error、可能是Exception、可能是程序运行结果不 是你的预期的,出现诸如此类问题的时候,将会让你感到困惑,除了上网查资料或者问别人似乎没有更好的解决办法。

研读Spring的源代码不失为一种很好的学习方法,我个人认为这有很多好处:

1、理解框架内部的实现之后,可以主动去解决问题,而不需要依赖别人

2、Spring框架内部实现用到了很多设计模式,很好的代码设计思路,这将会对你写代码、对你理解设计模式有很大的提高

3、研究Spring框架将会大大增强你读代码的能力,我相信只要你能研究清楚Spring内部是如何实现的,其他任何一个框架的源代码都难不倒你

总而言之,我认为读代码的能力是一个普通的程序员和一个好的程序员之间最大的差别之一,前者只会把别人写好的东西拿来用,后者不仅能用好,还清楚知道别人写好的东西底层是如何实现的,在出现问题的时候可以轻松解决。

Spring源代码,个人推荐《Spring源码深度解析》一书,真要研究透并且写清楚Spring源代码,恐怕三四本书都不够,作者在近400页 的篇幅中尽量去讲解Spring源代码是如何实现的,殊为不易,尽管无法讲得完全,但是相信作者的讲解配合上读者自己的研究,一定可以对Spring的实 现有更深度的理解。

以上就是我推荐给Java开发者们的一些值得一看的好书。但是这些书里面并没有Java基础、Java教程之类的书,不是我不推荐,而是离我自己学习 Java基础技术也过去好几年了,我学习的时候看的什么也忘了,所以我不能不负责任地推荐一些我自己都没有看过的书给大家。

3.

这点自然是技术路线,回顾往期学习经历,整理了学习路线分享给大家

框架-基础-高性能-微服务-团队协作-商城实战

别急,一个个的来:

框架:

spring mvc,IOC,mybatis,AOP

基础块:

Linux使用,高性能netty,MySQL,并发编程进阶,JVM性能调优,程序性能优化,Tomcat

高性能:

MySQL高性能存储,MongoDB,高性能缓存开发

Redis,FastDFS,高并发场景分布式解决方案实战

微服务

docker,spring cloud,spring boot,dubbo

团队协作:

sonar,Jenkins,Git,maven

商城实战:

如图,不再多做阐述

高清完整导图及相关学习视频资料获取方式

加群即可获取 群号:923116658

点击链接加入群聊【Java架构解析】:https://jq.qq.com/?_wv=1027&k=5e1QsXb

日记本