学习真的是一个循序渐进的过程,也是一件需要坚持的事情。对于这篇文章,不同阶段的人可能有不同的理解,所以我把我整理的比较全面的java学习路线分享给大家,以供参考。下面的这个学习路线主要针对于那些刚刚学习了java,但是还没有深入理解的同学。
我大概把学习流程分了三个阶段。
**第一阶段:基础阶段**
基础阶段我主要分为了四大块内容:
**一、数据结构与算法**
1、简单的数据结构
(1)基础概念(2)数组(3)链表、(4)队列(5)栈
2、树
(1)二叉树(2)平衡二叉树 (3)最优二叉树(哈夫曼树) (4)红黑树 (5)B、B+、B*树
(5)LSM树
3、图
(1)图的基础知识和两种遍历方式(2)最小生成树 (Prim 算法 和 Kruskal 算法)
(3)最短路径算法 (Dijkstra(迪杰斯特拉)算法和Floyd(弗洛伊德)算法)
(4)拓扑排序
4、排序算法(8种排序算法和时间空间复杂度)
5、java中排序工具
(1)数组排序(2)集合工具类排序
6、常见算法
(1)字符串比较KMP算法(2)剪枝算法(3)布隆过滤器(4)回溯算法
**二、java基础**
1、java集合
(1)各个java集合类(2)使用场景以及性能分析
2、常用类
(1)基础类型封装类(2)BeanUtil工具类(3)string系列类(4)java各种关键字(transient、final、static等等)(5)Math系列(6)system系列
3、javaIO
4、java泛型
5、多态以及实现原理(主要是内存上的结构)
6、java注解和反射
7、java中的语法糖
8、java8、9、10新特性(主要是8)
9、java异常
10、其他零碎知识点(比如创建对象的4种方式)
三、**设计模式**
1、创建型模式(5种)
2、结构性模式(7种)
3、行为性模式(11种)
四、JVM**系列**
1、jvm内存结构
2、类的加载机制
3、GC算法、分析、优化、工具
以上这个阶段看完了基本上就可以进入下一阶段了。第一个阶段是最枯燥乏味的,当然再上一个阶段中假设你还学习了HTML、css、js、jsp+servlet+jdbc这些。如果没有你可以先把这些学习了进入下一个阶段。可能像jvm系列这些在后面学习也可以,不过我觉得一开始就先明白更好
**第二阶段**
一、SSM框架
(1)spring(先使用)(2)mybatis(3)springmvc(4)SSM整合(包括使用maven整合)
二、相关工具
(1)maven(2)git(3)IDEA(4)eclipse(5)日志框架(6)Jenkins
三、java并发编程(内容比较多)
四、java网络编程
(1)序列化(2)网络编程基础(主要看书、TCP/IP这些)(3)NIO(4)netty(5)远程调用(RMI、Thrift、gRPC)
五、数据库
1、Mysql、Oracle
2、nosql(redis、MongoDB)
第二阶段结束之后,我觉得应该是分专题的,因为没有严格意义上的先后顺序了,基本上就是用到哪一块就学哪一块就好了。
**第三阶段**
一、应用服务器
1、Tomcat
2、Jboss
3、Jetty
4、Weblogic
二、linux(不需要完成整个运维师的知识、会使用和底层原理)
三、分布式系统(这里面内容很多、框架也很多)
(1)Dubbo(2)Zookeeper(3)三大消息中间件(4)分布式缓存(5)springSession
(6)高并发分流ngix(7)文件系统fastDFS(8)数据扩容mycat(9)Docker等等
四、微服务架构
(1)springBoot(2)SpringCloud等等
五、安全
1、加密机制
2、shiro安全验证框架
3、其他安全知识
4、一致性算法
其他的还有大数据与云计算等等框架。喜欢的关注我
我会按照这个知识体系慢慢更新里面的文章
目录持续更新中。。。。
这里是拼凑的图