如何系统的学习Java

原来我曾经写过一篇《如何快速学习Java》的文章。后来也有朋友咨询我“如何系统的学习Java”的问题。linux

这些朋友中,好多都是已经入了行,但不知足于工做枯燥的“增删改查”,或者“模板化”的SSM框架。而是有心成为Java技术专家,或者架构师。程序员

对于朋友的提问,我本很乐意回答。然而这个答案绝非三言两语可以说清。因此,我就索性写一篇文章来回答。web

文章写得有点匆忙,不完善,遗漏之处,我会逐渐完善。面试

学习计划 首先,我把Java系统学习分红两个阶段。设计模式

第一阶段:创建完整的的技术栈,成为一个有富于生产力的高级软件工程师。缓存

在这个阶段要掌握一系列的基础知识和工具。这些东西先后关联,因此学习过程成线性顺序,要从上往下进行。服务器

下面是第一阶段的学习路线:架构

第二阶段:这个阶段的目标是成为Java技术专家、架构师,所以必须在上一阶段的技术上,往高处(例如设计模式、大数据)走,往深处(Spring源码、Java虚拟机)走。

这个阶段的知识,并不存在先后的关联。在完成第一阶段的学习以后,彻底看工做的须要,以及我的的兴趣,安排学习的优先级。框架

下面是第二阶段的学习目标:微服务

接下来,我就点一下这个学习计划中的“关键点”。

Servlet 要成为一个优秀的Java web专家。不管是你用Spring MVC实现的普通REST接口,仍是微服务。往深的走,都要深入理解Servlet以及容器(例如Tomcat).

所以,在深度学习微服务,以及Spring MVC以前,必定要把Servlet学精,由于他是整个Java web的基石。因此,在成为软件专家的路上,Servlet是最基本的垫脚石,务必重视。

SQL 在我做为程序员入行的时候,没少在SQL语言下功夫,尤为是在SQL语言优化方面,包括在存储过程当中各类折腾。

但如今,SQL优化在开发过程当中的优先级显著下降,有几个缘由:

1.各类OR map框架(例如Hibernate、Mybatis)的出现,使SQL的工做量大大下降。

2.各类OR map框架自己也会对编写的、自动生成的SQL进行优化。

3.当前的服务器架构,若是要提升性能,首先应该考虑架构的横向扩展性,而不是在SQL上进行极端优化。

但如今也不是说能够彻底“任性”的编写SQL。只是说对于程序员,只要掌握最多见的SQL优化原则,作到工整就够了。

缓存、队列 缓存,队列。业界都有了较成熟的方案,例如Redis,ActiveMQ等。在学习的过程当中,第一步是掌握核心概念,以及他们要解决的问题。而后就要亲自安装,使用这些软件,创建感性的认识。

其次就是在掌握核心概念的基础上,掌握这些开源软件的Java API,而后试着在此基础上,编写典型的Demo,从而在Java语言层面上完全掌握。

至于有些朋友提到的把概念再“实现一遍”。不知道朋友指的是使用API,仍是把缓存和队列软件,用Java语言实现一下。若是是后者,不是说不能够,关键是太费时间。同时,就业界实践来讲,不是特别必要。若是你真有兴趣,把优先级放低一点,做为一个更长期的目标。

Linux 这个学习计划是一个长期的,深刻的学习计划。最终是要成长为技术专家、或架构师。那么有必要适时的掌握下Linux。由于在实践中,服务器每每委托于Linux服务器。并且未来,还有很多开源软件只能在linux上运行。

所以,在开始学习缓存和队列钱,须要先掌握了Linux的基本用法。而后再学习的过程当中,就把这些开源软件在Linux上运行。

这样,在你学习Java的过程当中,顺便也把Linux学习了,这远比你未来单独学习Linux要有趣,印象要深入。

微服务 微服务并非一门具体的技术,而是一个设计理念,不少语言和框架均可以实现,例如Java中的Spring MVC等。

所以,若是已经掌握了Spring MVC、Spring boot。那么对微服务的掌握是水到渠成的事情。你要作的就是注意力放在微服务的应用场景上。

设计模式 设计模式是较为靠上的东西。若是Java基础不是太好的话,很容易陷入空泛,眼高手低。

若是你的Java基础太薄弱,例如没有掌握“抽象类”。那么我建议你先把设计模式学习停一下,先把Java的基础知识补充下,至少要学完《Java核心技术》第六章,也就是掌握完整的现象对象的概念。而后再回来学习设计模式。

在学习设计模式的时候,必定要动手。最起码要把书中列举的设计模式,用Java语言实现一下。若是你阅读时是经典的GOF《设计模式》,其中的代码(用C++描述),就不容易用Java实现。建议你能够参照《Head First设计模式》,其中的demo都是短小精悍,很适合用Java来实现。

这样,一则有利于理解设计模式。二则在学习设计模式的过程当中,也进一步加强对Java基础知识的掌握。这种学习过程是一个相互促进的过程。

学习笔记很重要 特别重要的一点,学习的过程当中,尽可能的写学习笔记,其中包括难点和重点。

由于,系统深刻的学习Java必然是一个长期的,综合的过程。到后期,必定会出现学着后面,忘了前面。若是你没有学习笔记,又没有实践中积累的代码,那么就会出现边学边忘的状况。

而有了学习笔记,能够给本身的学习留下了“踪影”,之后复习的时候用来参考,很会就能把早前学习的记忆“唤醒”。

并且,这些学习笔记在后来的工做中,还能成为本身的参考手册,随用随查。

还有,那就是学习笔记仍是一个特别好的面试宝典。由于既然你记下了笔记,这些东西每每通过你深度思考,深度消化的东西,也是你区别以其余工程师的卓越之初。

喜欢记得加关注点个赞哦!

相关文章
相关标签/搜索