加枝添叶我欲乘风微不足道信誓旦旦
唯我,NoBug1024
PS:现在的努力是为了成就更好的自己,不再仰望大神的后背!
不加密
前言
“学习真的是一个循序渐进的过程,也是一件需要坚持的事情。对于这篇文章,不同阶段的人可能有不同的理解,所以我花了几天的时间整理了一套学习路线提供给大家,以供参考。下面的这个学习路线适合刚刚学习了Java还没有深入、或者是想进一步提高的同学”
我大概把学习流程分了三个阶段。
第一阶段:基础阶段
基础阶段我主要分为了四大块内容:
一、数据结构与算法
1、简单的数据结构
(1)基础概念
(2)数组
(3)链表
(4)队列
(5)栈
2、树
(1)平衡二叉树
(2)最优二叉树(哈夫曼树)
(3)红黑树
(4)B、B+、B*树
(5)LSM树
3、图
(1)图的基础知识
(2)图的遍历(两种)
(2)最小生成树 (Prim 算法 和 Kruskal 算法)
(3)最短路径算法 (Dijkstra(迪杰斯特拉)算法和Floyd(弗洛伊德)算法)
(4)拓扑排序
4、排序算法(掌握基本实现和变形实现)
(1)选择排序
(2)冒泡排序
(3)插入排序
(4)快速排序
(5)归并排序
(6)希尔排序
(7)堆排序
(8)基数排序
(9)桶排序
(10)排序算法比较分析
5、java中排序工具
(1)数组排序
(2)集合工具类排序
6、常见算法
(1)字符串比较KMP算法
(2)剪枝算法
(3)布隆过滤器
(4)回溯算法
建议:对于数据结构,要掌握使用JAVA语言去描述数据结构和常见的算法操作。
二、java基础
1、java集合
(1)总体框架
(2)collection架构
(3)List系列(ArrayList、fail-fast原理、LinkedList、Vector、Stack)
(4)Map系列(HashMap、HashTable、TreeMap、WeakHashMap、LinkHashMap)
(5)set系列(HashSet、TreeSet)
(6)Interator和Enumeration
(7)集合的使用场景和对比分析
2、常用类
(1)基础类型封装类
(2)BeanUtil工具类
(3)string系列类
(4)java各种关键字(transient、final、static等等)
(5)Math系列
(6)system系列
3、Java其他知识点
(1)javaIO
(2)java泛型
(3)Java多态
(4)java注解
(5)Java反射
(6)java中的语法糖
(7)java8、9、10新特性(主要是8)
(8)java异常
(9)创建类的4种方式
(10)String类型为什么不可变
(11)枚举类型
建议:对于Java基础,可以先了解到Java的源码级别,但是学过了Java虚拟机之后,要能够从jvm的内存角度等去分析和理解
三、设计模式
1、创建型模式(5种)
2、结构性模式(7种)
3、行为性模式(11种)
建议:设计模式主要是在工作中使用,最主要的是了解其思想,然后灵活的使用,但是从设计模式衍生出的知识点是面试常问知识点。
四、JVM系列
1、jvm内存结构
2、类的加载机制
3、GC算法、分析、优化、工具
4、编译器
5、优化参数等等。
建议:了解两个常见版本的jvm,java7和java8,然后对比分析去记忆,jvm是进阶的一个必备知识,面试和工作中经常使用。
OK,上面就是Java学习的基础阶段。以上这个阶段看完了基本上就可以进入下一阶段了。第一个阶段是最枯燥乏味的,但是当你学完了这些知识,再往下学习的时候,会发现对Java有一个全新的认识。对于这个阶段我的整体建议是要硬着头皮弄清楚。然后再开始下一个阶段。
第二阶段
零、预备知识
1、HTML+css+JavaScript
2、常见的前端框架Vue、React、Jquery等
3、jsp+servlet+jdbc
4、最简单的小项目训练一下。
建议:对于前端,你要弄清楚web的整个执行流程,前端要学会基本的使用。可以有一个精通、其他的了解,但是想要学得好就不要考虑学这个那个了,最好的方法就是全学了。学完了之后可以找个项目训练一下,最主要的弄清楚原理机制。
一、SSM框架
(1)spring
(2)mybatis
(3)springmvc
(4)SSM整合(包括使用maven整合)
建议:对于这个阶段其实也算是基础阶段,因为还有SSH框架,但是已经逐渐的不占优势了,即使是这个SSM框架也正在被SpringBoot框架所取代,但是这三种框架的原理与思想是极其重要的。
二、相关工具
(1)maven
(2)git
(3)IDEA
(4)eclipse
(5)日志
(6)Jenkins等等
建议:说实话这些工具分类没有严格的划分,eclipse正在逐渐失去市场,但目前依然是idea和eclipse的天下,像vscode这些市场份额还是比较小的,具体的可以看一下百度指数或者自己搜一下,对于maven和git是一个开发者必要的工具。需要学的工具太多了,就先了解这个几个常用的吧。