一万年太久,只争朝夕
一、数据结构与算法
1、简单的数据结构
(1)基础概念(2)数组(3)链表(4)队列(5)栈
2、树
(1)二叉树(2)平衡二叉树(3)最优二叉树(哈夫曼树)(4)红黑树(5)B、B+、B*树(6)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系列这些在后面学习也可以,不过一开始就先明白更好。
(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、一致性算法