对于Java程序猿学习的建议
第一阶段——Java基础
第二阶段——Web开发
这些内容主要是Web开发相关的内容,包括HTML/CSS/JS(前端页面)、Servlet/JSP(J2EE)以及MySql(数据库)相关的知识。
第三阶段——开发框架
目前比较主流的是SSM框架,即spring、springmvc、mybatis。
工作年限匹配的技能
1年以内
《Java编程思想》 3月以内
1年-2年
《大话设计模式》 http://www.cnblogs.com/zuoxiaolong/p/pattern26.html
《重构 改善既有代码的设计》
《effective java》
总而言之,这个阶段,你的核心任务就是提高你的代码能力,要能写出一手优雅的代码。
2年到3年
《深入理解Java虚拟机》。这本书绝对是Java开发者最重要的书,没有之一
JVM系列的知识 http://www.cnblogs.com/zuoxiaolong/category/508918.html
《Java并发编程实战》
《Java多线程编程核心技术》
《Java并发编程的艺术》
需要去看一些JDK中的类的源码,也包括你所使用的框架的源码
这个阶段,除了上面提到的了解JVM、JDK和框架源码以外,也请你根据别人优秀的源码,去造一个任何你能够想象出来的*。
3年到4年
在这个阶段,你就不能再简单的去学习前3年的内容了,虽然前面的学习如果还不够深入的话依旧要继续,但这个时候你应该更多的考虑建立你的优势,
也可以称为差异性。
比较推崇的基础书籍有三本,分别是《深入理解计算机系统》,《tcp/ip详解 卷一、二、三》,《数据结构与算法》。
其中TCP/IP有三本书,但我们这里把这三本看成是一本大书。
这三本分别适合三种人,《深入理解计算机系统》比较适合一直从事Java Web开发和APP后端开发工作的人群。
《tcp/ip详解 卷一、二、三》比较适合做网络编程的人群,比如你使用netty去开发的话,那么就要对TCP/IP有更深入的了解。
而《数据结构与算法》这本书,则比较适合做计算研究工作的人,比如刚才提到的分布式计算。
4年到5年
在这个阶段,你最大的任务是提高自己的影响力,为自己未来的十年工作生涯那一天做准备。
如果你能够靠你的影响力和以前积累的技术,参与到一个伟大的项目当中,那么你后面的五年也就有着落了。
5年以上
《深入理解计算机系统》
书籍
《Java编程思想》【5星】:这本书就不说了吧,Java的经典,经典中的经典,LZ从去年10月份开始读,大约花了三个月读完。
《深入理解Java虚拟机》【5星】:这本书也是经典中的经典,LZ读的时间好像并不长,但是收获巨大!
《重构:改善既有的代码设计》【4星】:这本书将LZ带进了重构的世界,LZ看的也非常快,但说实话,里面的技巧目前还真没什么施展的余地。
《大话设计模式》【电子版】【5星】:大话这本书是LZ进入设计模式世界的引导者,也正因为它,有了LZ的设计模式博文系列,也因此有人找LZ写书。
不过LZ最近的生活和工作都有些改变(这点后面再说),所以写书一事暂且放下了,不知是好是坏,个人觉得多沉淀一下其实也好,但不得不说,写书真的是一件
绝对靠毅力的事,这与写博客完全是两码事。
《编译原理》【5星】:这本书就不需要LZ评价了,不过LZ目前还没看完,当时看了大约两章暂且放下了。这本书是LZ以后必读之书。
《设计模式:可复用面向对象软件的基础》【4星】:GOF的名著,之所以给4星,是因为难度太高。LZ现在看起来还有难度,原因是因为里面的smalltalk,
实在是骨灰级语言。
入手这本书的原因,原本是为了写书而准备的,不过由于写书的进度被拉下来了,所以这本书就没有急于攻破。
《Java并发编程实战》【5星】:好书中的好书,它也算当时解了LZ的燃眉之急。通过它,LZ才算进入了并发的世界,而且并发系列也将因它而出现,
目前LZ其实正在写并发系列的第二篇文章,还未发表。
《Effective Java》【4星】:这本书LZ已经读了一半多,这类书给LZ的感觉是,看的时候会产生极强的共鸣,但是看过之后却记不住什么。不知道这是否是在潜在的影响LZ的编程手法。
《代码整洁之道》【5星】:这一本书与《重构:改善既有的代码设计》、《Effective Java》十分类似,都是在讲如何编写优秀的代码,只是这本书给LZ的感觉更实用。
《深入理解计算机系统》【5星】:这本书实在是难啃,但是LZ看的过程中收获巨大。这种书的价值体现,并不是最直观的收获,而是潜意识的影响。
《算法导论》:经典之作,不过LZ一直没有时间去啃下这本巨大的著作。里面的内容相信一定是非常精彩的,LZ期待着开启的那一天。
《数据结构与算法分析》:这本书是LZ为Java准备的算法书,之前看了一些,没有继续观摩,之后也是要补上的。
《代码大全》:又是一本巨厚的著作,这本书号称也是经典之作,同样是LZ十分期待的一本书,期待着开启。
《Maven实战》:当初买这本是因为项目当中用到了maven,所以准备大致了解一下,结果翻了几页发现兴趣不大。悲哀,僵尸书了。
《linux私房菜》:这本书是给自己准备的linux工具书,买的时候就没打算仔细看,结果买过来以后发现真没仔细看。
《分布式系统原理与范型》:买它是为了了解一下分布式系统的原理,这本书LZ还是有兴趣的,只是一直没机会开启。
《云计算》:这本书是当时LZ要回家一趟,所以买了一本带在火车上看,当时也看了不少,属于一本消遣的书,算是开阔下视野吧。
《云计算与SOA》:这本书与《云计算》是一起买的,因为还是想与工作联系起来,所以看到SOA就拿过来了,后续有时间可以拿来消遣,不打算细看。
基本要求
1.语言的基础部分:
基础部分的重点,其实主要就是static、final、transient、volatile这一类的关键字,以及内部类、泛型这一类的高阶语法。
2.Java运行时环境
3.并发知识与concurrent包
4.设计模式和反射
5.文件IO、NIO、网络IO以及网络协议
中等要求
1.Spring、Mybatis框架
2.Linux服务器
3.数据库优化
4.消息服务
5.缓存服务
6.负载均衡器
加分要求
1.数据结构与算法
2.计算机操作系统
3.计算机网络
4.熟练使用一种脚本语言
5.你的github和博客
————
并发、JVM、分布式、TCP/IP协议这些
Java的数据结构相关的类实现原理,比如LinkedList,ArrayList,HashMap,TreeMap这一类的
HashMap是不是有序的?
接下来就可能会问你,TreeMap和LinkedHashMap是如何保证它的顺序的?
你觉得它们两个哪个的有序实现比较好?
Java并发包当中的类,它们都有哪些作用,以及它们的实现原理,这些类就是java.concurrent包下面的。与上面一样,咱们也简单的模拟一个并发包的连环炮。
栅栏(Java的并发包中的CyclicBarrier)
IO包和NIO包中的内容。这部分里面NIO会是重点,IO包大部分都会比较熟悉,因此可能会直接略过,直接问你NIO的内容。
Java的虚拟机的内容。这部分主要包括三部分,GC、类加载机制,以及内存。
下面是关于类加载机制的简单连环炮。
再来一个关于内存的连环炮。
假如时光能够倒流, 我会这么学习Java
https://www.cnblogs.com/xll1025/p/10016353.html
https://blog.csdn.net/MinggeQingchun/article/details/81166827
https://www.cnblogs.com/zuoxiaolong/p/life82.html
https://www.cnblogs.com/zuoxiaolong/p/life51.html