Java 后端学习路线(2026 最新版)
这是 Java 学习路线的 2026 最新版,每年都会根据当下 Java 后端求职和招聘的最新要求进行全面的优化和改进。 这篇文章可能是你所见过的最用心、最全面的 Java 后端学习路线,共 4w+
这是 Java 学习路线的 2026 最新版,每年都会根据当下 Java 后端求职和招聘的最新要求进行全面的优化和改进。 这篇文章可能是你所见过的最用心、最全面的 Java 后端学习路线,共 4w+ 字。不过,也不用担心内容太多学不完,我会按照学习难度给出找一份小厂工作必学的内容以及适合循序渐进提高 Java 后端开发能力的学习路线。 对于初学者,你可以按照这篇文章推荐的学习路线和资料进行系统性的学习;对于有经验的开发者,你可以根据这篇文章更一步地深入学习 Java 后端开发,提升个人竞争力。 为了保证内容不至于太杂,这篇文章不会展开讲学习方法和成长建议,这部分可以看 JavaGuide「程序人生」里的几篇文章: 程序员如何快速学习新技术 程序员的技术成长战略 给想成长为高级别开发同学的七条建议 这篇文章也不会涉及到计算机基础的内容,关于计算机基础知识的学习可以参考我的网站上的分享:计算机基础书籍推荐。 多说一句:对于编程初学者,我不太建议上来通过做项目学习。实践确实很重要,如果你没有编程基础的话,直接上手实战,很容易最后学个四不像。建议你在学习编程的初期尽量多看一些优质视频。跟着视频一步一步走,可以让你少踩很多坑,学习编程的信心也会增加。 Java 后端学习路线概览 我画了一张图,先简单带大家看看 Java 后端学习路线的全貌以及我所推荐的学习顺序。 下图中涉及到的每一个知识点都会在下文中详细介绍(附带学习资源推荐)。 上面这张图片的原图+PDF 版本,可以在公众号 「JavaGuide」 后台回复“ 学习路线 ”获取。 内容比较多?劝退? 如果你只想找到一份小厂的开发工作的话,建议你把重心放在 Java 基础、数据库、常用框架、常用工具上。 像 JVM、分布式、高并发、高可用、微服务这些知识点,如果你想进大厂或者说让自己在求职的时候更有竞争力,那你就也是要多花一点时间来学习的。 现在面试很卷,想要找到一个好工作的话,就需要你去多学一点,多练习一点。虽然,你目前学的很多知识,在你工作之后可能用不到,但是,面试的筛选就需要你会这些。毕竟,很多岗位是很多人一起竞争,为了达到筛选效果,面试难度通常都会比较大的。这也就是所谓的:“面试造火箭,入职拧螺丝”。 已经淘汰的 Java 技术 已经淘汰的 Java 技术,不要再学了!这篇文章提到了在 Java 开发领域中已经被淘汰的技术,一定一定一定不要再学了!谁推荐你学下面这些技术,直接甩他两耳光子。 JSP 原因 :JSP 已经过时,无法满足现代 Web 开发需求;前后端分离成为主流。 替代方案 :模板引擎(如 Thymeleaf、Freemarker)在传统全栈开发中更流行;而在前后端分离架构中,React、Vue、Angular 等现代前端框架已取代 JSP 的角色。 注意 :一些国企和央企的老项目可能仍然在使用 JSP,但这种情况越来越少见。 Struts(尤其是 1.x) 原因 :配置繁琐、开发效率低,且存在严重的安全漏洞(如世界著名的 Apache Struts 2 漏洞)。此外,社区维护不足,生态逐渐萎缩。 替代方案 :Spring MVC 和 Spring WebFlux 提供了更简洁的开发体验、更强大的功能以及完善的社区支持,完全取代了 Struts。 EJB (Enterprise JavaBeans) 原因 :EJB 过于复杂,开发成本高,学习曲线陡峭,在实际项目中逐步被更轻量化的框架取代。 替代方案 :Spring/Spring Boot 提供了更加简洁且功能强大的企业级开发解决方案,几乎已经成为 Java 企业开发的事实标准。此外,国产的 Solon 和云原生友好的 Quarkus 等框架也非常不错。 Java Applets 原因 :现代浏览器(如 Chrome、Firefox、Edge)早已全面移除对 Java Applets 的支持,同时 Applets 存在严重的安全性问题。 替代方案 :HTML5、WebAssembly 以及现代 JavaScript 框架(如 React、Vue)可以实现更加安全、高效的交互体验,无需插件支持。 SOAP / JAX WS 原因 :SOAP 和 JAX WS 过于复杂,数据格式冗长(XML),对开发效率和性能不友好。 替代方案 :RESTful API 和 RPC 更轻量、高效,是现代微服务架构的首选。 RMI(Remote Method Invocation) 原因 :RMI 是一种早期的 Java 远程调用技术,但兼容性差、配置繁琐,且性能较差。 替代方案 :RESTful API 和 PRC 提供了更简单、高效的远程调用解决方案,完全取代了 RMI。 Swing / JavaFX 原因 :桌面应用在开发领域的份额大幅减少,Web 和移动端成为主流。Swing 和 JavaFX 的生态不如现代跨平台框架丰富。 替代方案 :跨平台桌面开发框架(如 Flutter Desktop、Electron)更具现代化体验。 注意 :一些国企和央企的老项目可能仍然在使用 Swing / JavaFX,但这种情况越来越少见。 Ant 原因 :Ant 是一种基于 XML 配置的构建工具,缺乏易用性,配置繁琐。 替代方案 :Maven 和 Gradle 提供了更高效的项目依赖管理和构建功能,成为现代构建工具的首选。 面试题自测 纸上学来终觉浅,躬行此事要知难。为了帮助你更好地将知识内化,我特别准备了一份与该学习路线完全匹配的高频面试题集:Java 后端学习路线配套高频面试题集(JavaGuide 知识星球专属)。 这份资源可以帮你: 自我检测: 系统性地检验自己对各个知识点的掌握情况。 查漏补缺: 及时发现自己的薄弱环节,进行针对性巩固。 模拟面试: 提前熟悉面试节奏和高频考点。 强烈推荐大家通过自测的方式,把学习推向更深的层次。 Java 核心 Java 基础 如果你之前没有学习过编程的话,我建议你可以看看视频教程。像尚硅谷的 《Java 基础教程系列》和韩顺平老师的《零基础 30 天学会 Java》就很不错。 👉我整理了尚硅谷最新的 Java 后端学习系列完整的视频教程&资料,喜欢看视频的朋友可以点此链接下载: 【最新整理】尚硅谷 Java 后端全套教程 & 实战项目(推荐)。 看视频的同时,配套一本好书也是非常有作用的。 优秀的 Java 基础书籍非常多,我这里只推荐 3 本。 1、《Head First Java》 《Head First Java》这本书的内容很轻松有趣,可以说是我学习编程初期最喜欢的几本书之一了。同时,这本书也是我的 Java 启蒙书籍。我在学习 Java 的初期多亏了这本书的帮助,自己才算是跨进 Java 语言的大门。我在 Java 这块能够坚持下来,这本书有很大的功劳。我身边的的很多朋友学习 Java 初期都是看的这本书。 有很多小伙伴就会问了: 这本书适不适合编程新手阅读呢? 我个人觉得这本书还是挺适合编程新手阅读的,毕竟是 “Head First” 系列。 2、《Java 核心技术卷 1+卷 2》 《Java 核心技术卷 1+卷 2》这两本书的内容很多,全看的话比较费时间,比较适合当工作书。我当时在大学的时候就买了两本放在寝室,没事的时候就翻翻。个人建议有点 Java 基础之后再读这两本,介绍的还是比较深入和全面的。 3、《Java 编程的逻辑》 《Java 编程的逻辑》是一本非常低调的好书,相比于入门书来说,内容更有深度。适合初学者,同时也适合大家拿来复习 Java 基础知识。这篇文章中有这本书的阅读建议:八股文骚套路之 Java 基础 。 学完 Java 基础之后,你可以用自己学的东西实现一个简单的 Java 程序,也可以尝试用 Java 解决一些编程问题,以此来将自己学到的东西付诸于实践。 不太建议学习 Java 基础的之后通过做游戏来巩固。为什么培训班喜欢通过这种方式呢?说白点就是为了找到你的 G 点。新手学习完 Java 基础后做游戏一般是不太现实的,还不如找一些简单的程序问题解决一下比如简单的算法题。 记得多总结!打好基础!把自己重要的东西都记录下来。 API 文档放在自己可以看到的地方,以备自己可以随时查阅。为了能让自己写出更优秀的代码,《Effective Java》、《重构》 这两本书没事也可以看。 学完这部分内容之后,务必确保自己掌握下面知识点: 基本语法、基本数据类型 对象、类、接口 继承、泛型 方法 异常、断言 集合 …… 学习的过程中,强烈建议配合上我总结的常见问题和重要知识点(顺便还能准备一下面试常见问题): Java 基础 : Java 基础常见面试题总结(上)(Java 语言的基本概念、语法、数据类型、变量、方法等) Java 基础常见面试题总结(中)(面向对象基础、字符串、对象的比较与拷贝等) Java 基础常见面试题总结(下)(异常、泛型、反射、SPI、序列化、注解等) Java 集合 : Java 集合常见面试题总结(上)(Java 集合基础、 、 、 、 、 、 等) Java 集合常见面试题总结(下)( 、 等) Java 并发(进阶) 并发或者说多线程这部分内容稍微会比较难以理解和实践。如果你刚学完 Java 基础的话,我建议你学习并发这部分内容的时候,可以先简单地了解一下基础知识比如线程和进程的对比。到了后面,你对于 Java 了解的更深了之后,再回来仔细看看这部分的内容。 Java 并发书籍的话,挺多写的还不错的,比如《实战 Java 高并发程序设计》、《Java 并发编程之美》、《Java 并发实现原理:JDK 源码剖析》。 想要系统学习的话,还是找从里面找一本认真阅读一下。当然,你也可以多选几本结合起来一起看,遇到不懂的知识点再去看看别的书籍的讲解或者找对应的博客讲解。 视频的话,还是推荐尚硅谷周阳老师讲的:Java 并发编程视频教程。 👉我整理了尚硅谷最新的 Java 后端学习系列完整的视频教程&资料,喜欢看视频的朋友可以点此链接下载: 【最新整理】尚硅谷 Java 后端全套教程 & 实战项目(推荐)。 学习的过程中,强烈建议配合上我总结的常见问题和重要知识点: Java并发常见面试题总结(上)(多线程基础知识,例如线程和进程的概念、死锁) Java并发常见面试题总结(中)(各种锁,例如乐观锁和悲观锁、 关键字、 ) Java并发常见面试题总结(下)( 、线程池、 、AQS、虚拟线程等) JVM(进阶) JVM 属于是比并发更高阶一些的内容,学习顺序可以适当延后,比如你可以在框架知识学完之后再回过头来看 JVM。并且,JVM 相关的知识点,一般是大厂(例如美团、阿里)和一些不错的中厂(例如携程、顺丰、招银网络)面试才会问到,面试国企、差一点的中厂和小厂就没必要准备了。 不过,我个人建议如果你学有余力的话,还是抽时间学习一下,还是有用的。正所谓只有搞懂了 JVM 才有可能真正把 Java 语言“吃透”。 实际工作中,中小厂一般不会做 JVM 调优,但万一遇到类似 OOM 的问题,你如果知道如何去排查和解决,岂不是更好? 学习 JVM 这部分的内容,一定要注意要实战和理论结合。 书籍的话,《深入理解 Java 虚拟机》 这本书是首先要推荐的。 这本书就一句话形容: 国产书籍中的战斗机,实实在在的优秀! (真心希望国内能有更多这样的优质书籍出现!加油!💪) 这本书的第三版已经出来挺久了,新增了很多不错的内容比如 ZGC 等新一代 GC 的原理剖析。 不论是你面试还是你想要在 Java 领域学习的更深,你都离不开这本书籍。这本书不光要看,你还要多看几遍,里面都是干货。这本书里面还有一些需要自己实践的东西,我建议你也跟着实践一下。 类似的书籍还有 《实战 Java 虚拟机》、《虚拟机设计与实现:以 JVM 为例》,这两本都是非常不错的! 如果你对实战比较感兴趣,想要自己动手写一个简易的 JVM 的话,可以看看 《自己动手写 Java 虚拟机》 这本书。 书中的代码是基于 Go 语言实现的,搞懂了原理之后,你可以使用 Java 语言模仿着写一个,也算是练练手! 如果你当前没有能力独立使用 Java 语言模仿着写一个的话,你也可以在网上找到很多基于 Java 语言版本的实现,比如《zachaxy 的手写 JVM 系列》。 另外,R 大在豆瓣发的《从表到里学习 JVM 实现》这篇文章中也推荐了很多不错的 JVM 相关的书籍,推荐小伙伴们去看看。 视频的话,尚硅谷的宋红康老师讲的《JVM 全套教程》内容非常硬,一共有接近 400 小节(对应的浓缩精华版:《尚硅谷 JVM 精讲与 GC 调优教程》)。 课程的内容分为 3 部分: 1. 《内存与垃圾回收篇》 2. 《字节码与类的加载篇》 3. 《性能监控与调优篇》 👉我整理了尚硅谷最新的 Java 后端学习系列完整的视频教程&资料,喜欢看视频的朋友可以点此链接下载: 【最新整理】尚硅谷 Java 后端全套教程 & 实战项目(推荐)。 学习的过程中,强烈建议配合上我总结的常见问题和重要知识点: Java 内存区域详解(重点) JVM 垃圾回收详解(重点) 类文件结构详解 类加载过程详解 类加载器详解(重点) 数据库 基础(可选) 数据库基础知识点的话,其实是可选择性学习的。对于计算机专业的同学来说,大学的时候应该也学习过。不过,绝大部分学了之后也相当于没学,没学过的也不用担心哈! 这里还是提供一些学习资料给想要学习数据库基础知识的同学把! 书籍的话,强烈推荐《数据库系统概念》,这本书涵盖了数据库系统的全套概念,知识体系清晰,是学习数据库系统非常经典的教材!不是参考书! 如果你觉得书籍比较枯燥,自己坚持不下来的话,我推荐你可以先看看一些不错的视频。就比如北京师范大学的《数据库系统原理》这个就很不错。 这个课程的老师讲的非常详细,而且每一小节的作业设计的也与所讲知识很贴合,后面还有很多配套实验。 如果你比较喜欢动手,对于理论知识比较抵触的话,我推荐你看看《如何开发一个简单的数据库》 ,这个 project 会手把手教你编写一个简单的数据库。 纸上学来终觉浅 绝知此事要躬行!强烈推荐 CS 专业的小伙伴一定要多多实践!!! MySQL 对于 Java 开发来说,虽然 PostgreSQL 也挺火,但 MySQL 是主流,国内的绝大部分企业还是用的 MySQL。 MySQL 入门可以找一些视频看看,比如黑马的《MySQL 数据库入门到精通》。看视频的过程中,可以配套一本 MySQL 入门类的书籍比如《MySQL 必知必会》。 初期不需要学太深了,搞清楚下面这些知识点即可: 1. MySQL 常用命令 : 安全:登录、增加/删除用户、备份数据和还原数据 数据库操作: 建库建表/删库删表、用户权限分配 …… 2. MySQL 中常用的数据类型、字符集编码 3. MySQL 简单查询、条件查询、模糊查询、多表查询以及如何对查询结果排序、过滤、分组…… 4. MySQL 中使用索引、视图、存储过程、游标、触发器 5. …… 更进一步的话,可以找一些优秀的书籍来学习底层原理和性能优化,比如《高性能 MySQL》和《MySQL 技术内幕》。 另外,强推一波 《MySQL 是怎样运行的》 这本书,内容很适合拿来准备面试。讲的很细节,但又不枯燥,内容非常良心! 如果你想让自己更加了解 MySQL ,同时也是为了准备面试的话,下面这些知识点要格外注意: 1. 索引:索引优缺点、B 树和 B+树、聚集索引与非聚集索引、覆盖索引 2. 事务:事务、数据库事务、ACID、并发事务、事务隔离级别 3. 存储引擎(MyISAM 和 InnoDB) 4. 锁机制与 InnoDB 锁算法 学习的过程中,强烈建议配合上我总结的常见问题和重要知识点: MySQL 常见面试题总结(MySQL 基础、存储引擎、事务、索引、锁、性能优化等) MySQL 索引详解 MySQL 三大日志(binlog、redo log 和 undo log)详解 MySQL 事务隔离级别详解 InnoDB 存储引擎对 MVCC 的实现 SQL 语句在 MySQL 中的执行过程 PostgreSQL(可选) 和 MySQL 一样,PostgreSQL 也是开源免费且功能强大的关系型数据库。PostgreSQL 的 Slogan 是“ 世界上最先进的开源关系型数据库 ” 。 客观来说,PostgreSQL 确实比 MySQL 优秀。不过,目前国内 MySQL 还是主流,PostgreSQL 是可选择性学习的。 PostgreSQL 中文文档建议看看:PostgreSQL 14 中文文档。另外,PostgreSQL 书籍的话,看这里的推荐即可:数据库书籍推荐:PostgreSQL。 Redis 后端项目如果用到分布式缓存的话,一般用的都是 Redis。不过,Redis 不仅仅能做缓存,还能用作分布式锁、延时队列、消息队列等等。 免费的视频教程的话,推荐 GeekHour 的 一小时Redis教程(非常推荐,通俗易懂,简单介绍了 Redis 中涉及到的绝大部分知识点) 和尚硅谷的 《Redis 7 系列最新视频》(阳哥出品,内容更全面,Redis 版本更新,强烈推荐)。 书籍的话,强烈推荐 《Redis 设计与实现》和 《Redis 核心原理与实践》 这两本书。《Redis 核心原理与实践》这本书出版日期相对近一些,主要是结合源码来分析 Redis 的重要知识点比如各种数据结构和高级特性。 付费专栏的话,推荐一个极客时间的《Redis 核心技术与实战》,虽然未涉及到太多新版 Redis 的内容,但胜在内容全面且清晰易懂。我当时看这个专栏确实学了不少东西,尤其是评论区有很多大佬的精彩的评论。 学习的过程中,强烈建议配合上我总结的常见问题和重要知识点: 缓存基础常见面试题总结 Redis 常见面试题总结(上) Redis 常见面试题总结(下) Redis 5 种基本数据类型详解 Redis 3 种特殊数据类型详解 Redis 持久化机制详解 Redis 内存碎片详解 MongoDB(可选) MongoDB 作为 Java 后端开发来说,是可选择性学习的,用的不多,面试一般也不会问,除非你的项目用到了 MongoDB 。 这里就不推荐视频或者书籍了,推荐两篇我写的文章: MongoDB 常见面试题总结(上) MongoDB 常见面试题总结(下) 常用开发工具 非常重要!非常重要!特别是 Git 和 Docker。 除了下面这些工具之外,我强烈建议你一定要搞懂 Github 的使用。一些使用 Github 的小技巧,你可以看Github 小技巧这篇文章。 IDEA 俗话说:“工欲善其事,必先利其器 !”。选择一款好的开发工具对于我们高效率编码非常有帮助! 常用的 Java 开发工具就 Eclipse 和 IDEA。就我个人而言 IDEA 是最适合 Java 开发者的 IDE ,没有之一(勿杠,你喜欢的就是最好的)。 除了 IDEA 自身对编码优秀的支持(比如智能上下文提示)之外,IDEA 中还有丰富的插件来帮助我们高效开发。 近几年,像 Cursor 这样的 AI 编程 IDE 兴起,确实对 IDEA 有了一定冲击。但整体来看,IDEA 依然难以被取代。无论是开发体验还是代码重构能力,IDEA 都有着无与伦比的优势。当然,在 AI 辅助编程这一块,IDEA 的表现的确有些落后。要知道,过去代码智能提示可是它的拿手好戏。 IntelliJ IDEA 官方中文文档今年正式上线了,强烈推荐以这个为第一手资料。 IDEA 官方中文文档入口 : <https://www.jetbrains.com/zh cn/help/idea/getting started.html 另外,「IDEA 高效使用指南」是我创建的一个网站,上面包含了下面这些内容: IDEA 使用技巧 IDEA 必备插件 IDEA 插件开发入门 使用 IDEA 进行重构的小技巧 使用 IDEA 进行源码阅读的技巧 Maven Maven 其实使用起来挺简单的,一两天时间就能入门基本使用了。不过,想要用好还是挺难的,初期的时候会基本使用就好了。 多提一句:学习常用框架之前可以提前花时间学习一下 Maven 的使用,千万不要 到处找 Jar 包,下载 Jar 包(如果你做的项目没用上包管理工具,那请你尽快换一个新点的教程看)。 Maven 这里不用推荐什么视频或者书籍了,直接看下面这篇文章即可: Maven 核心概念总结 Maven 最佳实践 四十五图,一万五千字!一文让你走出迷雾玩转 Maven! 学完之后,务必要搞懂下面这些问题(初学者搞懂前两个问题即可): 1. Maven 项目如何创建?如何引入依赖? 2. Maven 依赖冲突如何解决? 3. Maven 多模块项目的构建、运行、打包如何做? 4. Maven 私服如何搭建? Git Git 技能对于程序员来说也是必备的!试着在学习的过程中将自己的代码托管在 Github 上,有一个漂亮的 Github 主页在求职面试中是十分加分的。并且,现在的企业都是基于 Git 在 GitHub 或 GitLab 平台上做版本控制。 学习 Git 的话,强烈推荐给大家一个可以交互式学习 Git 的网站 Learn Git Branching。效果真的非常非常棒,通过游戏的方式让你学习 Git 的常见操作。 整个教程分为很多关,每一关都有非常详细的指导,还会有详细的动图展示结果。并且,你做错了之后还可以使用 命令从头开始。 如果你是在不知道答案的话,还可以使用 命令查看答案。 这种即时反馈的学习让过程变得有趣!真心感谢这个网站的作者,太爱了! 另外,你可以看看这篇 Git 极简入门 ,像版本控制和 Git 的相关概念、Git 常见操作这篇文章都有介绍到。 如果想要详细了解 Git 的话,可以看看《Pro Git》这本书,介绍的非常全面,免费,支持阅读,并且有中文版! 这是这本书的另外一个在线阅读地址:<https://git scm.com/book/zh/v2 。 如果你比较喜欢看视频教程的话,可以看看极客时间的《玩转 Git 三剑客》,课程的作者是携程代码平台负责人苏玲,讲的挺不错的! Docker 传统的开发流程中,我们的项目通常需要使用 MySQL、Redis、FastDFS 等等环境,这些环境都是需要我们手动去进行下载并配置的,安装配置流程极其复杂,而且不同系统下的操作也不一样。 Docker 的出现完美地解决了这一问题,我们可以在容器中安装 MySQL、Redis 等软件环境,使得应用和环境架构分开,它的优势在于: 1. 一致的运行环境,能够更轻松地迁移 2. 对进程进行封装隔离,容器与容器之间互不影响,更高效地利用系统资源 3. 可以通过镜像复制多个一致的容器 Docker 常见概念解读,可以看这篇 JavaGuide 的这篇Docker 基本概念解读 ,从零到上手实战可以看Docker 从入门到上手干事这篇文章,内容非常详细! 另外,再给大家推荐一本质量非常高的开源书籍《Docker 从入门到实践》,这本书的内容非常新,毕竟书籍的内容是开源的,可以随时改进。 如果想看视频的话,推荐这个:Docker 1 小时快速上手教程,没啥废话,干货挺多。而且,课件也是直接免费分享出来的:Docker 1 小时教程课件。 最后,在学习完 Docker 的常见操作之后,建议大家以一个前后端分离的项目为例,去实践部署一下。比如,你可以选择部署自己的简历项目,这样的话,项目经历部分贴上在线体验地址,也算是一个加分项了! 设计模式 软件开发中有一个概念叫做“ 软件复用 ”。简单来说,软件复用就是我们在构建一个新的软件的时候,不需要从零开始,通过复用已有的一些轮子(框架、第三方库等)、 设计模式 、设计原则等等现成的物料,我们可以更快地构建出一个满足要求的软件。 软件复用需要设计模式的帮助。因为,在软件开发中,设计模式可以通过封装变化来提高代码的可扩展性和可维护性! 在我们平时工作的业务开发中,如果你不会设计模式,你或许也可以完成项目的功能需求。但是!单纯 CRUD 多没意思啊!我们要思考如何写出质量更高的业务代码。另外,各种框架比如 Spring、MyBatis 中都大量使用了设计模式。如果,你想要搞懂他们的原理,设计模式也是你的必备利器。 设计模式不光需要我们在学习,最重要的还是要不断去实践体会。但是!设计模式不是银弹, 不要为了用设计模式而用设计模式 。 想要看书学习设计模式的话,首推 《重学 Java 设计模式》 。有趣的例子,配合形象的图片,通过实战案例讲解设计模式的方式秒极了!文中的每一个细节无不透露着作者的用心!每一种设计模式实际都不难理解,大部分读者最需要的还是设计模式的实战经验。如果你能细心思考实践《重学 Java 设计模式》 中的每一个案例,我相信,你对设计模式的理解一定会更上一层楼! 想要看视频学习的话,首推 《尚硅谷 Java 设计模式(图解+框架源码剖析)》 这个视频。 这个视频通过图解+框架源码分析的方式全面地讲解了设计模式相关的内容,包括设计模式七大原则、UML 类图 类的六大关系、23 种设计模式及其分类等知识点。 Linux 对于 Java 程序员来说, 我们需要掌握 Linux 基本的使用,尤其是是各种常用的命令比如:目录切换命令、目录操作命令、文件的操作命令、压缩或者解压文件的命令等等。像 Linux 内核架构、底层原理这些底层内容,不是必需的,可以根据自身情况来决定是否学习。 对于想要快速入门 Linux 的同学来说,建议阅读我写的 Linux 基础知识总结这篇文章,里面介绍了 Java 程序员必知的 Linux 的一些概念以及常见命令。 视频的话,我推荐 GeekHour 的 30 分钟 Linux 入门教程,通俗易懂,实战讲解!不过,相对偏基础一些,适合想要快速入门的同学。 对于想要系统学习的同学来说,还是建议看书籍,像《鸟哥的 Linux 私房菜》系列就挺不错的。不过,内容有点太多了,个人还是更建议作为工具书参考或者选择自己感兴趣的内容章节进行学习。 不要忘记学习一下 Shell 编程了,这个也是必须要掌握的,快速入门可以阅读我写的 Shell 编程基础知识总结这篇文章,总结了 Shell 变量、基本运算符、流程控制、函数这些重要的知识点。 前端基础 笔者主要从事 Java 后端开发的,对于前端的了解属于皮毛,刚刚入门的状态(当过一年全栈),这里只是简单聊聊自己的看法。 前端框架更新换代的很快,目前比较流行的是 Vue 和 React 。对于国内的同学,Vue 更适合投入精力学习,因为国内用 Vue 的公司更多一些。不过,前端框架并不是必学的,可以根据自身情况来决定是否学习。 不过,不管前端这些技术怎么变,前端三剑客(HTML、CSS、JavaScript )是不会变的,也是必学的。 HTML 和 CSS 相对 JS 来说就比较简单了。你可以在 W3school 上学习一些关于 HTML、CSS、JS 的基础知识。然后,通过一个简单的前端项目来实战一下。比如你可以做一个个人简历或者模仿某某官网写个类似的网页。 JavaScript 的水更深,也是前端面试中的重心。 学习 JS 的话,MDN 上的 JS 相关的内容是必须要看的!上面的内容很全面,质量非常高! 除此之外,开源的 JS 教程《The Modern JavaScript Tutorial》非常赞!目前的话,这个系列的教程还被翻译成了多国的语言。 这个教程的内容分为 3 部分 1. JavaScript 编程语言 : JavaScript 入门,还会介绍 OOP 等相关高级概念。 2. 浏览器(文档,事件,接口) : 学习如何管理浏览器页面 3. 其他文章 : 按需学习其他 JavaScript 高级知识。 另外,除了一些老项目之外,现在一般都是前后端分离开发,也就是前端和后端可以独立开发、测试和部署,两者之间通过 API 进行通信。因此,后端程序员还需要掌握: HTTP 协议(计算机网络部分的内容,这里再多提一下) RESTful API 的设计和使用 前后端通信的常见方式:比如 Ajax(短连接)、WebSocket(长连接,双向的) J2EE 基础 Servlet 属于比较古老的技术了,现在你几乎不会直接使用到 相关的 API。不过,学习 有助于我们搞清各种封装的比较好的 Web 框架的原理,比如 不过就是对 的封装,它的底层还是依赖于 。 在 Java Web 程序中, 主要负责接收用户请求 ,在 , 中做相应的处理,并将回应 反馈给用户。 你可以通过书籍《Head First Servlets & JSP(中文版)》或者《Servlet 和 JSP 学习指南》来学习 Servlet 基础知识。 注意 :JSP 就不要学了,过时的技术,已经被淘汰了! Web 服务器 Tomcat 是 Apache 基金会下的一个项目,主要用作 Web 服务器。 如果你直接学习 Spring Boot 的话,不学习 Tomcat 也没什么影响(建议还是学一学)。因为 Spring Boot ( )使用 Tomcat 作为默认的嵌入式 容器, 你使用起来是无感知的。 简单来说,Tomcat 主要实现了 2 个核心功能: 1. 处理 连接,负责网络字节流与 和 对象的转化。 2. 加载和管理 ,以及具体处理 请求。 如果你要深入研究 Tomcat 的话,首选极客时间的 《深入拆解 Tomcat & Jetty》 这个专栏。这是我看过讲解 Tomcat 底层原理最好的资料,强烈推荐! 这个专栏不光可以加深自己对于 Tomcat 的理解,还能提高自己对于系统架构、性能优化等领域的思考。 除了 Tomcat 之外,Nginx 也是必须要学习的! Nginx 是一个高性能的 HTTP 和反向代理服务服务器,经常被拿来做反向代理和负载均衡。 如果你要学习 Nginx 的话,可以看看《Nginx 核心知识 150 讲》 。内容很全面,从概念、代码再到实战,从 HTTP 到 OpenResty 。 常用框架 实际面试中,框架类知识问的不多,学习常用框架更多地是为了满足项目开发需要以及工作要求。 Spring/SpringBoot 没有学习 Spring 可以直接上手学习 SpringBoot 吗? 明确的说,必须可以!目前绝大部分企业都是用的 SpringBoot ,Spring 也并不是学习 Spring Boot 的前置基础,相比于 Spring 来说,Spring Boot 要更容易上手一些!如果你只是想使用 Spring Boot 来做项目的话,直接学 Spring Boot 就可以了。 不过,个人还是建议提前搞懂 Spring AOP 和 IoC 这俩比较重要的概念之后再去学习 SpringBoot。除此之外,准备面试的话,Spring 中 bean 的作用域与生命周期、SpringMVC 工作原理详解等等知识点都是非常重要的,一定要搞懂。推荐阅读这篇文章:Spring 常见面试题总结。 学习 Spring Boot 的话,还是建议可以多看看 《Spring Boot 的官方文档》 ,写的很详细。 像 SpringBoot 和一些常见技术的整合你也要知道怎么做,比如 SpringBoot 整合 MyBatis、 ElasticSearch、SpringSecurity、Redis 等等。尽量还是实践一下,写一些 Demo。到了后期,甚至可以独立做一些小项目把这些知识都应用上。 书籍的话,个人其实并没有什么特别好的推荐,毕竟是框架类知识,更新换代的比较快,很多书籍的内容都已经过时了。 考虑到很多同学比较喜欢阅读书籍,我这里还是简单推荐几本吧! 对于想要实战的同学,我强烈不推荐看书,直接看尚硅谷的实战项目即可。这篇文章可以获取到最新的视频且对尚硅谷的实战项目做了介绍:【最新整理】尚硅谷 Java 后端全套教程 & 实战项目(推荐)。 对于专研 Spring Boot 底层原理同学,可以看看 《Spring Boot 编程思想(核心篇)》 。 这本书稍微有点啰嗦,不过,原理介绍的比较清楚(不适合初学者)。 如果你比较喜欢看视频的话,推荐尚硅谷雷神的 《2023 版 Spring Boot3 零基础入门》 。这可能是全网质量最高并且免费的 Spring Boot 教程了,好评爆炸! 另外,Spring Boot 这块还有很多优质的开源教程,我已经整理好放到 Java 优质开源技术教程 中了。 MyBatis MyBatis 是国内使用最多的 ORM 框架。在学习 Spring/Spring Boot 的时候,你就要顺带去学习 MyBatis,这个我在上面也提到过。 另外,建议你还要掌握至少一个 MyBatis 增强框架,这里推荐两个国产的: 1. MyBatis Plus:简称 MP,在 MyBatis 的基础上只做增强不做改变,为简化开发、提高效率而生。 2. MyBatis Flex:非常轻量、同时拥有极高的性能与灵活性的 MyBatis 增强框架。 对于做项目的同学,也可以直接选择学习使用 MyBatis 增强框架。 单元测试 对于单测来说,目前常用的单测框架有:JUnit、Mockito、Spock、PowerMock、JMockit、TestableMock 等等。 JUnit 几乎是默认选择,但是其不支持 Mock,因此我们还需要选择一个 Mock 工具。Mockito 和 Spock 是最主流的两款 Mock 工具,一般都是在这两者中选择。 究竟是选择 Mockito 还是 Spock 呢?我这里做了一些简单的对比分析: 1. Spock 没办法 Mock 静态方法和私有方法,Mockito 3.4.0 以后,支持静态方法的 Mock,具体可以看这个 issue:mockito/mockito 1013,具体教程可以看这篇文章:Mocking Static Methods With Mockito。 2. Spock 基于 Groovy,写出来的测试代码更清晰易读,比较规范(自带 given when then 的常用测试结构规范)。Mockito 没有具体的结构规范,需要项目组自己约定一个或者遵守比较好的测试代码实践。通常来说,同样的测试用例,Spock 的代码要更简洁。 3. Mockito 使用的人群更广泛,稳定可靠。并且,Mockito 是 SpringBoot Test 默认集成的 Mock 工具。 Mockito 和 Spock 都是非常不错的 Mock 工具,相对来说,Mockito 的适用性更强一些。 这里顺带推荐一些测试相关的学习资料: 1. 阿里内部单元测试培训教程 2. 单元测试到底是什么?应该怎么做? 3. Integration Testing in Spring 4. Testing the Web Layer 5. 可能是全网最好的 Spock 单测入门文章: 6. 单元测试框架 Mockito 落地实践分享 7. 如何写出有效的单元测试 Netty(可选) Netty 是 Java 网络编程最热门的框架,大家可以根据个人需要决定是否进行学习,实际企业开发中用的不多。 不过,个人建议学有余力的同学还是抽时间认真学习一下,对个人开发能力的提升还是很有帮助的。 1. Netty 基于 NIO (NIO 是一种同步非阻塞的 I/O 模型,在 Java 1.4 中引入了 NIO )。使用 Netty 可以极大地简化并简化了 TCP 和 UDP 套接字服务器等网络编程,并且性能以及安全性等很多方面都非常优秀。 2. 我们平常经常接触的 Dubbo、RocketMQ、Elasticsearch、gRPC、Spark、Elasticsearch 等等热门开源项目都用到了 Netty。 3.