Java学习路线
目录
友情提醒
先看文章目录,大致了解知识点结构,直接点击文章目录可以跳转到文章指定位置。
总结了一下学习路线,我有三套学习视频几百G。有缘看到这篇的可以关注私信我拿资料,哈哈哈。
第一章、Java基础
1.1)第一部分:Java 入门
①DOS常用命令
Java开发环境的搭建:安装JDK,配置环境变量
Java的注释,标识符、标识符的命名规范
②Java基本数据类型
变量和常量的定义及初始化
③Java的运算符
④流程控制语句
⑤关键字
⑥方法的定义,方法的递归调用
1.2)第二部分:Java数组
①Java 数组的定义,声明
②数组的特点优势与局限
③数组的遍历访问(普通循环,增强for循环)
④数组元素的顺序查找
⑤数组越界
⑥数组元素的排序(冒泡选择)
⑦java.util.Arrays工具类的使用
⑧二维数组
⑨数组转成 Stream
⑩数组转成 List
1.3)第三部分:Java面向对象
面向对象设计思想
类中的五成员
重写和重载
抽象方法与抽象类
接口
构造方法的细节
封装继承多态
局部变量、成员变量、静态变量、
final 关键字this 关键字super 关键字
静态属性、静态方法、静态代码块
1.4)第四部分:常用工具类
包装类
日期时间相关的工具类
字符串String
正则表达式
Apache-commons 工具库
Guava 工具库
1.5)第五部分:集合体系
集合的概念和作用
集合框架体系介绍
集合框架之Collection接口
ArrayList和LinkedList的方法使用
ArrayList和LinkedList各自的工作原理分析原理分析
使用多种方式遍历集合
HashSet和LinkedHashSet各自的工作原理分析
集合框架之Map接口
泛型的使用12. Collections工具类的使用
CopyOnWriteArrayList
HashMap
LinkedHashMap
TreeMap
ConcurrentHashMap
fail-fast
1.6)第六部分:序列化和泛型
1.7)第七部分:异常
为什么需要异常处理机制?
Error 和 Exception
try-catch-finally
try-with-resource
throw和throws
自定义异常
尽量捕获原始异常
不要打印堆栈后再抛出异常
不要用异常处理机制代替判断
不要过早捕获异常
11. 断点调试之引导运行步骤
1.8)第八部分:file类和IO流
File类的作用
2. File类中常用方法的使用介绍
3. 使用File类操作文件和文件夹
4. 相对路径和绝对路径的介绍
IO流IO流的概念和工作原理
IO流的分类
文件流的使用
转换流的使用
缓冲流的使用
对象流的使用
内存流的使用
使用不同的流实现文件内容的拷贝
字符流、字节流
输入流、输出流
同步、异步
阻塞、非阻塞
BIO、NIO 和 AIO
NIO 2.0
1.9)第九部分:多线程
- 进程和线程的介绍
- 进程和线程之间的区别与联系
- 线程实现方式之继承自Thread类
- 线程实现方式之实现Runnable接口
- 线程实现方式之线程池
- 线程的生命周期
- 线程中常用方法的使用
创建线程
创建线程池
什么是线程安全
多级缓存和一致性问题
CPU 时间片和原子性问题
指令重排和有序性问题
线程安全和内存模型
happens-before
可重入锁阻塞锁乐观锁悲观锁分布式锁
CAS
JUC
ABA
AQS
Fork Join
偏向锁轻量级锁重量级锁自旋锁
什么是死锁
避免死锁synchronized
volatile关键字
Thread
Local
Executors
CountDownLatch
Callable
ReentrantLock
ReentrantReadWriteLock
Atomic 相关类
1.10)第十部分:stream流
1.11)第十一部分:Lambda
1.12)第十二部分:枚举注解反射
注解是什么?
注解的生命周期
注解装饰的目标
自定义注解
使用注解
什么是反射?
反射有什么用?
Class 类
1.13)第十三部分:单元测试
Junit
TestNG
1.14)第十四部分:源码阅读
String
Integer
ArrayList
LinkedList
CopyOnWriteArrayList
HashMap
TreeMap
LinkedHashMap
ConcurrentHashMap
CopyOnWriteArrayList
第二章、JavaWeb
2.1)第一部分:HTML5
-
html概述
-
html基本标签
-
图片标签
-
超链接标签
-
表格标签
-
无序列表标签
-
有序列表标签
-
定义列表标签
-
div标签
-
语义化标签
-
表单标签
2.2)第二部分: CSS
CSS3简介和用途
CSS3书写规范
CSS3基本语法
CSS3三种使用方式
标签选择器
Id选择器
Class选择器
属性选择器9
层次选择器
文字、文本属性
背景、列表属性
尺寸、显示、轮廓属性
浮动、定位属性
盒子模型
CSS3高级属性
2.3)第三部分:JavaScript
JavaScript概述
JavaScript发展史
JavaScript组成
数据类型
运算符
分支语句
循环语句
系统函数、自定义函数、匿名函数
常见事件
数组、字符串、日期对象
BOM对象:window、history、location
DOM概念DOM操作:创建、修改内容、删除
Css样式操作
2.4)第四部分:MySQL
安装与使用
MySQL客户端和服务器配置
用户权限管理
DDL创建数据库和表
约束与外键
DML实现添加、修改、删除数据8. 聚合函数、日期函数等
DQL简单查询
排序、分组、筛选
多表查询
子查询
和exists关键字
分页查询
Mysql SQL语句优化介绍
2.5)第五部分:JDBC连接池
JDBC使用步骤
Connection、Statement、ResultSet接口
使用JDBC 完成数据库DML操作
PreparedStatement对象
大数据的操作
批量处理与元数据
事务处理
隔离级别
自定义连接池
DBCP、C3p0连接池
DBUtis工具类
QueryRunner
自定义结果集处理
连接池知识总结
2.6)第六部分:Servlet
什么是Servlet
Servlet接收客户端请求信息
Servlet响应客户端信息
Servlet的生命周期
重定向写法
转发写法
转发和重定向区别
HttpServletRequest获取中文乱码问题
HttpServletResponse响应中文乱码问题
Servlet路径映射问题
Servlet多路径映射
2.7)第七部分:JSP
- 什么是JSP
- JSP的内置对象
- 透析JSP的本质
- JSTL+EL5. MVC介绍
- 分层的重要性
- Web工程中事务实现
- Session的使用9. Cookie的使用
- web工程中连接池的使用
- 实现用户的自动登录
- 文件的上传、下载
- 过滤器、 监听器
2.8)第八部分:AJAX/JSON
Ajax技术的理解
XMLHttpRequest使用步骤
XMLHttpRequest GET/POST的区别
同步请求&异步请求
同步请求&异步请求的区别
Ajax获取不同的返回值类型
Ajax使用原生JavaScript和Jquery的区别
Ajax响应状态处理
JSON语法
Java JSON 解析
Java JSON 生成
Java JSON 第三方工具快速解析
JavaScript JSON转换
Jquery JSON转换
2.9)其他
XML
Filter
Listener
JSTL
Cookie
Session
第三章、框架
3.1)Maven工具
- 描述:项目管理工具
- 构建
- 依赖管理
- 插件
- 配置
- 子父工程
- 多模块打包构建
- Nexus 私服搭建
3.2)MyBatis
- 描述:数据访问框架,操作数据库进行增删改查等操作
- 增删改查
- 全局配置
- 动态 SQL
- 缓存
- 和其他框架的整合
- 逆向工程
MyBatis Plus
- 描述:Mybatis 的增强工具,能够简化开发、提高效率
- 引入
- 通用 CRUD
- 条件构造器
- 代码生成器
- 插件扩展
- 自定义全局操作
3.3)第三部分:Spring5
- 描述:Java 轻量级应用框架
- IOC
- AOP
- 事务
3.4)第四部分:Spring MVC
- 描述:Java 轻量级 web 开发框架
- 什么是 MVC?
- 请求与响应
- Restful API
- 拦截器
- 配置
- 执行过程
3.5)第五部分:SpringBoot2
- 描述:简化 Spring 应用的初始搭建以及开发过程,提高效率
- 常用注解
- 资源整合
- 高级特性
- 本地热部署
3.6)第六部分:Spring Security
- 描述:Spring 的安全管理框架
- 用户认证
- 权限管理
- 相关技术:Shiro
3.7)第七部分:SVN、Git工具
- 区分 Git 和 GitHub
- 工作区
- 分支
- 代码提交、推送、拉取、回退、重置
- 分支操作
- 代码合并、解决冲突
- 标签
- cherry-pick
- Git Flow
- 相关技术:SVN(比较老)
3.8)第八部分:其他框架
Vue
Spring Cloud
Netty
Dubbo
第四章、性能优化
使用单例、使用线程池、减少上下文切换、减小锁粒度、数据压缩、Stream 并行流、GC 调优、JVM 内存分配调优、btrace
第五章、数据库
MySql
SQL语句
事务
锁机制
索引、约束、存储过程、分库分表、binlog、读写分离、
数据库缓存(Redis、MongoDB)
数据库中间件(MyCat)
数据库连接池(Durid)
性能优化
第六章、JVM
Java 内存结构堆栈、垃圾回收、JVM 参数调优、Java 对象模型、HotSpot、类加载机制、编译和反编译、反编译工具、JIT、
虚拟机性能监控和故障处理工具(jps、jstack、jmap、jstat、jconsole、javap)
第七章、软件工程
- 软件的本质
- 软件特性
- 软件过程
- 软件开发原则
- 开闭原则
- 里氏替换原则
- 依赖倒置原则
- 单一职责原则
- 接口隔离原则
- 迪米特法则
- 软件过程模型
- 敏捷开发
- 软件开发模型
- 需求建模
- 软件设计
- UML
- 体系结构设计
- 设计模式
- 软件质量管理
- 评审
- 软件质量保证
- 软件测试
- 单元测试
- 集成测试
- 系统测试
- 压力测试
- 部署测试
- 软件配置管理
- 软件项目管理
- 软件项目估算
- 项目进度安排
- 风险管理
- 软件过程改进
- 成熟度模型
第八章、设计模式
设计模式的六大原则、
创建型设计模式(单例、抽象工厂、建造者、工厂、原型)、
结构型设计模式(适配器、桥接、装饰、组合、外观、享元、代理)、
行为型设计模式(模板方法、命令、迭代器、观察者、中介者、备忘录、解释器、状态、策略、责任链、访问者)、
单例的七种写法
第九章、数据结构和算法
简单的数据结构(栈、队列、链表、数组、集合、哈希表)、
树(二叉树、字典树、平衡树、排序树、B 树、B+ 树、R 树、红黑树、多路树)、
堆、
图(拓扑、有向图、无向图)
双指针、查找、分治、动态规划、递归、回溯、贪心、位运算、DFS、BFS
稳定的排序算法(冒泡排序、插入排序、鸡尾酒排序、桶排序、计数排序、归并排序、原地归并排序、二叉排序树排序、鸽巢排序、基数排序、侏儒排序、图书馆排序、块排序)、
不稳定的排序算法(选择排序、希尔排序、梳排序、堆排序、平滑排序、快速排序、内省排序、耐心排序、Clover 排序)
时间复杂度、空间复杂度、贪心算法、KMP 算法
第十章、操作系统
- 操作系统的组成
- Linux 常用命令
- Linux 系统安装
- 环境变量
- 文件管理
- 用户管理
- 内存管理
- 磁盘管理
- 进程管理
- 网络管理
- 软件包管理
- 服务管理
- 日志管理
- Linux 内核
- 常用命令
- 常用环境搭建
- Shell 脚本编程
- VIM 的使用
服务器性能指标(qps、CPU 利用率)
进程、线程(进程 / 线程间通讯方式、进程调度算法、进程同步、)
局部性原理
内存管理、分段和分页、虚拟内存和主存
第十一章、缓存
- 什么是缓存?
- 本地缓存
- Caffeine 库
- 多级缓存
- Redis 分布式缓存
- 数据类型
- 常用操作
- Java 操作 Redis
- Spring Boot Redis Template
- Redisson
- 主从模型搭建
- 哨兵集群搭建
- 日志持久化
- 缓存(Redis)应用场景
- 数据共享
- 单点登录
- 计数器
- 限流
- 点赞
- 实时排行榜
- 分布式锁
- 缓存常见问题
- 缓存雪崩
- 缓存击穿
- 缓存穿透
- 缓存更新一致性
- 相关技术:Memcached、Ehcache
第十二章、消息队列
Rabbit
- 消息队列的作用
- RabbitMQ 消息队列
- 生产消费模型
- 交换机模型
- 死信队列
- 延迟队列
- 消息持久化
- Java 操作
- 集群搭建
- 相关技术:Kafka、ActiveMQ、TubeMQ、RocketMQ
MQKafka
第十三章、服务器
Tomcat
jetty
Nginx
- Nginx 作用
- 正向代理
- 反向代理(负载均衡)
- 常用命令
- 配置
- 动静分离(网站部署)
- 集群搭建
- 相关技术:HAProxy、Apache
第十四章、计算机网络
网络安全
CSRF、XSS、SQL 注入
加密和解密(对称加密、非对称加密)
MD5、SHA1、DES、RSAD
DOS 攻击
网络分层模型
网络传输过程
IP、端口
HTTP 和 HTTPS协议
TCP 和 UDP协议
ARP 地址解析协议
SSL、TLS、Cookie、Session、CDN、
DNS域名解析
第十五章、Netty 网络编程
- IO 模型(BIO / NIO)
- Channel
- Buffer
- Seletor
- Netty 模型
- WebSocket 编程(动手做个聊天室)
第十六章、微服务
Dubbo
- 架构演进
- RPC
- Zookeeper
- 服务提供者
- 服务消费者
- 项目搭建
- 相关技术:DubboX(对 Dubbo 的扩展)
微服务 - 微服务概念
- Spring Cloud 框架
- 子父工程
- 服务注册与发现
- 注册中心 Eureka、Zookeeper、Consul
- Ribbon 负载均衡
- Feign 服务调用
- Hystrix 服务限流、降级、熔断
- Resilience4j 服务容错
- Gateway(Zuul)微服务网关
- Config 分布式配置中心
- 分布式服务总线
- Sleuth + Zipkin 分布式链路追踪
- Spring Cloud Alibaba
- Nacos 注册、配置中心
- OpenFeign 服务调用
- Sentinel 流控
- Seata 分布式事务
接口管理
- Swagger 接口文档
- Postman 接口测试
- 相关技术:YApi、ShowDoc
第十七章、容器
Docker
- 容器概念
- 镜像
- 部署服务
- Dockerfile
- Docker Compose
- Docker Machine
- Docker Swarm
- 多阶段构建
K8s
- K8S 架构
- 工作负载
- 资源类型
- Pod
- Pod 生命周期
- Pod 安全策略
- K8S 组件
- K8S 对象
- 部署应用
- 服务
- Ingress
- Kubectl 命令行
- 集群管理
第十八章、架构设计
🌖 分布式
- 分布式理论
- CAP
- BASE
- 分布式缓存
- Redis
- Memcached
- Etcd
- 一致性算法
- Raft
- Paxos
- 一致性哈希
- 分布式事务
- 解决方案
- 2PC
- 3PC
- TCC
- 本地消息表
- MQ 事务消息
- 最大努力通知
- LCN 分布式事务框架:https://github.com/codingapi/tx-lcn
- 解决方案
- 分布式 id 生成
- Leaf 分布式 id 生成服务:https://github.com/Meituan-Dianping/Leaf
- 分布式任务调度
- XXL-JOB 调度平台:https://www.xuxueli.com/xxl-job/
- elastic-job:https://gitee.com/elasticjob/elastic-job
- 分布式服务调用
- trpc
- 分布式存储
- HDFS
- Ceph
- 分布式数据库
- TiDB
- OceanBase
- 分布式文件系统
- HDFS
- 分布式协调
- Zookeeper
- 分布式监控
- Prometheus
- Zabbix
- 分布式消息队列
- RabbitMQ
- Kafka
- Apache Pulsar
- 分布式日志收集
- Elastic Stack
- Loki
- 分布式搜索引擎
- Elasticsearch
- 分布式链路追踪
- Apache SkyWalking
- 分布式配置中心
- Apollo
- Nacos
🌗 高可用
- 限流
- 降级熔断
- 冷备
- 双机热备
- 同城双活
- 异地双活
- 异地多活
- 容灾备份
🌗 高并发
- 数据库
- 分库分表
- MyCat 中间件
- Apache ShardingSphere 中间件
- 读写分离
- 分库分表
- 缓存
- 缓存雪崩
- 缓存击穿
- 缓存穿透
- 负载均衡
- 负载均衡算法
- 软硬件负载均衡(2、3、4、7 层)
🌘 服务网格
服务网格用来描述组成应用程序的微服务网络以及它们之间的交互。服务网格的规模和复杂性不断的增长,它将会变得越来越难以理解和管理,常见的需求包括服务发现、负载均衡、故障恢复、度量和监控等。
知识
- Istio
- 流量管理
- 安全性
- 可观测性
- Envoy(开源的边缘和服务代理)
资源
- 资料大全:https://www.servicemesher.com/awesome-servicemesh/
- istio 官方文档:https://preliminary.istio.io/latest/zh
- istio 视频教程:https://www.bilibili.com/video/BV1Lf4y1x7j8
- 在线体验 istio:https://katacoda.com/courses/istio/
🌘 DDD 领域驱动设计
将数据、业务流程抽象成容易理解的领域模型,通过用代码实现领域模型,来组成完整的业务系统。
知识
- DDD 的优势
- DDD 的适用场景
- DDD 核心概念
- 领域模型分类:失血、贫血、充血、涨血
- 子域划分:核心域、通用域、支撑域
- 限界上下文
- 实体和值对象
- 聚合设计
- 领域事件
- DDD 实践
资源
- DDD 入门:https://juejin.cn/post/7004002483601145863
- DDD 编码实践:https://juejin.cn/post/6844903903104860174
- DDD 实践教程:https://www.bilibili.com/video/BV1Y341167Xp
🌘 其他
- Sidecar
- Serverless
- 云原生
第十九章、大数据
搜索(Elasticsearch 、Solr)
- 5V 特点
- Hadoop
- HDFS
- MapReduce
- Spark
- Flink
- Storm
- Hive
- HBase
- Druid
- Kylin
- Pig
- Mahout
第二十章、项目实战
电商秒杀
- 天猫整站 SSM:https://how2j.cn/module/134.html
- 天猫整站 Springboot:https://how2j.cn/module/156.html
- mall-learning:https://github.com/macrozheng/mall-learningmall (学习教程,架构、业务、技术要点全方位解析)
- SpringBoot 电商商城系统 Mall4j:https://github.com/gz-yami/mall4j
- SpringBoot 完整电商系统 Mall:https://github.com/macrozheng/mall (包括前台商城系统及后台管理系统,基于 SpringBoot+MyBatis 实现)
- newbee-mall:https://github.com/newbee-ltd/newbee-mall (一套电商系统,包括 newbee-mall 商城系统及 newbee-mall-admin 商城后台管理系统,基于 Spring Boot 2.X 及相关技术栈开发)
- paascloud-master:https://github.com/paascloud/paascloud-master (基于 spring cloud + vue + oAuth2.0,前后端分离商城系统)
- mall-swarm:https://github.com/macrozheng/mall-swarm (一套微服务商城系统,采用了 Spring Cloud Greenwich、Spring Boot 2、MyBatis、Docker、Elasticsearch 等核心技术,同时提供了基于 Vue 的管理后台方便快速搭建系统)
- onemall:https://github.com/YunaiV/onemall (mall 商城,基于微服务的思想,构建在 B2C 电商场景下的项目实战。核心技术栈,是 Spring Boot + Dubbo 。未来,会重构成 Spring Cloud Alibaba)
- litemall:https://github.com/linlinjava/litemall (又一个小商城,litemall = Spring Boot 后端 + Vue 管理员前端 + 微信小程序用户前端 + Vue 用户移动端)
- xmall:https://github.com/Exrick/xmall (基于SOA架构的分布式电商购物商城 前后端分离 前台商城:Vue全家桶 后台管理系统)
- miaosha:https://github.com/qiurunze123/miaosha (秒杀系统设计与实现)
- SecKill:https://github.com/hfbin/Seckill (基于 SpringBoot+Mybatis+Redis+RabbitMQ 秒杀系统)
第二十一章、面试题
面试题
收集的几千道面试题
- ⭐ 2021 最新 Java 笔试、面试题合集:https://pan.baidu.com/s/1DE4HAu-DS80n7VOaGpU_KQ (密码:lkw1)
- 牛客网 Java开发校招面试考点汇总(附面试题和答案):https://www.nowcoder.com/discuss/161991
- 50w字+的技术类校招面试题汇总(附答案+考点):https://www.nowcoder.com/discuss/164726
- 硬件,软件(后端开发,算法,数据分析等)历年企业笔试真题汇总:https://www.nowcoder.com/discuss/212783
面经
- ⭐ 牛客面经:https://www.nowcoder.com/discuss/experience?tagId=639
- 秋招总结Java心得(双非硕士,已拿11+5家Offer):https://www.nowcoder.com/discuss/327041
- 被疫情逼得gap year的完全菜鸡的春招之路。:https://www.nowcoder.com/discuss/427812
- 谨以此文纪念2019年春招:https://www.nowcoder.com/discuss/181212
- 2019秋招经验谈:https://www.nowcoder.com/discuss/122463
- 秋招心得:https://www.nowcoder.com/discuss/317888
- 非科班本科菜鸡投的337家(Java后台):https://www.nowcoder.com/discuss/133333
- 2018 这一年:https://www.nowcoder.com/discuss/137593
- 双非的秋招,感谢牛客:https://www.nowcoder.com/discuss/142181
- 二本本科Java上岸(滴滴京东58)2019秋招心得+面经:https://www.nowcoder.com/discuss/333912
- 碎碎念流水账特别长 of 自己的 Java 秋招:https://www.nowcoder.com/discuss/354154
- 秋招之路:个人历程以及面经总结:https://www.nowcoder.com/discuss/344311
- 【秋招面经总结】菜逼的坎坷之路(JAVA后台研发):https://www.nowcoder.com/discuss/352030
- 阿里11面+EMC+网易+美团面经:https://www.nowcoder.com/discuss/105302
- 2018秋招阿里巴巴java笔试试题:https://www.nowcoder.com/discuss/67379
- 我的秋招经验分享(已拿BAT头条网易):https://www.nowcoder.com/discuss/117071
- 20届的阿里 头条 网易 滴滴 百度 小米等Java面经:https://www.nowcoder.com/discuss/68289
- 拿了5个offer,回馈牛友发一波面经(长文详细):https://www.nowcoder.com/discuss/79051
- 【总结】零基础学习一年拿到BAT三家offer:https://www.nowcoder.com/discuss/188241
- 本科生秋招经验总结帖:https://www.nowcoder.com/discuss/296586
- 双非渣硕校招总结+Java面经(网易阿里百度等):https://www.nowcoder.com/discuss/134850
- 2018秋招笔试科大讯飞java笔试试题:https://www.nowcoder.com/discuss/67684
- 头条后台研发面经(共三面):https://www.nowcoder.com/discuss/94233
- 一点点小经验和几家Java面经:https://www.nowcoder.com/discuss/138434
- 感谢牛客网!发一波面经!阿里、网易游戏、京东等offer。:https://www.nowcoder.com/discuss/101712
- 非科班水硕的春招实习总结- Java 后台开发:https://www.nowcoder.com/discuss/186528
- 十面阿里,七面头条,六个Offer,春招结束:https://www.nowcoder.com/discuss/80156
- 成功上岸,最后一波回馈:https://www.nowcoder.com/discuss/176434
- 【Java后台开发面经】阿里|网易|头条|腾讯|华为:https://www.nowcoder.com/discuss/108655
- 三跨学生的面经(头条、拼多多、华为、vivo):https://www.nowcoder.com/discuss/195640
第二十二章、能力
程序员重要能力
- 团队协作能力
- 高效沟通能力
- 需求分析能力
- 架构设计能力
- 抽象复用能力
- 独立创造能力
- 问题解决能力
- 归纳总结能力
- 自主学习能力
- 工具利用能力
- 高效编码能力
- 信息检索能力
- 开源建设能力
- 源码阅读能力
- 自测审查能力
- 文档编写能力
- 知识表达能力
- 绘图描述能力
- 兴趣驱动(长期学习能力)
- 保持好奇心
原文地址:https://blog.csdn.net/baomingshu/article/details/140354745
免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!