Java学习路线

1.引言

  目前网络上的学习路线质量良莠不齐,要么不是很实用,要么已经过时,要么是一些培训机构的软文广告。最近重新系统学习了一下,觉得受益匪浅,故记录下来供大家分享。

  该学习路线只适合具有一定的Java基础,且有工作经验的同学,如果是新入职的新手或者基础很不好的请从基础做起。

2.路线顺序

  Java语言(基础)–>JDK源码–>JVM–>Web开发–>常用框架及源码–>关系型数据库–>服务器–>设计模式–>算法与数据结构–>中间件–>微服务–>计算机系统知识

  下面各个段落是详细的说明

3.Java语言(基础)

  这个是重中之重,然而在最近面试的过程中发现90%以上(这个数据主要是招的薪资12~18k的普通级程序员,大神请绕过)的应聘者都不会,注意,不是不熟练,而是不会。

  学习方法:《Java编程思想》第4版,《Java核心技术卷一》第10版。

  以编程思想为主,全书基本无啰嗦,且很多例子不仅仅说明了相应的语法,而且还提供了一种思想。唯一不足的是有点过时,而正好可以用核心技术这本书去弥补,因为两者基本上结构一致,即看完编程思想后,用核心技术做巩固。

  相信看完后会对 面向对象/内存创建与清理/集合类(数据结构类)/内部类/接口/字符串/泛型/异常/反射/并发/IO等有一个更深层次的理解。一定要吃透深刻理解,不要为了看完而看完,切莫一知半解在后面几个步骤中不停的回头去翻。

4.JDK源码

  java.lang:语言包。建议重点查看且理解。默认会引入,主要包含Object,基本类型封装类,数学类,字符串类String/StringBuffer,数学类Math,系统和运行时类System/Runtime/Process,操作类Class/ClassLoader,异常类Throwable/Exception/Error,线程类Thread。

  java.util: 实用包。建议结合数据结构重点查看。日期类,数据结构类,随机数类Random。尤其是数据结构类(Map,List,Set等)需要做到深入理解

  java.util.concurrent 并发包。并发编程必备,中高级面试必问。要求会用且深入理解原理。

  java.io ,java.nio IO包。io是基础,nio中高级面试必问。要求会用且知道原理。

  java.net 网络包。要求会用。

  java.lang.reflect 反射包。开发架构必备。要求会用且知道原理。

5.JVM

  其重要性就不说类。《深入理解Java虚拟机》,《Java并发编程实战》(Java底层和Java类库)。需要好好吃透。

6.Web开发

  理解Jsp/Servlet(不要求前端),Web容器的原理,深入理解tomcat,netty等。

7.常用框架及源码

  精读和理解spring ioc源码,精读和理解spring aop源码,读懂spring mvc源码,理解且会用常用ORM框架mybatis/hibernate/beetlsql,google guava,第三方实用类库(链接池,json,时间,日志,office文件等)

8.关系型数据库

  mysql,数据库引擎,数据类型使用,sql语句编写与优化,数据库事务,数据库管理等

9.服务器

  centos7,文件处理与统计awk/grep/sed/ps/sort/wc,服务器管理权限/用户/文件管理。shell/python二选一,常用软件管理redis,mysql,nginx,tomcat等

10.设计模式

  之所以把设计模式放到这里,是因为看设计模式的过程中会回忆起之前的各种源码,从而达到复习的作用,且同时加深了对设计模式的理解。在jdk源码和框架源码中,设计模式被运用的淋漓尽致,这也是不能脱离代码去看设计模式的原因。

11.算法与数据结构

  在第11个阶段复习1是为了起到巩固的作用,2是为下一步中间件做基础,当用到的时候会思考为什么这么使用。

12.中间件

  数据库分库分表mycat,消息队列,缓存等

13.微服务

  Spring cloud全家桶系列/dubbo,这个我自己还处于会用的阶段,等深入理解之后再写,以免误人子弟。

14.计算机系统知识

  最后会回归到计算机的基础知识,会发现很多代码很多技术都是收到这些启发,或者以这些为基础进行开发的。如果想往更深层次的发展,这个是必不可少的。

  操作系统,计算机网络,计算机组成原理,编译原理等

 

 

  

版权声明:本文为sjlian原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://www.cnblogs.com/sjlian/p/9235673.html