Java 学习路线

让学习更轻松

路线特点

  1. 最新,完整一条龙,从入门到入土(⭐ 表示推荐学习)
  2. 给出目标、学习建议、关键知识点、最优资源以及各类资源推荐(视频、书籍、文档、项目、工具等)
  3. 作者本人是 Java 开发者,融入个人经历 + 思考,让路线有灵魂
  4. 划分阶段、更有计划,且在最后给出持续学习的方向、探索 Java 程序员发展的无限可能

阶段 1:Java 入门(30天)

目标

培养兴趣、快速上手

前期准备

  1. 准备好一款在线、随时随地写代码的工具,不用在本地去安装和配置,是初学者的好帮手
    • 推荐网站 - 菜鸟工具:

      https://c.runoob.com/compile/10

  2. 准备一款记笔记的软件,学编程的过程中老师的思路、自己遇到的问题、解决问题的方法、心得感悟、遇到的好资料,都要记下来哦,好记性不如烂笔头,可以帮助你事半功倍。
    • 推荐软件 Typora:

      https://www.typora.io/

  3. 要多写,把这句话刻到脑子里。
  4. 选视频和找资料的小技巧:多看评论区、多看隔壁评论区,不要看过期的视频。

Java 编程基础(28 天)

知识

- Java 特点
- 环境搭建
- Java 基础语法
  - 数据类型
  - 流程控制
- 数组
- 面向对象
  - 方法
  - 重载
  - 封装
  - 继承
  - 多态
- 抽象类
- 接口
- 枚举
- 常用类
  - String
  - 日期时间
- 集合类
- 泛型
- 注解
- 异常处理
- 多线程
- IO 
- 反射

学习建议

一定要持续学习,不能断!

跟着书上的例子敲代码后,自主编写代码,并完成课后练习。

资源

  • 视频
    • ⭐ 韩顺平 - 零基础 30 天学会 Java:

      https://www.bilibili.com/video/BV1fh411y7R8

      (900 多集,很强)
  • 文档
    • ⭐ 菜鸟教程:

      https://www.runoob.com/java/java-tutorial.html

      (在线练习,直接上手)
    • 廖雪峰 Java 教程:

      https://www.liaoxuefeng.com/wiki/1252599548343744

  • 书籍
    • 《Head First Java》
  • 在线游戏
    • Codegym:

      https://codegym.cc/zh

      (培养兴趣)

Java 8(2 天)

知识

- Stream API
- Lambda 表达式
- 新日期时间 API
- 接口默认方法

资源

  • 视频
    • ⭐ 宋红康 - 全网最全Java零基础入门教程:

      https://www.bilibili.com/video/BV1Kb411W75N

      (只看 Java 8 部分)
  • 文档
    • ⭐ 菜鸟教程:

      https://www.runoob.com/java/java8-new-features.html

  • 书籍
    • 《Java 8 实战》
  • 工具
    • ⭐ 在线编写运行 Java 8:

      https://www.tutorialspoint.com/compile_java8_online.php

  • 项目
    • Java 8 小代码片段:

      https://github.com/biezhi/30-seconds-of-java8

尾声

学完了 Java 基础后,有些同学会感到迷茫,感觉好像啥也做不出来,不知道下一步做什么,我这一身的本领该如何施展啊?

不要慌,也不要急着去学新技术,接下来我们要多用 Java 来写代码了,巩固基础,但是写什么呢?当然是数据结构和算法!

阶段 2:巩固基础(30天)

目标

想学好编程,计算机基础知识要学好。

比如算法,是程序员的灵魂。学好算法有助于我们理解程序、开拓思路,因此也是很多公司面试时考察的关键,在找工作前,还是要刷个上百道算法题目的。

我们这个阶段的目标是:熟练使用 Java 语言来编写程序,巩固 Java 的基础。

那直接用 Java 来写算法题目,一举两得,岂不美哉?

Java 基础(20 天)

学习建议

建议大家去阅读 《Java 核心技术卷 1》,这本书堪称经典,是帮助你复习巩固 Java 的不二之选,其中图形界面章节可以选择不看。

之后可以刷牛客的 Java 练习题,检验自己的水平,我当时刷了两遍。

资源

  • 书籍
    • ⭐《Java 核心技术卷 1》
  • 练习
    • ⭐ 牛客题库:

      https://www.nowcoder.com/intelligentTest

数据结构与算法(5天)

知识

- 时间 / 空间复杂度分析
- 数据结构
  - 数组
  - 字符串
  - 队列
  - 
  - 链表
  - 集合
  - 哈希表
  - 二叉树
- 算法
  - 排序
  - 双指针
  - 查找
  - 分治
  - 动态规划
  - 递归
  - 回溯
  - 贪心
  - 位运算
  - DFS
  - BFS
  - 

学习建议

学算法一定要多思考、多练习!!!

在复习 Java、巩固基础的过程中,每天可以坚持用 Java 做 2 - 3 道算法题目。

不用担心看不懂,直接进入 LeetCode 学习板块 LeetBook,提供了免费的教程,文字、图解、动画讲算法、在线练习应有尽有,从 0 开始,跟着学习基础知识、跟着教程刷一些同类题目,培养算法思路。

之后再由简单到复杂、由通过率高到低,自主刷题,多看题解,举一反三。

有条件的朋友也可以试着参与竞赛,没什么门槛,可以帮助你集中精神,而且周赛的题目还是挺友好的~

资源

  • 在线教程
    • ⭐ LeetCode LeetBook:

      https://leetcode-cn.com/leetbook/

  • 在线刷题
    • ⭐ LeetCode:

      https://leetcode-cn.com/

  • 书籍
    • ⭐《小灰的漫画算法》
    • ⭐《剑指 Offer》
    • 《程序员代码面试指南》
    • 图解算法数据结构:

      https://leetcode-cn.com/leetbook/detail/illustration-of-algorithm/

  • 视频
    • 尚硅谷 Java 数据结构与算法:

      https://www.bilibili.com/video/BV1E4411H73v

      (比面试的要求高)
    • Leetcode 真题解析:

      https://www.bilibili.com/video/BV1a54y1b74k

  • 工具
    • VisuAlgo 数据结构和算法动态可视化:

      https://visualgo.net/zh

    • 数据结构可视化:

      https://www.cs.usfca.edu/~galles/visualization/Algorithms.html

  • 网站
    • 五分钟学算法:

      https://www.cxyxiaowu.com/

计算机基础(5天)

知识

- 计算机网络
  - HTTP / HTTPS 协议
  - 网络模型
  - UDP / TCP 协议
  - 网络安全
  - 域名解析
- 操作系统
  - 进程、线程
  - 进程 / 线程间通讯方式
  - 进程调度算法
  - 进程 / 线程状态
  - 死锁
  - 内存管理

学习建议

在巩固基础期间,我建议大家多去了解计算机基础知识,比如操作系统、计算机网络。

但这一块知识说实话挺枯燥的,对吧,你说说我现在项目都不会做,你又让我看这些理论,是不是想让我头秃。

我的建议是,可以先看有趣的课外书,比如《图解 HTTP》等等,对基础知识先有个大致的印象,等后面有时间了再系统学习。

比如还在校园就跟着学校的进度学习就成,自学的话可以看下 《计算机网络微课堂》、 《清华操作系统原理》视频,有实力的小伙伴,能看懂大黑书就更好了。

资源

  • 视频
    • 《计算机网络微课堂》:

      https://www.bilibili.com/video/BV1c4411d7jb

    • 《清华操作系统原理》:

      https://www.bilibili.com/video/BV1uW411f72n

  • 书籍
    • ⭐《图解 HTTP》
    • 《网络是怎样连接的》
    • ⭐《图解 TCP / IP》
    • 《编码》
    • 《30天自制操作系统》
    • 《计算机网络-自顶向下方法》(难度较大)
    • 《现代操作系统》(难度较大)
    • 《深入理解计算机系统》(难度较大)

尾声

巩固基础要花至少 1 个月的时间,当你读完《Java 核心技术卷1》并且不用查询文档也能熟练地用 Java 做题时,就可以接着往下了。

阶段 3:Java 企业开发基础(55天)

目标

面向薪资编程,学习实际工作要用的技术,并能 独立 做出一个具有完整功能的 Java Web 项目。

MySQL 数据库(5 天)

企业中大部分业务数据都是用关系型数据库存储的,因此数据库是后台开发同学的必备技能,其中 MySQL 数据库是目前的主流,也是面试时的重点。

知识

- 基本概念
- MySQL 搭建
- SQL 语句编写
- 约束
- 索引
- 事务
- 设计数据库表
- 性能优化

学习建议

其中,SQL 语句编写设计数据库表 这两个能力一定要有!

比如让你做一个学生管理系统,你要能想到需要哪些表,比如学生表、班级表;每个表需要哪些字段、字段类型。

这就要求大家多写 SQL、多根据实际的业务场景去练习设计能力。

资源

  • 视频
    • ⭐ 老杜 - mysql入门基础 + 数据库实战:

      https://www.bilibili.com/video/BV1Vy4y1z7EX

      (较新、内容相对精炼,有习题)
    • 尚硅谷 - MySQL基础教程:

      https://www.bilibili.com/video/BV1xW411u7ax

      (小姐姐讲课,但感觉音质一般)
  • 在线练习
    • ⭐ SQL 自学网:

      http://xuesql.cn/

    • ⭐ SQL 在线运行:

      https://www.bejson.com/runcode/sql/

  • 文档
    • SQL - 菜鸟教程:

      https://www.runoob.com/sql/sql-tutorial.html

    • MySQL - 菜鸟教程:

      https://www.runoob.com/mysql/mysql-tutorial.html

开发框架(40 天)

Java 之所以能成为主流的企业开发语言,很大一部分原因是它完善的框架生态,用好框架,不仅能够大大提升开发效率,还能提高项目的稳定性、减少维护成本。

开发框架是后台开发工作中不可或缺的,也是面试考察的重点,一定要好好学!

不知道 Java 能做什么的朋友们,学完开发框架,就会有答案啦。

下面给大家推荐的都是企业中应用最多的主流开发框架,知识点比较零碎,就放在一起讲了。

知识

Java Web

- 描述:Java 网页应用开发基础
- 前端基础
- XML
- JSON
- Servlet
- Filter
- Listener
- JSP
- JSTL
- Cookie
- Session

Spring 5

- 描述:Java 轻量级应用框架
- IOC
- AOP
- 事务

SpringMVC

- 描述:Java 轻量级 web 开发框架
- 什么是 MVC
- 请求与响应
- Restful API
- 拦截器
- 配置
- 执行过程

MyBatis

- 描述:数据访问框架,操作数据库进行增删改查等操作
- 增删改查
- 全局配置
- 动态 SQL
- 缓存
- 和其他框架的整合
- 逆向工程

MyBatis Plus

- 描述:Mybatis 的增强工具,能够简化开发、提高效率
- 引入
- 通用 CRUD
- 条件构造器
- 代码生成器
- 插件扩展
- 自定义全局操作

SpringBoot 2

- 描述:简化 Spring 应用的初始搭建以及开发过程,提高效率
- 常用注解
- 资源整合
- 高级特性
- 本地热部署

Spring Security

- 描述:Spring 的安全管理框架
- 用户认证
- 权限管理

Maven / Gradle

- 描述:项目管理工具
- 构建
- 依赖管理
- 插件
- 配置
- 子父工程

学习建议

由于技术较多,且框架之间存在一定的联系,因此建议大家看同一系列的视频教程(尚硅谷、狂神说等等都可以),以保证学习内容的连续以及体验上的一致。

学这些技术的时候,千万不能懒 !一定要多记笔记,并且跟着老师写代码。原理部分不要太过纠结,先以能跟着敲出代码、写出可运行的项目为主,有些东西做出来也能帮助你更好地理解理论。

学习顺序挺重要的,建议按我推荐的顺序学,不要一上手就学 SpringBoot。只有先学习下自己整合框架的方法,才能帮你理解 SpringBoot 解决的问题,感受到它的方便和高效。

Maven / Gradle 当工具用就好,面试基本不问,跟着框架教程去用就行了,先不用花太多时间去深入学。

资源

  • 视频(按顺序看)
    • ⭐ 尚硅谷最新版 JavaWeb 全套教程:

      https://www.bilibili.com/video/BV1Y7411K7zz

      (前端部分最好也看下)
    • ⭐ 尚硅谷 - Spring 5 框架最新版教程(idea版):

      https://www.bilibili.com/video/BV1Vf4y127N5

    • ⭐ 尚硅谷 - SpringMVC 2021 最新教程:

      https://www.bilibili.com/video/BV1Ry4y1574R

    • ⭐ 尚硅谷 - MyBatis 实战教程全套完整版:

      https://www.bilibili.com/video/BV1mW411M737

    • ⭐ 尚硅谷 - MyBatisPlus 教程:

      https://www.bilibili.com/video/BV1Ds411E76Y

    • Maven 零基础入门教程:

      https://www.bilibili.com/video/BV1TW411g7hP

      (搞不懂 Maven 可以看看)
    • ⭐ 雷丰阳 2021 版 SpringBoot2 零基础入门:

      https://www.bilibili.com/video/BV19K4y1L7MT

    • 尚硅谷 - SpringSecurity 框架教程:

      https://www.bilibili.com/video/BV15a411A7kP

开发规范(3 天)

开发不规范,同事两行泪。

开发规范是团队开发中必须遵守的,有利于提高项目的开发效率、降低维护成本。

知识

- 代码规范
  - 代码风格
  - 命名
  - 其他规则
- 提交规范

学习建议

简单过一遍大厂团队的规范手册就好了,以后做项目的时候能想起来的话就去使用,或者从书中、网上查规范,再去遵守。

项目做得多了,自然会养成好的习惯,不用刻意去记(毕竟每个团队规范也不完全相同,背了也没用)。

资源

  • 书籍
    • ⭐ 阿里巴巴 Java 开发手册:

      https://developer.aliyun.com/graph/java

      (搜索《Java开发手册》)
  • 视频
    • 华山版《Java开发手册》独家讲解:

      https://developer.aliyun.com/live/1201

  • 文档
    • Google Java Style Guide:

      https://google.github.io/styleguide/javaguide.html

      (谷歌 Java 代码规范)

Git(2 天)

此前大家可能听说过 GitHub,一流的代码开源托管平台。

Git 和它可不一样,是一个版本控制工具,可以更好地管理和共享项目代码,比如把自己的代码传到 GitHub 上、或者从远程下载。

无论自己做项目、还是团队开发,Git 都是现在不可或缺的神器。

知识

- 工作区
- 分支
- 代码提交、推送、拉取、回退、重置
- 分支操作
- 代码合并、解决冲突
- 标签
- cherry-pick

学习建议

每个命令跟着敲一遍,有个大致的印象,会用即可,用的多了自然熟悉了。

资源

  • 视频
    • ⭐【尚硅谷】5h打通Git全套教程丨2021最新IDEA版

      https://www.bilibili.com/video/BV1vy4y1s7k6

  • 书籍
    • 猴子都能懂的 Git 入门

      https://backlog.com/git-tutorial/cn/

    • ⭐ GitHub 漫游指南

      https://github.phodal.com/

  • 文档
    • GitHub 官方文档:

      https://docs.github.com/cn

  • 游戏
    • Learning Git Branching:

      https://learngitbranching.js.org/?locale=zh_CN

Linux(5 天)

企业中的很多前后台项目都是部署在 Linux 服务器上的,因此很有必要熟悉 Linux 的操作和脚本的编写。

后面学微服务、学架构都是在多台服务器操作,如果你不熟悉 Linux,会有点吃力。

知识

- Linux 系统安装
- 环境变量
- 文件管理
- 用户管理
- 内存管理
- 磁盘管理
- 进程管理
- 网络管理
- 软件包管理
- 服务管理
- 日志管理
- Linux 内核
- 常用命令
- 常用环境搭建
- Shell 脚本编程
- VIM 的使用

学习建议

多动手实践,建议自己购买一台云服务器,并且在本地搭建 Linux 虚拟机环境。

一定要自己从 0 开始手敲命令安装软件、部署服务,熟悉整个项目的上线流程。

每个命令至少要跟着敲一遍,了解它们的作用,并通过自然地练习,熟悉常用的 Linux 命令。

记不住没关系,用文档查就行了。

先会用,再理解。

资源

  • 视频
    • ⭐ 2021 韩顺平 一周学会Linux

      https://www.bilibili.com/video/BV1Sv411r7vd

      (基于 CentOS 7.6 版本较新)
  • 书籍
    • 《鸟哥的 Linux 私房菜 —— 基础篇》

      http://cn.linux.vbird.org/linux_basic/linux_basic.php

      (经典)
  • 文档
    • Linux 工具快速教程:

      https://linuxtools-rst.readthedocs.io

      (基础、工具进阶、工具参考)
  • 实战
    • ⭐ 蓝桥云课 Linux 基础入门:

      https://www.lanqiao.cn/courses/1

    • 腾讯云动手实验室:

      https://cloud.tencent.com/developer/labs

    • 阿里云体验实验室:

      https://developer.aliyun.com/adc/labs/

    • 阿里云知行实验室:

      https://start.aliyun.com/

    • 华为云沙箱实验室:

      https://lab.huaweicloud.com/

  • 社区
    • Linux 中国:

      https://linux.cn/

  • 工具
    • ⭐ Linux 命令搜索:

      https://wangchujiang.com/linux-command

    • Linux 命令大全手册:

      https://www.linuxcool.com/

    • Linux 命令示例:

      http://linux-commands-examples.com/

    • 宝塔 Linux 面板:

      https://www.bt.cn/

阶段 4:Java 企业开发进阶(75天)

目标

学习更多企业级开发技术和编程思想,能够结合多种技术,独立开发出架构合理的完整系统,解决实际问题

要了解为什么需要这个技术?什么时候用哪些技术?

设计模式(10 天)

设计模式是软件开发中解决一类问题的通用方法。

使用设计模式能让你写出更优雅、可维护的代码,也正因如此,很多框架源码都用到了设计模式,你不学很难看懂。

知识

- 创建型模式:对象实例化的模式,创建型模式用于解耦对象的实例化过程
  - 单例模式
  - 工厂方法模式
  - 抽象工厂
  - 建造者模式
  - 原型模式
- 结构型模式:把类或对象结合在一起形成一个更大的结构
  - 适配器模式
  - 组合模式
  - 装饰器模式
  - 代理模式
  - 享元模式
  - 外观模式
  - 桥接模式
- 行为型模式:类和对象如何交互,及划分责任和算法
  - 迭代器模式
  - 模板方法模式
  - 策略模式
  - 命令模式
  - 状态模式
  - 责任链模式
  - 备忘录模式
  - 观察者模式
  - 访问者模式
  - 中介者模式
  - 解释器模式

学习建议

先理解概念,了解每个设计模式的特点和应用场景,再多加练习,运用到实际项目。

资源

  • 书籍
    • ⭐《图解设计模式》(强烈推荐这本书,正是用 Java 语言实现,图多、有示例代码、有习题和答案,很不错)
    • 《Head First 设计模式》
    • 《大话设计模式》
    • 《设计模式:可复用面向对象软件的基础》(大黑书,有能力的话也可以去读)
  • 视频
    • 尚硅谷图解 Java 设计模式:

      https://www.bilibili.com/video/BV1G4411c7N4

  • 文档
    • 菜鸟教程:

      https://www.runoob.com/design-pattern/design-pattern-tutorial.html

    • 图说设计模式:

      https://design-patterns.readthedocs.io/zh_CN/latest/

中间件(10 天)

除了框架外,企业项目开发也会用到大量独立的中间件,以解决某些实际问题,比如提高项目的性能、提高项目的稳定性和可靠性等。

下面分享几个最常用的主流中间件。

知识

Redis 缓存

- 数据类型
- 常用操作
- Java 操作 Redis
- 主从模型搭建
- 哨兵集群搭建
- 日志持久化
- 应用场景

RabbitMQ 消息队列

- 消息队列的作用
- 生产消费模型
- 交换机模型
- 死信队列
- 延迟队列
- 消息持久化
- Java 操作
- 集群搭建

Nginx 网关

- Nginx 作用
- 正向代理
- 反向代理(负载均衡)
- 常用命令
- 配置
- 动静分离(网站部署)
- 集群搭建

学习建议

学会如何使用中间件并不难,先能够独立使用,了解他们的应用场景;再用 Java 来操作中间件,和项目相结合。

跟着视频教程实操一遍即可,可以等到面试前再去深入了解原理和高级特性。

资源

  • 视频
    • ⭐ 尚硅谷 - 2021 最新 Redis 6 入门到精通教程:

      https://www.bilibili.com/video/BV1Rv41177Af

      (基于 Redis 6 的,推荐)
    • ⭐ 尚硅谷 - 2021 最新 RabbitMQ 教程:

      https://www.bilibili.com/video/BV1cb4y1o7zz

      (很新很全面)
    • ⭐ 尚硅谷 - Nginx 教程由浅入深:

      https://www.bilibili.com/video/BV1zJ411w7SV

      (讲的比较全面)
  • 文档
    • Redis 命令参考:

      http://redisdoc.com/

    • Redis 面试题整理:

      https://github.com/lokles/Web-Development-Interview-With-Java/blob/main/Redis%E9%97%AE%E9%A2%98.md

    • RabbitMQ 中文文档:

      http://rabbitmq.mr-ping.com/

    • Nginx 中文文档:

      https://www.nginx.cn/doc/index.html

  • 书籍
    • 《Redis 实战》(经典)
    • 《RabbitMQ 实战:高效部署分布式消息队列》(经典)
  • 工具
    • ⭐ Redis 在线练习:

      https://try.redis.io/

      (强烈推荐)
    • ⭐ RabbitMQ 在线模拟器:

      http://tryrabbitmq.com/

    • Nginx 配置在线生成:

      https://www.digitalocean.com/community/tools/nginx?global.app.lang=zhCN

  • 相关技术
    • 缓存:Memcached、Ehcache
    • 队列:Kafka、ActiveMQ、TubeMQ、RocketMQ
    • 网关:HAProxy

Netty 网络编程(10 天)

开源的 Java 网络编程框架,用于开发高性能(事件驱动、异步非阻塞)、高可靠的网络服务器和客户端程序。

很多网络框架和服务器程序都用到了 Netty 作为底层,学好 Netty 不仅可以让我们自己实现高性能服务器,也能更好地理解其他的框架应用、阅读源码。

知识

- IO 模型(BIO / NIO
- Channel
- Buffer
- Seletor
- Netty 模型
- WebSocket 编程(动手做个聊天室)

学习建议

不同于之前学的 SSM 框架,Netty 还是需要一定学习成本的,一方面是国内资源太缺乏,另一方面很多重要的概念(比如 NIO)还是要多动手写代码调试才能理解。

还是建议先从视频入门,并且不建议在 Netty 上花太多时间,面试的时候一般也就考察一些 Netty 思想。

资源

  • 视频
    • ⭐ 尚硅谷Netty教程:

      https://www.bilibili.com/video/BV1DJ411m7NR

    • Netty 技术演讲(中文字幕版):

      https://www.youtube.com/watch?v=I8yy2Cy7dDI

  • 文档
    • Netty 4 用户指南:

      https://www.w3cschool.cn/netty_4_user_guide/

  • 书籍
    • 《Netty 实战》
  • 相关技术
    • Vertx:

      http://vertxchina.github.io/vertx-translation-chinese/

      (比 Netty 简单多了,实在看不懂 Netty 也可以学习下这个)

微服务(40 天)

随着互联网的发展,项目越来越复杂,单机且庞大的巨石项目已无法满足开发、运维、并发、可靠性等需求。

因此,后台架构不断演进,可以将庞大的项目拆分成一个个职责明确、功能独立的细小模块,模块可以部署在多台服务器上,相互配合协作,提供完整的系统能力。

换言之,想做大型项目,这块儿一定要好好学!

知识

Dubbo

- 架构演进
- RPC
- Zookeeper
- 服务提供者
- 服务消费者
- 项目搭建

微服务

- 微服务概念
- Spring Cloud 框架
  - 子父工程
  - 服务注册与发现
  - 注册中心 EurekaZookeeperConsul
  - Ribbon 负载均衡
  - Feign 服务调用
  - Hystrix 服务限流、降级、熔断
  - Resilience4j 服务容错
  - GatewayZuul)微服务网关
  - Config 分布式配置中心
  - 分布式服务总线
  - 分布式链路追踪
- Spring Cloud Alibaba
  - Nacos 注册、配置中心
  - OpenFeign 服务调用
  - Sentinel 流控
  - Seata 分布式事务

接口管理

- Swagger 接口文档
- Postman 接口测试

学习建议

时间不急的话,建议先从 Dubbo 学起,对分布式、RPC、微服务有些基本的了解,再去食用 Spring Cloud 全家桶会更香。

这部分内容的学习,原理 + 实践都很重要,也不要被各种高大上的词汇唬住了,都是上层(应用层)的东西,基本没有什么算法,跟着视频教程学,其实还是很好理解的。

分布式相关知识非常多,但这里不用刻意去背,先通过视频教程实战使用一些微服务框架,也能对其中的概念有基本的了解。

资源

  • 视频
    • ⭐ 尚硅谷 Dubbo 教程:

      https://www.bilibili.com/video/BV1ns411c7jV

    • ⭐ 尚硅谷 SpringCloud(H版&alibaba)框架开发教程(微服务分布式架构):

      https://www.bilibili.com/video/BV18E411x7eT

      (把国外的 Spring Cloud 和国内的 Spring Cloud Alibaba 结合在一起对比着去讲,主流技术栈、知识点都讲到了,真心不错!)
  • 文档
    • Apache Dubbo 官方文档:

      https://dubbo.apache.org/zh/

    • Spring Cloud Alibaba 官方文档:

      https://github.com/alibaba/spring-cloud-alibaba/blob/master/README-zh.md

    • ⭐ Swagger 教学文档:

      https://doc.xiaominfo.com/

      (跟着快速开始直接用就好了)

容器(3 天)

将应用和环境进行封装,相互隔离、独立部署、便于移植,提高安全性、提高开发和维护效率。

便于实现微服务、持续集成和交付。

知识

- Docker
  - 容器概念
  - 镜像
  - 部署服务
  - Dockerfile
- K8SKubernetes
  - 架构
  - 部署应用
  - 暴露服务
  - 动态扩缩容

学习建议

会用 Docker / K8S 部署项目和服务就行,企业一般都有现成的平台直接用,面试考察不多,不用花太多时间。

资源

  • 视频
    • ⭐【狂神说】Docker 最新超详细版教程通俗易懂:

      https://www.bilibili.com/video/BV1og4y1q7M4

    • K8S 视频教程:

      https://www.bilibili.com/video/BV1K5411N7j8

  • 书籍
    • 《深入浅出 Docker》:

      https://www.zhihu.com/pub/reader/119632192

  • 文档
    • Docker — 从入门到实践:

      https://vuepress.mirror.docker-practice.com/

    • 菜鸟教程 Docker:

      https://www.runoob.com/docker/docker-tutorial.html

    • 国外 Docker 官方文档:

      https://docs.docker.com/get-started/

  • 网站
    • Docker 中文社区:

      https://www.docker.org.cn/

      (强烈推荐,有很多 Docker 技术文章和学习笔记)
    • Docker Blog:

      https://www.docker.com/blog/

      (国外 Docker 技术博客)
  • 镜像源
    • Docker Hub:

      https://hub.docker.com

    • 腾讯软件源:

      http://mirrors.tencent.com/#/index

    • 阿里云 Docker 仓库:

      https://cr.console.aliyun.com/

CI / CD(2 天)

持续集成 / 持续交付,贯穿整个研发到项目上线的过程,提高效率。

大公司一般都有自己的 CI / CD 平台。

知识

- 什么是 CI / CD
- CI / CD 有什么好处
- 使用任一 CI / CD 平台

学习建议

了解它是什么,并且实战使用任一 CI / CD 平台,感受它和传统开发运维到底有什么不同,就足够了。其实很简单,不要花太多时间。

真正要自己去搭建的时候,跟着官方文档来就行。

资源

  • 视频
    • ⭐【狂神说】CI/CD到底是什么?十分钟理解企业级DevOps:

      https://www.bilibili.com/video/BV1zf4y127vu

      (讲的非常棒!带你快速理解 CI / CD 的作用和部分原理)
    • 尚硅谷 - Jenkins 持续集成工具教程:

      https://www.bilibili.com/video/BV1GW411w7pn

      (实在要用到 Jenkins 再去学)
  • 文档
    • Jenkins 官方文档:

      https://www.jenkins.io/zh/

      (有很多案例,要用的时候查一下就行了)
  • 实战平台
    • ⭐ 微信云托管:

      https://cloud.weixin.qq.com/cloudrun

    • 前端托管 Webify:

      https://cloud.tencent.com/product/webify

阶段 5:Java 高级(50天)

目标

不满足于能做,而是通过更 深入广泛 的学习,实现高质量的代码和更优秀的架构,培养解决问题的能力。

并发编程(20 天)

对 Java 后端开发程序员来说,懂得如何利用有限的系统资源来提高系统的性能是很重要的,也是大厂面试考察的重点,因此并发编程(尤其是 Java 并发包的使用)这块的知识很重要。

把它放到高级,是因为在学并发编程前,需要有一定的编程经验、了解一定的操作系统知识。

知识

- 线程和进程
- 线程状态
- 并行和并发
- 同步和异步
- Synchronized
- Volatile 关键字
- Lock 
- 死锁
- 可重入锁
- 线程安全
- 线程池
- JUC 的使用
- AQS
- Fork Join
- CAS

学习建议

并发编程入门不难,依然是 先学会使用 基础的 Java 并发包, 再通过大量地实践和测试,了解一些原理,才能真正掌握何时使用、如何更合理地使用并发编程。

资源

  • 视频
    • ⭐【尚硅谷】大厂必备技术之JUC并发编程2021最新版:

      https://www.bilibili.com/video/BV1Kw411Z7dF

      (特点是短、精、新)
    • 黑马程序员全面深入学习Java并发编程:

      https://www.bilibili.com/video/BV16J411h7Rd

      (讲的很细、全面深入)
  • 书籍
    • ⭐《Java并发编程实战》(国外的经典)
    • ⭐《Java 并发编程艺术》(国人写的,理论思想内容较多,有时间建议反复看)
  • 项目
    • ⭐ Java 并发知识点总结:

      https://github.com/CL0610/Java-concurrency

JVM(30 天)

想要深入理解 Java,探秘 Java 跨平台的奥秘,一定要了解 Java 底层的虚拟机技术。

了解虚拟机、掌握虚拟机性能调优方法,有助于你写出更高性能、资源占用更小的优质程序。

在学习 JVM 的过程中,也能学到很多精妙的设计,开拓思路。

知识

- JVM 内存结构
- JVM 生命周期
- 主流虚拟机
- Java 代码执行流程
- 类加载
  - 类加载器
  - 类加载过程
  - 双亲委派机制
- 垃圾回收
  - 垃圾回收器
  - 垃圾回收策略
  - 垃圾回收算法
  - StopTheWorld
- 字节码
- 内存分配和回收
- JVM 性能调优
  - 性能分析方法
  - 常用工具
  - 参数设置

学习建议

JVM 的知识略显枯燥,建议先看视频,有实操的地方一定要实操!自己多去分析。

第一遍不理解没有关系,可以再看书来巩固,想要真正学好,《深入理解 Java 虚拟机(第三版)》一定要读。

如果只是为了通过面试可以直接看更精简的视频,比如狂神的。

资源

  • 视频
    • ⭐ 尚硅谷宋红康 - JVM 全套教程详解:

      https://www.bilibili.com/video/BV1PJ411n7xZ

      (讲得相当全面!附有实操)
    • 【狂神说Java】JVM快速入门篇:

      https://www.bilibili.com/video/BV1iJ411d7jS

      (讲得有点浅,但都是面试重点,时间紧的小伙伴可以直接看这个)
  • 书籍
    • ⭐《深入理解 Java 虚拟机(第三版)》(有理论有实践,内容丰富,不可多得的 JVM 学习神书,就是有点废头发)
  • 项目
    • ⭐ Java 虚拟机底层原理知识总结:

      https://github.com/doocs/jvm

  • 实战
    • 阿里云 JVM 实战:

      https://developer.aliyun.com/graph/java/point/64

架构设计

分布式

- 分布式理论
  - CAP
  - BASE
- 分布式缓存
  - Redis
  - Memcached
  - Etcd
- 一致性算法
  - Raft
  - 一致性哈希
- 分布式事务
- 分布式 id 生成
- 分布式服务调用
- 分布式存储
- 分布式数据库
- 分布式文件系统
- 分布式协调
  - Zookeeper
- 分布式监控
  - Prometheus
- 分布式消息队列
  - RabbitMQ
  - Kafka
  - Apache Pulsar
- 分布式日志收集
  - Elastic Stack
  - Loki
- 分布式搜索引擎
  - Elasticsearch
- 分布式链路追踪
  - Apache SkyWalking
- 分布式配置中心
  - Apollo
  - Nacos

高可用

- 主从
- 异地多活
- 容灾备份

高并发

- 数据库
  - 分库分表
  - 读写分离
- 缓存
  - 缓存雪崩
  - 缓存击穿
  - 缓存穿透
- 负载均衡
  - 负载均衡算法
  - 软硬件负载均衡(2347 层)

其他

- 监控告警
- 领域驱动设计
- 应用安全
- 线上故障分析
- 服务网格
- Serverless
- 云原生

学习建议

多看文章多思考

阶段 6:持续学习

目标

持续追求技术的深度和广度,培养自己的 核心竞争力不可替代性 ,学无止境!

学习建议

自主学习,自主搜索教程,多看书,多阅读技术博客,多实践。

学习方向

框架源码

  • Spring
  • SpringBoot
  • SpringMVC
  • MyBatis
  • Netty
  • Dubbo
  • SpringCloud

计算机原理

  • 《算法导论》:

    https://www.bilibili.com/video/av48922404

  • 《现代操作系统》:

    https://www.bilibili.com/video/av9555596

  • 《深入理解计算机系统》:

    https://www.bilibili.com/video/av31289365

  • 《编译原理》:

    https://www.bilibili.com/video/av17649289

  • 《计算机网络:自顶向下方法》:

    https://www.bilibili.com/video/av41404195

  • 《计算机程序的构造和解释》:

    https://www.bilibili.com/video/av8515129

  • 《数据库系统概念》:

    https://www.bilibili.com/video/av52007695

数据库 / 中间件 / 分布式

  • 数据库
    • MySQL
    • PostgreSQL
  • 缓存
    • Redis
  • 队列
    • Apache Kafka
    • Apache Pulsar
  • 搜索引擎
    • Elastic Stack
  • 容器
    • Docker
    • K8S

解决方案

  • 广告
  • 电商
  • 搜索
  • 游戏
  • 即时通讯
  • 社交
  • CMS
  • ERP
  • OA

架构

  • 亿级流量架构
  • 秒杀系统
  • 架构选型能力

大数据

  • 5V 特点
  • Hadoop
  • HDFS
  • MapReduce
  • Spark
  • Flink
  • Storm
  • Hive
  • HBase
  • Druid
  • Kylin
  • Pig
  • Mahout

前沿技术

  • 云原生:

    https://www.jianshu.com/p/a37baa7c3eff

  • Quasar Framework:

    http://www.quasarchs.com/

自学 Java 专题资源

  • GitHub Java 专区:

    https://github.com/topics/java

  • GitHub Java 合集:

    https://github.com/akullpp/awesome-java

  • StackOverflow:

    https://stackoverflow.com/questions/tagged/java

    (解决问题必备)
  • 掘金 Java 专区:

    https://juejin.cn/tag/Java

  • 美团技术团队:

    https://tech.meituan.com/

  • 阿里技术团队:

    https://102.alibaba.com/tech/list/

  • 有赞技术团队:

    https://tech.youzan.com/tag/back-end/