Spring Boot集成阿里云OSS:从零构建安全高效的文件存储服务
最近在开发一个需要处理大量用户上传图片的项目时遇到了一个棘手的问题如何高效、稳定地将图片存储到服务器并生成可供前端访问的URL自己搭建文件服务器固然可行但涉及到磁盘管理、备份、扩容和访问安全等一系列运维问题对于中小型团队来说成本不低。这时对象存储服务Object Storage Service, OSS就成了一个极具吸引力的选择。它就像互联网上的一个超级硬盘提供海量、安全、低成本、高可靠的云存储能力。本文将以阿里云OSS为例手把手带你完成从注册开通到在Spring Boot项目中集成使用的全流程。无论你是正在学习云服务的学生还是需要为业务项目快速接入文件存储功能的开发者都能从这篇实战指南中找到清晰的步骤和可复用的代码。我们将重点解决几个核心问题如何创建Bucket存储空间并配置权限如何在Spring Boot中通过官方SDK上传、下载和删除文件以及在实际项目中需要注意哪些安全与性能的最佳实践1. 对象存储OSS核心概念与价值在开始动手之前我们有必要先理解对象存储是什么以及它为何能成为现代应用开发的标配。1.1 什么是对象存储你可以把对象存储想象成一个巨大的、分布式的“键值对”仓库。与我们熟悉的文件系统如Windows的C盘、Linux的/home目录以目录树形式组织文件不同对象存储中每个文件都是一个独立的“对象”。每个对象包含三个部分数据Data文件本身的二进制内容。元数据Metadata描述该文件的属性信息例如文件类型、大小、创建时间以及用户自定义的标签如author: zhangsan。全局唯一标识符Key在同一个存储空间Bucket内用于唯一标识该对象的字符串通常看起来像一个文件路径例如images/avatar/user_12345.jpg。这种设计带来了几个显著优势无限扩展理论上容量没有上限无需担心磁盘空间不足。高可靠性与耐久性数据通常会在多个物理设备甚至多个数据中心进行冗余存储极大降低了数据丢失的风险。高并发访问专为海量HTTP/HTTPS访问设计非常适合存储网站图片、视频、下载包等静态资源。成本低廉按实际存储容量和访问流量计费无需预先购买昂贵的硬件。1.2 为什么选择阿里云OSS市面上有多个云厂商提供对象存储服务如AWS S3 腾讯云COS等。阿里云OSS在国内开发者中普及度很高其优势在于生态完善与阿里云其他产品ECS、CDN、函数计算等集成紧密。文档与SDK丰富提供多语言SDKJava, Python, Go, Node.js等中文文档详尽。稳定可靠服务可用性SLA高经受住了双十一等极端流量场景的考验。丰富的功能除了基础的上传下载还提供图片处理、视频截帧、生命周期管理、跨区域复制等高级功能。对于个人学习或企业项目它都是一个非常成熟和可靠的选择。2. 环境准备与阿里云OSS开通在编写代码之前我们需要在阿里云上完成账号和资源的准备。2.1 基础环境说明操作系统Windows 10/11, macOS 或 Linux (本文命令以Linux/macOS bash为例Windows用户可在PowerShell或WSL中操作)。Java开发环境JDK 8 或以上版本推荐JDK 11或17。项目管理工具Maven 3.6 或 Gradle。IDEIntelliJ IDEA, Eclipse 或 VS Code。阿里云账号一个实名认证的阿里云账号。2.2 开通OSS服务并创建Bucket登录控制台访问 阿里云官网 登录后进入控制台。搜索并开通OSS在控制台顶部的搜索框中输入“对象存储 OSS”并进入产品页面。如果是首次使用点击“开通服务”。OSS本身没有开通费用只有使用时才产生费用。创建Bucket在OSS控制台左侧菜单点击“Bucket列表”然后点击“创建Bucket”。填写关键配置Bucket名称全局唯一例如my-project-images-2025。名称一旦创建不可更改。地域选择离你的目标用户最近的地域例如“华东1杭州”。这会影响上传下载速度。存储类型选择“标准存储”它提供高可靠、高可用、高性能的对象存储服务适用于频繁访问的热点数据。同城冗余存储个人测试可不开启生产环境建议开启以提升数据可靠性。读写权限这是安全关键点务必选择私有。这意味着Bucket内的文件默认不允许匿名访问必须通过带签名的URL或SDK进行授权访问。切勿因为图方便而选择“公共读”这会导致数据泄露风险。其他选项保持默认点击“确定”完成创建。2.3 获取访问密钥AccessKeySDK需要通过AccessKey来认证你的身份从而操作你的OSS资源。将鼠标悬停在控制台右上角的头像上点击“AccessKey管理”。在安全提示弹窗中建议选择“继续使用AccessKey”。你可以使用已有的AccessKey也可以点击“创建AccessKey”来生成一对新的AccessKey ID 和 AccessKey Secret。重要立即复制并妥善保存你的AccessKey ID和AccessKey Secret。AccessKey Secret只在创建时显示一次以后无法再次查看如果丢失需要重新创建。安全警告AccessKey相当于你阿里云账户的“用户名和密码”绝对不要将其硬编码在客户端代码如网页JavaScript或上传到GitHub等公开仓库。我们后续会将其配置在服务端的环境变量或配置中心。3. Spring Boot项目集成OSS SDK接下来我们创建一个Spring Boot项目并集成阿里云OSS的Java SDK。3.1 创建Spring Boot项目使用你熟悉的IDE或 Spring Initializr 创建一个新项目。Project: MavenLanguage: JavaSpring Boot: 选择稳定的版本如 3.1.x 或 3.2.xDependencies: 至少添加Spring Web依赖。3.2 添加OSS SDK依赖在项目的pom.xml文件中添加阿里云OSS SDK的依赖。dependency groupIdcom.aliyun.oss/groupId artifactIdaliyun-sdk-oss/artifactId version3.17.4/version !-- 请查看Maven中央仓库获取最新稳定版本 -- /dependency3.3 配置OSS客户端Bean我们将OSS的配置信息Endpoint, AccessKey, Bucket名称放在application.yml中并创建一个配置类来初始化OSSClient。1. 配置application.yml在src/main/resources/application.yml中添加# 阿里云 OSS 配置 aliyun: oss: endpoint: oss-cn-hangzhou.aliyuncs.com # 替换为你的Bucket所在区域的外网Endpoint在Bucket概览页查看 access-key-id: your-access-key-id # 替换为你的AccessKey ID access-key-secret: your-access-key-secret # 替换为你的AccessKey Secret bucket-name: my-project-images-2025 # 替换为你的Bucket名称 # 可选自定义域名如果你配置了CDN或自定义域名 # custom-domain: https://static.yourdomain.com2. 创建配置类OssConfig.javapackage com.example.demo.config; import com.aliyun.oss.OSS; import com.aliyun.oss.OSSClientBuilder; import org.springframework.beans.factory.annotation.Value; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; Configuration public class OssConfig { Value(${aliyun.oss.endpoint}) private String endpoint; Value(${aliyun.oss.access-key-id}) private String accessKeyId; Value(${aliyun.oss.access-key-secret}) private String accessKeySecret; /** * 创建OSSClient实例。 * 注意OSSClient是线程安全的可以在整个应用生命周期中使用一个实例。 * 在Spring Boot 2.x 中使用Bean管理其生命周期是推荐做法。 */ Bean public OSS ossClient() { return new OSSClientBuilder().build(endpoint, accessKeyId, accessKeySecret); } }重要在实际生产环境中access-key-id和access-key-secret不应该直接写在配置文件中。应该使用环境变量、配置中心如Nacos, Apollo或云产品的RAM角色等方式来管理。例如可以通过环境变量注入access-key-id: ${OSS_ACCESS_KEY_ID} access-key-secret: ${OSS_ACCESS_KEY_SECRET}然后在服务器上设置相应的环境变量。4. 核心功能实战上传、下载、管理与访问配置完成后我们就可以编写业务代码了。我们将创建一个FileService来封装常见的OSS操作。4.1 文件上传服务上传是OSS最核心的功能。我们将实现两种常见上传方式简单上传和获取上传后的访问URL。创建FileService.javapackage com.example.demo.service; import com.aliyun.oss.OSS; import com.aliyun.oss.model.PutObjectRequest; import com.aliyun.oss.model.PutObjectResult; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Value; import org.springframework.stereotype.Service; import org.springframework.web.multipart.MultipartFile; import java.io.IOException; import java.io.InputStream; import java.util.UUID; Service public class FileService { Autowired private OSS ossClient; Value(${aliyun.oss.bucket-name}) private String bucketName; Value(${aliyun.oss.endpoint}) private String endpoint; /** * 上传文件到OSS并返回文件的访问URL带签名有效期默认1小时。 * param file 前端上传的文件对象 * param folder 在OSS中存放的目录如 avatars/, documents/。以/结尾。 * return 文件的完整访问URL */ public String upload(MultipartFile file, String folder) throws IOException { // 1. 生成唯一的文件名防止覆盖 String originalFilename file.getOriginalFilename(); String fileExtension originalFilename.substring(originalFilename.lastIndexOf(.)); String fileName folder UUID.randomUUID().toString() fileExtension; // 2. 获取文件输入流 InputStream inputStream file.getInputStream(); // 3. 创建上传请求并执行 PutObjectRequest putObjectRequest new PutObjectRequest(bucketName, fileName, inputStream); PutObjectResult result ossClient.putObject(putObjectRequest); // 4. 生成文件的访问URL。 // 由于Bucket权限是私有需要生成一个带签名的URL并设置过期时间这里设为1小时。 // 注意此URL仅在有效期内可访问。 java.util.Date expiration new java.util.Date(System.currentTimeMillis() 3600 * 1000); String url ossClient.generatePresignedUrl(bucketName, fileName, expiration).toString(); // 5. 如果你配置了自定义域名可以在这里进行URL替换使其更友好。 // url url.replace(https:// bucketName . endpoint, customDomain); return url; } /** * 简单上传不返回URL仅确认上传成功。 * 适用于后端处理不需要立即给前端URL的场景。 */ public void simpleUpload(MultipartFile file, String objectName) throws IOException { InputStream inputStream file.getInputStream(); ossClient.putObject(bucketName, objectName, inputStream); // 记得关闭流OSS SDK的putObject方法内部通常会处理但显式关闭是好习惯。 inputStream.close(); } }4.2 创建文件上传控制器现在创建一个REST API接口供前端调用上传文件。创建FileController.javapackage com.example.demo.controller; import com.example.demo.service.FileService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.http.ResponseEntity; import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.bind.annotation.RestController; import org.springframework.web.multipart.MultipartFile; import java.io.IOException; import java.util.HashMap; import java.util.Map; RestController RequestMapping(/api/file) public class FileController { Autowired private FileService fileService; PostMapping(/upload) public ResponseEntityMapString, String uploadFile(RequestParam(file) MultipartFile file, RequestParam(value folder, defaultValue uploads/) String folder) { MapString, String response new HashMap(); if (file.isEmpty()) { response.put(error, 文件不能为空); return ResponseEntity.badRequest().body(response); } try { // 调用Service上传文件 String fileUrl fileService.upload(file, folder); response.put(url, fileUrl); response.put(message, 文件上传成功); return ResponseEntity.ok(response); } catch (IOException e) { e.printStackTrace(); // 生产环境应使用日志框架记录 response.put(error, 文件上传失败: e.getMessage()); return ResponseEntity.internalServerError().body(response); } } }4.3 测试文件上传启动你的Spring Boot应用。使用Postman或curl命令进行测试。方法: POSTURL:http://localhost:8080/api/file/uploadBody: 选择form-data添加一个key为file类型为File的字段并选择一张本地图片。可以添加一个key为foldervalue为test/的字段可选。如果成功你将收到一个JSON响应其中包含一个url字段。将这个URL复制到浏览器中应该能够访问到你刚上传的图片URL在一小时内有效。4.4 其他常用操作封装除了上传FileService还可以扩展更多功能。// 在 FileService.java 中继续添加以下方法 import com.aliyun.oss.model.OSSObject; import com.aliyun.oss.model.ObjectMetadata; import org.apache.commons.io.IOUtils; // 需要添加 commons-io 依赖 /** * 下载文件到本地。 * param objectName OSS中的文件完整路径如 avatars/uuid123.jpg * param localFilePath 本地保存路径如 /tmp/download.jpg */ public void downloadFile(String objectName, String localFilePath) throws IOException { // 获取OSS文件对象 OSSObject ossObject ossClient.getObject(bucketName, objectName); // 读取文件流并写入本地 try (InputStream inputStream ossObject.getObjectContent(); FileOutputStream fileOutputStream new FileOutputStream(localFilePath)) { IOUtils.copy(inputStream, fileOutputStream); } } /** * 获取文件的元信息不下载内容。 * param objectName OSS中的文件完整路径 * return 文件的元数据如大小、类型、最后修改时间等 */ public ObjectMetadata getFileMetadata(String objectName) { return ossClient.getObjectMetadata(bucketName, objectName); } /** * 删除OSS上的文件。 * param objectName OSS中的文件完整路径 */ public void deleteFile(String objectName) { ossClient.deleteObject(bucketName, objectName); } /** * 判断文件是否存在。 * param objectName OSS中的文件完整路径 * return true 存在false 不存在 */ public boolean doesObjectExist(String objectName) { return ossClient.doesObjectExist(bucketName, objectName); }记得在pom.xml中添加commons-io依赖以使用IOUtilsdependency groupIdcommons-io/groupId artifactIdcommons-io/artifactId version2.13.0/version /dependency5. 常见问题与排查思路在实际集成过程中你可能会遇到以下问题。这里提供一个快速排查指南。问题现象可能原因排查步骤与解决方案上传时报错The OSS Access Key Id you provided does not exist.1. AccessKey ID 填写错误。2. AccessKey 已被禁用或删除。1. 检查application.yml中的access-key-id是否与阿里云控制台显示的一致注意区分大小写。2. 登录阿里云控制台进入“AccessKey管理”确认Key状态是否“启用”。上传时报错The request signature we calculated does not match the signature you provided.1. AccessKey Secret 填写错误。2. 服务器时间与OSS服务器时间不同步。1. 仔细核对access-key-secret确保没有多余空格或换行。2. 检查服务器系统时间确保时区正确如Asia/Shanghai并与网络时间同步。上传成功但生成的URL访问返回403 Forbidden1. Bucket权限为“私有”但生成的签名URL已过期。2. 生成URL时使用的objectName与实际上传的文件名不一致。1. 检查代码中生成签名URL时设置的过期时间expiration。确保当前时间在有效期内。2. 打印并对比上传返回的文件名和生成URL时使用的文件名。上传时报错The bucket you are attempting to access must be addressed using the specified endpoint.Endpoint 配置错误。Bucket所在地域与Endpoint不匹配。1. 登录OSS控制台进入你的Bucket的“概览”页面。2. 找到“外网访问”的Endpoint将其完整复制到application.yml的endpoint配置中。前端上传大文件100MB超时或失败1. Spring Boot默认文件上传大小限制通常为1MB。2. 网络不稳定或超时设置过短。1. 在application.yml中调整Spring Boot配置spring.servlet.multipart.max-file-size500MBspring.servlet.multipart.max-request-size500MB2. 对于超大文件应考虑使用OSS提供的分片上传功能SDK提供了UploadFileRequest等高级API。OSSClient无法注入报NoSuchBeanDefinitionException1.OssConfig配置类未被扫描到。2.Autowired注入的字段名或类型不匹配。1. 确保OssConfig类在Spring Boot主应用类 (SpringBootApplication) 的同包或子包下。2. 检查Bean方法返回的类型是否为OSS。6. 最佳实践与工程建议将OSS集成到生产环境时以下最佳实践能帮助你构建更健壮、安全、高效的系统。6.1 安全至上永远使用私有Bucket这是最重要的原则。公开读Public Read的Bucket是数据泄露的重灾区。使用临时访问凭证STS不要在前端直接使用主账号的AccessKey。应该通过后端服务使用STS服务为每个用户生成具有临时权限如上传到指定目录的Token。阿里云RAM资源访问管理可以精细控制权限。签名URL过期时间根据业务场景设置合理的过期时间。用户头像等可设置为几小时或几天临时验证码图片可设置为几分钟。防盗链在OSS控制台Bucket的“防盗链”设置中配置允许访问的Referer白名单防止图片被其他网站盗用。6.2 性能与成本优化使用CDN加速为OSS Bucket绑定自定义域名并开启CDN可以将文件缓存到离用户更近的节点极大提升访问速度同时降低OSS的外网流出流量费用。图片处理服务阿里云OSS提供强大的图片处理功能。你可以通过在图片URL后添加参数实现缩略、裁剪、水印、格式转换等无需在服务器端处理节省计算资源。例如https://bucket.oss-cn-hangzhou.aliyuncs.com/example.jpg?x-oss-processimage/resize,w_200。生命周期管理对于日志、备份等低频访问数据可以配置生命周期规则自动将其从“标准存储”转换为“低频访问存储”或“归档存储”以降低存储成本。分片上传与断点续传对于大文件100MB务必使用SDK提供的分片上传接口它能提升上传成功率并支持断点续传。6.3 代码与架构建议服务层抽象如本文所示将OSS操作封装在FileService中。这样未来如果需要更换云服务商如切换到腾讯云COS只需修改此服务而不会影响控制器和其他业务逻辑。统一返回结果控制器应返回统一的JSON格式包含状态码、消息、数据如文件URL等字段方便前端处理。异常处理对OSS SDK可能抛出的异常如ClientException,OSSException进行捕获并转换为业务友好的错误信息返回给前端或记录到日志。日志记录记录文件上传的关键信息如操作人、文件名、文件大小、OSS路径、操作结果等便于审计和问题排查。文件命名策略不要使用用户上传的原文件名应采用“UUID 后缀”或“日期目录 UUID 后缀”的方式避免文件名冲突、特殊字符问题和目录扁平化。6.4 生产环境配置配置中心将access-key-id,access-key-secret,bucket-name等敏感和可配置信息移至Nacos、Apollo等配置中心。连接池与客户端管理OSSClient是线程安全的建议作为单例使用。在Spring中通过Bean创建并在应用关闭时调用shutdown方法关闭客户端Spring会管理Bean的生命周期。超时与重试OSS客户端可以配置连接超时、Socket超时和最大重试次数以适应不同的网络环境。可以在创建OSSClient时通过ClientBuilderConfiguration进行配置。通过以上步骤你不仅成功地将阿里云OSS集成到了Spring Boot项目中实现了一个可用的文件上传服务更重要的是你掌握了在真实项目中安全、高效使用云存储服务的关键要点。从Bucket的安全配置、SDK的集成方式到签名URL的生成、大文件上传的考量再到生产环境的最佳实践这套组合拳能帮助你在未来的项目中游刃有余地处理任何文件存储需求。

相关新闻

网络内容分析框架:基于NLP与数据挖掘的合规研究方法

网络内容分析框架:基于NLP与数据挖掘的合规研究方法

这次我们来看一个涉及特定网络亚文化内容分析的项目。这个项目并非技术工具或开源软件,而是对网络上一类特定言论和意识形态的现象观察。这类内容通常出现在某些小众论坛或社交媒体平台,涉及种族、性别等敏感议题的极端表达。 从技术分析的角度&#xf…

2026/9/27 23:24:23 阅读更多 →
TensorFlow 2.0与Keras深度学习实战指南

TensorFlow 2.0与Keras深度学习实战指南

1. 为什么选择TensorFlow 2.0和Keras开启深度学习之旅 2023年我在处理遥感图像分类项目时,第一次真正体会到TensorFlow 2.0 Keras组合的威力。当时需要在两周内完成从数据清洗到模型部署的全流程,这个看似"高深"的技术栈竟让我这个半路出家的…

2026/10/14 10:18:03 阅读更多 →
IntelliJ IDEA中Java项目打包JAR全攻略:从原理到实战避坑

IntelliJ IDEA中Java项目打包JAR全攻略:从原理到实战避坑

1. 项目概述:从源码到可交付物的关键一跃在Java开发的世界里,无论你是在开发一个微服务、一个工具库,还是一个桌面应用,最终都需要将你的项目代码“打包”成一个可交付的、可执行的单元。这个单元最常见的形式就是JAR(…

2026/10/5 18:23:15 阅读更多 →

最新新闻

Linux调度器入门:从CFS到负载均衡,理解CPU时间分配与性能排查

Linux调度器入门:从CFS到负载均衡,理解CPU时间分配与性能排查

一年前我接手一个在线服务时遇到过一件怪事:机器负载不高,CPU 总占用也只有 30% 上下,可接口的 P99 延迟动不动就飙到几百毫秒。查了半天网络、数据库、锁,最后才发现问题出在 Linux 调度器身上——某个 CPU 密集型的后台任务把核…

2026/10/14 21:55:04 阅读更多 →
Java LinkedList源码深度解析:双向链表设计哲学与性能真相

Java LinkedList源码深度解析:双向链表设计哲学与性能真相

1. 项目概述:为什么一个链表值得花三天时间逐行读透?“JDK源码解析——LinkedList”这个标题看起来平平无奇,甚至有点老派。但如果你真打开java.util.LinkedList的源码文件,从第1行package java.util;开始往下读,到第3…

2026/10/14 21:55:04 阅读更多 →
Flink Checkpoint机制深度解析:原理、调优与故障排查

Flink Checkpoint机制深度解析:原理、调优与故障排查

1. 项目概述:为什么“checkpoint”这个词在Flink现场总被反复提起“Flink checkpoint杂谈”——光看标题,你可能以为这是篇技术随笔,但实际它背后站着的是整个流处理系统稳定运行的命门。我在某公司做实时数仓架构支撑的三年里,几…

2026/10/14 21:55:04 阅读更多 →
温湿度阈值模型生产落地:调度框架与三层架构实践复盘

温湿度阈值模型生产落地:调度框架与三层架构实践复盘

搞数据分析或者物联网数据接入的朋友,应该都有过这种体验:模型在离线脚本里跑得飞飞起,准确率看着也不错,可一旦要接入业务系统、定时执行、还得让运维同学能接手维护,就开始到处冒烟。最近我正好把一个温湿度阈值模型…

2026/10/14 21:55:04 阅读更多 →
微博评论情感分析实战:从爬虫清洗到BERT+CNN微调

微博评论情感分析实战:从爬虫清洗到BERT+CNN微调

简介:本资源是一套完整的微博中文评论情感分析实战项目,面向Python初学者及NLP入门学习者,聚焦社交媒体文本挖掘与情感倾向判别这一典型应用场景。项目基于20万条真实微博评论数据,提供从数据清洗、jieba分词、停用词过滤&#xf…

2026/10/14 21:55:04 阅读更多 →
URP中HDR贴图全链路实战:从导入到Shader采样与性能优化

URP中HDR贴图全链路实战:从导入到Shader采样与性能优化

1. 为什么普通贴图做不出真实光照做Unity渲染的人,迟早会在某个下午盯着一个半成品场景发愁:明明贴图分辨率够高、模型没毛病、光照方向也对,但渲染结果就是“塑料感”十足——高光发灰、暗部死黑、Bloom效果怎么调都像一层廉价雾。这时候如果…

2026/10/14 21:54:01 阅读更多 →

日新闻

AnyPS5通用适配层设计:兼容性与性能的工程取舍

AnyPS5通用适配层设计:兼容性与性能的工程取舍

1. 从"AnyPS5"这个名字说起:它到底想解决什么问题第一次看到"AnyPS5"这个标题,我脑子里冒出来的第一个念头是:这大概率是一个围绕"跨平台运行"或者"通用适配"做文章的项目。名字里的"Any"…

2026/10/14 0:00:41 阅读更多 →
Flutter跨平台开发实战:二手交易应用与HarmonyOS适配

Flutter跨平台开发实战:二手交易应用与HarmonyOS适配

1. 项目概述:Flutter跨平台二手交易应用开发作为一名长期从事移动应用开发的工程师,我最近完成了一个基于Flutter框架的二手物品交易平台项目。这个项目最吸引我的地方在于它完美结合了Flutter的跨平台优势与HarmonyOS的生态特性,实现了"…

2026/10/14 0:00:41 阅读更多 →
DFS算法解决飞机降落调度问题实战

DFS算法解决飞机降落调度问题实战

1. 项目背景与核心思路飞机降落问题是一个经典的调度优化场景,也是算法竞赛和面试中的高频题目。这个题目要求我们合理安排多架飞机的降落顺序和时间,确保所有飞机都能安全着陆而不发生冲突。在实际航空管制中,这类问题直接关系到飞行安全和机…

2026/10/14 0:00:41 阅读更多 →

周新闻

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

简介:基于 ARIMA、LSTM、Transformer 等模型的流感时间序列预测 Python 源码,面向计算机相关专业课程设计与期末大作业学生,以及项目实战学习者。内容覆盖预处理、平稳性检验、定阶、残差分析、多模型对比预测的完整时序建模流程,…

2026/10/14 3:30:28 阅读更多 →
影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别 做影刀RPA自动化,十个新手有八个栽在"往输入框里填东西"这件事上:要么填不进去,要么填了一半,要么直接把原来内容追加在后面。这背后的根因&…

2026/10/14 16:30:29 阅读更多 →
影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容 1. 认识影刀:什么场景该用RPA采小说数据 起点中文网的页面结构相对稳定——分类榜单、书籍详情、章节内容三块独立页面,跳转链路清晰。这种场景非常适合影刀自动化&#x…

2026/10/14 3:29:58 阅读更多 →

月新闻

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/13 22:01:27 阅读更多 →
Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/13 14:57:39 阅读更多 →
黑夜航拍船只数据集训练YOLOV5模型全流程解析

黑夜航拍船只数据集训练YOLOV5模型全流程解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/14 7:53:34 阅读更多 →