文章为转载 请关注鱼皮好友 持续获取 有效学习知识
现在网上的编程资料实在太多了,而且人人肯定都说自己的最好,那就导致大家又不知道怎么选了。大部分的博主推荐资源,也就是把播放量高的视频说一遍,水一期视频,没有一条很清晰的学习路线。
所以今天我的这个 Java 学习路线就做做减法,给大家来个一条龙服务,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/