一、整体线路
1.在学习一门课程之前,最好掌握整体路径,不要盲目踏入,循序渐进的学习方式会让知识更容易嚼烂。
2.这里列出了学习java的整体路径,每一步都是凭借自己的经验,走过的路总结出来的。也许有人会认为这个路径不对,每一个人都有每一个的学习方式,没有对不对,只有适不适合自己,我这里仅是凭借自己的经验来总结让想要学习这么课程的同学少走弯路。
3.java基础位于最前,这个没什么好说的,当然如果你觉得入门比较难,可以先学一下c语言。学完java基础,会写一些简单的程序,一个简单登陆、注册功能的javaweb项目。
4.常用框架,这将让你使用别人优秀的代码来提高自己项目的高可用性和代码整洁性。
5.jvm会让给你了解java程序是怎么在计算机里运行的。你能够通过jvm参数来对项目进行一些简单的调优。
6.常用工具让你在实际工作过程中,提高开发效率。
7.在会做一些项目之后,你不得不对自己更加严格,希望提高程序的运行速度,学会多线程。
8.在学会多线程之后,试着将学的之后运用到实际生产中,高并发是你需要解决的难点之一。
9.如果你进来一个大公司,很可能公司的项目并不是一个简单的程序,你需要学习分布式。
10.学完上面那些内容,我们基本上能够熟练运用别人写的框架,也懂了程序的运行原理。如果想要更深一步学习,需要学习程序的设计模式,数据结构与此同时也不能落下,一个程序猿能走多远,就看他数据结构和算法理解得有多透彻。
11.看完的常用的设计模式,在去阅读别人的源代码时,会发现不是那么吃力,你会惊奇的发现,诶,它这里使用了这种设计模式,好处是为了。。。
12.别人的优秀的代码我们也阅读得差不多了。可以试着自己去写一两个优秀的项目,可以在github开源自己的一两个项目,吸引更多的人参与进来。
二、细节决定成败
1.在上面的整体路径中,我们对我们所要学的东西有了一个大致的了解。但是每一步,我们究竟需要学习些什么呢?
2.java基础是根本。
1.java语法、关键字、运算符 |
2.基本数据类型包装类、String类的常用方法与属性 |
3.什么是面向对象 |
4.封装、继承、多态的概念 |
5.异常处理常用集合及遍历方法 |
6.异常处理 |
7.jdk1.8的新特性。 |
8.能够对数据库完成简单的增删改查(在这期间,你不得不学习一点关于数据库的知识) |
9.servlet、jsp |
10.能够完成简单的,登陆注册功能(简单的html、css、js是你需要掌握的) |
3.常用框架
1.spring框架(理解什么是IOC、DI以及AOP) |
2.springMVC当然也是属于spring系列的(mvc模式,前端请求进行都经过了哪几个步骤,最后返回) |
3.mybatis (非常优秀的orm开源框架) |
4.Hibernate也是orm框架(方便快捷,易迁移。但我个人还是比较喜欢用mybatis) |
5.struts2 (也是mvc框架,我用得比较少) |
6.当然如果你的精力足够,额外也可以学习几个很重要的框架运用(shiro权限管理,netty nio框架) |
4.jvm
1.jvm内存模型与运行时数据区 |
2.类的加载过程 |
3.jvm常用参数 |
4.垃圾收集算法 |
5.jvm垃圾收集器 |
6.通过对吞吐量和响应时间两个性能指标进行调优 |
5.常用工具
1.maven (项目依赖管理工具) |
2.Git (版本控制工具) |
3.jboss容器(tomcat我想你在创建web工程的时候就应该学习了) |
4.生产中可能会运用到管道(jenkins、ansible等) |
5.redis |
6.消息队列MQ |
6.多线程
1.线程的生命周期 |
2.线程的创建方式 |
3.锁的分类 |
4.线程池 |
5.常用的并发容器 |
6.CAS算法 |
7.高并发
1.高并发场景 |
2.应对高并发的准则点 |
3.秒杀项目 |
8.分布式
1.zookeeper |
2.rpc框架原理 |
2.dubbo |
3.springCloud |
9.设计模式
1.单列模式 |
2.简单工厂、工厂方法、抽象工厂 |
3.代理模式 |
4.责任链模式 |
5.建造者模式 |
6.适配器模式 |
7.装饰模式 |
10.源码解读
1.String类源码解读 |
2.LinkedList源码解读 |
3.HashMap源码解读 |
4.ConcurrentHashMap源码解读 |
5.TreeMap源码解读 |
6.Spring框架源码解读(最好找一本书,跟着书的内容走) |
11.开源项目,完成了上面这些,相信会的东西已经很多了,哪怕在遇到的新的知识或框架或语言时,也能够非常快的去熟悉适应。这时候,可以自己在github上写一个自己的开源项目,比如,写一个RPC框架。
三、回顾
1.要学的知识远比我上面介绍的要多,但是你会发现,你在进行其中某一项学习内容时,你不得不去学习另外一项可能我没列出来的。比如Linux的基本操作,shell脚本,bash、pathoy至少得会一样。
2.学习是个漫长的过程,重在坚持。最后,宣传一波,如果你想要获取更多的学习资料,少走弯路,可以关注微信公众号: