大二毕设.3-网盘系统

2023-09-21 17:08:30

目录

技术选型:

功能概括:

基本演示:

实现讲解:


  • 技术选型:

  • 前端: Vue3 + Element Plus
  • 后端: SpringBoot + Mybatis-Plus + MySQL + Redis + Caffeine + FastDFS/OSS + SpringCloud Stream + RocketMQ + Zookeeper
  • 功能概括:

  • 用户模块
    • 用户注册
      • 接口幂等性
      • 全局唯一的用户名称
    • 用户登录
      • 使用缓存实现单机登录
      • 使用jwt token实现时效性以及分布式的问题
    • 用户登出
    • 用户忘记密码
      • 校验用户名称
      • 校验用户密保问题的答案
      • 修改用户密码
    • 用户在线修改密码
      • 校验旧密码
      • 修改密码
    • 查询用户的基本信息
  • 文件模块
    • 文件列表查询
      • 聚簇索引和非聚簇索引
      • 回表查询
      • 最左前缀原则
      • 覆盖索引
    • 创建文件夹
    • 文件重命名
    • 文件删除
      • 文件删除事件
    • 文件秒传
    • 抽象文件存储引擎
    • 单文件上传
      • sendfile零拷贝
    • 分片上传
      • 上传文件分片
      • 查询已上传的分片列表
      • 文件分片合并
    • 单文件下载
      • sendfile零拷贝
    • 单文件预览
      • sendfile零拷贝
    • 查询文件夹树
      • Map代替递归操作
    • 文件转移
    • 文件复制
    • 文件搜索
      • 半模糊匹配查询
      • 文件搜索事件
    • 查询用户的搜索历史
    • 查询面包屑导航
    • 对接FastDFS
    • 对接OSS
      • 分片上传事件
  • 回收站模块
    • 查询回收站列表
      • 覆盖索引优化查询效率
    • 还原回收站文件
      • 权限校验
      • 文件名称冲突检测
      • 后续还原事件发布
    • 彻底删除回收站文件
      • 递归查询所有子文件
      • 发布文件彻底删除事件
    • 废弃文件清理器
      • 业务解耦,增加程序的健壮性
  • 分享模块
    • 创建分享链接
    • 查询分享链接列表
    • 批量取消分享
      • 权限校验
      • 执行动作
    • 查询分享详情
    • 校验分享码
      • 生成校验通过token
    • 统一拦截需要校验分享码的接口
      • 面向切面编程
    • 获取下一级的文件列表
      • 利用覆盖索引来优化查询效率
    • 保存至我的网盘
      • 底层使用文件复制的功能实现
    • 分享文件下载
      • 利用senfile零拷贝技术优化传输速率
    • 完善监听机制
      • 文件删除刷新分享状态
      • 文件还原刷新分享状态
    • 优化所有监听器
      • 使用Spring的异步机制
  • 缓存模块
    • 本地缓存-caffeine
    • 外部缓存-Redis
    • 布隆过滤器
  • 分布式锁
    • Redis
    • ZooKeeper
  • 事件流Stream集成RocketMQ解耦合
  • 基本演示:

  • 用户基本演示:

  • 文件&回收站&分享基本演示:

  • 实现讲解:

更多推荐

二叉树的概念、存储及遍历

一、二叉树的概念1、二叉树的定义二叉树(binarytree)是n个结点的有限集合,该集合或为空集(空二叉树),或由一个根结点与两棵互不相交的,称为根结点的左子树、右子树的二叉树构成。二叉树的特点是:(1)每个结点最多有两棵子树,故二叉树中不存在度大于2的结点。(2)二叉树是有序的,其次序不能任意颠倒,即使树中的某个结

利用Socks5代理IP加强跨界电商爬虫的网络安全

随着跨界电商的兴起,爬虫技术在这个领域变得越来越重要。然而,网络安全一直是一个值得关注的问题。在本文中,我们将讨论如何利用代理IP和Socks5代理来增强跨界电商爬虫的网络安全,确保稳定和可靠的数据采集,同时避免封禁和风险。背景跨界电商是一个竞争激烈的领域,市场上的商品信息和价格常常会变动。为了保持竞争力,电商企业需要

CFGPT: Chinese Financial Assistant with Large Language Model

本文是LLM系列文章,针对《CFGPT:ChineseFinancialAssistantwithLargeLanguageModel》的翻译。CFGPT:大型语言模型的中文财务助理摘要1引言2相关工作3数据集4模型和训练5应用6结论摘要大型语言模型(LLM)在金融领域的自然语言处理任务中显示出巨大的潜力。在这项工作中

医疗虚拟仿真和虚拟现实有什么区别?哪个更好?

随着我们在仿真教育中越来越多地使用新技术,区分虚拟模式的类型很重要。虚拟仿真是一个统称,用来概括术语来描述各种基于仿真的体验,从基于屏幕的平台到沉浸式虚拟现实。然而,各虚拟平台在保真度、沉浸感和临场感的水平上有很大差异。医疗教育中存在许多虚拟解决方案的空间,对于护理虚拟仿真课程来说,没有"一刀切"的模式。在此就给大家介

如何完美通过token获取用户信息(springboot)

1.什么是Token?身份验证令牌(AuthenticationToken):在身份验证过程中,“token”可以表示一个包含用户身份信息的令牌。例如Token(JWT)是一种常见的身份验证令牌,它包含用户的身份信息(例如用户名或用户ID)以及其他相关信息,如权限或过期时间。无意义令牌token,这种一般在获取后通过n

芯片SoC设计你了解吗?

数字IC设计根据岗位性质一般包含SOC设计,前端设计,ASIC设计,逻辑设计,IP设计,CPU设计等。有人说:做IP设计就是翻译官,做SOC设计就是连连看。SoC设计是做什么的?与IP设计有什么不同?IP设计工程师每天的工作,编码,debug,接口定好了,时钟只给一个,内部不让分频。不用做过异步处理。按照公司的编码规范

js实现短信验证码一键登录

前言短信验证码一键登录是一种方便快捷的登录方式,用户只需输入手机号码,然后接收到手机短信验证码并自动填入验证码框,即可完成登录操作。本文将介绍短信验证码一键登录的原理,并给出一个简单的示例说明。短信验证码一键登录的原理用户输入手机号码:用户在登录界面输入手机号码,并点击获取验证码按钮。发送验证码:前端通过API向后端发

Linux--线程(与进程区别)

Linux线程1、线程与进程进程可以看成只有一个控制线程:一个进程同时只做一件事情。有了多个控制线程后,可以把进程设计成在同一时刻做不止一件事,每个线程各自处理独立的任务。进程是程序执行时的一个实例,是分配系统资源(CPU时间、内存等)的基本单位。进程本身不是基本运行单位,而是线程的容器。一个进程可以拥有多个线程。进程

【智能家居-大模型】行业专题报告:ChatGPT等大模型催化智能家居行业发展

(报告出品方/作者:华安证券,马远方)1智能家居:ChatGPT等大模型为行业发展带来新机遇1.1现状:智能家居产品的用户体验(交互能力、智能化水平)及安全性待提升智能家居:智能化的家庭系统,增加生活便利、舒适、安全。智能家居是指通过互联网技术和智能设备,将家庭设备、家庭电器、家庭安全等各种家居设施连接,实现智能控制、

计算机竞赛 深度学习+python+opencv实现动物识别 - 图像识别

文章目录0前言1课题背景2实现效果3卷积神经网络3.1卷积层3.2池化层3.3激活函数:3.4全连接层3.5使用tensorflow中keras模块实现卷积神经网络4inception_v3网络5最后0前言🔥优质竞赛项目系列,今天要分享的是🚩**基于深度学习的动物识别算法**该项目较为新颖,适合作为竞赛课题方向,学

Servlet

1Servlet1.1概念Servlet是JavaEE规范之一。规范就是接口Servlet是JavaWeb三大组件之一。三大组件分别是:Servlet程序、Filter过滤器、Listener监听器。Servlet服务于HTTP协议的服务端的一个小程序,“接收请求,解析请求,根据请求执行业务逻辑,做出响应”1.2实现功

热文推荐