如果你已经能写 Controller、能连 MySQL、能跑通一个增删改查的小项目,但一被问到「视频网站这种量级怎么扛」,脑子里只有「加缓存、加机器」六个字——那这门课正好卡在这个缺口上。它不讲 Java 语法,也不讲 SpringBoot 怎么启动,它讲的是一套完整业务系统里,那些平时写练习项目永远碰不到的问题:视频和弹幕怎么存、热点数据怎么不把数据库打穿、前后端分离之后接口怎么定、用户上传的东西怎么异步处理。

先说清楚:这门课填的是哪个坑

大部分人的能力断层不在「会不会用框架」,而在「框架拼起来之后系统长什么样」。会写一个接口,和知道这个接口在高并发下该走缓存还是该走队列,是两回事。仿 B 站这个题材的价值就在于,它的业务天然带着几个典型的性能难题:

  • 视频列表、播放页、弹幕——读多写少,典型的缓存场景;
  • 点赞、投币、收藏——高频写入,直接打库很容易崩;
  • 视频上传与转码——耗时长,不能卡在请求线程里等;
  • 用户登录态与权限——前后端分离后,Session 那套要换思路。

课程围绕 SpringBoot2.7 + SpringMVC + SpringSecurity 搭后端,MyBatis-Plus 和 MySQL8.0 做持久层,Redis 处理缓存和热点数据,RabbitMQ 承担异步与削峰。这些技术单拎出来你多半都见过,难的是它们在一个真实业务里怎么分工。

看的时候重点盯这几处

缓存不是「加个注解」

Redis 在这类项目里不是缓存用户信息那么简单。哪些数据进缓存、过期时间怎么定、缓存和数据库不一致时以谁为准、热点 key 怎么处理——这些决策会直接决定系统能不能撑住。看这部分时别只抄代码,要问自己:如果这个缓存挂了,业务会退化成什么样。

消息队列解决的是「等不起」

RabbitMQ 出现的地方,通常都是那些「用户不该等」的环节。投币之后要不要立刻更新各种计数?上传完视频要不要同步等转码?把这些从主流程里拆出去,是这门课里很值得反复看的一段。重点理解异步之后的一致性怎么保证,而不是会发消息就行。

前后端分离带来的接口设计问题

前端部分会涉及界面开发,但更值得关注的是接口约定、跨域、登录态传递、数据格式统一这些「协作层」的东西。很多人写过前后端分离项目,但没想过接口为什么这么设计,换个前端还能不能复用。

看完你应该能回答这些问题

  • 一个视频播放页的请求,从进入后端到返回数据,中间经过了哪些组件,各自负责什么?
  • 点赞这种高频写操作,为什么不能直接 update 数据库?可以用哪些手段缓解?
  • Redis 里的数据和 MySQL 里的数据出现不一致,可能是什么原因,怎么排查?
  • 哪些业务适合丢进消息队列,哪些不适合,判断依据是什么?
  • SpringSecurity 在前后端分离场景下和传统 MVC 项目里的用法差在哪?

如果这些问题你现在答不上来,或者只能答个大概,那跟着项目走一遍会比自己啃文档有效得多。反过来,如果你已经能清晰回答其中大部分,这门课对你来说可能只是换了个业务外壳,收益有限。

怎么用这套材料

建议不要一次看完再动手。仿 B 站这类项目模块之间耦合不低,一口气看完很容易变成「当时懂了,回头全忘」。比较稳的节奏是按业务模块推进:先把视频列表和播放页跑起来,再接缓存;先让点赞功能能跑通,再考虑异步和削峰。每加一个组件,都回头压一下之前的接口,看看哪里会先出问题。

另外,练习时别只满足于功能跑通。同一个接口,试着想想如果在本地模拟几百个并发请求,会先卡在数据库、缓存还是应用线程上。这种自问自答,比多写几个 CRUD 有用。缺什么补什么,看不懂的部分就停下来查,不用硬着头皮往下翻。

SpringBoot2 仿B站高性能前端+后端项目

课程详情

课程介绍

本课程将带领学员从零开始,打造一个功能齐全、性能优异的仿B站(哔哩哔哩)平台,涵盖前端界面开发与后端服务搭建。通过实战演练,学员将深入掌握SpringBoot2框架的核心技术,以及前后端分离开发模式下的高性能解决方案。

适合人群

  • 具备Java基础和Web开发入门知识,想提升实战能力的开发者;
  • 熟悉前端HTML、CSS、JavaScript,希望学习前后端分离项目开发的程序员;
  • 对视频网站架构、高性能系统设计感兴趣的技术爱好者;
  • 计划从事Java后端开发,需要积累企业级项目经验的学习者。

核心技术栈

后端技术

  • 框架:SpringBoot2.7、SpringMVC、SpringSecurity
  • 持久层:MyBatis-Plus、MySQL8.0
  • 缓存:Redis(分布式缓存、热点数据存储)
  • 消息队列:RabbitMQ(异步处理视频转码、弹幕发送)
  • 搜索引擎:Elasticsearch(视频搜索、全文检索)
  • 存储:MinIO(对象存储,视频、图片文件管理)
  • 其他:JWT(身份认证)、FFmpeg(视频转码)、Docker(容器化部署)

前端技术

  • 框架:Vue3、Vite、Pinia(状态管理)
  • UI组件库:Element Plus
  • 视频播放:Video.js(支持弹幕、倍速播放)
  • 网络请求:Axios
  • 构建工具:Webpack

项目亮点

  • 高性能架构设计:采用Redis缓存热点视频数据,减少数据库访问压力;使用RabbitMQ异步处理视频转码和弹幕存储,提升系统响应速度。
  • 分布式部署支持:通过Docker容器化部署应用,结合Nginx实现负载均衡,可轻松扩展服务节点。
  • 安全机制完善:基于SpringSecurity和JWT实现用户认证与授权,防止越权访问;对上传文件进行校验,防范恶意文件攻击。
  • 用户体验优化:前端采用Vue3+Element Plus构建响应式界面,支持移动端适配;实现视频预加载、弹幕实时显示等功能,提升用户交互体验。

学习收获

  • 掌握SpringBoot2框架在实际项目中的应用,包括配置管理、依赖注入、AOP等核心特性;
  • 理解前后端分离架构下的数据交互方式,熟练使用RESTful API设计规范;
  • 学会使用Redis、RabbitMQ等中间件解决高性能、高并发场景下的技术难题;
  • 积累视频网站类项目的开发经验,了解视频存储、转码、流式播放等专业技术;
  • 掌握分布式系统的基本设计思想和部署方法,为进阶学习打下基础。

课程目录

第1章 课程介绍(第七章有前端项目展示试看小节)
  1-1 课程导学.mp4
  1-2 学习方法介绍.mp4
  1-3 资源的下载和使用.mp4
第2章 从搭建环境开始你的仿哔哩哔哩项目(初入江湖)
  2-1 本章导学.mp4
  2-2 项目结构讲解.mp4
  2-3 开发环境说明.mp4
  2-4 创建多模块、多环境项目.mp4
  2-5 配置JDK与Maven.mp4
  2-6 运行你的仿哔哩哔哩后端项目.mp4
  2-7 搭建数据库与持久层框架( 一).mp4
  2-8 搭建数据库与持久层框架( 二).mp4
  2-9 效率提升:实现热部署.mp4
第3章 从用户功能体验后端经典开发模式(窥得门路)
  3-1 用户模块开发概要-Restful风格接口设计(上).mp4
  3-2 用户模块开发概要-Restful风格接口设计(中).mp4
  3-3 用户模块开发概要-Restful风格接口设计(下).mp4
  3-4 通用功能与配置(上).mp4
  3-5 通用功能与配置(中)-.mp4
  3-6 通用功能与配置(下).mp4
  3-7 用户注册与登录:数据库表设计.mp4
  3-8 用户注册与登录:接口开发(上).mp4
  3-9 用户注册与登录:接口开发(中).mp4
  3-10 用户注册与登录:接口开发(下).mp4
  3-11 基于JWT的用户token验证(上).mp4
  3-12 基于JWT的用户token验证(中).mp4
  3-13 基于JWT的用户token验证(下).mp4
  3-14 用户登录功能升级(上).mp4
  3-15 用户登录功能升级(下).mp4
  3-16 第三章作业1
  3-17 条件更新用户基本信息.mp4
  3-18 用户关注与动态提醒.mp4
  3-19 添加用户关注(上 ).mp4
  3-20 添加用户关注(下 ).mp4
  3-21 获取用户关注列表.mp4
  3-22 获取用户粉丝列表.mp4
  3-23 添加与获取用户关注分组(上 ).mp4
  3-24 添加与获取用户关注分组(下 ).mp4
  3-25 安装配置RocketMQ与Redis
  3-26 订阅发布模式.mp4
  3-27 动态提醒实现方式.mp4
  3-28 生产者与消费者(一 ).mp4
  3-29 生产者与消费者(二 ).mp4
  3-30 新增用户动态.mp4
  3-31 消费用户动态.mp4
  3-32 查询订阅动态.mp4
  3-33 RBAC用户权限控制.mp4
  3-34 权限控制准备工作.mp4
  3-35 操作权限&菜单权限.mp4
  3-36 测试权限接口.mp4
  3-37 Spring AOP切面编程.mp4
  3-38 接口权限控制(一 ).mp4
  3-39 接口权限控制(二 ).mp4
  3-40 数据权限控制.mp4
  3-41 添加用户默认角色.mp4
  3-42 双令牌实现登录升级.mp4
  3-43 第三章作业2
第4章 打造高性能的视频与弹幕系统(高手进阶)
  4-1 视频与弹幕功能开发概要.mp4
  4-2 FastDFS文件服务器.mp4
  4-3 nginx反向代理.mp4
  4-4 搭建fastdfs文件服务器
  4-5 SpringBoot整合FastDFS.mp4
  4-6 断点续传(上).mp4
  4-7 断点续传(下).mp4
  4-8 文件分片.mp4
  4-9 测试断点续传.mp4
  4-10 秒传.mp4
  4-11 秒传测试.mp4
  4-12 视频投稿.mp4
  4-13 瀑布流视频列表.mp4
  4-14 视频在线播放(一 ).mp4
  4-15 视频在线播放(二 ).mp4
  4-16 第四章作业1
  4-17 视频点赞.mp4
  4-18 视频收藏.mp4
  4-19 视频投币.mp4
  4-20 视频评论.mp4
  4-21 视频详情.mp4
  4-22 弹幕系统设计.mp4
  4-23 SpringBoot整合WebSocket.mp4
  4-24 多例模式的Bean注入.mp4
  4-25 弹幕系统实现.mp4
  4-26 弹幕系统测试.mp4
  4-27 弹幕推送性能优化.mp4
  4-28 弹幕异步存储.mp4
  4-29 在线人数统计.mp4
  4-30 弹幕查询.mp4
  4-31 本章总结
第5章 从全局的角度出发打造你的系统(把控全局)
  5-1 系统全局开发概要.mp4
  5-2 ElasticSearch数据解决方案.mp4
  5-3 搭建ElasticSearch与Kibana
  5-4 SpringBoot整合ElasticSearch.mp4
  5-5 ElasticSearch测试.mp4
  5-6 全文搜索.mp4
  5-7 全文搜索测试.mp4
  5-8 观看记录.mp4
  5-9 内容推荐.mp4
  5-10 弹幕遮罩.mp4
第6章 课程回顾与能力提升(游刃有余)
  6-1 本课程回顾.mp4
  6-2 自动化部署.mp4
  6-3 搭建jenkins实现自动化部署
  6-4 分布式开发Spring Cloud.mp4
  6-5 搭建Eureka服务端.mp4
  6-6 客户端服务注册.mp4
  6-7 微服务间的调用.mp4
  6-8 断路器.mp4
  6-9 断路器测试.mp4
  6-10 路由网关.mp4
第7章 启程 - 从零到Vue.js
  7-1 项目效果展示.mp4
  7-2 学习内容介绍.mp4
  7-3 本章导学.mp4
  7-4 安装配置Node.js.mp4
  7-5 VUE简介.mp4
  7-6 使用VUE CLI创建项目.mp4
  7-7 本地启动项目.mp4
第8章 Vue 2 的奥秘 - 深入核心
  8-1 本章导学.mp4
  8-2 Vue2的核心.mp4
  8-3 Vue的入口:main.mp4
  8-4 VUE文件的组成.mp4
  8-5 你的第一个HelloWorld:前置准备工作.mp4
  8-6 你的第一个HelloWorld:页面结构搭建.mp4
  8-7 你的第一个HelloWorld:Less预处理器.mp4
  8-8 你的第一个HelloWorld:完成页面样式-.mp4
  8-9 数据绑定与差值语法.mp4
  8-10 单向数据绑定与双向数据绑定.mp4
  8-11 事件处理与方法.mp4
  8-12 计算属性.mp4
  8-13 生命周期:创建和挂载.mp4
  8-14 生命周期:更新和销毁.mp4
  8-15 路由管理神器:Vue Router.mp4
第9章 Axios - 数据请求与处理
  9-1 Axios简介与特点.mp4
  9-2 安装与配置Axios.mp4
  9-3 使用Axios发起HTTP请求.mp4
  9-4 Promise异步处理模式.mp4
  9-5 async+await异步处理模式.mp4
  9-6 请求响应拦截器.mp4
  9-7 本章小结.mp4
第10章 ElementUI-提效神器
  10-1 ElementUI简介.mp4
  10-2 安装与配置ElementUI.mp4
  10-3 ElementUI的基本使用.mp4
  10-4 CommonHeader案例:下拉菜单.mp4
  10-5 显示和隐藏对话框.mp4
  10-6 popover弹出框.mp4
  10-7 图标按钮与路由跳转.mp4
  10-8 走马灯.mp4
  10-9 导航菜单(上)功能搭建.mp4
  10-10 导航菜单(下)嵌套路由.mp4
第11章 CSS-掌握样式设计
  11-1 本章导学.mp4
  11-2 布局控制:常用属性.mp4
  11-3 Flex布局.mp4
  11-4 空间控制:常用属性.mp4
  11-5 空间控制:应用.mp4
  11-6 字体控制.mp4
  11-7 grid 布局.mp4
  11-8 解决间距问题.mp4
第12章 首页 - 用户体验的前台
  12-1 本章导学.mp4
  12-2 通用导航:结构搭建.mp4
  12-3 通用导航:样式调整(上).mp4
  12-4 通用导航:样式调整(下).mp4
  12-5 分区导航.mp4
  12-6 视频卡片(一).mp4
  12-7 视频卡片(二).mp4
  12-8 无限加载.mp4
  12-9 样式穿透.mp4
  12-10 混入mixin.mp4
  12-11 完善右侧导航.mp4
  12-12 登录Dialog:结构搭建.mp4
  12-13 登录dialog:接口联调.mp4
  12-14 数据共享:Vuex.mp4
第13章 视频亮相 - 视频内容的魔法
  13-1 本章导学.mp4
  13-2 视频投稿:结构样式搭建.mp4
  13-3 选择与拖拽视频.mp4
  13-4 分片上传视频.mp4
  13-5 截取视频封面.mp4
  13-6 视频投稿.mp4
  13-7 视频详情页信息搭建.mp4
  13-8 视频播放器.mp4
  13-9 点赞、投币、收藏(上).mp4
  13-10 点赞、投币、收藏(下).mp4
  13-11 视频描述&标签.mp4
  13-12 视频评论:未登录评论区.mp4
  13-13 视频评论:一级评论(一).mp4
  13-14 视频评论:一级评论(二).mp4
  13-15 视频评论:二级评论.mp4
  13-16 视频评论:提交回复评论.mp4
第14章 弹幕 - 实时互动的魅力
  14-1 本章导学.mp4
  14-2 弹幕顶部up信息栏.mp4
  14-3 播放器发送弹幕.mp4
  14-4 通过websocket连接后端.mp4
  14-5 使用手风琴和表格构建弹幕盒子.mp4
  14-6 获取和装填弹幕.mp4
第15章 个人中心 - 用户专属的空间
  15-1 本章导学.mp4
  15-2 结构与路由配置.mp4
  15-3 修改用户头像.mp4
  15-4 个人中心导航栏.mp4
  15-5 展示与修改个人信息.mp4
  15-6 投稿:分区统计.mp4
  15-7 投稿:视频分页控制.mp4
  15-8 收藏展示和取消、分组移动.mp4
  15-9 个人中心主页.mp4
  15-10 关注导航栏.mp4
  15-11 关注分页展示及分组修改.mp4
  15-12 注册登录页.mp4
第16章 终章:系统完善 - 提高全面性
  16-1 、本章导学.mp4
  16-2 动态:未登录状态.mp4
  16-3 动态弹窗与json类型转换器.mp4
  16-4 发布图文动态.mp4
  16-5 tab切换形式下的无限加载动态.mp4
  16-6 历史记录.mp4
  16-7 搜索:整体结构搭建.mp4
  16-8 视频搜索:结构搭建.mp4
  16-9 视频搜索分页排序.mp4
  16-10 用户搜索.mp4
  16-11 视频推荐.mp4
  16-12 课程总结.mp4