鱼皮怒肝 Java 学习路线一条龙!
Java 学习路线一条龙版 by 鱼皮。
原创不易,请勿抄袭,违者必究!
大家好,我是鱼皮。现在网上的编程资料实在太多了,而且人人肯定都说自己的最好,那就导致大家又不知道怎么选了。大部分的博主推荐资源,也就是把播放量高的视频说一遍,水一期视频,没有一条很清晰的学习路线。
所以今天我的这个 Java 学习路线就做做减法,给大家来个一条龙服务,Java 要学的知识点、对应的最佳学习资源和预计要花费的时间,都安排的明明白白的,不用选了,有计划了,也别再迷茫和纠结了,就无脑跟着学就行了。
大纲
实在太长了,没办法全部展开,只能放个大纲了。。。
路线特点
最新,完整一条龙,从入门到入土(⭐ 表示推荐学习)
给出目标、学习建议、关键知识点、最优资源以及各类资源推荐(视频、书籍、文档、项目、工具等)
鱼皮自己是 Java 开发者,融入个人经历 + 思考,让路线有灵魂
划分阶段、更有计划,且在最后给出持续学习的方向、探索 Java 程序员发展的无限可能
前言
首先呢,我们要了解 Java 的应用场景和就业方向,看看和自己的学习目的是否一致,目前,Java 的岗位需求多,是后台开发的主流编程语言,功能强大,还是很值得学习的。
那大家可以看我的视频了解:https://www.bilibili.com/video/BV1y3411r7pX/
阶段 1:Java 入门
目标
培养兴趣、快速上手
前期准备
准备好一款在线、随时随地写代码的工具,不用在本地去安装和配置,是初学者的好帮手
推荐网站 - 菜鸟工具:https://c.runoob.com/compile/10
准备一款记笔记的软件,学编程的过程中老师的思路、自己遇到的问题、解决问题的方法、心得感悟、遇到的好资料,都要记下来哦,好记性不如烂笔头,可以帮助你事半功倍。
推荐软件 Typora:https://www.typora.io/ 推荐使用 Markdown 语法编写,鱼皮教程:https://www.bilibili.com/video/BV1no4y1k7YT/
想学好编程,别背代码,要多写,把这句话刻到脑子里。
选视频和找资料的小技巧:多看评论区、多看隔壁评论区,不要看过期的视频。
Java 编程基础(45 天)
知识
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(3 天)
知识
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:巩固基础
目标
想学好编程,计算机基础知识要学好。
比如算法,是程序员的灵魂。学好算法有助于我们理解程序、开拓思路,因此也是很多公司面试时考察的关键,在找工作前,还是要刷个上百道算法题目的。
我们这个阶段的目标是:熟练使用 Java 语言来编写程序,巩固 Java 的基础。
那直接用 Java 来写算法题目,一举两得,岂不美哉?
Java 基础(30 天)
学习建议
建议大家去阅读 《Java 核心技术卷 1》,这本书堪称经典,是帮助你复习巩固 Java 的不二之选,其中图形界面章节可以选择不看。
之后可以刷牛客的 Java 练习题,检验自己的水平,我当时刷了两遍。
资源
书籍 ⭐《Java 核心技术卷 1》 练习 ⭐ 牛客题库:https://www.nowcoder.com/intelligentTest
数据结构与算法
知识
时间 / 空间复杂度分析
数据结构
数组 字符串 队列 栈 链表 集合 哈希表 二叉树 算法
排序 双指针 查找 分治 动态规划 递归 回溯 贪心 位运算 DFS BFS 图
学习建议
学算法一定要多思考、多练习!!!
在复习 Java、巩固基础的过程中,每天可以坚持用 Java 做 2 - 3 道算法题目。
不用担心看不懂,直接进入 LeetCode 学习板块 LeetBook,提供了免费的教程,文字、图解、动画讲算法、在线练习应有尽有,从 0 开始,跟着学习基础知识、跟着教程刷一些同类题目,培养算法思路。
之后再由简单到复杂、由通过率高到低,自主刷题,多看题解,举一反三。
有条件的朋友也可以试着参与竞赛,没什么门槛,可以帮助你集中精神,而且周赛的题目还是挺友好的~
资源
文章 ⭐ 刷了 1000 多道算法题,一点心得:https://t.1yb.co/oT9q(鱼皮原创) 在线教程 ⭐ LeetCode LeetBook:https://leetcode-cn.com/leetbook/ 在线刷题 ⭐ LeetCode:https://leetcode-cn.com/ 书籍 ⭐《小灰的漫画算法》 ⭐《剑指 Offer》 《程序员代码面试指南》 图解算法数据结构:https://leetcode-cn.com/leetbook/detail/illustration-of-algorithm/ LeetCode 101(C++):https://github.com/changgyhub/leetcode_101 LeetCode 题解(C++):https://github.com/soulmachine/leetcode LeetCode Cookbook(Go 语言):https://github.com/halfrost/LeetCode-Go 视频 尚硅谷 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/
###计算机基础
知识
计算机网络 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 企业开发基础
目标
面向薪资编程,学习实际工作要用的技术,并能 独立 做出一个具有完整功能的 Java Web 项目。
MySQL 数据库(7 天)
企业中大部分业务数据都是用关系型数据库存储的,因此数据库是后台开发同学的必备技能,其中 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
开发框架(60 天)
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(3 天)
此前大家可能听说过 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(10 天)
企业中的很多前后台项目都是部署在 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/
前端基础(14 天)
虽然 Java 程序员面试时基本不会出现前端相关问题,但是在企业中,往往需要前后端程序员配合完成工作。会一些前端,不仅可以提高你们的协作效率,还能提高自己对整个项目的了解和掌控力,甚至能独立开发出一个完整项目!这点也是能给面试加分的。
知识
HTML CSS JavaScript Ajax Vue
学习建议
不需要学习太多的前端技术,熟悉下基础的前端三件套,了解前端是如何向后端发送请求来做数据交互的一般就够了。有时间的话可以学下 Vue ,是比较容易上手的主流前端开发框架,Vue + SpringBoot 还是很香的。
资源
参见鱼皮原创的前端学习路线:https://mp.weixin.qq.com/s/HbzLEt6NOP9Is9F3GOnbUQ
阶段 4:Java 企业开发进阶
目标
学习更多企业级开发技术和编程思想,能够结合多种技术,独立开发出架构合理的完整系统,解决实际问题 。
要了解为什么需要这个技术?什么时候用哪些技术?
设计模式(21 天)
设计模式是软件开发中解决一类问题的通用方法。
使用设计模式能让你写出更优雅、可维护的代码,也正因如此,很多框架源码都用到了设计模式,你不学很难看懂。
知识
创建型模式:对象实例化的模式,创建型模式用于解耦对象的实例化过程
单例模式 工厂方法模式 抽象工厂 建造者模式 原型模式 结构型模式:把类或对象结合在一起形成一个更大的结构
适配器模式 组合模式 装饰器模式 代理模式 享元模式 外观模式 桥接模式 行为型模式:类和对象如何交互,及划分责任和算法
迭代器模式 模板方法模式 策略模式 命令模式 状态模式 责任链模式 备忘录模式 观察者模式 访问者模式 中介者模式 解释器模式
学习建议
先理解概念,了解每个设计模式的特点和应用场景,再多加练习,运用到实际项目。
资源
书籍
⭐《图解设计模式》(强烈推荐这本书,正是用 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/
中间件(14 天)
除了框架外,企业项目开发也会用到大量独立的中间件,以解决某些实际问题,比如提高项目的性能、提高项目的稳定性和可靠性等。
下面分享几个最常用的主流中间件。
知识
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(讲的比较全面) ⭐ Nginx 鱼皮 - 手把手带你从0搭建个人网站:https://www.bilibili.com/video/BV1rU4y1J785/ (简单演示 Nginx 部署网站) 文档
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 网络编程(14 天)
开源的 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 也可以学习下这个)
微服务(60 天)
随着互联网的发展,项目越来越复杂,单机且庞大的巨石项目已无法满足开发、运维、并发、可靠性等需求。
因此,后台架构不断演进,可以将庞大的项目拆分成一个个职责明确、功能独立的细小模块,模块可以部署在多台服务器上,相互配合协作,提供完整的系统能力。
换言之,想做大型项目,这块儿一定要好好学!
知识
Dubbo
架构演进 RPC Zookeeper 服务提供者 服务消费者 项目搭建
微服务
微服务概念 Spring Cloud 框架 子父工程 服务注册与发现 注册中心 Eureka、Zookeeper、Consul Ribbon 负载均衡 Feign 服务调用 Hystrix 服务限流、降级、熔断 Resilience4j 服务容错 Gateway(Zuul)微服务网关 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/(跟着快速开始直接用就好了)
容器(7 天)
将应用和环境进行封装,相互隔离、独立部署、便于移植,提高安全性、提高开发和维护效率。
便于实现微服务、持续集成和交付。
知识
Docker 容器概念 镜像 部署服务 Dockerfile K8S(Kubernetes) 架构 部署应用 暴露服务 动态扩缩容
学习建议
会用 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(3 天)
持续集成 / 持续交付,贯穿整个研发到项目上线的过程,提高效率。
大公司一般都有自己的 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(鱼皮给大家出过视频教程的 https://www.bilibili.com/video/BV11V411p7vf/)
阶段 5:项目实战
目标
综合所学技术从 0 到 1 开发和上线一个全面、有特色的、可以写进简历的个人项目。
学习建议
其实在之前的框架学习视频中应该就做过几个项目了,但相对不够完整和体系化。
有想法的同学可以做任何自己想做的项目,推荐参加一些作品类竞赛,练手、拿奖、收获项目经历一举三得。
暂时没想法的朋友,建议先跟着专门带做项目的视频教程做 1 - 2 套 Java 完整项目,一定要从 0 到 1 自己手写!
有能力的朋友也可以试着用 GitHub 上的源码来学习啦~
做一个完整的项目的确很不容易,建议大家根据自己的 时间、兴趣 选择 较新的、有配套源码的 教程,保持耐心。
如何选择编程学习资源,可以看下我的原创文章:https://mp.weixin.qq.com/s/mlMql9RJCd7THt6rpGb8UA
下面推荐一些优质的、较新的项目实战视频教程 + 50 套项目源码。
视频教程
尚硅谷 - 谷粒学院 - 微服务 + 全栈 - 在线教育实战项目:https://www.bilibili.com/video/BV1dQ4y1A75e(全栈项目,前后端讲得都很全面)
尚硅谷 - 尚筹网 - Java项目实战开发教程 - SSM 框架 + 微服务架构:https://www.bilibili.com/video/BV1bE411T7oZ(500 多集,包含完整的用户权限管理,功能丰富、讲得很细致全面)
黑马 - 24 小时搞定 Java 毕设电商项目:https://www.bilibili.com/video/BV13f4y1r7fS
黑马程序员 Java 项目《传智健康》,超完整的企业级医疗行业项目:https://www.bilibili.com/video/BV1Bo4y117zV
黑马程序员 Java 项目《万信金融》企业级开发实战,互联网金融行业解决方案:https://www.bilibili.com/video/BV1Ub4y1f7rk
黑马程序员 Java 项目 SaaS 移动办公完整版《iHRM 人力资源管理系统》,跨行业 SaaS 办公整合性解决方案:https://www.bilibili.com/video/BV18A411L7UX
黑马程序员 Java 大型分布式微服务闪聚支付项目,Java 移动支付全生态系统:https://www.bilibili.com/video/BV17v411V79c
黑马程序员 Java 项目《好客租房》:https://www.bilibili.com/video/BV1sZ4y1F7PD
项目源码(50 套)
电商秒杀
天猫整站 J2EE:https://how2j.cn/module/115.htm
天猫整站 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 秒杀系统)
博客论坛
Mblog:开源 Java 博客系统
halo:一个优秀的开源博客发布应用
forum-java:一款用 Java(spring boot) 实现的现代化社区(论坛/问答/BBS/社交网络/博客)系统平台
vhr:微人事是一个前后端分离的人力资源管理系统,项目采用 SpringBoot+Vue 开发。
favorites-web:云收藏 Spring Boot 2.X 开源项目。云收藏是一个使用 Spring Boot 构建的开源网站,可以让用户在线随时随地收藏的一个网站,在网站上分类整理收藏的网站或者文章。
community:码问,开源论坛、问答系统,现有功能提问、回复、通知、最新、最热、消除零回复功能。技术栈 Spring、Spring Boot、MyBatis、MySQL/H2、Bootstrap
NiterForum:尼特社区-NiterForum-一个论坛/社区程序。后端Springboot/MyBatis/Maven/MySQL,前端Thymeleaf/Layui。可供初学者,学习、交流使用。
VBlog:V部落,Vue+SpringBoot实现的多用户博客管理平台!
NiceFish:SpringBoot/SpringCloud 前后端分离项目
My-Blog:My Blog 是由 SpringBoot + Mybatis + Thymeleaf 等技术实现的 Java 博客系统,页面美观、功能齐全、部署简单及完善的代码,一定会给使用者无与伦比的体验。
My-Blog-layui:layui 版本的 My-Blog : A simple & beautiful blogging system implemented with spring-boot & layui & thymeleaf & mybatis My Blog 是由 SpringBoot + Layui + Mybatis + Thymeleaf 等技术实现的 Java 博客系统,页面美观、功能齐全、部署简单及完善的代码,一定会给使用者无与伦比的体验
symphony:Java 实现的现代化社区
管理系统
Spring-Cloud-Admin:Cloud-Admin 是国内首个基于 Spring Cloud 微服务化开发平台,具有统一授权、认证后台管理系统,其中包含具备用户管理、资源权限管理、网关 API 管理等多个模块,支持多业务系统并行开发,可以作为后端服务的开发脚手架。代码简洁,架构清晰,适合学习和直接项目中使用。核心技术采用 Spring Boot2 以及 Spring Cloud Gateway 相关核心组件,前端采用 vue-element-admin 组件。
bootshiro:基于 springboot+shiro+jwt 的资源无状态认证权限管理系统后端
悟空CRM:基于jfinal+vue+ElementUI的前后端分离CRM系统
EL-ADMIN:基于 SpringBoot 的后台管理系统
pig:基于 Spring Boot 2.2、 Spring Cloud Hoxton & Alibaba、 OAuth2 的 RBAC 权限管理系统。
FEBS-Shiro:Spring Boot 2.1.3,Shiro1.4.0 & Layui 2.5.4 权限管理系统。
Spring Boot-Shiro-Vue:基于Spring Boot-Shiro-Vue 的权限管理
studentmanager:基于springboot+mybatis学生管理系统
jshERP:华夏ERP基于SpringBoot框架和SaaS模式,立志为中小企业提供开源好用的ERP软件,目前专注进销存+财务功能。主要模块有零售管理、采购管理、销售管理、仓库管理、财务管理、报表查询、系统管理等。支持预付款、收入支出、仓库调拨、组装拆卸、订单等特色功能。拥有库存状况、出入库统计等报表。同时对角色和权限进行了细致全面控制,精确到每个按钮和菜单。
HotelSystem:酒店管理系统 Java,tomcat,mysql,servlet,jsp实现,没有使用任何框架
开发平台
open-capacity-platform:微服务能力开发平台 jeecg-boot:JeecgBoot是一款基于BPM的低代码平台!前后端分离架构 SpringBoot 2.x,SpringCloud,Ant Design&Vue,Mybatis-plus,Shiro,JWT,支持微服务。强大的代码生成器让前后端代码一键生成,实现低代码开发!
其他
学之思在线考试系统:一款 java + vue 的前后端分离的考试系统
PassJava-Platform:一款面试刷题的 Spring Cloud 开源系统
kkFileView:使用spring boot打造文件文档在线预览项目
dynamic-datasource:一个基于springboot的快速集成多数据源的启动器
moti-cloud:莫提网盘,基于 SpringBoot+MyBatis+ThymeLeaf+BootStrap,适合初学者
threadandjuc:three-high-import 高可用\高可靠\高性能,三高多线程导入系统(该项目意义为理论贯通)
proxyee-down:http下载工具,基于http代理,支持多连接分块下载
hosp_order:医院预约挂号系统,基于 SSM 框架
趋势投资 SpringCloud
DiyTomcat
阶段 6:Java 高级
目标
不满足于能做,而是通过更 深入 和 广泛 的学习,实现高质量的代码和更优秀的架构,培养解决问题的能力。
并发编程(21 天)
对 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
高可用
主从 异地多活 容灾备份
高并发
数据库
分库分表 读写分离 缓存
缓存雪崩 缓存击穿 缓存穿透 负载均衡
负载均衡算法 软硬件负载均衡(2、3、4、7 层)
其他
监控告警
领域驱动设计
应用安全
线上故障分析
服务网格
Serverless
云原生
学习建议
多看文章多思考
阶段 7:Java 求职
目标
找到好工作
建议
尽早做规划,可以通过大厂招聘官网的岗位描述来了解岗位的要求
雕琢一份优秀的简历,推荐阅读:https://mp.weixin.qq.com/s/wfabzdpOPdq89faFFpZ4NA
多读面经,坚持刷算法
多参与面试,持续复盘总结
资源
岗位要求
阿里 Java 开发:https://campus.alibaba.com/position.htm?refno=12699
腾讯后台开发:https://join.qq.com/post_detail.html?pid=1&id=101&tid=2
腾讯全栈开发:https://join.qq.com/post_detail.html?pid=1&id=137&tid=2
腾讯运营开发:https://join.qq.com/post_detail.html?pid=1&id=105&tid=2
美团后端开发:https://campus.meituan.com/jobs?jobFamily=1&jobId=4005&jobType=1&pageNo=2
华为软件开发:https://career.huawei.com/reccampportal/portal5/campus-recruitment-detail.html?jobId=176044
鱼皮经历
从 0 开始的编程学习进大厂经历
⭐ 我学计算机的四年,共勉:https://mp.weixin.qq.com/s/Nc7Ee2UyrPg6hGseQUCzeg 实习经历
⭐ 我的第一份实习:https://mp.weixin.qq.com/s/SwGiRzyTkCOOCUXfXPR1Pw
⭐ 我的第二份实习,字节跳动:https://mp.weixin.qq.com/s/3q-YIfuZBjPjSnamNwOraw
知识总结
⭐ 牛客 Java 面试宝典:https://www.nowcoder.com/tutorial/94
⭐ JavaGuide:https://snailclimb.gitee.io/javaguide/#/
⭐ CS-Notes:http://www.cyc2018.xyz/
阿里 Java 技术图谱:https://developer.aliyun.com/graph/java
面经
⭐ 2021 最新 Java 笔试、面试题合集:https://pan.baidu.com/s/1DE4HAu-DS80n7VOaGpU_KQ(密码:lkw1)
⭐ 牛客面经:https://www.nowcoder.com/discuss/experience?tagId=639
视频
⭐ 尚硅谷 2021 逆袭版 Java 面试题第三季:https://www.bilibili.com/video/BV1Hy4y1B78T
⭐ 阿里大佬透彻讲解 Java 面试 500 道必考题:https://www.bilibili.com/video/BV1yU4y1J7Bb
阶段 8:持续学习
目标
持续追求技术的深度和广度,培养自己的 核心竞争力 和 不可替代性 ,学无止境!
学习建议
自主学习,自主搜索教程,多看书,多阅读技术博客,多实践。
学习方向
框架源码
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/
尾声
以上就是鱼皮熬了几天大夜、结合个人经验、并且参考了大量网上的文章和评论总结而成的学习路线,真的是非常不容易,如果大家觉得满意请务必 三连 支持下,路线文档和所有学习资源在我的公众号【程序员鱼皮】后台回复【Java 路线】就能获取了,也可以在我开发的编程导航网站搜索哦~
我是鱼皮,持续分享编程干货的程序员,欢迎关注,下期再见~
有帮助还求 点赞 + 在看 呀 ❤️
往期推荐
进不去阿里了
七夕,帮他修个 Bug!
这 10 个创意项目,太顶了!
聊聊编程语言的选择
老弟做了个网盘,炸了!