SpringBoot+Vue3+Element Plus 打造分布式存储系统(完结)
数据存取与安全是数据时代的基石,个人隐私现在愈发重要,拥有属于自己的高安全性存储系统迫在眉睫。本课程将带你从项目设计、实现、优化、压力与并发安全测试、部署上线全流程打造业务俱全的网盘系统,并解决数据存储安全问题。助力你实现复杂业务与全栈技术双重提升,大大提升毕设通过率,求职面试通过率,升职加薪成功率。
适合人群
1-3年工程师
缺乏项目经历的IT工作者
想从面试脱颖而出的
应届毕业生或者求职者
技术储备
前端基础语法
SpringBoot、SSM框架
SQL基础
Java基础
环境参数
SpringBoot 2.1.9 MyBatis-Plus 3.3.2
MySQL 8.0 OSS 2.8.3
FastDFS 1.26.1 Spring Cache 5.1.8
Spring Integration 5.1.8
目录大纲:
第1章 课程导学 试看3 节 | 34分钟
本章主要是项目的介绍,包括项目解决的痛点问题、项目的学习收获、项目的特色特点。后面会细粒度的针对项目的完整演示、技术和业务架构、涉及思想等内容做一个全面介绍。
收起列表
视频:
1-1 网盘课程导学 (10:31)
试看
视频:
1-2 成品演示 (17:50)
试看
视频:
1-3 项目架构设计 (05:12)
第2章 项目初始化 试看13 节 | 222分钟
本章主要是项目脚手架的搭建环节。主要包括代码仓库的初始化,项目模块架构的设计与实现,接口文档模块、公用校验器模块、全局异常的定义与处理模块、项目热部署模块、项目打包模块、ORM模块等模块的初始化,数据库的安装以及初始化脚本介绍等等 …
收起列表
视频:
2-1 网盘项目初始化概要 (01:36)
试看
视频:
2-2 jdk、Maven、git配置以及初始化空白项目(一) (15:10)
视频:
2-3 jdk、Maven、git配置以及初始化空白项目(二) (11:11)
视频:
2-4 基于SpringBoot初始化项目 (51:33)
视频:
2-5 配置接口文档生成利器-swagger2 (26:14)
视频:
2-6 配置项目入参校验器-validator (17:47)
视频:
2-7 自定义异常定义与全局处理 (12:55)
视频:
2-8 配置项目打包模块-assembly (19:02)
视频:
2-9 配置IDEA热部署-devtools (05:32)
视频:
2-10 安装 MySQL (09:45)
视频:
2-11 配置数据库预热 (13:33)
视频:
2-12 制作项目代码生成器-mybatis-plus-generator (33:44)
视频:
2-13 第二章 总结 (03:27)
第3章 开发项目缓存6 节 | 115分钟
本章主要是设计和开发项目关于缓存的模块。包括缓存的理论基础、缓存的模块搭建设计、集成Caffeine本地缓存、Redis软件的介绍和安装、集成Redis分布式缓存、SpringCache的源码解析等等内容。该模块是独立的技术模块,跟业务模块完全抽离,业务模块仅仅依赖最顶级抽象去调用,完全屏蔽了具体的技术实现,在根本上解决了技术…
收起列表
视频:
3-1 为什么总是缓存-导学 (03:55)
视频:
3-2 缓存架构设计 (16:51)
视频:
3-3 搭建缓存模块 (32:46)
视频:
3-4 实现本地缓存-caffeine (32:42)
视频:
3-5 安装Redis并测试 (10:34)
视频:
3-6 实现外部缓存-Redis (17:22)
第4章 开发定时模块3 节 | 56分钟
本章主要是设计和开发项目的定时模块。该项目的定时模块是在Spring的基础上设计和搭建的一个可零停机自由编排定时任务的定时模块。该模块主要包含了CRON表达式的讲解与应用,定时器模块的抽象设计,零停机启动、停止、重启定时任务等内容。…
收起列表
视频:
4-1 为什么要自己开发定时模块 (03:19)
视频:
4-2 强大且灵活的规则-CRON表达式 (04:57)
视频:
4-3 实现零重启自由编排任务的定时管理器 (46:45)
第5章 开发用户模块15 节 | 223分钟
从本章开始,进入到项目的业务开发阶段。本章主要针对用户模块进行业务的设计和开发,其中的业务点主要包括用户注册、登录、登出、忘记密码以及在线修改密码登用户相关的功能。其中涉及的业务难点为生成全局唯一的ID、保证全局唯一的用户名称、利用切面来拦截未登录的访问等等,针对各个业务模块和技术难点都有详细的解决方…
收起列表
视频:
5-1 用户模块-导学 (03:02)
视频:
5-2 实现高并发幂等用户注册接口-唯一索引(一) (15:26)
视频:
5-3 实现高并发幂等用户注册接口-唯一索引(二) (15:13)
视频:
5-4 实现高并发幂等用户注册接口-唯一索引(三) (14:24)
视频:
5-5 实现高并发幂等用户注册接口-唯一索引(四) (14:50)
视频:
5-6 实现高并发幂等用户注册接口-唯一索引(五) (18:33)
视频:
5-7 利用缓存实现用户单机登录.mp4_音频 (30:12)
视频:
5-8 用户登出 功能实现 (08:58)
视频:
5-9 全局登录校验器-切面定义与实现 (25:11)
视频:
5-10 用户忘记密码-校验用户名 (12:05)
视频:
5-11 用户忘记密码-校验密保答案 (13:31)
视频:
5-12 用户忘记密码-重置密码 (16:18)
视频:
5-13 用户在线修改密码 (17:15)
视频:
5-14 查询用户的基本信息 (14:36)
视频:
5-15 第五章 总结 (03:07)
第6章 开发文件模块43 节 | 734分钟
本章为网盘项目内容最多,也是最核心的业务模块。其中涉及的功能点有很多,包括文件列表查询、搜索、文件夹的创建、文件重命名、单文件上传、文件分片上传、文件下载、预览等等。除了业务模块之外,还会像缓存等等技术模块一样单独抽离一个文件存储引擎技术模块,并针对文件的操作做顶级的抽象和实现,并集成本地的高性能文…
收起列表
视频:
6-1 文件模块导学 (03:47)
视频:
6-2 实现高性能文件列表查询-覆盖索引(一) (17:15)
视频:
6-3 实现高性能文件列表查询-覆盖索引(二) (18:03)
视频:
6-4 创建新文件夹功能实现 (12:02)
视频:
6-5 支持文件重命名 (24:11)
视频:
6-6 文件放入回收站并发布事件 (29:10)
视频:
6-7 利用文件唯一标识实现秒传功能(一) (14:22)
视频:
6-8 利用文件唯一标识实现秒传功能(二) (19:00)
视频:
6-9 抽象文件存储引擎(一) (04:11)
视频:
6-10 抽象文件存储引擎(二) (11:21)
视频:
6-11 实现高性能单文件下载和预览-sendfile零拷贝(一) (12:18)
视频:
6-12 实现高性能单文件下载和预览-sendfile零拷贝(二) (18:33)
视频:
6-13 实现高性能单文件下载和预览-sendfile零拷贝(三) (24:45)
视频:
6-14 实现高性能单文件下载和预览-sendfile零拷贝(四) (25:38)
视频:
6-15 为什么要分片上传? (05:28)
视频:
6-16 实现分片上传-分片上传(一) (25:24)
视频:
6-17 实现分片上传-分片上传(二) (31:47)
视频:
6-18 实现分片上传-分片检查 (19:31)
视频:
6-19 实现分片上传-分片合并(一) (23:49)
视频:
6-20 实现分片上传-分片合并(二) (18:01)
视频:
6-21 实现分片上传-分片合并(三) (17:00)
视频:
6-22 实现高性能单文件下载(一) (28:12)
视频:
6-23 实现高性能单文件下载(二) (12:34)
视频:
6-24 实现高性能单文件预览 (05:03)
视频:
6-25 优雅查询文件夹树-利用HashMap替代递归查询 (28:37)
视频:
6-26 实现批量转移文件 (32:36)
视频:
6-27 实现批量复制文件 (17:52)
视频:
6-28 高效文件搜索查询-半模糊匹配关键字 (32:26)
视频:
6-29 实现查询面包屑列表 (17:36)
视频:
6-30 准备对接中小文件最流行的分布式文件服务-FastDFS (15:07)
视频:
6-31 实现集成fastdfs的文件处理器 (27:01)
视频:
6-32 准备对接国内最流行的对象存储服务-阿里OSS (18:02)
视频:
6-33 实现集成阿里OSS的文件处理器-单文件上传 (12:12)
视频:
6-34 实现集成阿里OSS的文件处理器-文件分片上传(一) (17:14)
视频:
6-35 实现集成阿里OSS的文件处理器-文件分片上传(二) (19:48)
视频:
6-36 实现集成阿里OSS的文件处理器-文件分片合并 (08:31)
视频:
6-37 实现集成阿里OSS的文件处理器-文件删除 (06:04)
视频:
6-38 实现集成阿里OSS的文件处理器-文件读取 (05:04)
视频:
6-39 实现集成阿里OSS的文件处理器-单元测试 (08:12)
视频:
6-40 利用SpringBoot的CommandLineRunner初始化项目需要的资源-本地文件存储引擎初始化器 (10:47)
视频:
6-41 利用SpringBoot的CommandLineRunner初始化项目需要的资源-OSS存储引擎初始化器 (06:37)
视频:
6-42 利用文件支撑定时任务使服务更稳定 (24:29)
视频:
6-43 第六章小结 (03:53)
第7章 开发回收站模块8 节 | 97分钟
本章主要是实现网盘项目的回收站模块的业务。本章在上一章的基础上增加了回收站的功能,并针对特殊业务,比如文件的删除与恢复做了异步化的事件消息,保证其他模块业务的数据及时修正(如分享模块),并针对无用的真是文件做了异步清理,保障了磁盘的有效利用。…
收起列表
视频:
7-1 回收站模块导学 (01:56)
视频:
7-2 后悔药瓶-删除的文件列表 (14:15)
视频:
7-3 吃下后悔药-文件还原(一) (21:34)
视频:
7-4 吃下后悔药-文件还原(二) (12:12)
视频:
7-5 丢弃后悔药-文件清除(一) (13:24)
视频:
7-6 丢弃后悔药-文件清除(二) (13:01)
视频:
7-7 开发废弃文件清理器 (17:28)
视频:
7-8 第七章 总结 (02:25)
第8章 开发分享模块18 节 | 285分钟
本章主要是实现网盘项目关于分享相关的业务。包含分享的创建、查看、切面校验分享码权限、转存、文件列表查询等等功能,并会完善前面章节针对文件操作的事件消费,保障分享的状态会根据文件状态的变化而变化,利用事件订阅模型解耦不同的业务模块,降低了模块间的耦合度,提高了整体系统的稳定性。…
收起列表
视频:
8-1 分享模块导学 (02:30)
视频:
8-2 let’s share-发起分享(一) (17:13)
视频:
8-3 let’s share-发起分享(二) (37:01)
视频:
8-4 let’s share-发起分享(三) (05:11)
视频:
8-5 看看我们分享了什么 (13:22)
视频:
8-6 算了算了-取消分享 (14:12)
视频:
8-7 校验分享码 (22:55)
视频:
8-8 利用切面拦截校验分享码- (12:15)
视频:
8-9 查看分享详情(一) (19:17)
视频:
8-10 查看分享详情(二) (13:00)
视频:
8-11 查看分享简单详情 (12:50)
视频:
8-12 获取下一级的文件列表(一) (15:33)
视频:
8-13 获取下一级的文件列表(二) (13:17)
视频:
8-14 分享文件保存到我的R盘 (14:24)
视频:
8-15 高速分享文件下载-sendfile (09:23)
视频:
8-16 实现分享状态刷新处理器 (31:00)
视频:
8-17 使用异步机制优化所有的监听器 (27:27)
视频:
8-18 第八章 总结 (03:55)
第9章 项目实现功能就可以吗6 节 | 47分钟
该章节主要是理论章节,讲述了我们在真实项目中,缓存的使用以及注意事项,生产常见的问题以及解决方案。此外,还针对目前的分布式环境的数据一致性的问题,从理论上讲解了业务常见的问题以及针对该问题业界常见的解决方案。为后续章节的具体方案实战打一个基础。…
收起列表
视频:
9-1 项目优化实战理论-导学 (01:49)
视频:
9-2 项目的持续迭代会带来哪些问题 (08:49)
视频:
9-3 项目的性能问题 (11:04)
视频:
9-4 项目的并发安全性问题 (11:14)
视频:
9-5 项目的架构演变过程和问题 (10:41)
视频:
9-6 第九章 总结 (02:53)
第10章 利用缓存提升项目的QPS14 节 | 215分钟
该章节主要针对项目缓存做了生产级别的实战演练。针对功能点的QPS优化做了数据库级别、缓存级别各个级别的优化实战以及压测数据展示。并针对引入缓存的常见缓存的穿透、击穿和雪崩做了业界常用解决方案的讲解与实战。
收起列表
视频:
10-1 项目性能优化-导学 (06:32)
视频:
10-2 项目缓存的设计与准备 (14:15)
视频:
10-3 项目引入缓存的抽象实现 (21:30)
视频:
10-4 项目引入缓存的抽象实现_Sub_01 (25:31)
视频:
10-5 项目引入缓存实战(1) (19:40)
视频:
10-6 项目引入缓存实战(2) (11:48)
视频:
10-7 压测工具-JMeter的介绍与安装 (09:27)
视频:
10-8 压测简单分享详情实战 (26:15)
视频:
10-9 解决缓存的穿透的利器-布隆过滤器 (06:34)
视频:
10-10 实现本地布隆过滤器模块(一) (19:56)
视频:
10-11 实现本地布隆过滤器模块(二) (12:57)
视频:
10-12 集成布隆过滤器实战(一) (17:38)
视频:
10-13 集成布隆过滤器实战(二) (19:44)
视频:
10-14 第十章 总结 (03:11)
第11章 利用分布式锁提升项目的并发安全10 节 | 119分钟
该章节主要针对项目分布式锁做了生产级别的实战演练。并根据集成的中间件做了特点讲解以及常见问题的解决方案。
收起列表
视频:
11-1 项目安全优化-导学 (03:06)
视频:
11-2 搭建锁模块(一) (18:15)
视频:
11-3 搭建锁模块(二) (20:04)
视频:
11-4 搭建锁模块(三) (13:51)
视频:
11-5 实现本地锁-ReentrantLock (16:47)
视频:
11-6 实现分布式锁-Redis (10:31)
视频:
11-7 分布式系统的管理员-ZooKeeper (17:45)
视频:
11-8 实现分布式锁-ZooKeeper (10:17)
视频:
11-9 项目集成分布式锁实战 (06:18)
视频:
11-10 第十一章 总结 (01:45)
第12章 利用MQ降低项目模块的耦合度8 节 | 105分钟
之前的章节只是利用了Spring的时间发布订阅模式集成了一个项目的额发布订阅模型。在业务功能解耦上起到了很大的作用,但是还是有很大的代码侵入性。本章节针对事件订阅抽象出一套时间发布订阅的技术框架,并针对之前的业务代码做改造,集成最顶级的抽象。底层利用Spring的发布订阅模型搭建项目本地的实现方案,并集成Rocket…
收起列表
视频:
12-1 利用MQ降低项目模块的耦合度-导学 (04:25)
视频:
12-2 事件流框架讲解-SpringCloud Stream (08:26)
视频:
12-3 创建事件流的核心模块 (19:09)
视频:
12-4 准备集成RocketMQ (18:39)
视频:
12-5 Stream集成RocketMQ (13:11)
视频:
12-6 项目集成Stream (19:11)
视频:
12-7 使用SpringCloud Stream改造事件通知机制 (19:30)
视频:
12-8 第十二章总结 (02:11)
第13章 前端项目介绍14 节 | 135分钟
本章节主要涉及前端项目的讲解,包括前端项目的模块划分、插件的集成、业务的具体实现、路由管理的实现方案、状态管理的实现方案、组件的封装等等。该前端项目是一个标准的VUE3的项目,该项目的架构也完全是按照商业级的产品模块划分水准来做,内容丰富,可学性极强。…
收起列表
视频:
13-1 前端项目介绍-导学 (03:31)
视频:
13-2 前端项目整体介绍 (21:04)
视频:
13-3 前端项目的核心路由神器-VUE Router (19:38)
视频:
13-4 前端项目的状态管理神器-pinia (11:36)
视频:
13-5 前端项目页面跳转流程解析 (09:30)
视频:
13-6 前端列表页面详解 (19:23)
视频:
13-7 前端预览页面详解 (06:34)
视频:
13-8 前端分享预览页面详解 (06:21)
视频:
13-9 准备前后端联调 (05:01)
视频:
13-10 前后端整体联调-用户模块 (13:54)
视频:
13-11 前后端整体联调-文件模块 (04:15)
视频:
13-12 前后端整体联调-回收站模块 (07:25)
视频:
13-13 前后端整体联调-分享模块 (03:42)
视频:
13-14 第十三章总结 (02:28)
第14章 项目的部署与发布10 节 | 93分钟
该章节主要介绍项目的持续集成阶段的完整流程。包括服务器的购买、域名的购买以及备案、软件的安装、NGINX的配置、Spug软件的介绍安装、持续发布流程的配置、发布实验、网站HTTPS化等等详细的步骤。为项目的后续健康状态的管理打下一个坚实的基础。…
收起列表
视频:
14-1 项目的部署与发布-导学 (03:25)
视频:
14-2 ECS服务器的购买与配置 (05:32)
视频:
14-3 域名的购买和备案 (05:14)
视频:
14-4 服务器安装软件(一) (11:56)
视频:
14-5 服务器安装软件(二) (09:17)
视频:
14-6 发布软件SPUG的介绍与安装 (12:18)
视频:
14-7 配置项目并测试发布 (20:47)
视频:
14-8 域名解析实战 (08:32)
视频:
14-9 HTTPS实战 (12:59)
视频:
14-10 第十四章 总结 (02:03)
第15章 开源项目的发展与参与1 节 | 11分钟
本章主要介绍开该实战项目开源组织的参与与开发的流程步骤以及注意事项。细节包括该组织的技术愿景,组织成员的选拔以及职责划分,项目后期的发展方向,捐赠分成等等注意事项,让大家充分了解并积极参与到后期的持续交流中来。…
收起列表
视频:
15-1 开源项目的发展与参与 (10:11)
第16章 课程总结1 节 | 18分钟
项目的总体总结章节,会回顾整体的课程内容,总结其中的精髓,愿同学们收获满满,前程似锦!
收起列表
视频:
16-1 课程总结 (17:37)
本课程已完结