进阶时一定要注意他人的交流,吸收他人在学习、进阶时的经验以及教训,在进阶的路上不同于,前期所学的基础,进阶所接触的知识更加贴合运用,增加与他人的交流会给你带来意想不到的事情!记住你在这条路不是一个人。
(1)分布式计算
可以加上网络编程的学习
(2)Java调优
可以加上JVM的学习
[2]不足
从你的描述来看,看得『太多』,可以多加些实践。
2.最后能给出自己的学习计划(学习计划或者成功途径,或者是自己怎么学习然后学习结果还不错的)。
计划的建立是根据个人的现有基础,学习能力,时间管理能力来的,每个人都不会同,我个人的学习经历是这样的(我并没有往Java走太深,但是也足够到了进阶),我个人的方向实际是大数据/分布式计算,不过大数据太多用到Java,所以导致Java也学得不错:D
[1]打基础(学习的时候带着问题)
(1)语言:扎实得打好Java基础,重点关注并发和网络的部分,理解部分常用设计模式(不要背,需要经验才能理解)。
(2)数据结构和算法:如果你无法组织数据,操作数据,解决问题的能力自然无法提升。
(3)操作系统和网络:涉及到性能的时候,会用到的。
请用20%的时间掌握以上内容80%的Essentials.
[2]Code
(1)项目:这个要么去找项目做,要么自己有一个很cool的Idea,在有了基础之后,要相信自己能够做得很好,在这个过程中你会碰到各种细节,通过查阅各种API,各种Google,去补充打基础阶段遗漏的细节,也会接触到很多工具,比如Maven/SBT,JUnit等。
(2)源码:首先,为了看源码而看源码,好的项目包含了很多好的设计,好的语言细节,通过源码的学习你能够更加清楚你学习到的基础该如何用,了解到设计与具体实现的trade-off,这为以后自己设计系统是很有帮助的; 其次,项目中有性能问题不得不看源码,这种驱动性更强,并且会驱使你修改源码提高性能,提高性能的基础就是你之前学得知识。你可以看Spring的源码,也可以看Java Collection的源码,找到一个就认真走下去。
3.推荐书籍(按你的计划以及个别建议推荐Java相关)
[1]数据结构和算法
《Algorithms》
[2]Java并发
《Java Concurrency in practice》
[3]设计模式
《HeadFirst Design Patterns》
[4]Java语言
《Core Java》
《Effective Java》
[5]JVM与性能相关
《深入理解Java虚拟机》
《Java Performance:The definitive guide》
[6]Spring
《Spring 揭秘》
[7]分布式计算/大型网站架构
《大型网站技术架构 核心原理与案例分析》
《大型网站系统与java中间件实践》
二、多余啰嗦几句
1、从提问中看出了,你意识到单纯的知识输入算不得解决问题能力的提升,但是请记住,这是解决难题能力提升的基础,请保持耐心,认真打好基础,不断遇到挑战去解决,总结,提升。这里涉及到如何培养解决问题的能力,学习能力等等,太大,没有欲望写这部分,因为你自己摸索成长形成的能力才是最适合你。
2、You rest, you rust. You rush, you crash.
加油,希望能对你Java进阶之路有一定的帮助。
网友评论