Swagger接口文档实战:从Spring Boot集成到安全防护
Swagger 这个东西圈里人习惯叫它“丝袜哥”听着不太正经但它几乎是后端接口开发里最常用的工具之一。尤其是做前后端分离、微服务、第三方接口对接的时候没有一份能自动同步、能在线试用的接口文档联调效率基本就是靠互相猜。Swagger 的核心价值很直接它把接口定义、参数说明、返回结构、在线调试集成到同一个界面里代码改完文档自动跟着变不再需要单独维护 Word 或者 Markdown 接口文档。这篇内容适合刚接触 Swagger 的后端开发、测试同学也适合团队里想做接口规范又不想引入太重平台的场景。我会从核心概念、Spring Boot 集成、注解细节、微服务拆分、Python 生态集成再到未授权访问漏洞的防范一套讲清楚尽量给你能直接抄作业的东西。1. 先理解 Swagger 到底解决什么问题1.1 联调痛点是它存在的根本原因在 Swagger 普及之前后端和前端联调基本靠口口相传。后端写一份接口文档传到团队共享目录前端按文档联调。等到接口改了参数、加了字段文档常常没跟上前端按照旧文档调了半天全是 4xx、5xx最后只能跑过来问后端。这种场景只要经历过一次就会明白问题不在于谁偷懒而在于文档和代码是两套东西天然会漂移。Swagger 的思路是把接口信息写进代码注解里代码是什么样文档就是什么样从根本上消灭“文档过期”这件事。另一个痛点是在线调试。以前测试一个接口要先打开 Postman、填 URL、填 Header、拼 JSON body接口一多光收集这些信息就要花不少时间。Swagger UI 会把每个接口的参数表单、请求示例、响应示例直接渲染出来点一下 Try it out 就能发请求返回值也直接在页面上展示。对测试同学来说这比维护一套 Postman 集合要轻量得多尤其是接口还处于频繁变动阶段的时候Swagger 的可视化界面基本就是“会动的接口文档”。1.2 OpenAPI 规范与 Swagger 工具链的关系这里有一个概念必须理清否则后面看资料很容易绕晕。OpenAPI SpecificationOAS前身叫 Swagger Specification是一种描述 RESTful API 的规范它用 JSON 或者 YAML 文件来定义接口的路径、请求方法、参数、请求体、响应结构、认证方式等信息。而 Swagger 是一组围绕这个规范实现的工具集包括 Swagger UI、Swagger Editor、Swagger Codegen 等。简单类比一下OpenAPI 规范相当于建筑工程里的图纸标准Swagger 是照着这个标准盖楼的施工队。你写的接口只需要产出符合 OpenAPI 规范的数据结构Swagger UI 就能把它渲染成可视化页面。Spring Boot 里用的 springfox 或者 springdoc本质上都是把注解信息解析、组装成 OpenAPI 文档的工具。搞清楚这层关系后遇到“为什么我引入了 Swagger 依赖页面却打不开”这类问题排查思路就会清晰很多——大概率是文档数据没生成成功或者静态资源路径没被放行。2. 快速跑起来Spring Boot 集成 Swagger 的完整步骤2.1 引入依赖并确认版本兼容性现阶段 Spring Boot 集成 Swagger主流方案有两个一个是老牌的 springfox一个是更现代的 springdoc-openapi。我自己更推荐 springdoc原因后面细说。先讲 springfox 的使用因为很多存量项目还在用它。如果是 Spring Boot 2.x 项目springfox 一般选用 3.0.0 版本依赖如下dependency groupIdio.springfox/groupId artifactIdspringfox-boot-starter/artifactId version3.0.0/version /dependency这里有一个很大的坑需要提醒springfox 3.0.0 与 Spring Boot 2.6.0 及以上版本存在路径匹配策略冲突。Spring Boot 2.6 开始默认的spring.mvc.pathmatch.matching-strategy是path_pattern_parser而 springfox 3.0.0 还在用旧的AntPathMatcher不处理的话启动时直接报Failed to start bean documentationPluginsBootstrapper。解决方法是在application.yml里加一行spring: mvc: pathmatch: matching-strategy: ant_path_matcher如果你用的是 Spring Boot 3.x那就别考虑 springfox 了它内部依赖的 javax 包和 Spring 6 的 jakarta 命名空间不兼容强上就是给自己挖坑。Spring Boot 3 直接用 springdocdependency groupIdorg.springdoc/groupId artifactIdspringdoc-openapi-starter-webmvc-ui/artifactId version2.2.0/version /dependency2.2 配置 Docket 与核心参数含义springfox 需要显式声明一个Docket的 Bean用来告诉 Swagger 扫描哪个包、哪些路径并且设置文档基本信息。一个最基础的配置类长这样Configuration EnableOpenApi public class SwaggerConfig { Bean public Docket docket() { return new Docket(DocumentationType.OAS_30) .apiInfo(apiInfo()) .select() .apis(RequestHandlerSelectors.basePackage(com.example.controller)) .paths(PathSelectors.any()) .build(); } private ApiInfo apiInfo() { return new ApiInfoBuilder() .title(用户服务 API 文档) .description(前后端联调专用接口文档) .version(1.0.0) .build(); } }关键参数逐个说DocumentationType.OAS_30指定生成 OpenAPI 3.0 格式的文档默认是 2.0建议直接用 3.0规范更清晰。RequestHandlerSelectors.basePackage(...)指定扫描的 controller 包。如果项目里包结构比较乱可以用withClassAnnotation(Api.class)只扫描标注了某个注解的类更精准。PathSelectors.any()匹配所有路径也可以写/api/**只扫描特定前缀的接口。enable(true/false)可以通过配置项动态控制是否开启 Swagger。这个在后续讲安全加固时很有用。2.3 启动项目并验证 UI配置完成后启动 Spring Boot 项目浏览器访问Swagger UI 页面http://localhost:8080/swagger-ui/index.htmlOpenAPI 原始 JSONhttp://localhost:8080/v3/api-docsspringfox 3.0 默认是/v3/api-docs旧版本是/v2/api-docsspringdoc 也是/v3/api-docs如果页面能正常展示接口列表说明集成成功。springdoc 则不需要额外写 Configuration 就能直接用它的默认行为是扫描所有带有RestController的类零配置即可使用springdoc: api-docs: path: /v3/api-docs swagger-ui: path: /swagger-ui.html这里有个体验差异springdoc 的 UI 路径默认是/swagger-ui.html访问后会自动跳转到/swagger-ui/index.html。springfox 3.0 则直接访问/swagger-ui/index.html。如果你发现页面 404先确认静态资源是否被安全框架拦截再看路径是否匹配。3. 常用注解与实体模型说明3.1 接口描述类注解Swagger 的灵魂全在注解上注解写得规范文档质量就高。最常用的几个接口类注解如下Api标注在 Controller 类上描述这个类的用途Api(tags 用户管理接口) RestController RequestMapping(/user) public class UserController { }ApiOperation标注在方法上描述接口功能ApiOperation(value 根据 ID 查询用户, notes 查询成功后返回用户完整信息) GetMapping(/{id}) public ResultUser getUserById(PathVariable Long id) { // ... }ApiParam标注在参数上对参数作出说明ApiOperation(value 分页查询用户列表) GetMapping(/page) public ResultPageResultUser page( ApiParam(value 页码从 1 开始, example 1) RequestParam Integer pageNum, ApiParam(value 每页大小, example 10) RequestParam Integer pageSize) { // ... }建议在接口设计阶段就约定好value和notes的写法。value写一句话说清接口能做什么notes写补充说明比如特殊入参逻辑、鉴权要求、调用频次限制等。实际联调时前端最需要的就是这些信息。3.2 参数与模型类注解对于复杂参数尤其是 POST 请求的 JSON bodySwagger 需要借助模型类的注解来展示字段说明。在实体类上使用ApiModel和ApiModelPropertyApiModel(value 用户创建请求) public class UserCreateRequest { ApiModelProperty(value 用户名, required true, example zhangsan) private String username; ApiModelProperty(value 邮箱, example zhangsanexample.com) private String email; ApiModelProperty(value 年龄, minimum 1, maximum 150, example 20) private Integer age; // getter/setter 省略 }一次完整的接口定义光有入口还不够返回结构也要清晰。建议给统一返回类加上泛型说明比如ResultUser这种结构配合ApiModelProperty后Swagger UI 会自动生成嵌套的 JSON 示例前端可以直接复制来 mock。3.3 注解使用经验与几个容易踩的坑第一ApiImplicitParams适合描述那些没有被实体类包装的散参数比如多个RequestParam。但参数一多可读性反而差不如单独定义一个 Query 对象既能复用Swagger 展示也更整齐。第二required属性要写准确。前端会根据这个标记判断哪些参数必须传如果标错了联调时就会出现“前端以为可以不传后端却直接抛异常”的尴尬。第三枚举类型最好配合ApiModelProperty的allowableValues把可选值列出来ApiModelProperty(value 用户状态, allowableValues ENABLED, DISABLED, example ENABLED) private UserStatus status;不然前端看到的是一个普通的字符串字段完全不知道可以填什么。4. 多模块与微服务场景若依框架里的 Swagger 聚合方式4.1 为什么微服务不能只配一个 Docket单体应用只有一个 Swagger 文档没问题但微服务架构下每个服务都有自己独立的接口集合如果每个服务都独立暴露一个 Swagger UI前端联调时就需要维护 N 个地址非常痛苦。若依微服务版本RuoYi-Cloud的解决思路是每个服务正常集成 Swagger然后通过网关做文档聚合前端只需要访问一个网关地址就能看到所有服务的接口。这里要搞清楚一个前提Swagger 的文档数据从哪来。每个服务都会暴露自己的/v3/api-docs返回当前服务的 OpenAPI JSON。网关层的聚合本质上是把多个服务的一堆 JSON 合并成一个大的 JSON再统一交给 Swagger UI 渲染。4.2 网关层聚合文档的常见做法Spring Cloud Gateway 本身不具备聚合能力但可以通过引入 springdoc 的 gateway 支持模块来实现。第一步在网关服务的 pom 里加上dependency groupIdorg.springdoc/groupId artifactIdspringdoc-openapi-starter-webflux-ui/artifactId version2.2.0/version /dependency第二步在网关的配置文件里声明每个服务的路由和对应的文档地址springdoc: swagger-ui: urls: - name: 用户服务 url: /user/v3/api-docs - name: 订单服务 url: /order/v3/api-docs这里的/user/v3/api-docs走的是网关路由网关把请求转发到用户服务后用户服务返回自己的 OpenAPI JSON。配合 Gateway 的 StripPrefix 配置保证转发路径正确即可。第三步在网关配置类中写一个聚合路由把/v3/api-docs/**的请求分发到各个服务。这个配置稍微繁琐核心思路是把 Swagger UI 的静态资源和 api-docs 都放在网关这一层然后把不同前缀的请求路由到不同服务。4.3 分组配置的实际案例如果不用网关也可以在每个服务内部配置文档分组。比如一个服务内部有面向 C 端和面向 B 端的两组接口希望它们显示成两份文档这时候可以声明两个 DocketBean public Docket cApi() { return new Docket(DocumentationType.OAS_30) .groupName(client) .select() .apis(RequestHandlerSelectors.basePackage(com.example.controller.client)) .build(); } Bean public Docket bApi() { return new Docket(DocumentationType.OAS_30) .groupName(admin) .select() .apis(RequestHandlerSelectors.basePackage(com.example.controller.admin)) .build(); }Swagger UI 顶部会出现一个下拉框可以切换查看不同分组的文档。这种方式适合单体应用但接口较多、面向不同调用方的场景。5. Python 生态下的 Swagger 集成5.1 FastAPI 的自动文档生成说回 Python 生态Swagger 同样非常好用而且 Python 框架的集成往往比 Java 更省事。FastAPI 内置了 OpenAPI 支持基于 Pydantic 的模型定义能直接生成参数校验和文档结构。创建一个接口from fastapi import FastAPI from pydantic import BaseModel app FastAPI(title用户服务, version1.0.0) class UserCreate(BaseModel): username: str email: str age: int 18 app.post(/user, summary创建用户) def create_user(user: UserCreate): return {id: 1, username: user.username}启动服务后访问/docs就能看到 Swagger UI访问/redoc是 ReDoc 风格的文档。FastAPI 几乎不需要额外配置summary、description、字段类型、默认值都会自动出现在文档里。这一点确实体现了 Python 开发的效率优势。5.2 Flask 中使用 flasggerFlask 没有内置文档能力通常使用 flasgger 这个库它基于 swagger-ui 和 jsonschema通过 docstring 或者 decorator 来定义接口文档。基本用法from flask import Flask, request from flasgger import Swagger, swag_from app Flask(__name__) swagger Swagger(app) app.route(/user/int:user_id, methods[GET]) swag_from({ tags: [用户管理], summary: 根据 ID 查询用户, parameters: [ { name: user_id, in: path, type: integer, required: True, description: 用户 ID } ], responses: { 200: { description: 查询成功, examples: { application/json: { id: 1, username: zhangsan } } } } }) def get_user(user_id): return {id: user_id, username: zhangsan}访问/apidocs就能查看 UI。flasgger 的灵活性高但需要手动写每个接口的 JSON 定义代码量会比 FastAPI 多不少。如果你想快速产出文档优先考虑 FastAPI如果守着存量 Flask 项目flasgger 也是可用的方案。6. Swagger 未授权访问漏洞必知的三个风险点6.1 漏洞是怎么产生的Swagger 本身是开发调试工具不是生产环境对外服务但很多项目把 Swagger 带到了生产环境而且没有做任何访问控制这就产生了所谓的“Swagger 未授权访问漏洞”。搜索引擎和扫描器每天都在扫互联网上的/swagger-ui.html、/swagger-ui/index.html、/v2/api-docs、/v3/api-docs这些路径一旦发现就能直接获取你所有的接口定义。接口定义泄露意味着什么攻击者不需要再费劲猜接口路径和参数直接照着文档调就行。如果某些接口本身缺乏权限校验那后果就更严重了。这也是很多安全扫描报告会把 Swagger 未授权访问列为中高危风险的原因——它不是直接的命令执行漏洞但它极大地降低了攻击门槛相当于把你们系统的地图和门牌号全部公开了。6.2 哪些信息会跟着一起泄露打开 Swagger UI 能看到的信息攻击者同样能看到。包括但不限于所有接口路径及 HTTP 方法接口的请求参数、参数类型、是否必填请求体和响应体的完整 JSON 结构接口的认证方式说明比如某些需要携带 Token 的接口文档里会明确标注部分接口定义里还可能暴露了内部服务器地址、数据库表名等敏感信息。更麻烦的是很多项目的 Swagger 文档里会把接口的测试数据写进 example这些数据往往是真实脱敏前的数据存在二次泄露风险。6.3 安全加固方案从我的经验看Swagger 未授权访问漏洞的防范其实不复杂核心就两条路要么让生产环境根本没有 Swagger要么让访问 Swagger 需要身份认证。最简单的方案通过配置文件开关控制springdoc: api-docs: enabled: false swagger-ui: enabled: false如果你希望保留文档给内部测试环境使用那就用 Spring Security 给 Swagger 相关路径加认证http.authorizeHttpRequests(auth - auth .requestMatchers(/swagger-ui/**, /v3/api-docs/**).authenticated() .anyRequest().permitAll())还要注意开启了认证不代表万事大吉如果前端的权限校验代码写得不严格比如只校验了路径前缀、没有校验 HTTP 方法依然可能被绕过去。另一个容易忽略的点是网关层如果你在网关做了文档聚合网关的 Swagger 路径同样需要做鉴权否则后端服务保护得再好网关这边等于白搭。对于若依这类框架还需要检查配置文件里的swagger.enabled在生产分支把它关闭或者在冲网关侧做访问白名单。7. 常见问题与排查技巧7.1 常见问题速查表整理几个我实际碰到过的高频问题按症状、原因、解决方案列出来。症状可能原因解决方案启动报Failed to start bean documentationPluginsBootstrapperspringfox 3.0 与 Spring Boot 2.6 路径匹配策略冲突设置spring.mvc.pathmatch.matching-strategyant_path_matcher访问/swagger-ui/index.html404安全框架拦截了静态资源路径在 Security 配置中放行/swagger-ui/**、/v3/api-docs/**UI 能打开但接口列表为空Docket 扫描路径配置不正确检查 basePackage 是否覆盖 controller 所在包接口能访问到但参数说明全部空白方法参数没有加ApiParam或实体类没加ApiModelProperty补全注解文档里出现重复的接口同一个包被多个 Docket 扫描到明确 groupName 或调整扫描规则生产环境扫出未授权访问漏洞生产环境未关闭 Swagger 或未做认证通过配置关闭或增加访问认证除了表格里这些问题另外两个很隐蔽的坑也要单独说。一个是 Spring Cloud Gateway 集成了 webflux 之后再想用传统的springfox会直接冲突因为 springfox 依赖的是 Spring MVC 模型而 Gateway 是 WebFlux 的响应式模型两者混在一起会报诡异的初始化错误。解决方案是网关层不集成传统的 springfox改用 springdoc 的 webflux 支持。另一个坑是同一个服务同时被多个 Docket 扫描时如果文档分组配置没写好Swagger UI 的 Select a spec 下拉框会一直转圈看起来像卡死了。实际上要手动点开下拉框选一下分组页面才能加载出内容。遇到这种情况不用慌先看下拉框里有没有分组选项有的话切换一下就好。7.2 从踩坑中总结的几条经验关于 Swagger 的使用我个人的体会是工具本身不重要重要的是你如何规范地描述接口。它不会自动让你的接口设计变好但一份规范的 Swagger 文档会逼迫你思考接口命名、参数设计、返回结构这些都是联调效率的底层支撑。另外不要把所有接口都无脑暴露给文档。像内部系统间的接口、需要特殊权限的接口完全可以用ApiIgnore排除掉或者通过 Docket 的paths()过滤。这既保护了接口安全也让文档更聚焦对外部调用者更友好。8. 结尾前的小建议在实际项目里我见过有人因为 springfox 版本问题和 Spring Boot 升级起了冲突最后干脆把所有 Swagger 配置删了回到了手工维护文档的老路上这其实很可惜。如果你正在决定用什么版本我建议新项目直接上 springdoc-openapi它对 Spring Boot 2.6 和 Spring Boot 3 的兼容性都更好社区也比较活跃。存量项目实在没法升级就保留 springfox但看清楚版本边界别盲目升级。最后再分享一个小技巧如果你经常要在多个服务或多个项目之间切换查看文档可以花一点点时间封装一个统一的基础配置把 Swagger 的 Docket、ApiInfo、SecurityScheme 都做成可配置项通过application.yml来控制服务和项目名。这样每开一个新项目只需要改配置文件不用重新写一遍 Swagger 配置代码。我自己在团队里就是这么干的实际体验下来省下的时间远比当初封装配置花的时间多。

相关新闻

NVIDIA老版本驱动下载教程:官网手动查找、存档驱动与安装避坑指南

NVIDIA老版本驱动下载教程:官网手动查找、存档驱动与安装避坑指南

很多玩电脑的人都会遇到一个尴尬的场景:手头的显卡驱动升级到最新版之后,电脑反而开始闹脾气——玩到一半花屏、剪辑视频时渲染器报错、打开某个专业软件直接闪退,最典型的就是身边不少人反馈的“英伟达显卡控制面板闪退”问题。这时候大家脑…

2026/10/1 13:55:33 阅读更多 →
Docker 部署 WOW 服务端:镜像选型、compose 编排与性能调优实战

Docker 部署 WOW 服务端:镜像选型、compose 编排与性能调优实战

1. 为什么用 Docker 跑 WOW 服务端是个靠谱选择把 WOW 服务端塞进 Docker 里跑,这件事在几年前还属于"折腾党专属",现在已经成了不少私服维护者和单机怀旧玩家的常规操作。核心原因很简单:WOW 服务端(无论是 TrinityCor…

2026/10/1 13:54:33 阅读更多 →
C# 部署 PP-HumanSeg 人像分割:从推理到背景替换实战

C# 部署 PP-HumanSeg 人像分割:从推理到背景替换实战

简介:本资源面向C#桌面端开发者与图像处理方向的学习者,提供基于PaddleInference的PP-HumanSeg人像分割与背景替换完整源码方案,可解决抠像、换底色、证件照处理等实际需求。项目基于VS2022与.NET 4.8搭建,集成OpenCvSharp4与Sdcb…

2026/10/1 13:54:32 阅读更多 →

最新新闻

手搓生产级 AI Agent 系统(18):从单MCP到多MCP架构选型与落地关注点

手搓生产级 AI Agent 系统(18):从单MCP到多MCP架构选型与落地关注点

在上一篇中,我们把 Agent Identity 与 Delegated Authority 作为工具调用的治理底座,回答了“谁授权、代表谁、为什么做”。当 Agent 需要接入的外部能力从一两个工具膨胀到多个数据源、多个工具服务时,单 MCP 的接入方式会迅速遇到瓶颈。本篇…

2026/10/1 14:31:51 阅读更多 →
智能体工程化落地:从OpenAI事故到多智能体协作与具身智能实践

智能体工程化落地:从OpenAI事故到多智能体协作与具身智能实践

1. 三条新闻背后的共同信号:智能体正在从演示走向工程化2026年9月24日这一天,AI圈子里同时冒出了三条看起来八竿子打不着、但放在一起看却非常有意思的消息:OpenAI主动认领了一起智能体失控事故、Anthropic的研究团队借助950个Claude实例发现…

2026/10/1 14:31:51 阅读更多 →
AI Agent 完整入门指南:从 LLM 到生产落地,用 TaoToken 统一 Key 打通 30+ 核心概念

AI Agent 完整入门指南:从 LLM 到生产落地,用 TaoToken 统一 Key 打通 30+ 核心概念

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

2026/10/1 14:31:51 阅读更多 →
从零搭建AI工程:底层原理到部署优化的完整实践

从零搭建AI工程:底层原理到部署优化的完整实践

1. 项目概述:为什么要从零重走一遍AI工程“ai-engineering-from-scratch”这个标题,我第一次看到的时候以为又是一个标题党式的项目仓库,点进去才发现它不是那种“三天速成、五天就业”的教程集合,而是一份真正从底层逻辑开始梳理…

2026/10/1 14:31:51 阅读更多 →
10 分钟搞定 OpenClaw Windows 一键部署 打造专属数字员工:TaoToken 统一 Key 接入实战

10 分钟搞定 OpenClaw Windows 一键部署 打造专属数字员工: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/1 14:31:51 阅读更多 →
Thinking Machines 发布 Inkling-Small:2760亿总参数、120亿激活参数,性能逼近原版 Inkling

Thinking Machines 发布 Inkling-Small:2760亿总参数、120亿激活参数,性能逼近原版 Inkling

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

2026/10/1 14:30:51 阅读更多 →

日新闻

我发现了一个新思路:用 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/1 0:00:30 阅读更多 →
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/1 0:00:30 阅读更多 →
黑夜航拍船只数据集训练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/1 1:01:17 阅读更多 →

周新闻

如何划分训练/验证集:Spirula Studio五种eval_mode策略详解

如何划分训练/验证集:Spirula Studio五种eval_mode策略详解

如何划分训练/验证集:Spirula Studio五种eval_mode策略详解 【免费下载链接】spirula-studio Cross-vendor 3D Gaussian Splatting trainer - video to splat to mesh, Vulkan or CUDA. 项目地址: https://gitcode.com/GitHub_Trending/sp/spirula-studio Sp…

2026/9/30 13:14:22 阅读更多 →
SEO怎么推广速查手册新手避坑实战指南

SEO怎么推广速查手册新手避坑实战指南

SEO怎么推广速查手册新手避坑实战指南 模板网站太丑不够用?别急着加滤镜,那是治标不治本。很多老板盯着后台流量掉得眼红,却还在纠结首页Banner的圆角是不是3像素。这就像穿着西装去挖土,姿势不对,努力白费。我整理这份 速查手册…

2026/9/30 18:13:06 阅读更多 →
FireRed-OpenStoryline少样本仿写深度解析:AI Agent如何复刻你的独特文案风格与节奏

FireRed-OpenStoryline少样本仿写深度解析:AI Agent如何复刻你的独特文案风格与节奏

FireRed-OpenStoryline少样本仿写深度解析:AI Agent如何复刻你的独特文案风格与节奏 【免费下载链接】FireRed-OpenStoryline FireRed-OpenStoryline is an AI video editing agent that transforms manual editing into intention-driven directing through natural language …

2026/9/30 13:14:49 阅读更多 →

月新闻

我发现了一个新思路:用 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/1 0:00:30 阅读更多 →
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/1 0:00:30 阅读更多 →
黑夜航拍船只数据集训练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/1 1:01:17 阅读更多 →