Java学习路线个人经验版

时间:2021-12-03 13:29:52

本人0基础转JAVA。曾在传智播客进行基础班学习,后自学找工作。目前从0到现在2年余,即将就职于一家一线互联网公司(18K),以下内容是我个人学路线,供大家参考,后续会更新。

第一阶段:JAVASE(这部分可以学习传智播客刘易视频)
用书参考《疯狂java讲义》,查字典方式使用

  内容:

l  数据类型,基本型,引用型区别,

这里要了解内存区别,那些变量是放在哪里的。了解就行,以后有用。

l  特性:

多态,继承,在中级往高级过渡用得上,尤其是后期写比较优雅的代码。

接口与抽象类:要学习,知道是怎么回事。后期往高级有用。包括学习设计模式。

知道接口抽象类是什么,有什么区别就行。

l  数组:

数组的各种使用,排序算法要学,面试容易写冒泡排序。

l  集合框架

这是很重要的,

List接口实现类,arraylist ,LinkdList使用,重点学习arraylist使用,知道底层是数组,数据结构是队列。知道arraylist的初始化长度是多少。长度是怎么变化的(了解后期有用)

LinkdList,背几个特点和arraylist的区别就行。(后期再学习)

Set:接口使用:去重场景下使用。

Map接口使用。重点练习HasMap的使用,知道Map的的底层是哈希表+数组。知道为什么key不重复。

HashTable背几个概念和HashTable的区别就行。(后期再学习)

集合框架非常重要:据我所知这部分知识是各大一线公司最爱问的问题,因为涉及到的知识很多,很深。算法也多。如果以后的目标10K左右的代码搬运工,那么只需要熟练使用arraylist和HashMap。不然就在基础阶段对各个特点,概念有个大概了解。后期逐步深入。

结合List,Map背几个队列,链表数据结构特点(15K以下面试,若问到也只是把这个几个概念背出来就行了)

l  常见类库的使用

Striing类 

Object类

Date类

File类

包装类

这都不说了。每个API的方法眼熟一遍。

l  IO流

IO是很重要的,要学习字节流,字符流的接口常见实现类的使用。以及包装流使用

IO这部分重要是因为:

10-15K基本就是要运用各种流。熟练使用就行。

在后面涉及到通信,网络编程等学习,都要用到这块。

基础阶段只需要:达到读写文本。文件,图片,电影复制就行。

l  多线程

这部分知识,中级阶段,基本不用,如果要学习。但是面试容易问到

知道Thread,Runnale接口。以及写几个demo就行了。

如果要应付13K以下的面试多线程问题:把Thread和Runnable的基础类特点背几个,

了解start方法,run方法,锁,sleep,wait(背几个特点),有精力再了解死锁,假死,线程通信

l  反射:

反射纯属java中的高级知识:18K以下工作几乎不使用。但是非常重要,不用要了解,

也可以为后期做学习做铺垫。

基础阶段有学习内容:

反射是怎么回事,

类加载器,

使用反射操作类,方法,属性demo。

l  网络编程

能写几个socket demo,知道TCP,UDP.就行了。

到这里javaSE的学习基本完善。Java基础阶段主要是打好基础。对重点常用知识熟练使用,对各个技术点有个概念。知道是怎么回事。尤其是反射,多线程,网络编程。

JAVA第二阶段学习:

l  Servlet的学习:

Servelet的生命周期,是个什么东西,怎么初始化,初始化干了什么事。

Request的 response的,session ,Context的使用。区别,各个APi都要熟悉

那种场景下使用。

l  Html+js基础

l  Jsp+JSTL标签

l  JDBC操作数据库+事物

l  Mysql的安装,使用

这部分学习能使用servlet +jsp+JSTL+JDBC开发一个web。实现web界面增删该查,用户能登陆,

 

这部分的延伸学习:

  1. u 会装虚拟机,会在虚拟机上使用linux。几个命令就行了。
  2. u  学习至少两种设计模式。单例模式+包装模式
  3. u  学习代理模式+动态代理(眼熟程度),+复习反射
  4. u  学会使用监听器request,session的监听
  5. u  学会使用过滤器
  6. u  了解xml结构,含义。能解析xml文档
  7. u  如果有精力装一个redis,能使用jedis操作redis。了解redis 5种数据结构
  8. u  其他知识积累
Java第二阶段进阶框架:
用书参考《JAVAEE轻量级web框架整合》 (疯狂java讲义同一作者)

本书重点讲解了jsp SSH框架使用上讲的很不错。原理也讲的不错。

视频参考:淘宝买传智课

 有了比较扎实的第二极阶段基础,那么就可以进阶学习框架,而且比较容易学习。如果一开始就学习的框架,那么需要将上面的第二阶段知识学习,弄懂,框架才能理解的比较深入。

Struts框架从使用的角度来讲,基本没有人用了,学的话,主要是学习在strtuts里面页面值怎么传递给后台的(值栈),学习这是一个基于类的框架。(弄明白什么是基于类的框架,SpringMVC是基于方法框架,二者关系,面试容易问道)

SrpingMVC:的使用,json,拦截器,

u  Springmvc配置每个配置的意思

u  springMC执行流程,视图解析器+控制器+前端控制器关系

Spring的使用:

Hibernate的使用:

Myabtis使用(这是使用最多的操作数据库框架)

延伸学习:

u  每个框架单独使用

u  框架整合,搭建

这部分就不多说了。反正一直学习框架就行了,重点是使用,

延伸学习:原理,执行流程。

比如:spring的IOC 是什么,是怎么加载bean的。Spring有几中实例化bean的方法,怎么用,有几种注入方式。Hibernate的使用,Hibernate的模板使用,各种对象的状态。Hibernate的一级二级缓存。

这一部分知识是工作中用的最多的,主要是工作之外去学习各种框架的执行流程。还有不知道的机制,怎么使用。对各个框架的原理初步认识理解。

本阶段延伸学习:

u  Maven的使用

u  Oracle 了解学习。(数据库往一种上深入学习,其他的基础学习)

u  POI使用

u  Eacharts,Highcahrts使用

u  Webservice

u  Shrio或者springscurity(推荐shrio),从表设计到页面控制到代码控制

u  缓存

u  Js进一步学习:封装ajax,闭包,promise...

学到了这里只要把web阶段学的比较明白进阶框架能熟练使用。延伸的也学习了。传统行业工作基本都能干了。主要是看你的经验积累,项目能力。15K以下技术上能干了。但是不能代表你能找到15K的工作。我就是通过自己学习,以上知识大概学6成,工资8000,也就是我的第一份工作。随后工作中,又花了时间反复学习,并结合项目理解运用。大概学了3个月,

这个阶段:

要对JAVA 的面向接口,面向对象编程思想能在项目中运用。要能写出比较有质量的代码。

Java第三阶段:
如果在传统行业,15K工资到头了,除非当领导,当小组长最多的也就15K.如果想有进一步突破,就的学习这个阶段

我所看的书仅供参考:

《Redis实战》

《redis运维与开发》

《RabbitMQ实战》可惜python代码,就当系统的学习下机制原理。

《Ntetty实战》《Netty权威指南》权威指南写的很不错,容易懂。

《0开始写分布式框架》此书质量很差,作者就是实现了一个简单dubbo。如果作为RPC技术入门看一眼还行,内容作为预习。

《0写WEB框架》 这本书还行,不是很深入,就是作者自己写了一套轻量级web框架。

初步复习以下反射,注解,动态代理,AOP知识。然后了解框架思想。本书作为看框架源码初期预习用书不错。

《多线程核心技术》 多线程讲解比较细,案例驱动,入门书籍,或者系统复习下多线程基础内容书籍

《java并发编程的艺术》

《TCP/IP卷一》

《java并发框架》跟多线程核心技术一个作者。一般,可以看看

互联网转型初级:

理解SOA架构。熟练Maven使用,能使用dubbo,能使用至少一种MQ,能使用redis.

如果第二阶段学好了,能够使用这些,面试吹一吹,能进入互联网,10-13k工作(第二阶段学好了)

互联网转型中级15K-20K(我现在的阶段):

Dubbo原理学习,

Zookeeper原理学习

这个阶段的学习基本上就是原理的深入学习,会发现阶段学的东西都有用。

学dubbo原理就会涉及到spi,会涉及到动态编译,动态代理,Socket,会学习到netty,学到netty就要学NIO,这里又要学socket。又要去看TCP/IP。

学netty的线程模型,又要学习多线程。学多线程就要学,多线程实现,锁,等待唤醒,生产者消费者模型,发现又跟MQ相关.

要学的要会的:

Ø  学习使用至少一种消息队列,明白知道MQ的原理机制,能够理解MQ的模型。

Ø   至少会一种NOSQL数据库使用,会使用分布式缓存。

Ø  熟悉2-3种RPC技术。懂其原理。

Ø  对分布式有一定了解,能够完成一个模块开发

Ø  能够用学到知识处理分布式事务。

延伸学习:

  1. u  进一步加强基础知识,反射,动态代理,注解技术。NIO,Socket
  2. u  能够对框架有较深的理解,看过某一框架源码(至少某部分核心源码)。知道框架如何写出来的。进一步理解java思想。设计思想。
  3. u  深入学习多线程。
  4. u  学习集合框架数据结构。
  5. u  学习jvm原理
  6. u  能使用至少5中设计模式

这个阶段很多人就跨不过了,没有持续的学习,扎实的基础,大量的学习,或者说吃透某一个技术是根本学不下去的。很多框架的书写底层用的技术就是scoket,IO,NIO,多线程。反射,动态代理。注解,动态编译,其他的就是模型,就是设计思想,比如增么装载的bean,怎么实例化的实现类,JDK很多都是自己使用的SPI,其他框架有可能自己写了一套SPI,这样理解了那么就能自己写一套框架【看一遍《0写WEB框架就行了》,不推荐自己动手造*,但是自定义注解,反射,代理这些技术要会使用】

 

编程的java思想。所以必须要基础扎实。这些都扎实了,学习技术就快了,就是学习某一个自己不会的技术,某一个新技术,只需要学习其模型就好了。比如我学习springboot和springcloud,一两周就搞定了(使用层面),尤其是我深入了dubbo原理,springCloud学起来异常轻松。

(同类技术,协议原理不一样)

 

结合项目实战,将技术能用到项目中,一边学技术,一边锻炼工程能力。

互联网进阶中高级20-25K:(后续更新)

这部分还没有经验(本人暂有半年学习规划:初步学习并发控制+JVM+JMM)

2个月:

将四本并发处理书籍读一遍,作为预习。

了解JMM概念,

读(预习)一半周志明JVM。

 

3-4个月:

学完JMM,周志明JVM第一遍精读完成。()

并发处理四本书精读一遍。

学完JDK cureent包下并发集合类,读部分源码。

选择某一框架(SpringMVC或者dubbo)通读源码。

了解:

学习数据库分表分库,数据库集群化

学习ngix

各种锁

 (后续更新)

…………

 

互联网高级25K-40K:

未知………

(重点还是在:高可用+高并发的构建与手段)

 

 

注:

里面多次说到了框架源码学习,有人认为工作中根本用不到,没什么用。

其实不对:

  • 如果能读懂某一框架源码:那么你的基本功是非凡的。可以说非常牛。因为涉及到的知识太多了。
  • 如果你看过某一框架源码,那么你说出来,别人也会觉得技术应该不错。
  • 我曾去京东面试,当时因为我说我用过dubbo,就问我看过dubbo源码没,还被问到了JVM调优。我猜测问这些问题一个就是看你的基本功在哪个层次,一个就是考察你是否喜欢钻研技术。随后我就回来看了dubbo源码。看框架源码是异常的痛苦与艰难。