当前位置: 首页 > article >正文

个人项目复习-云盘Day03

考点13大文件上传需求和常见问题普遍需求在云存储、视频分享、在线教育等领域用户上传大文件的需求日益普遍。核心挑战网络波动、不稳定性及客户端资源限制常给用户带来不佳体验传统整文件上传易因中断失败还会占用大量内存和宽带资源对用户设备和服务器造成负担。网络中断风险上传过程中网络不稳定或意外中断会导致整个上传任务失败用户需从头重新上传浪费时间和宽带。客户端资源消耗大文件上传会占用大量内存和宽带资源尤其在低配设备如移动设备上容易导致设备卡顿或资源耗尽。服务器负担若无有效的分片管理和断点续传机制大文件上传失败后服务器会存储许多不完整或重复的文件浪费存储资源并增加维护难度。用户体验不佳上传过程中缺乏实时反馈如进度条或因频繁失败而无法继续上传会严重影响用户的满意度和使用意愿。考点14大文件上传常见解决方案文件分片将大文件切成多个小的分片每个分片单独上传到服务器。此方式可提高上传的可靠性和效率尤其在网络环境不稳定时。分片的标识与管理为每个分片分配唯一标识如索引或哈希值以便前后端协作追踪上传状态和重建文件。分片大小的选择策略分片大小的选择需综合考虑网络条件、文件大小和服务器性能。通常分片大小在几 MB 到几十 MB 之间较为合适。分片文件合并文件上传到服务器临时存储空间等待全部分片上传完成后进行合并以生成最终文件。考点15断点续传分片上传的剩余风险网络中断风险上传过程中网络不稳定或意外中断仍可能导致整个文件上传失败用户需从头上传浪费时间和带宽。用户体验不佳上传过程缺乏实时反馈或因频繁失败无法继续严重影响用户满意度。断点续传的定义是一种在数据传输过程中若发送中断或失败可从中断位置继续传输的技术。避免从头重新传输文件节省时间、宽带和资源广泛应用于文件传输和下载以提高可靠性和效率。工作原理记录传输状态在数据传输过程中系统记录已成功传输的数据量或位置。避免从头重新传输节省时间、带宽和资源广泛应用于文件传输和下载以提高可靠性和效率。中断检测当数据传输中断时系统会检测到该情况并保存当前传输状态。中断可能由网络问题、客户端或服务器故障等原因引起。恢复传输传输恢复时系统读取之前保存的状态信息从中断点开始传输未完成的数据。减少重复传输部分提高传输效率。数据完整性校验为确保数据完整性客户端在恢复传输时可能进行数据校验如 MD5 校验确保已传输数据未损坏。大文件上传中断后的实现步骤文件分片将大文件分割成多个固定大小的片段如 2MB。上传请求客户端逐个发送片段上传请求附带片段和文件唯一标识。状态记录服务端接收片段记录上传状态到数据库。断点检测上传中断后客户端查询服务器已上传片段状态需查询已上传数据。续传处理从最后一个成功上传的片段继续上传剩余片段。文件合并所有片段上传完成后服务器合并片段生成完整文件。考点16大文件上传的交互流程前端传到服务器服务器再传到 Minio优点集中管理所有文件上传操作通过后端集中管理便于实现身份验证、权限控制、文件处理等业务逻辑。例如可在文件上传到 Minio 之前生成缩减图或提取元数据。安全性后端可作为中间层对上传文件进行安全检查和过滤防止恶意文件上传到 Minio。业务扩展逻辑可在文件上传过程中加入更多业务逻辑如文件内容预处理、格式转换。缺点性能压力后端服务器需处理文件中转增加服务器负载和响应时间。尤其对于大文件后端需先接收文件再传输到 Minio会显著增加延迟。单点故障若后端服务端出现故障整个文件上传流程将受影响即使 Minio 正常也无法完成上传。资源占用后端服务器需额外资源处理文件在高并发下易导致服务器资源紧张。前端直接传到 Minio优点减少延迟:前端直接上传文件到Minio,减少了文件在后端的中转时间,显著提高了上传效率减轻后端压力:后端服务器不需要处理文件的中转, 可以专注业务逻辑处理,减少服务器的负载高可用性:即使后端服务器出现故障,只要Minio服务器正常运行, 文件上传仍可以继续进行,提高了系统的高可用性缺点安全性前端直接上传到Minio,需要生成并返回一个有效事情的凭证增加了安全风险,需要确保上传凭证的安全性,防止被恶意利用权限控制虽然可以通过上传凭证实现一定程度的权限控制,但是相比后端集中管理,权限控制的灵活性和安全性可能会稍落业务逻辑限制前端直接上传文件到Minio, 后端无法在文件上传过程中加入复制的业务逻辑, 如文件内容的预处理, 格式转换等考点17大文件上传选择大文件分片上传基本原理文件上传: 将客户端的文件通过HTTP协议上传到服务器,并在服务器进行运行分片上传: 将大文件拆分为多个小模块,逐一上传,最后在服务器端进行整合前端实现使用HTML5的File API 和Blob 对象来读取文件并分割成小块使用AJAX技术将文件分块发送给后端,也可以采用其他方式优缺点对比原生方法:后端实现:使用javxa.servlet和javax.servlet.http 包中的类来处理文件上传获取request 对象中的文件夹, 通过getInputStream() 方法获取输入流, 将文件内容写入服务器上的位置优点灵活度高: 可以根据具体需求进行定制,列如断点续传,文件读取,分块,传输,合并缺点复杂度高: 需要手动处理文件的分块,传输,合并,代码复制度较高使用AWS-S3的API后端实现aws-java-sdk-s3 已经封装了相关API,直接调用即可包括初始化上传任务,查询已经传输的分片,获取临时上传的预签名地址,合并分片文件等相关API优点开发效率高: SDK提供了丰富的API, 简化了大文件上传的开发过程,利用现场的解决方法,具有良好的兼容性和稳定性缺点学习曲线: 需要学习AWS S3的API 和相关概念, 有一定的学习成本相关API//大文件分片上传相关接口 /** * 查询分片数据 * param bucketName 存储桶名称 * param objectKey 对象名称 * param uploadId 分片上传ID * return 分片列表对象 */ PartListing listMultipart(String bucketName, String objectKey, String uploadId); /** * 1-初始化分片上传任务,获取uploadId,如果初始化时有 uploadId说明是断点续传不能重新生成 uploadId * param bucketName 存储桶名称 * param objectKey 对象名称 * param metadata 对象元数据 * return 初始化分片上传结果对象包含uploadId等信息 */ InitiateMultipartUploadResult initMultipartUploadTask(String bucketName, String objectKey, ObjectMetadata metadata); /** * 2-生成分片上传地址返回给前端 * param bucketName 存储桶名称 * param objectKey 对象名称 * param httpMethod HTTP方法如GET、PUT等 * param expiration 签名过期时间 * param params 签名中包含的参数 * return 生成的预签名URL */ URL genePreSignedUrl(String bucketName, String objectKey, HttpMethod httpMethod, Date expiration, MapString,Object params); /** * 3-合并分片 * param bucketName 存储桶名称 * param objectKey 对象名称 * param uploadId 分片上传ID * param partETags 分片ETag列表用于验证分片的完整性 * return 完成分片上传结果对象 */ CompleteMultipartUploadResult mergeChunks(String bucketName, String objectKey, String uploadId, ListPartETag partETags);}考点18查看别人分享怎么开发需求通过别人分享的文件链接,查看对应分享的文件 (要先登录自己的网盘才可以)选择部分或全部分享文件, 或进入对应的文件夹, 转存到自己的网盘前后端交互逻辑和解决方案用户点击分享链接一般调用后台基本分享信息接口GET /api/share/v1/visit?shareTokenXXXX上述接口会返回基本分享信息包括是否需要提取码、分享人信息等前端根据返回的基本分享信息是否需要提取码分两个情况情况一免提取码基本分享信息里面带有 token请求头携带过去即可直接使用访问对应的分享文件调用GET /api/share/v1/detail接口访问短链之后进入文件列表情况二需要提取码基本分享信息里面无 token先进入提取码界面可以看到分享人信息输入提取码校验成功则后端会返回 token请求头携带过去即可直接使用访问对应的分享文件调用GET /api/share/v1/detail接口访问短链之后进入文件列表进入分享文件的子文件则统一调用接口GET /api/share/v1/list_share_file需要携带 token考点19自定义注解的基础知识起源JDK 1.5 引入用于补充元数据MetaData替代传统配置文件。作用代码里的特殊标记常见如Override重写、Deprecated废弃等。元注解作用说明关键属性 / 值Target限定注解可作用的目标位置取值为 ElementType 枚举如- METHOD作用于方法- TYPE作用于类 / 接口- FIELD作用于属性- CONSTRUCTOR作用于构造器Retention控制注解保留周期编译 / 运行阶段取值为 RetentionPolicy 枚举如- RUNTIME保留到运行时可反射获取常用- CLASS保留到字节码- SOURCE仅源码保留Documented生成 Javadoc 时包含此注解无额外属性标记用Inherited允许子类继承父类的注解无额外属性标记用语法声明格式public interface 注解名 { ... }自动继承Annotation接口。支持默认值通过default关键字设置参数默认值如String value() default 默认值;。反射获取运行时可通过反射 API如Method.getAnnotation()读取注解信息。考点20Aop相关知识核心思想分离 “业务逻辑” 与 “横切逻辑”如token校验不入侵原有代码通过切面Aspect统一处理。关键流程标记需校验的接口在 Controller 方法上添加自定义注解如CheckToken。定义切面Aspect用Aspect标记切面类通过Pointcut关联自定义注解如annotation(自定义注解全类名)。在Before/Around通知中实现token校验逻辑解析token、关联分享ID等。执行流程请求进入Controller时AOP 拦截注解标记的方法先执行切面逻辑再走原有业务Service → Mapper → 数据库。考点21回收站是怎么设计的需求说明回收站文件再手动操作删除的文件彻底删除回收站文件执行后原文件不可恢复用户可以从回收站中恢复误删的文件或文件夹恢复到原来的位置。支持批量恢复操作提高用户操作效率注意彻底删除文件是指删除关联关系实际物理存储数据不删除不清空物理存储内容方便做分析和后续有人重新上传考点22推理大模型和指令大模型怎么选择对比维度指令大模型推理大模型核心能力执行明确指令解决复杂逻辑 / 数学问题适用场景客服对话、文案生成、API 文档异常分析、财务解读、病症鉴别输出特点流畅自然严谨、含推导步骤资源消耗轻量可部署小参数模型需大参数支持消耗高典型错误偏离指令、生成无关内容逻辑漏洞、计算错误选择核心原则任务复杂度简单指令→通用模型深度推理→专用模型。容错成本高风险场景医疗 / 金融优先选可解释性强的推理模型。混合策略前端用指令模型交互后端用推理模型处理复杂任务。

相关文章:

个人项目复习-云盘Day03

考点13:大文件上传需求和常见问题普遍需求:在云存储、视频分享、在线教育等领域,用户上传大文件的需求日益普遍。核心挑战:网络波动、不稳定性及客户端资源限制,常给用户带来不佳体验;传统整文件上传易因中…...

基于comsol技术的磁可调双带高效吸收器

comsol磁可调双带吸收器。搞电磁超材料的兄弟应该都懂,玩双带吸收器最头疼的就是怎么动态调谐。传统结构一旦加工成型,吸收峰就焊死在固定频段了。最近在COMSOL里折腾磁可调方案发现个骚操作——在铁氧体基底里埋钇铁石榴石(YIG)阵…...

运维系列虚拟化系列OpenStack系列【仅供参考】:Service Plugin / Agent - 每5玩OpenStack(73) 两张图总结 Neutron 架构 - 每天5分钟玩转

Service Plugin / Agent - 每天5分钟玩转 OpenStack(73) && 两张图总结 Neutron 架构 - 每天5分钟玩转 OpenStack(74) Service Plugin / Agent - 每天5分钟玩转 OpenStack(73) DHCP Routing Firewall Load Balance 两张图总结 Neutron 架构 - 每天5分钟玩转 Open…...

运维系列虚拟化系列OpenStack系列【仅供参考】:详解 ML2 Core Plugin(II) - 每天5分钟玩转 OpenStack(72)

详解 ML2 Core Plugin(II) - 每天5分钟玩转 OpenStack(72) 详解 ML2 Core Plugin(II) - 每天5分钟玩转 OpenStack(72) Type Driver Mechanism Driver mechanism driver 有三种类型: Agent-based Controller-based 基于物理交换机 详解 ML2 Core Plugin(II) - 每天5分…...

运维系列虚拟化系列OpenStack系列【仅供参考】:Neutron 如何支持多种 network provider - 每5玩 OpenS-70 详解 ML2 Core Plugin(I)

Neutron 如何支持多种 network provider - 每天5分钟玩转 OpenStack(70) && 详解 ML2 Core Plugin(I) - 每天5分钟玩转 OpenStack(71) Neutron 如何支持多种 network provider - 每天5分钟玩转 OpenStack(70) linux bridge core plugin linux bridge agent 详解…...

从零起步学习MySQL 第十二章:MySQL分页性能如何优化?

前言:今天在看学长面经时发现了这样一个问题:字节三面——MySQL分页性能如何优化?作为后端开发工程师,分页是我们日常开发中高频接触的需求,小到后台管理系统的列表查询,大到百万级商品库的分页展示&#x…...

便捷省心!手机数码租赁小程序前端功能玩法详解

随着数码产品更新迭代速度加快,短期租赁成为不少用户体验新品、满足临时需求的优选方式。一款体验流畅的手机数码租赁小程序,其前端功能设计直接影响用户使用感受,以下从用户实际使用场景出发,详细介绍其核心功能玩法,…...

便捷寄件,省心直达——快递寄件小程序前端功能解析

日常工作生活中,快递寄件的便捷性的需求日益凸显,繁琐的寄件流程往往耗费人们大量时间。快递寄件小程序以用户核心需求为导向,打造简洁易用的前端功能,打通寄件全流程,弱化营销属性,专注为用户提供高效、省…...

一文带你深入了解Linux五种I/O模型和I/O多路复用

一文带你深入了解Linux五种I/O模型和I/O多路复用 文章目录一文带你深入了解Linux五种I/O模型和I/O多路复用一、几种典型 I/O 模型1. 阻塞 I/O2. 非阻塞 I/O3. 信号驱动 I/O4. I/O 多路复用(高级 I/O)5. 异步 I/O(AIO)二、阻塞与非…...

推荐常与服务器打交道的工程师都安装这款MCP工具

ssh-mcp,功能:让AI直接连接服务器进行操作 安装 # 1. Clone the repository: git clone https://github.com/tufantunc/ssh-mcp.git cd ssh-mcp# 2. Install dependencies: npm install (需要你先安装nodejs)然后在你的工…...

SourceTree cherry-pick遴选功能的使用

目录一. 使用场景二. 若使用merge功能三. 使用cherry-pick🍒遴选功能四. 代码合并一. 使用场景 🔷假设有如下的提交历史 其中提交E是一个bug修复提交D和F是正在开发中的功能 现在需要将E这次提交单独放到 main 中,注意我们只需要E这个单独…...

2026年编程指南:C、C++、C#同源不同命,选对高薪不是梦

挑选正确的编程语言,常常相较于一味埋头刻苦学习,更能够对未来五年你的职场身价起到决定作用。同样是进行代码编写,有人每月薪资能达到三万,有人却依旧在投递简历,两者之间的差距就存在于最开始做出的那个选择之上。 C…...

2026年品牌AI可见性危机:你的公司正在“隐身”?附优化完整指南

2026年,你的品牌在AI眼中是“隐形”的吗?GEO优化完整指南你问过AI这个问题吗?打开AI,问一句“推荐一个做XX的公司”,结果AI推荐的列表里有你的竞争对手,却没有你。这很让人头疼,但原因很简单&am…...

计算机毕业设计springboot基于Vue.js的养老护理员直聘网站 基于SpringBoot与Vue.js的养老服务人员智能匹配平台 采用前后端分离架构的康养护理人才在线招聘系统

计算机毕业设计springboot基于Vue.js的养老护理员直聘网站 (配套有源码 程序 mysql数据库 论文) 本套源码可以在文本联xi,先看具体系统功能演示视频领取,可分享源码参考。 随着我国人口老龄化程度持续加深,养老服务行业面临护理人…...

计算机毕业设计springboot基于Vue.js的企业资产管理系统 基于SpringBoot与Vue.js的企业固定资产全生命周期管理平台 采用前后端分离架构的企业设备资产数字化运营系统

计算机毕业设计springboot基于Vue.js的企业资产管理系统(配套有源码 程序 mysql数据库 论文) 本套源码可以在文本联xi,先看具体系统功能演示视频领取,可分享源码参考。随着企业规模的扩张与业务复杂度的提升,传统手工记录模式已难…...

百度贴吧一键自动签到脚本(附Python脚本下载方式)教程 养账号用 原创!

很多人每天都会手动打开贴吧签到,如果关注的贴吧比较多就会比较麻烦。本教程介绍如何在 Windows 电脑上实现自动签到,并通过系统定时任务实现 每天自动运行。运行的一个参考图如下 整个流程非常简单: 准备 Python 环境下载签到脚本配置 …...

遵循MIT开源协议的OpenClaw,其数据被商业公司大规模全量复制用于构建竞争性平台,是否违背了开源精神的初衷?

开源世界像一片热闹的集市,每个人都可以带着自己的手艺和材料来摆摊,也可以免费取用别人摊上的东西。这集市能运转起来,靠的是一套不成文的默契。最近OpenClaw创始人对腾讯的指责,就像集市里一位手艺人,对着一位用了他…...

Ollama快速入门

Ollama是一个 开源、轻量级的工具,专为在本地计算机上运行大型语言模型(LLM)而设计。你可以把它理解为一个本地AI模型的“应用商店”和“运行环境”,让你能像使用普通软件一样,轻松地在自己的电脑上体验和利用各种AI模…...

3.14 Python学习记录

#字典 dict 哈希表在python的表现形式 dict1 {"zhang1": 670,"zhang2":680,"zhang3":700} #键 key不能修改 不能重复(如果重复 后面的数值会覆盖前面的数值) value可以修改#定义空字典 dict3 {} dict2 dict() #与集合的区分 定义空集合 只能s…...

机器人爱好者疑问:DreamZero跨具身适应为何领先两倍?

机器人爱好者疑问:DreamZero跨具身适应为何领先两倍? 想象一下,你作为机器人工程师,在实验室调试机械臂,输入指令后,它却总在陌生环境中卡壳。效率低下,项目延期。 这不是个案——传统机器人模型…...

制造知识断层:软件测试工程师的不可替代性构建策略

知识断层的战略意义在技术同质化日益严重的时代,软件测试从业者常陷入技能可复制的焦虑——自动化工具、测试框架、协议规范均可被标准化习得。真正的核心竞争力源于主动构建知识断层:通过非线性技能组合、垂直领域深耕及思维模式革新,使个人…...

技术裸奔时代:软件测试行业的社交货币陷阱与专业重构

一、现象:社交能力裹挟下的技术空心化当前测试行业涌现出一批善于沟通、精于展示的00后从业者:他们能快速融入团队,熟练使用职场话术包装工作成果,甚至在需求评审会上以“用户体验视角”提出看似专业的意见。然而深究技术底层&…...

[2019红帽杯]easyRE

感谢 purecall 师傅提供题目~得到的 flag 请包上 flag{} 提交。 下载后发现是个elf文件,先查壳 发现无壳后扔进IDA中分析 先按f12查看字符串,找到You found me!! 发现了一堆字符串 双击sub_4009c6进入字符串 signed __int64 su…...

开发者的生物壁垒:用神经突触写只有人脑能懂的代码

生物壁垒在软件测试中的崛起在软件开发生命周期中,开发者常依赖人脑特有的神经突触机制编写高度抽象、直觉驱动的代码,这种"生物壁垒"使得代码逻辑难以被传统测试工具解析。神经突触作为生物神经网络的核心,通过突触可塑性实现动态…...

把自己变成公司“人质”:绑定核心系统的黑暗技能

在软件测试领域,测试人员常被视为系统的“守门人”,负责发现漏洞并确保质量。然而,一种鲜为人知的“黑暗技能”正在悄然兴起:测试从业者通过深度绑定核心系统,使自己成为公司不可或缺的“人质”。这并非字面意义上的绑…...

Coze自动化工作流+Agent智能体实战教程(0基础入门,附多场景实操)

开发及运维工作中,重复的手动操作(如批量整理数据、自动生成报表、链接内容提取等)往往占用大量时间,降低工作效率。Coze(扣子)作为一款零代码可视化自动化工具,无需编程基础,即可快…...

数据仓库处理架构: lambda架构、kappa架构

大数据处理架构详解:Lambda架构、Kappa架构、流批一体、Dataflow模型、实时数仓 Lambda Lambda架构(Lambda Architecture)是由Twitter工程师南森马茨(Nathan Marz)提出的大数据处理架构。 它的目标是构建一个通用的…...

部署完成虚拟机RHEL9.7

Part1第一步 先打开虚拟机 然后创建虚拟机第二步第三步第四步第五步第六步第七步 推荐2G内存即可第八步第九步第十步第十一步第十二步第十三步第十四步然后点击自定义硬件第十五步选择使用已下载的ISO映像文件第十六步usb和声卡暂时不用 所以可以直接移除第十七步显示器&#…...

LeetCode 148. 排序链表:归并排序详解

拆解 LeetCode 中等难度题目「148. 排序链表」,这道题核心考察链表的归并排序,是链表操作与排序算法结合的经典题型,也是面试中高频出现的考点。本文会从题目分析、解题思路、代码拆解到注意事项,一步步帮大家搞懂这道题&#xff…...

淘宝商品详情字段解析:SKU、价格、库存接口全梳理

在电商数据采集、竞品分析、价格监控等场景中,淘宝商品详情数据是核心资产。本文聚焦淘宝开放平台商品详情接口的SKU、价格、库存三大核心字段,从接口调用到字段解析,再到实战代码与避坑指南,提供一套完整的技术方案,助…...