个人项目复习-云盘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 文档异常分析、财务解读、病症鉴别输出特点流畅自然严谨、含推导步骤资源消耗轻量可部署小参数模型需大参数支持消耗高典型错误偏离指令、生成无关内容逻辑漏洞、计算错误选择核心原则任务复杂度简单指令→通用模型深度推理→专用模型。容错成本高风险场景医疗 / 金融优先选可解释性强的推理模型。混合策略前端用指令模型交互后端用推理模型处理复杂任务。
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2416677.html
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!