25 年 Java 学习路线《速览版》

Java学习路线总结(2022版) ElasticSearch中文文档https//www.elastic.co/guide/cn/elasticsearch/guide/current/index.html。SpingBoot中文文档https//www.docs4dev.com/docs/zh/spring-boot/2.1.1.RELEASE/reference/官方文档https//github.com/alibaba/spring-cloud-alibaba/blob/master/README-zh.md。... 阅读详情

大纲

图片

写在开头

首先呢,我们要了解 Java 的应用场景和就业方向,看看和自己的学习目的是否一致。

目前,Java 由于其优秀的特性以及火爆的生态,岗位需求量大,是后台开发、安卓开发、大数据开发的主流编程语言,因此学习资源也很丰富,值得学习!

阶段 0:前期准备

  1. 准备好一款在线、随时随地写代码的工具,不用在本地去安装和配置,是初学者的好帮手。推荐使用我们自研的代码小抄:https://codecopy.cn/

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

  3. 想学好编程,别背代码,要多写,把这句话刻到脑子里。

  4. 选视频和找资料的小技巧:多看评论区、多看隔壁评论区、不要看过期的视频。

阶段 1:Java 入门

目标

培养兴趣、快速上手,能运行和编写简单的 Java 程序。

学完本阶段后,可以试着用 Java 解决一些数学计算问题、编写图书管理系统等桌面端 GUI 程序,甚至是五子棋之类的小游戏。

Java 编程基础

知识
  • Java 特点(看不懂没事,别背!)

  • 环境搭建

  • IDEA 开发工具

  • Java 基础语法

    • 数据类型

    • 流程控制

  • 数组

  • 面向对象

  • 抽象类

  • 接口

  • 枚举

  • 常用内置类

  • 集合类

  • 泛型

  • 注解

  • 异常处理

  • 多线程

  • IO 流

  • 反射

学习建议

初学一门语言时,一定要持续学习,不能中断!

想要学好编程,一定要多敲代码!建议先跟着书上的例子敲一遍代码,然后试着自主编写代码,并完成课后练习。

不理解代码也没关系,可以学习 Debug 后,一行一行地打断点执行,查看程序的执行过程。千万不要觉得麻烦,养成习惯后真的能节省很多重复学习的时间。

在自学 Java 基础的过程中,可能会感觉很难,这是完全正常的,先易后难嘛。这个阶段除了学基础之外,也要试着多了解一些自学编程的方法和套路,建议有机会多和别人交流、或者能找个大佬给你指明一些方向,可以节约很多的时间。

Java 8

知识
  • Stream API

  • Lambda 表达式

  • 新日期时间 API

  • 接口默认方法

学习建议

Java 8 是如今企业开发中最主流的 Java 稳定版本,在这个版本出现了很多实用的新特性,虽然面试考点不多,但能够提升编程效率,建议学习。

尾声

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

不要慌,也不要急着去学新技术,接下来我们要多用 Java 来写代码了,巩固基础,但是写什么呢?

当然是数据结构和算法!

阶段 2:巩固基础

目标

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

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

我们这个阶段的目标是:熟练使用 Java 语言来编写程序,巩固 Java 基础。(那直接用 Java 来写算法题目,一举两得,岂不美哉?)

此外,建议大家利用零碎时间多去了解 计算机基础知识 ,比如操作系统、计算机网络等,对你后面学习开发框架之类的知识都有帮助。

Java 基础

学习建议

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

如果你时间不够,只是想快速找到工作,那么本章节甚至可以完全跳过,后面慢慢弥补即可。

🌖 数据结构与算法

学习建议

推荐阅读鱼皮的算法学习路线:https://codefather.cn

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

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

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

之后再由简单到复杂、由通过率高到低,自主刷题,多看题解,举一反三。一定要把自己做过的每道题目代码都自行保存好,定期复习。时间足够的话,也可以试着自己写写题解,在网上分享一下自己的刷题思路,找到自己坚持的动力。

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

计算机导论(可不学)

知识
  • 计算机发展历史

  • 计算机应用领域

  • 计算机发展方向

  • 计算机基本组成

  • 二进制

  • 编程语言发展

学习建议

大学计算机专业的同学一般刚开学就会上这门课,虽说学习它并不会直接提高你的编程技能,但能够让你更了解计算机和编程,从而在一定程度上帮助你培养学习兴趣、确定学习方向。

自学的话,不用刻意去学习计算机导论,而是可以通过看视频、阅读课外读物的方式慢慢地了解计算机的故事。

操作系统

知识
  • 操作系统的组成

  • 进程、线程

  • 进程 / 线程间通讯方式

  • 进程调度算法

  • 进程 / 线程同步方式

  • 进程 / 线程状态

  • 死锁

  • 内存管理

  • 局部性原理

学习建议

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

我的建议是,可以先利用课余时间看一些网课或者有趣的课外书,对一些操作系统的概念先有个大致的印象,比如进程、线程、死锁,等后面有时间了再系统学习、等到找工作了再去背相关八股文。

还在校园就跟着学校的进度学习就成,自学的话可以看下《清华操作系统原理》视频,有实力的小伙伴,能看懂大黑书就更好了,但如果看不懂也别担心,这并不影响你后续知识的学习。

计算机网络

知识
  • 网络分层模型

  • 网络传输过程

  • IP、端口

  • HTTP / HTTPS 协议

  • UDP / TCP 协议

  • ARP 地址解析协议

  • 网络安全

  • DNS 域名解析

学习建议

很多学习 Java 开发的同学最后都是从事 后端开发 的工作,而计算机网络知识是后端开发的重点。

和操作系统一样,自学网络可能会很枯燥,建议先看有趣的课外书,比如《图解 HTTP》;或者有趣的视频,比如《计算机网络微课堂》。后面要找工作面试前,再重点去背一些八股文就好了。还在学校的同学好好上课一般就没问题。

学习基础能帮助自己今后发展更稳定,且更容易接受新知识,所以请不要相信基础无用论。

尾声

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

阶段 3:Java 企业开发基础

目标

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

学完这个阶段后,你应该已经能独立开发出大多数常见的后台系统了,比如各种管理系统、商城系统等。

MySQL 数据库

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

知识
  • 基本概念

  • MySQL 搭建

  • SQL 语句编写

  • 约束

  • 索引

  • 事务

  • 锁机制

  • 设计数据库表

  • 性能优化

学习建议

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

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

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

推荐使用鱼皮本人开发的 SQL 闯关式自学网站入门 SQL:http://sqlmother.yupi.icu/

开发框架

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

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

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

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

知识
Java Web
  • 描述:Java 网页应用开发基础

Spring 5
  • 描述:Java 轻量级应用框架

  • IOC

  • AOP

  • 事务

SpringMVC
  • 描述:Java 轻量级 web 开发框架

  • 什么是 MVC?

  • 请求与响应

  • Restful API

  • 拦截器

  • 配置

  • 执行过程

MyBatis
  • 描述:数据访问框架,操作数据库进行增删改查等操作

  • 增删改查

  • 全局配置

  • 动态 SQL

  • 缓存

  • 和其他框架的整合

  • 逆向工程

MyBatis Plus
  • 描述:Mybatis 的增强工具,能够简化开发、提高效率

  • 引入

  • 通用 CRUD

  • 条件构造器

  • 代码生成器

  • 插件扩展

  • 自定义全局操作

SpringBoot 2
  • 描述:简化 Spring 应用的初始搭建以及开发过程,提高效率

  • 常用注解

  • 资源整合

  • 高级特性

  • 本地热部署

Spring Security
  • 描述:Spring 的安全管理框架

  • 用户认证

  • 权限管理

  • 相关技术:Shiro

Maven / Gradle
  • 描述:项目管理工具

  • 构建

  • 依赖管理

  • 插件

  • 配置

  • 子父工程

  • 多模块打包构建

  • Nexus 私服搭建

学习建议

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

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

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

Maven / Gradle 当成工具用就好,面试基本不问,跟着框架教程去用就行了,急着找工作的话,先不用花太多时间去深入学。大厂面试问这个的也不多。

开发规范

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

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

知识
  • 代码规范

    • 代码风格

    • 命名

    • 其他规则

  • 代码校验(CheckStyle)

  • 提交规范

学习建议

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

项目做得多了,自然会养成好的习惯,不用刻意去记(毕竟每个团队规范也不完全相同,背了也没用)。也可以直接利用开发工具自带的一些代码检查插件,帮忙养成好的编码习惯。

资源
  • 书籍 ⭐ 阿里巴巴 Java 开发手册:https://developer.aliyun.com/graph/java(搜索《Java开发手册》)
     

Git

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

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

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

知识
  • 区分 Git 和 GitHub

  • 工作区

  • 分支

  • 代码提交、推送、拉取、回退、重置

  • 分支操作

  • 代码合并、解决冲突

  • 标签

  • cherry-pick

  • Git Flow

  • 相关技术:SVN(比较老)

学习建议

每个命令跟着敲一遍,有个大致的印象,会用即可。

建议平时大家可以多把自己的代码使用 Git 命令上传到 GitHub 上,用的多了自然就熟悉了。

Linux

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

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

知识
  • Linux 系统安装

  • 环境变量

  • 文件管理

  • 用户管理

  • 内存管理

  • 磁盘管理

  • 进程管理

  • 网络管理

  • 软件包管理

  • 服务管理

  • 日志管理

  • Linux 内核

  • 常用命令

  • 常用环境搭建

  • Shell 脚本编程

  • VIM 的使用

学习建议

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

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

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

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

先会用,再理解。一般面试问的 Linux 题目也不会很难,面试前去背一下八股文就没什么问题,感兴趣的话可以去看看 Linux 内核设计。

前端基础

虽然 Java 程序员面试时基本不会出现前端相关问题,但是在企业中,往往需要前后端程序员配合完成工作。会一些前端,不仅可以提高你们的协作效率,还能提高自己对整个项目的了解和掌控力,甚至能独立开发出一个完整项目!这点也是能给面试加分的。

知识
  • HTML

  • CSS

  • JavaScript

    • Ajax

  • Vue

学习建议

不需要学习太多的前端技术,熟悉下基础的前端三件套,了解前端是如何向后端发送请求来做数据交互的一般就够了。有时间的话可以学下 Vue ,是比较容易上手的主流前端开发框架,Vue + SpringBoot 还是很香的。

练手项目

首推鱼皮自己的保姆级实战项目系列:鱼皮原创实战项目,保姆级教程!

图片

尾声

学完这个阶段的知识后,一定要再串起来回忆一遍,必须自己独立开发一个 Java Web 项目(量级可以不大,但你学过的技术尽可能地用上),能发布到 Linux 服务器上让其他小伙伴访问就更好了~

如果你只是对 Java 感兴趣、或者只是想试着自己开发后台,并不是想靠 Java 找工作的话,学到这里就可以了。可以把更多时间投入到你主方向的学习中。

但如果你是想找 Java 方向的工作,尤其是想进大厂的话,一定要继续努力,用心学习下个阶段的企业开发进阶知识。

阶段 4:Java 企业开发进阶

目标

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

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

当然,这个阶段的内容有些过于丰富,不是所有的东西都要学,大家可以根据自己的实际情况(时间),有选择地学习。

软件工程

急着找工作的同学可以先不学。

软件开发和管理的一些概念、原则、技术、方法、工具和经验。

知识
  • 软件的本质

  • 软件特性

  • 软件过程

  • 软件开发原则

  • 软件过程模型

  • 敏捷开发

  • 软件开发模型

  • 需求建模

  • 软件设计

  • UML

  • 体系结构设计

  • 设计模式

  • 软件质量管理

  • 评审

  • 软件质量保证

  • 软件测试

  • 软件配置管理

  • 软件项目管理

  • 软件项目估算

  • 项目进度安排

  • 风险管理

  • 软件过程改进

    • 成熟度模型

学习建议

大学软件专业的必修课,偏理论,能学到很多企业软件开发的方法,也是对软件开发同学综合能力的提升,有时间的话可以了解下。但对想要快速找工作的同学来说,忽略即可,面试基本不会问。

设计模式

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

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

知识
  • 创建型模式:对象实例化的模式,创建型模式用于解耦对象的实例化过程

    • 单例模式

    • 工厂方法模式

    • 抽象工厂

    • 建造者模式

    • 原型模式

  • 结构型模式:把类或对象结合在一起形成一个更大的结构

    • 适配器模式

    • 组合模式

    • 装饰器模式

    • 代理模式

    • 享元模式

    • 外观模式

    • 桥接模式

  • 行为型模式:类和对象如何交互,及划分责任和算法

    • 迭代器模式

    • 模板方法模式

    • 策略模式

    • 命令模式

    • 状态模式

    • 责任链模式

    • 备忘录模式

    • 观察者模式

    • 访问者模式

    • 中介者模式

    • 解释器模式

学习建议

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

资源

  • 书籍 ⭐《图解设计模式》(强烈推荐这本书,正是用 Java 语言实现,图多、有示例代码、有习题和答案,很不错)

缓存

缓存是高并发系统不可或缺的技术,可以提高系统的性能和并发,因此是后台开发必学的知识点,也是面试重点。

知识
  • 什么是缓存?

  • 本地缓存

    • Caffeine 库

  • 多级缓存

  • Redis 分布式缓存

    • Spring Boot Redis Template

    • Redisson

    • 数据类型

    • 常用操作

    • Java 操作 Redis

    • 主从模型搭建

    • 哨兵集群搭建

    • 日志持久化

  • 缓存(Redis)应用场景

    • 数据共享

    • 单点登录

    • 计数器

    • 限流

    • 点赞

    • 实时排行榜

    • 分布式锁

  • 缓存常见问题

    • 缓存雪崩

    • 缓存击穿

    • 缓存穿透

    • 缓存更新一致性

  • 相关技术:Memcached、Ehcache

学习建议

学会如何简单地使用缓存并不难,和数据库类似,无非就是调用 API 对数据进行增删改查。

因此,建议先能够独立使用它,了解缓存的应用场景;再学习如何在 Java 中操作缓存中间件,并尝试和项目相结合,提高系统的性能。

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

消息队列

消息队列是用于传输和保存消息的容器,也是大型分布式系统中常用的技术,主要解决应用耦合、异步消息、流量削锋等问题。后台开发必学,也是面试重点。

知识
  • 消息队列的作用

  • RabbitMQ 消息队列

    • 生产消费模型

    • 交换机模型

    • 死信队列

    • 延迟队列

    • 消息持久化

    • Java 操作

    • 集群搭建

  • 相关技术:Kafka、ActiveMQ、TubeMQ、RocketMQ

学习建议

和缓存一样,学会如何使用消息队列并不难,无非就是调用 API 去生产、转发和消费消息。

因此,建议先能够独立使用它,了解消息队列的应用场景;再学习如何在 Java 中操作消息队列中间件,并尝试和项目相结合,感受消息队列带来的好处。

这里我建议初学者先学习 RabbitMQ,比 Kafka 要好理解一些。跟着视频教程实操一遍即可,可以等到面试前再去深入了解原理和高级特性。
 


Nginx

Nginx 是主流的、开源的、高性能的 HTTP 和反向代理 web 服务器,可以用于挂载网站、请求转发、负载均衡、网关路由等。前后端开发同学都需要学习,在后端开发的面试中有时会考到。

知识
  • Nginx 作用

  • 正向代理

  • 反向代理(负载均衡)

  • 常用命令

  • 配置

  • 动静分离(网站部署)

  • 集群搭建

  • 相关技术:HAProxy、Apache

学习建议

Nginx 的基本使用非常简单,甚至不需要看任何的视频,跟着一篇文章就能够用它来提供网站访问能力、实现反向代理。

但是在企业中,Nginx 的使用往往没那么简单,作为负载均衡、请求转发的重要组件,往往需要针对实际场景去写一些特定的配置。因此建议有时间的话,实践下 Nginx 的配置方法,了解 Nginx 基本的设计思想,对今后自己设计系统时也有帮助。

Netty 网络编程

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

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

知识
  • IO 模型(BIO / NIO)

  • Channel

  • Buffer

  • Seletor

  • Netty 模型

  • WebSocket 编程(动手做个聊天室)

  • 相关技术:Vertx(比 Netty 简单多了,实在看不懂 Netty 也可以学习下这个)

学习建议

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

还是建议先从视频入门,并且不建议在 Netty 上花太多时间,面试的时候一般也就考察一些 Netty 背后的思想(比如 NIO)而非框架本身的语法细节。

微服务

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

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

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

知识
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

学习建议

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

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

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

大厂面试的时候很少问 Spring Cloud 框架的细节,更多的是微服务以及各组件的一些思想,比如网关的好处、消息总线的好处等。

容器

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

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

知识
  • Docker

    • 容器概念

    • 镜像

    • 部署服务

    • Dockerfile

    • Docker Compose

    • Docker Machine

    • Docker Swarm

    • 多阶段构建

  • K8S(Kubernetes)

  • 相关技术:Apache Mesos、Mesosphere

学习建议

业务上云是趋势,但是对于开发同学来说,会用 Docker / K8S 部署项目和服务就行。实际工作中,企业一般都有现成的平台直接用,面试考察的也不多,不用花太多时间。
 

CI / CD

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

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

知识
  • 什么是 CI / CD

  • CI / CD 有什么好处

  • 使用任一 CI / CD 平台

  • 相关技术:Jenkins、GitLab、微信云托管

学习建议

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

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

尾声

看到这里,相信你已经感叹:编程语言一辈子学不完了!

但是,不用担心,通过对这么多知识点的学习,相信你已经有了一定的积累,也不知不觉地锻炼了自主学习能力、资源检索能力、代码阅读能力、问题解决能力,之后的学习会越来越轻松。

接下来,可以试着用你学到的技术来解决实际的问题,自主从 0 开始做一些项目,保持编程手感。

阶段 5:项目实战

目标

综合所学技术从 0 到 1 开发和上线一个全面、有特色的、可以写进简历的个人项目。

学习建议

其实在之前的框架学习视频中应该就做过几个项目了,但相对不够完整和体系化。

有想法的同学可以做任何自己想做的项目,推荐参加一些作品类竞赛,练手、拿奖、收获项目经历一举三得。

暂时没想法的朋友,建议先跟着专门带做项目的视频教程做 1 - 2 套 Java 完整项目,一定要从 0 到 1 自己手写!

有能力的朋友也可以试着用 GitHub 上的源码来学习啦~

做一个完整的项目的确很不容易,建议大家根据自己的 时间、兴趣 选择 较新的、有配套源码的 教程,保持耐心。
 

图片


鱼皮就是针对后端必须的技术,设计实现了这些项目,带大家快速掌握。

阶段 6:Java 高级

目标

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

已经到了这个阶段,建议除了看完成的教程外,平时多自主搜索信息去学习,积少成多。比如遇到了一个不了解的名词,可以去网上搜一下,感兴趣的话再进行下一步的学习。

并发编程

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

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

知识
  • 线程和进程

  • 线程状态

  • 并行和并发

  • 同步和异步

  • Synchronized

  • Volatile 关键字

  • Lock 锁

  • 死锁

  • 可重入锁

  • 线程安全

  • 线程池

  • JUC 的使用

  • AQS

  • Fork Join

  • CAS

学习建议

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

JVM

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

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

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

知识
  • JVM 内存结构

  • JVM 生命周期

  • 主流虚拟机

  • Java 代码执行流程

  • 类加载

    • 类加载器

    • 类加载过程

    • 双亲委派机制

  • 垃圾回收

    • 垃圾回收器

    • 垃圾回收策略

    • 垃圾回收算法

    • StopTheWorld

  • 字节码

  • 内存分配和回收

  • JVM 性能调优

    • 性能分析方法

    • 常用工具

    • 参数设置

  • Java 探针

  • 线上故障分析

学习建议

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

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

架构设计

分布式
  • 分布式理论

    • CAP

    • BASE

  • 分布式缓存

    • Redis

    • Memcached

    • Etcd

  • 一致性算法

  • 分布式事务

  • 分布式 id 生成

  • 分布式任务调度

  • 分布式服务调用

  • 分布式存储

  • 分布式数据库

  • 分布式文件系统

  • 分布式协调工具

  • 分布式监控

  • 分布式消息队列

    • RabbitMQ

    • Kafka

    • Apache Pulsar

  • 分布式日志收集 Elastic Stack

  • 分布式搜索引擎 Elasticsearch

  • 分布式链路追踪 Apache SkyWalking

  • 分布式配置中心

    • Apollo

    • Nacos

高可用
  • 限流

  • 降级熔断

  • 冷备

  • 双机热备

  • 同城双活

  • 异地双活

  • 异地多活

  • 容灾备份

高并发
  • 数据库

    • MyCat 中间件

    • Apache ShardingSphere 中间件

    • 分库分表

    • 读写分离

  • 缓存

    • 缓存雪崩

    • 缓存击穿

    • 缓存穿透

  • 负载均衡

    • 负载均衡算法

    • 软硬件负载均衡(2、3、4、7 层)

服务网格

服务网格用来描述组成应用程序的微服务网络以及它们之间的交互。服务网格的规模和复杂性不断的增长,它将会变得越来越难以理解和管理,常见的需求包括服务发现、负载均衡、故障恢复、度量和监控等。

知识
  • Istio

  • Envoy(开源的边缘和服务代理)

DDD 领域驱动设计

将数据、业务流程抽象成容易理解的领域模型,通过用代码实现领域模型,来组成完整的业务系统。

知识
  • DDD 的优势

  • DDD 的适用场景

  • DDD 核心概念

  • DDD 实践

其他
  • Sidecar

  • Serverless

  • 云原生

学习建议

架构设计的学习没有顶点,多看文章,思考每种设计的优缺点和适用场景,有机会的话在企业中实践即可。

还在学校、或者初入这行的同学切记,千万不要一味地去背诵架构设计的八股文。你可以背,但是这一块的知识只有结合具体的项目才有意义,所以要多做项目去实践设计的合理性,而不是什么设计都咔咔往系统里去怼。比如面试问到分布式事务,能结合自己项目中用分布式事务解决问题的经验去回答最好。

其他技术

  • 热数据探测技术:京东 HotKey

  • 数据库流水订阅:阿里 Canal

  • 监控告警

  • 应用安全

  • 故障演练

  • 流量回放

阶段 7:Java 求职

目标

找到好工作!

建议

  1. 尽早做规划,可以通过大厂招聘官网的岗位描述来了解岗位的要求

  2. 编写一份优秀的简历

  3. 多读面经,坚持刷算法

  4. 多参与面试,持续复盘总结

阶段 8:持续学习

目标

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

学习建议

到了这个阶段,一定要自主学习,自主搜索教程、多看书、多阅读技术博客、多实践。

可选的学习方向有:框架源码、计算机原理、各种中间件、分布式技术、系统架构设计、行业问题的解决方案、前沿技术(比如云原生、服务网格、GraalVM、ZGC)和其他技术(比如大数据)等等。

【2020年】Java学习路线超强总结(详细版) 我一直觉得,一个优秀的程序员,平时应该具备记录问题解决方案和总结知识点的习惯。 不管你是新手还是入行多年,Java的知识体系都是通用的,今天我替大家整理了一份最新的Java学习路线,包含了作为一个Java工程师在开发工作学习中需要用到或者可能用到的绝大部分知识。如有变化会随时更新。 2020最新Java学习路线 一、JavaSE 1.Java环境搭建 2.Java核心语法 3.面向对象 4.数组&算法 5.异常处理 6.常用类 7.集合&泛型 8.集合&数据结构 9.线程. 阅读详情

相关推荐

2023年Java学习路线,精心整理-文中有书籍抽奖

给大家整理了一份2023年最系统、最具有规划、最全面的Java学习路线图

m0_58118573的博客 1283

Java 25新特性曝光:探索Java编程的未来之路 

例如,密钥推导函数API可以为加密算法提供更强大的密钥管理功能,范围值则为数据的共享和传递提供了更便捷的方式,模式、实例和开关中的原始类型可以使代码的编写更加简洁和高效。随着Java 25的发布,开发者们将迎来更多的编程可能性和挑战,需要不断学习和实践,以充分发挥这些新特性的优势,创造出更加优秀的Java应用程序。紧凑的源文件和实例主要方法在Java 21、Java 22、Java 23和Java 24中预览,名称略有不同,在Java 24中被称为“简单的源文件和实例主方法”,在Java 25中最终确定。

2502_92200938的博客 2749

java学习路线

Java是一门非常强大的编程语言,学习Java需要耐心和持续的努力。通过上述学习路线,你可以逐步掌握Java的核心知识,并最终能够独立开发复杂的应用系统。记住,实践是最好的老师,多动手写代码、做项目,才能真正掌握Java。一、基础阶段编程语言基础了解 Java 的发展历史、特点和应用领域。安装 JDK(Java Development Kit)并配置环境变量。学习基本语法,包括变量、数据类型、运算符、控制流语句(if、for、while 等)。面向对象编程理解类、对象、封装、继承、多态等概念。

数字人生 4380

我天,Java 25 发布了。。炸裂!

Scoped Values 是作用域值,它提供了一种在同一个线程内的调用者和子线程之间共享不可变数据的方法,有了它,方法就能在线程内,跟它的调用者以及子线程共享不可变数据啦。所以,Java 17 是最低具备的技能了,都到了 2025 年了,如果一个程序员的知识还停留在 Java 8,那大概率说明他长时间没有学习了。像这种小程序,预热时间本来就很短,但有了缓存的 profiles,再加上及时又精准的 JIT 活动,预热速度简直是如有神助,更快了。

Java技术栈,分享最主流的Java技术 2452

Java学习路线总结(思维导图篇)

优快云最强Java专栏,包含全部Java基础知识点、Java8新特性、Java集合、Java多线程、Java代码实例,理论结合实战,实现Java的轻松学习。

学Java,找哪吒 19万+

别再凭感觉了!手把手教你用Excel搞定激光器MPE与NOHD安全计算(附模板下载)

本文详细介绍了如何利用Excel自动化计算激光器的MPE(最大允许照射量)和NOHD(标称眼危害距离),提升激光安全评估的效率和准确性。通过实战案例和模板下载,帮助工程师快速掌握GB/T 7247标准中的关键计算,避免常见错误,适用于激光测距仪等设备的安评工作。

weixin_30954265的博客 467

【AI总结】Java 25 LTS 新特性全景解读:从语法糖到云原生,一篇就够!

Java 25 不是“语法狂欢”的版本,却用18 个 JEP语法层继续减负,让初学者 3 行写出 Hello World;并发层正式告别 ThreadLocal,虚拟线程 + 结构化并发让“异步”变“同步”;安全层提前布局抗量子,PEM/KDF API 让 TLS 1.3 与国产算法无缝落地;性能层Shenandoah 分代 + 紧凑头,把停顿压到 1 ms 以内;诊断层JFR 流式上传,k8s sidecar 模式原生支持。

AlienProgrammer的博客 2248

从桨叶设计到电机匹配:手把手教你调出无人机最佳动力组合

本文系统介绍了无人机动力系统的核心匹配原则,重点解析了如何通过测试与数据分析,优化螺旋桨与电机的组合,从而显著提升系统力效与续航。文章提供了从参数解读、实战测试到深度调优的完整指南,帮助开发者解决电机过热、推力不足等常见问题,实现无人机性能最大化。

weixin_29305313的博客 241

Java 25 新功能和示例

结构化并发是一种并发编程范式,它将相关的并发任务视为一个“单一工作单元”,并为其定义明确的动态作用域。Java 中实现该范式的核心 API 是子任务的生命周期被限制在代码块的词法作用域内(通常是 try-with-resources 语句)。错误处理、结果收集与取消操作均能以清晰的方式协同进行。中断的可观测性与传播能力得到增强。这与“非结构化”线程管理(如)形成鲜明对比——在非结构化模式中,任务生命周期难以追踪,错误与取消操作可能无声传播或丢失。

技术刚刚好 4335

基本模型 PINNs : Physics Informed Neural Networks

系列最开始当然要提到很经典的文章 —— Physics-informed neural networks: A deep learning framework for solving forward and inverse problems involving nonlinear partial differential equations 。 这篇文章是布朗大学的助理教授Maziar Rais...

waitingwinter的博客 3万+

激光可燃气体传感器:核心技术环节分析

激光可燃气体传感器核心技术涵盖七个维度:1)TDLAS光谱吸收与调制技术(检测下限ppm级);2)DFB激光器与双闭环温控系统(波长稳定性±0.0036nm);3)微弱信号处理技术(信噪比提升60dB);4)环境补偿算法(温压补偿误差<±1%);5)本质安全防爆设计(ExiaIICT4Ga等级);6)智能边缘计算(STM32L476芯片);7)多重性能验证(响应时间<1秒)。通过微型化、多气体检测等创新,该技术已在工业安全等领域替代传统方案,实现高精度检测。(149字)

上市公司前技术负责人,20 年软硬件深耕 + 百人研发团队管理经验,名校理工科背景加持。从技术攻坚到团队掌舵,沉淀海量项目实战与管理心得,专注分享软硬件干货、疑难问题解决方案,既是靠谱知识传播者,也盼链接优质项目共成长。 1042

JDK 25 :核心特性

JDK 25 通过 ​​语言简化​​、​​性能革命​​ 和 ​​安全升级​​,巩固了 Java 在企业级开发的核心地位。未来,Java 将持续突破 ​​云原生​​、​​AI 集成​​ 和 ​​量子计算​​ 领域,同时通过 ​​模块化​​ 和 ​​AI 工具链​​ 应对多语言竞争。开发者需关注 ​​Valhalla 项目​​ 和 ​​结构化并发​​,以最大化技术红利,构建下一代高性能应用。

Rysxt_的博客 3502

PSIM仿真实战:反激电源从设计到调试的完整流程(附短路保护配置)

本文详细介绍了使用PSIM仿真工具进行反激电源从设计到调试的完整流程,包括变压器参数设计、功率器件选型、动态特性调试以及短路保护配置。通过实战案例和仿真技巧,帮助工程师提前暴露并解决设计中的常见问题,如负载突变、输入电压波动和短路保护失效等,显著降低硬件试错成本。

weixin_29216353的博客 244

2024年Java学习路线【超详细超实用】

JavaSE> 贪吃蛇游戏-->多线程下载器-->图书管理系统-->在线聊天项目-->MySQL-->JDBC -->前端必修课-->Vue--> JavaWeb -->Ajax -->Maven入门篇-->Maven进阶篇-->MyBatis-->Spring-->SpringMVC-> Linux--> - > Git-->SpringBoot3 -->Redis7 -->Spring Security--> MyBatis Plus-->动力云客-->动力恒合仓储项目 --> RabbitMQ--

m0_47946173的博客 6160

52、Power BI Desktop 数据筛选全攻略

本文全面介绍了Power BI Desktop中各类数据筛选功能的使用方法,涵盖布尔型数据筛选、高级文本筛选、Top N筛选、可视化级别、页面级别和报告级别筛选等核心操作。通过详细步骤、流程图和实际案例,帮助用户深入理解筛选器的层级关系与综合应用技巧,并提供常见问题解决方案,助力高效精准的数据分析与可视化展示。

linux6sysadmin的博客 110

uniapp [全端兼容] - 实现接入集成高德地图搜索地址及选择位置功能,搜索框检索选择地点并返回经纬度及详细省市区县街道地址,用户搜索历史及清空历史记录,选择地址自动获取周边位置列表/地图移动选点

uni-app,高德地图,h5移动端网页,微信小程序,支付宝小程序,Android安卓,苹果ios,app,nvue,Uniapp高德地图,在地图上选择或搜索指定地点,打开地图选择位置,关联地址搜索,输入地址返回附近地址列表,uniApp高德地图地址搜索,搜索框历史记录,关键字搜索,周边查询,搜索位置,uniapp对接高德实现搜索出现地址以及保存搜索记录,集成高德地图,实现精准位置选点功能,获取当前定位城市,如何实现搜索功能,获取省份城市区街道详细地址经纬度,移动选点标记位置,在地图上进行选择位置选点、搜索

🏆 前端领域优质创作者 1万+

java学习路线26版

作为大四老学长的秃狼,近日收到大量兄弟们的私信,希望我能出一期java学习路线的视频,很多小伙伴也是大一的新生,都想和我一样做最美逆行者。还有一些非科班准备转码的小伙伴,不想走培训班那条路线想要通过自学找Java工作。鼠鼠我呀就是宠粉,整!!!!!!!

Ostkakah的博客 4万+

CAPL未来发展方向展望

通过本文的学习,读者应该对CAPL的未来发展方向有了初步的了解。随着汽车电子系统的不断发展,CAPL也在不断演进,以支持更多的技术和应用场景。希望读者能够通过不断的学习和实践,掌握更多的CAPL技巧,提高自己的开发能力。

闲人编程的博客 1183

最新版最全面的 Java+AI 学习路线来了!(2025 版)

首先,Java作为企业级应用的基石,在金融、电商、物流等领域仍然占据核心地位,其跨平台能力、稳定性和安全性使其在复杂业务场景中不可替代。同时,AI工具链的成熟也为Java开发者提供了新的机遇,通过学习机器学习框架和AI算法,开发者可以将AI能力嵌入传统Java应用中,提升系统的智能化水平。分布式锁(Redisson、ZooKeeper)分库分表(ShardingSphere)分布式事务(Seata)中间件:Redis(缓存/分布式锁)、RabbitMQ(消息队列)、Elasticsearch(搜索)

Leaton的博客 1万+

IDEA的使用指南

IDEA基于java的使用手册,可以最快速的上手,在使用中不断的丰富自己的使用技巧.

efm32 入门.pdf

本PDF共计22页,介绍的是操作驱动API,下载与否自己斟酌。

2023年全新版Java学习路线,精心整理【文中送书福利 】

先恭喜你看(学)到了最后,学完的小伙伴记得评论区分享你的进步和心得,鼓励其他Java学习者,大家互动学习,共同成长!

Java___interview的博客 1186

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

2026年Java后端学习路线

Java基础JavaWeb数据库:MySql,Redis开发中间件:Maven ,Git ,Docker,RabbitMQ开发框架:SSM,spring boot,mybatis-plus、springcloud。

weixin_67268418的博客 3万+

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

25年Java后端速成路线

本文为Java后端开发学习路线指南,针对AI时代下算法工程师学历门槛高的问题,推荐Java开发作为替代选择。文章分为七个学习阶段:Java基础(3周)、JavaWeb(3周)、苍穹外卖项目(4周)、黑马点评项目(4周)、消息队列(4周)、SpringCloud微服务,最后是面试准备阶段。每个阶段推荐了B站黑马程序员的教学视频,并给出学习建议,强调实践重于理论。文末推荐了JavaGuide、小林coding等面试资源,以及LeetCode、牛客网等算法练习平台。作者鼓励学习者坚持学习,将日常积累转化为系统架构

Martin_Odegaard的博客 3463

Java开发的学习路线

五年java开发的学习路线前言一、入门级开发1、java基础加提升2、Javaweb3、框架4、项目二、夯实基础1、Java基础2、设计模式3、代码优化4、项目调优5、并发编程6、框架源码7、重复造轮子三、脱颖而出1、专精一个领域2、扩大自己影响力最后 前言 做java开发不到四年,自己的知识树还像一棵小草一样,系统性不够、根基不牢、不够深入!不久即将迈入5年码龄,面对这个分水岭,迷茫恐惧的一个不止我自己吧。只有将自己的知识树成长的更好更健壮,机会来临的时候,才能握住它! 一、入门级开发 1、java

xgb2018的博客 7399

【Java】Java 学习路线一条龙版

⭐ 牛客 Java 面试宝典:https://www.nowcoder.com/tutorial/94阿里 Java 技术图谱:https://developer.aliyun.com/graph/java觉得看文字累的朋友,欢迎看下视频版,带大家导读一下:https://www.bilibili.com/video/BV1Qf4y1K7ff/以上就是鱼皮熬了几天大夜、结合个人经验、并且参考了大量网上的文章和评论总结而成的学习路线,真的是非常不容易,如果大家觉得满意请务必三连支持下。

Bankcary的博客 6332

Java架构师完整学习路线(2025版)

全栈架构师 → 数据架构师 → 云架构师 → 解决方案架构师。初级架构师 → 高级架构师 → 技术总监 → CTO。架构师 → 技术经理 → 部门总监 → 技术VP。

一叶之秋的博客 2925
上一篇: 2024最新版Java面试题及答案整理(纯干货,建议收藏)
下一篇: 超全Java入门学习路线指南
Javaaaaaaaaaaa13
博客等级 码龄2年 381粉丝 53原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值