私人云盘源码Cloudreve搭建教程:从部署到文件共享传输的避坑指南
简介这份资源是Cloudreve云盘系统源码面向希望自建私有网盘的个人用户、单位与公司运维人员用于搭建简洁美观的文件存储、共享与传输平台支持各类文件与视频可部署在本地服务器供员工随时备份数据。压缩包共约2000个文件以776个PHP核心程序、322个JavaScript脚本、148个HTML页面和71个CSS样式为主另含23个SQL数据库脚本、46个JSON配置及若干Markdown说明文档整体约19.42MB结构完整便于二次开发与部署。资源附带以宝塔面板为例的安装视频教程涵盖PHP7.0以上环境、fileinfo扩展配置、建站建库、源码上传及伪静态规则写入等关键环节并针对URL Rewrite提示给出排错思路。目前已有699人学习下载适合想快速搭建私人或企业云盘、需要完整源码与部署指引的读者参考使用。1. 私人云盘源码选型为什么 Cloudreve 是那个「装完就能用」的答案很多人第一次接触自建网盘都是被公有网盘的限速和会员墙逼出来的。你手里可能有一台闲置的云主机或者一台群晖、飞牛 NAS想把它变成一个自己能完全掌控的文件共享中心。这时候搜「私人云盘源码」跳出来的方案五花八门但真正能做到「下载、解压、跑起来、能用」这条最短路径的Cloudreve 是绕不开的一个。它是一套用 Go 写的云网盘系统前端界面简洁支持本地存储、对象存储、OneDrive 等多种后端自带文件共享传输、多用户管理和 WebDAV。这套源码配合一份搭建教程基本能让你在一个下午之内拥有一个界面不输商业产品的私人云盘。这篇文章面向的是想自己动手把 Cloudreve 跑起来、并且真正用起来的从业者从环境准备到参数调优把中间那些教程视频里不会细说的坑一次讲清楚。2. Cloudreve 云盘源码的部署环境与依赖准备2.1 云主机系统选择与最低配置要求在动手之前先把运行环境定下来。Cloudreve 本体是一个编译好的二进制文件对系统本身不挑但考虑到你要长期挂着做文件共享传输系统选择还是有讲究的。常见做法是选 Debian 12 或 Ubuntu 22.04 LTS这两个版本的软件源稳定社区资料多遇到问题好搜。如果你用的是云主机买的时候注意看架构Cloudreve 官方发布页提供 amd64 和 arm64 两个版本群晖、飞牛 NAS 这类设备通常是 x86_64直接下 amd64 就行。配置方面最低 1 核 1G 能跑起来但如果你打算开启缩略图生成或者多人同时上传下载建议 2 核 2G 起步。硬盘空间取决于你存多少文件系统盘 20G 只装程序足够数据盘单独挂载更稳妥。这里有个容易被忽略的点如果你用的是国内云主机记得在安全组里放行你计划使用的端口默认是 5212但很多人会改成 80 或 443 配合反向代理。提示不要用 CentOS 7 这类已经停止维护的系统后面装数据库和反向代理时会遇到一堆依赖问题血泪经验。2.2 数据库选型SQLite 还是 MySQLCloudreve 支持 SQLite、MySQL、PostgreSQL 三种数据库。对于个人使用或者小团队SQLite 完全够用它是文件型数据库不需要额外安装服务Cloudreve 首次启动会自动创建。但如果你打算开放注册、用户数超过几十个或者需要频繁做数据备份和迁移那就上 MySQL。我一般会这样判断单用户或者三五个人自己用SQLite 省事要给别人开账号、做文件共享传输的直接 MySQL。MySQL 的安装命令如下以 Debian 12 为例# 更新软件源并安装 MySQL 服务端 apt update apt install -y mysql-server # 启动 MySQL 并设置开机自启 systemctl start mysql systemctl enable mysql # 进入 MySQL 交互界面创建 Cloudreve 专用数据库和用户 mysql -u root -p进入 MySQL 后执行-- 创建数据库字符集用 utf8mb4 以支持 emoji 和特殊字符 CREATE DATABASE cloudreve CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci; -- 创建专用用户把 password 换成你自己的强密码 CREATE USER cloudrevelocalhost IDENTIFIED BY password; -- 授予该用户对 cloudreve 库的全部权限 GRANT ALL PRIVILEGES ON cloudreve.* TO cloudrevelocalhost; -- 刷新权限使配置生效 FLUSH PRIVILEGES;这段 SQL 的逻辑很直接建库、建用户、授权、刷新。参数上注意utf8mb4不要写成utf8否则用户上传文件名带 emoji 时会报错。密码不要用弱口令这台机器如果暴露在公网MySQL 3306 端口千万不要对外开放只允许本地连接。2.3 下载 Cloudreve 二进制文件与目录规划环境准备好之后去 Cloudreve 官方发布渠道下载对应架构的压缩包。这里不写具体版本号因为版本更新频繁你下载时选最新稳定版即可。下载完成后解压得到一个可执行文件。我习惯把程序放在/opt/cloudreve目录下数据目录单独放在/data/cloudreve这样以后升级程序时不会误删用户上传的文件。# 创建程序目录和数据目录 mkdir -p /opt/cloudreve mkdir -p /data/cloudreve/uploads mkdir -p /data/cloudreve/avatar # 进入程序目录假设压缩包已经上传到当前目录 cd /opt/cloudreve tar -zxvf cloudreve_*_linux_amd64.tar.gz # 赋予可执行权限 chmod x cloudreve解压出来的cloudreve就是主程序。第一次运行它会自动生成配置文件conf.ini和 SQLite 数据库文件。如果你用 MySQL需要先运行一次让它生成配置文件然后修改配置再重启。目录规划的核心原则是程序和数据分离这样备份的时候只需要打包/data/cloudreve和数据库导出文件升级的时候直接替换二进制文件重启即可。3. 从零跑通 Cloudreve配置文件、启动与反向代理3.1 首次启动与 conf.ini 关键参数解读第一次执行./cloudreve时终端会输出初始管理员账号和密码这个信息只显示一次务必记下来。同时程序会在同级目录生成conf.ini。默认情况下它使用 SQLite数据库文件也在同级目录。如果你要用 MySQL先按 CtrlC 停掉然后编辑conf.ini。[Database] ; 数据库类型可选 sqlite / mysql / postgres Type mysql ; MySQL 连接信息按你实际创建的库和用户填写 Host 127.0.0.1 Port 3306 User cloudreve Password password Name cloudreve ; 表前缀多实例共用库时有用单实例留空即可 TablePrefix cd_ [System] ; 调试模式排错时设为 true生产环境改回 false Debug false ; 监听端口默认 5212 Listen :5212 ; 会话密钥首次启动自动生成不要手动改 SessionSecret xxxxxxxx参数上重点看三个Type改成mysql后下面的连接信息必须和你在 2.2 节创建的一致Listen如果改成:80需要 root 权限运行更推荐保持 5212 然后用 Nginx 反向代理Debug在排查 500 错误时打开能看到详细堆栈但生产环境记得关掉否则日志会膨胀得很快。3.2 用 systemd 托管 Cloudreve 进程直接./cloudreve跑在前台SSH 一断开进程就没了。正确做法是写一个 systemd 服务单元让它开机自启、崩溃自动重启。# 创建 systemd 服务文件 cat /etc/systemd/system/cloudreve.service EOF [Unit] DescriptionCloudreve Cloud Storage Service Afternetwork.target mysql.service Wantsmysql.service [Service] # 工作目录指向程序所在目录 WorkingDirectory/opt/cloudreve # 启动命令 ExecStart/opt/cloudreve/cloudreve # 崩溃后自动重启 Restarton-failure RestartSec5 # 以 root 运行如果改了低端口需要保留否则可以换成普通用户 Userroot [Install] WantedBymulti-user.target EOF # 重载 systemd 配置并启动服务 systemctl daemon-reload systemctl start cloudreve systemctl enable cloudreve # 查看运行状态确认没有报错 systemctl status cloudreve这段配置里After和Wants指定了 MySQL 服务确保数据库先起来。Restarton-failure配合RestartSec5是保命配置程序因为内存不足被 OOM 杀掉后能自动拉起来。WorkingDirectory必须指向conf.ini所在目录否则程序找不到配置会重新生成一份导致数据「丢失」的假象。3.3 Nginx 反向代理与 HTTPS 配置Cloudreve 默认跑在 5212 端口直接暴露这个端口不优雅也不安全。用 Nginx 做反向代理顺便把 HTTPS 配上。假设你已经有了域名和证书Nginx 配置如下server { listen 80; server_name pan.yourdomain.com; # 强制跳转 HTTPS return 301 https://$server_name$request_uri; } server { listen 443 ssl http2; server_name pan.yourdomain.com; ssl_certificate /etc/nginx/ssl/pan.yourdomain.com.crt; ssl_certificate_key /etc/nginx/ssl/pan.yourdomain.com.key; # 上传大文件时必须放宽限制否则会 413 client_max_body_size 2048m; location / { proxy_pass http://127.0.0.1:5212; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Proto $scheme; # WebSocket 支持用于实时通知 proxy_http_version 1.1; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection upgrade; } }client_max_body_size这个参数是文件共享传输场景下的关键默认 1M 会导致稍大一点的文件上传直接失败报 413 错误。设成 2048m 意味着允许 2G 的单文件上传你可以根据实际需求调整。proxy_set_header那几行是为了让 Cloudreve 能拿到真实客户端 IP否则后台看到的全是 127.0.0.1封禁和日志都没法用。4. 文件共享传输与存储策略的落地配置4.1 本地存储策略的路径与权限设置Cloudreve 启动后用初始管理员账号登录第一件事是去后台配置存储策略。默认会有一个本地存储策略但路径可能指向程序目录需要改成你规划的数据目录。进入「管理面板」→「存储策略」→「本地存储」把存储目录改成/data/cloudreve/uploads。改完之后有个必做动作确保运行 Cloudreve 的用户对这个目录有读写权限。如果你用 root 跑那没问题如果用普通用户执行# 把数据目录所有权交给运行 Cloudreve 的用户假设用户名为 cloudreve chown -R cloudreve:cloudreve /data/cloudreve chmod -R 755 /data/cloudreve权限不对的典型现象是上传文件时提示「上传失败」但日志里只看到权限拒绝。这个坑我踩过不止一次尤其是从 root 切换到普通用户运行的时候旧文件的属主没改新文件写不进去。4.2 对接对象存储以 S3 兼容协议为例当本地磁盘不够用或者你想把文件放到更便宜的存储上时可以对接对象存储。Cloudreve 支持 S3 兼容协议这意味着你可以接主流的云厂商对象存储也可以接自建的 MinIO。配置入口在「存储策略」→「添加存储策略」→「Amazon S3」。需要填的参数包括Bucket 名称、Endpoint、Access Key、Secret Key、区域。这里有个细节如果你用的是自建 MinIOEndpoint 要填完整的地址加端口比如http://192.168.1.100:9000并且把「使用 SSL」关掉。填完之后点「测试连接」成功后再保存。注意对象存储策略设为默认后新上传的文件会走对象存储但之前本地存储的文件不会自动迁移。需要手动在文件管理里做迁移或者用命令行工具同步。4.3 分享链接的有效期与提取码策略文件共享传输是私人云盘的核心使用场景。Cloudreve 的分享功能在用户端文件右键菜单里可以设置分享有效期和提取码。后台可以统一控制这些策略路径在「参数设置」→「分享」。我一般会这样配有效期最长 7 天提取码强制开启禁止分享整个根目录。这样做的好处是避免用户把整个网盘分享出去导致内容失控。另外「允许游客下载」这个选项如果开了任何人拿到链接就能下不开则需要登录。看你的使用场景如果是给外部客户传文件开着更方便如果是内部团队用关掉更安全。5. 避坑与排查Cloudreve 搭建教程里不会细说的五个坑5.1 上传大文件失败报 413 或超时现象上传超过几十兆的文件时浏览器提示上传失败Nginx 日志里出现client intended to send too large body。原因Nginx 的client_max_body_size默认值太小同时 PHP 或后端超时时间不够。解决在 Nginx 配置里把client_max_body_size调到你需要的大小比如 2048m。如果用了 CDNCDN 侧也有上传限制需要一并调整。另外 Cloudreve 本身对上传大小没有硬限制瓶颈通常在反向代理和网络带宽。5.2 后台登录后提示「会话已过期」或频繁掉线现象刚登录进去点几个页面就跳回登录页或者提示会话过期。原因conf.ini里的SessionSecret在程序重启后重新生成了导致旧会话失效。这种情况通常发生在你把程序目录挂载到临时文件系统或者容器化部署时没有持久化配置。解决确保conf.ini文件持久化保存不要放在临时目录。如果是 Docker 部署把配置目录挂载出来。另外检查系统时间是否准确时间偏差过大会导致会话校验失败。5.3 上传的文件在服务器上找不到现象网页显示上传成功但去/data/cloudreve/uploads目录下看不到文件。原因存储策略的路径配置和实际运行目录不一致或者你改了策略但没点「设为默认」。解决进后台「存储策略」确认默认策略是哪一个再看该策略的存储目录路径。如果用了相对路径它是相对于程序运行目录的建议一律用绝对路径。改完策略后新上传的文件才会走新路径旧文件还在老地方。5.4 反向代理后获取不到真实 IP现象后台日志里所有访问 IP 都是 127.0.0.1无法做访问控制。原因Nginx 没有传递X-Real-IP和X-Forwarded-For头或者 Cloudreve 没有开启「信任反向代理」。解决在 Nginx 配置里加上 3.3 节那几行proxy_set_header。然后在 Cloudreve 后台「参数设置」→「基础」里把「信任的代理服务器」填上127.0.0.1这样它才会解析转发过来的 IP 头。5.5 数据库连接失败程序启动即退出现象systemctl status cloudreve显示服务失败日志里报Error 1045: Access denied for user。原因conf.ini里的数据库用户名或密码和 MySQL 里创建的不一致或者 MySQL 没有启动。解决先用mysql -u cloudreve -p手动登录测试确认账号密码正确。然后检查conf.ini里Host是127.0.0.1还是localhostMySQL 对这两个的认证方式可能不同。最后确认systemctl status mysql是 running 状态。6. 进阶技巧用 WebDAV 把 Cloudreve 挂载成本地磁盘Cloudreve 内置了 WebDAV 服务开启之后你可以把它挂载到 Windows 资源管理器、macOS Finder 或者 Linux 的davfs2上像操作本地文件夹一样操作云盘文件。这个功能在「参数设置」→「WebDAV」里开启默认路径是/webdav端口和主服务一致。开启后在 Windows 上映射网络驱动器地址填https://pan.yourdomain.com/webdav账号密码用你的 Cloudreve 登录凭证。macOS 用 Finder 的「前往」→「连接服务器」地址一样。Linux 下用davfs2挂载# 安装 davfs2 apt install -y davfs2 # 创建挂载点 mkdir -p /mnt/cloudreve # 挂载输入 Cloudreve 的用户名和密码 mount -t davfs https://pan.yourdomain.com/webdav /mnt/cloudreve挂载成功后/mnt/cloudreve里就能看到你网盘里的所有文件。这个方案的好处是你不用装任何客户端系统原生支持。但要注意WebDAV 走的是 HTTPS大文件传输时性能不如专用客户端适合文档类的小文件同步。另外如果你在 Nginx 里配了client_max_body_sizeWebDAV 上传也受这个限制。我自己的习惯是主力用网页端管理文件需要批量整理的时候挂载 WebDAV 用本地工具操作传大文件还是走网页端或者客户端。这套 Cloudreve 云盘源码从部署到用顺前后大概花了我一个周末中间踩的坑基本都写在上面了。希望帮到你。本文还有配套的精品资源点击获取

相关新闻

PLM零部件管理蓝图:分类编码查重与生命周期落地避坑指南

PLM零部件管理蓝图:分类编码查重与生命周期落地避坑指南

简介:这份PPT资料聚焦PLM项目蓝图设计中的零部件管理模块,面向制造业信息化顾问、研发与主数据管理人员,以及正在推进GPLM一期落地的项目团队。内容围绕零部件主数据管理展开,涵盖需求描述、方案总揽、功能设计与业务流程模板&…

2026/10/12 21:49:51 阅读更多 →
海外仓WMS盘点功能设计:账实一致与库存差异的解决之道

海外仓WMS盘点功能设计:账实一致与库存差异的解决之道

简介:面向海外仓WMS盘点模块的产品设计文档,适合仓储系统产品经理、设计师及开发人员阅读。文档从盘点业务本质出发,系统梳理明盘与暗盘、静态与动态盘点、循环盘点、动碰盘点及指定盘点等概念,并结合盘亏、盘盈、盘平三类结果说明…

2026/10/12 21:49:51 阅读更多 →
零售业务流程转系统需求:从PPT到可落地开发清单的实战方法

零售业务流程转系统需求:从PPT到可落地开发清单的实战方法

简介:这份PPT聚焦中国免税品集团总公司中免集团的零售管理流程,面向零售运营、门店管理与信息化建设相关从业者,帮助梳理免税零售业态差异、特殊业务流程与系统需求。内容覆盖市内店、口岸店、供船店三类业态的客源、商品、销售与提货方式对比…

2026/10/12 21:49:51 阅读更多 →

最新新闻

第6章:Spring AI 2.0 ChatClient 门面

第6章:Spring AI 2.0 ChatClient 门面

上章思考题答案 用户原话里的 {orderId} 若放进 SystemPromptTemplate 再渲染,StringTemplate 会把它当成变量。缺这个键时,ValidationMode.THROW 抛 IllegalStateException,正常咨询被拒绝。用户原话应走 UserMessage 或 ChatClient.user&a…

2026/10/14 0:03:43 阅读更多 →
【车载定位】基于扩展卡尔曼滤波 EKF,分别利用 TDOA、AOA 以及 TDOA+AOA 融合观测,搭配近恒速 NCV / 近恒位置 NCP运动模型对车辆轨迹估计附Matlab代码

【车载定位】基于扩展卡尔曼滤波 EKF,分别利用 TDOA、AOA 以及 TDOA+AOA 融合观测,搭配近恒速 NCV / 近恒位置 NCP运动模型对车辆轨迹估计附Matlab代码

✅作者简介:热爱科研的Matlab仿真开发者,擅长数学建模、数据处理、建模仿真、程序设计、完整代码获取、论文复现及科研仿真。🍎 往期回顾关注个人主页:Matlab科研工作室👇 关注我领取海量matlab电子书和数学建模资料 &…

2026/10/14 0:03:43 阅读更多 →
人工智能期末复习:用习题集构建考点地图,高效备考不挂科

人工智能期末复习:用习题集构建考点地图,高效备考不挂科

简介:这份资源汇集人工智能课程各章小结与经典习题解答,适合正在系统学习人工智能基础、准备期末考试的本科生或自学者使用。内容覆盖人工智能的概念与发展阶段、研究学派与研究领域、知识与知识表示(谓词逻辑、产生式规则、框架、语义网络&a…

2026/10/14 0:03:43 阅读更多 →
wandb-core 中的 Wire 依赖注入:从贡献指南到 go:generate 自动装配实战

wandb-core 中的 Wire 依赖注入:从贡献指南到 go:generate 自动装配实战

机器学习深度学习数据可视化可观测性 【免费下载链接】wandb The AI developer platform. Use Weights & Biases to train and fine-tune models, and manage models from experimentation to production. 项目地址: https://gitcode.com/gh_mirrors/wa/wandb 点…

2026/10/14 0:03:43 阅读更多 →
微博评论文本情感分析:从数据清洗到三模型对比的完整实践

微博评论文本情感分析:从数据清洗到三模型对比的完整实践

简介:面向毕业设计场景,资源围绕微博评论文本情感分析,完整覆盖支持向量机、朴素贝叶斯与AdaBoost三种机器学习算法的建模流程,适合计算机相关专业本科生用于课程设计或毕业设计参考。压缩包共70个文件,约6.05MB&#…

2026/10/14 0:03:43 阅读更多 →
小型超市仓库管理系统

小型超市仓库管理系统

小型超市仓库管理系统选题背景与意义 随着我国城镇化进程的不断推进以及居民消费水平的持续提升,小型超市作为连接城市社区与消费者的重要商业节点,在日常生活中的作用日益凸显。尤其是在一二线城市周边的居民区、城乡结合部及中小城镇,小型超…

2026/10/14 0:02:42 阅读更多 →

日新闻

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/13 2:54:56 阅读更多 →
影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

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

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

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

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

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

2026/10/13 1:58:08 阅读更多 →

月新闻

我发现了一个新思路:用 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/12 18:11:17 阅读更多 →