Flowable与Spring Boot版本对照表:避坑指南与实战集成
1. 项目概述为什么我们需要一份Flowable与Spring Boot的版本对照表在Java企业级应用开发中工作流引擎Flowable与Spring Boot框架的集成几乎是构建审批、流程自动化等业务系统的标准选择。然而无论是新手入门还是老手升级一个绕不开的“拦路虎”就是版本兼容性问题。Flowable社区活跃版本迭代快而Spring Boot的版本同样在持续更新。两者之间的依赖关系并非总是线性的一个不匹配的版本组合轻则导致启动时报ClassNotFoundException或NoSuchMethodError重则引发流程定义无法部署、事务管理失效等隐蔽且难以排查的运行时错误。因此一份清晰、准确、经过验证的Flowable与Spring Boot版本对照表其价值远超一份简单的配置文档。它是一张“避坑地图”能帮助开发者快速定位到稳定、官方推荐的组合避免在环境搭建和依赖冲突上浪费数天甚至数周的时间。这份对照表不仅仅是版本号的罗列更应包含每个组合背后的技术栈考量、升级路径建议以及实际集成时的关键配置要点。接下来我将基于多年的项目实战经验为你拆解这份对照表的构建逻辑、核心细节以及如何在实际项目中灵活应用。2. 版本对照的核心逻辑与官方策略解析2.1 Flowable与Spring Boot的依赖关系本质首先我们必须理解两者集成的技术本质。Flowable本身是一个独立的工作流引擎它提供了一系列核心JAR包如flowable-engine,flowable-spring等。Spring Boot是一个快速应用开发框架其核心优势之一是“约定大于配置”的自动装配。当我们在Spring Boot项目中引入Flowable时通常是通过引入flowable-spring-boot-starter这个“启动器”来实现。这个启动器内部做了几件关键事自动引入依赖它会根据自身版本自动引入兼容版本的flowable-engine、flowable-spring等核心模块。自动配置Bean它会利用Spring Boot的自动配置机制自动创建ProcessEngine、RepositoryService、TaskService等核心Bean并注入到Spring容器中。与Spring环境集成自动集成Spring的事务管理、数据源、JDBC模板等。因此版本对照的核心实际上是flowable-spring-boot-starter的版本与Spring Boot父工程或BOM的版本之间的兼容性。我们寻找的对照关系主要就是这两者。2.2 官方版本管理策略与信息获取Flowable和Spring Boot都遵循语义化版本控制Major.Minor.Patch。但它们的发布节奏和兼容性策略有所不同Spring Boot通常每年发布两个主版本如2.7.x, 3.0.x, 3.1.x。大版本如2.x到3.x之间可能存在不兼容的API变更尤其是Jakarta EE的迁移从javax包到jakarta包。小版本如2.7.0到2.7.18之间通常保持API和配置的兼容。Flowable其spring-boot-starter的版本号通常与Flowable核心引擎的主版本号对齐或接近但并非严格一一对应。社区维护的节奏相对灵活。获取权威版本对照信息的最佳途径是Flowable官方文档在Flowable用户手册的“Spring Boot集成”章节通常会指明其starter所兼容的Spring Boot版本范围。Maven中央仓库查看flowable-spring-boot-starter的POM文件其parent标签或dependencyManagement部分会声明对spring-boot-starter-parent的依赖版本这是最直接的证据。官方示例项目Flowable GitHub仓库中的flowable-examples目录下通常会有基于不同Spring Boot版本的示例项目这是最可靠的实践参考。注意网络上很多博客的版本信息可能已经过时。特别是Spring Boot 3.x发布后很多基于Spring Boot 2.x的旧配置和代码已不适用。务必以官方最新文档和示例为准。3. 主流版本组合详解与选型建议基于官方文档、POM文件分析和项目实践我整理了一份当前以近期技术栈为参考主流的、经过验证的版本对照表。请注意版本迭代迅速下表信息需结合发布时的最新情况验证。Flowable Spring Boot Starter 版本兼容的 Spring Boot 版本核心特性与选型建议7.0.0Spring Boot 3.1.x / 3.2.x这是支持Spring Boot 3.x的里程碑版本。它全面迁移至Jakarta EE 9jakarta.persistence.*要求JDK 17。如果你的新项目计划使用最新的Spring生态和Java LTS版本这是首选组合。6.8.0Spring Boot 2.7.x这是Spring Boot 2.x时代的最后一个重要稳定版本组合社区资源丰富踩坑记录多。兼容JDK 8/11/17是大多数现有生产项目尤其是尚未升级至Spring Boot 3.x的最稳妥的选择。6.7.0Spring Boot 2.5.x - 2.7.x一个非常经典的稳定版本被众多项目长期使用。如果项目Spring Boot版本锁定在2.5.x这个组合是经过充分验证的。6.6.0Spring Boot 2.4.x - 2.5.x适用于稍早的Spring Boot 2.4系列项目。在升级路径上通常建议从6.6.0直接升级到6.8.0或7.x。选型决策树新项目追求技术前瞻性直接选择Flowable 7.x Spring Boot 3.x JDK 17。尽管初期可能遇到社区资料相对较少的问题但能避免未来从2.x到3.x的大版本迁移成本。现有项目升级或稳健型新项目选择Flowable 6.8.x Spring Boot 2.7.x。这是当前事实上的“黄金组合”拥有最广泛的实践案例、最成熟的社区解决方案和最稳定的表现。遗留系统维护根据项目当前锁定的Spring Boot版本选择对应兼容的Flowable 6.6.x或6.7.x。除非必要不建议在维护阶段进行跨大版本的框架升级。4. 基于选型的实战集成与核心配置选定版本组合后真正的挑战在于集成和配置。这里以最经典的Flowable 6.8.0 Spring Boot 2.7.18组合为例详解集成步骤和核心配置项。4.1 项目初始化与依赖引入首先在pom.xml中明确父工程和依赖。!-- 继承Spring Boot父工程锁定版本 -- parent groupIdorg.springframework.boot/groupId artifactIdspring-boot-starter-parent/artifactId version2.7.18/version !-- 建议使用该系列的最终版本修复了最多Bug -- relativePath/ /parent dependencies !-- Spring Boot Web基础依赖 -- dependency groupIdorg.springframework.boot/groupId artifactIdspring-boot-starter-web/artifactId /dependency !-- Spring Boot 数据访问与事务 -- dependency groupIdorg.springframework.boot/groupId artifactIdspring-boot-starter-data-jdbc/artifactId /dependency dependency groupIdorg.springframework.boot/groupId artifactIdspring-boot-starter-jdbc/artifactId /dependency !-- Flowable Spring Boot 启动器 -- dependency groupIdorg.flowable/groupId artifactIdflowable-spring-boot-starter/artifactId version6.8.0/version /dependency !-- 数据库驱动以MySQL 8为例 -- dependency groupIdmysql/groupId artifactIdmysql-connector-java/artifactId scoperuntime/scope /dependency /dependencies实操心得强烈建议使用spring-boot-starter-parent来管理版本它能解决绝大部分传递依赖的冲突。如果公司有内部BOM也务必确保其定义的Spring Boot和Flowable版本是兼容的。4.2 核心配置文件详解 (application.yml)接下来是配置的重头戏。Flowable Starter提供了大量以flowable为前缀的配置项。spring: datasource: url: jdbc:mysql://localhost:3306/flowable_db?useUnicodetruecharacterEncodingutf8useSSLfalseserverTimezoneAsia/Shanghai username: root password: yourpassword driver-class-name: com.mysql.cj.jdbc.Driver hikari: # 连接池配置根据压力调整 maximum-pool-size: 20 minimum-idle: 5 flowable: # 1. 异步执行器配置核心 async-executor-activate: true # 启用异步执行器处理定时任务、异步调用等 async-executor-core-pool-size: 4 # 核心线程数 async-executor-max-pool-size: 10 # 最大线程数 async-executor-queue-size: 100 # 队列大小 # 2. 数据库相关配置 database-schema-update: true # 启动时自动更新数据库表结构。生产环境建议设为 false使用Flyway/Liquibase管理 # database-schema: flowable # 可自定义表前缀默认为 ACT_ # 3. 流程定义部署配置 check-process-definitions: true # 启动时检查并部署 classpath:/processes/ 下的BPMN文件 deployment-mode: single-resource # 部署模式默认为‘single-resource’即每个BPMN文件单独部署 # 4. 历史数据级别配置影响性能和存储 history-level: audit # 常用级别。可选none, activity, audit, full # none: 不保存任何历史。 # activity: 保存流程实例和活动实例。 # audit: 保存所有数据默认包括变量、表单等。满足大部分审计需求。 # full: 所有数据完整细节性能开销最大。 # 5. 邮件服务器配置用于任务通知等 mail-server-host: smtp.qiye.163.com mail-server-port: 465 mail-server-use-ssl: true mail-server-username: noreplyyourcompany.com mail-server-password: yourpassword mail-server-default-from: noreplyyourcompany.com关键配置解析database-schema-update: 开发环境设为true非常方便。但生产环境必须设为false并配合数据库版本迁移工具如Flyway来严格管理表结构变更否则可能导致数据不一致。history-level: 这是性能调优的关键。对于超高频或对历史记录不敏感的业务流程可以降级为activity以提升性能。对于需要完整审计追踪的财务、合规流程则必须使用audit或full。async-executor-*: 这些参数直接影响流程中定时边界事件、异步调用活动的性能。需要根据实际业务压力和服务器资源进行调优。队列满了会导致任务被拒绝。4.3 自定义配置与Bean扩展有时默认配置不满足需求我们需要自定义Bean。Configuration public class FlowableCustomConfig { /** * 自定义流程引擎配置。 * 例如启用流程定义缓存提升性能。 */ Bean public SpringProcessEngineConfiguration springProcessEngineConfiguration(DataSource dataSource, PlatformTransactionManager transactionManager) { SpringProcessEngineConfiguration config new SpringProcessEngineConfiguration(); config.setDataSource(dataSource); config.setTransactionManager(transactionManager); config.setDatabaseSchemaUpdate(ProcessEngineConfiguration.DB_SCHEMA_UPDATE_TRUE); // 启用BPMN模型缓存默认是开启的这里演示如何设置大小 config.setProcessDefinitionCacheLimit(100); // 缓存100个流程定义 // 自定义ID生成器如果需要 // config.setIdGenerator(new StrongUuidGenerator()); return config; } /** * 自定义活动行为工厂用于扩展或覆盖默认的BPMN活动行为。 * 这是实现复杂自定义逻辑如特定网关、事件的高级方式。 */ Bean public DefaultActivityBehaviorFactory activityBehaviorFactory() { return new CustomActivityBehaviorFactory(); // 需继承DefaultActivityBehaviorFactory } }5. 常见集成问题排查与实战技巧即使版本选对、配置写好集成过程中依然会遇到各种“坑”。下面是我总结的常见问题及解决方案。5.1 启动类冲突与Bean创建失败问题现象应用启动时报错提示ProcessEngineBean创建失败或存在多个DataSourceBean。排查思路与解决检查依赖冲突运行mvn dependency:tree命令查看是否存在多个不同版本的flowable-spring-boot-starter或spring-boot-starter-jdbc。使用exclusions排除冲突的传递依赖。检查数据源配置确保application.yml中只配置了一个主要数据源。如果项目需要多数据源Flowable引擎必须绑定到主数据源Primary标注的DataSource Bean。其他业务数据源需明确指定。检查包扫描路径确保Spring Boot主应用类SpringBootApplication标注的类的包路径能够覆盖到Flowable自动配置类所在的包org.flowable.spring.boot。通常将主类放在项目根包下。5.2 流程定义部署失败问题现象启动时日志没有显示部署流程或报错“cvc-complex-type.2.4.a: Invalid content was found”。排查思路与解决检查BPMN文件位置与名称确认BPMN 2.0 XML文件是否放在src/main/resources/processes/目录下默认路径。文件名不能有中文或特殊字符。验证BPMN XML格式使用Flowable Designer、Eclipse插件或在线BPMN验证工具检查XML语法是否正确。常见的错误包括未定义process的id和name属性或引用了不存在的表单key。查看详细日志在application.yml中增加日志级别logging.level.org.flowable: DEBUG查看部署过程的详细错误信息。5.3 事务不回滚或数据不一致问题现象在Spring的Transactional方法中调用Flowable的API如taskService.complete流程状态更新了但方法内后续的数据库操作失败后流程操作却没有回滚。排查思路与解决确认事务管理器Flowable Spring Boot Starter默认会使用Spring的DataSourceTransactionManager。确保你的业务方法上也使用了Transactional注解并且两者在同一个事务管理器中。检查异常传播Flowable的API可能会抛出FlowableException或其子类。确保这些异常是RuntimeException或者你在Transactional中指定了rollbackFor包含这些异常。默认情况下Spring只对RuntimeException和Error进行回滚。复杂场景处理对于涉及多个系统如发消息、调远程接口的分布式事务场景Flowable的本地事务无法保证一致性。此时需要考虑使用Saga、消息队列最终一致性等分布式事务模式Flowable可以作为一个参与者。5.4 历史数据表膨胀导致性能下降问题现象系统运行一段时间后ACT_HI_*系列历史表变得异常庞大查询流程历史、生成报表变得非常缓慢。解决方案与技巧调整历史级别如前所述评估业务需求适当降低flowable.history-level。启用历史数据清理Flowable提供了历史数据清理功能。可以在流程引擎配置中启用定时清理任务。Bean public SpringProcessEngineConfiguration springProcessEngineConfiguration(...) { // ... 其他配置 config.setHistoryCleaningEnabled(true); config.setHistoryCleaningTimeCycleConfig(0 0 2 * * ?); // 每天凌晨2点执行使用Cron表达式 config.setCleanInstancesEndedAfter(Duration.ofDays(365)); // 清理结束超过365天的实例 return config; }归档与分表对于法律要求长期保存的数据可以开发定时的归档作业将历史数据迁移到专门的归档数据库或冷存储中。对于当前表可以考虑按时间进行分表但这需要较强的数据库管理能力。5.5 国产数据库适配问题问题场景项目需要适配达梦、人大金仓等国产数据库。解决方案确认驱动和方言首先确保引入了正确的JDBC驱动。然后在Flowable配置中指定对应的数据库方言。flowable: db-history-used: true database-type: dm # 或 kingbase, 具体值需查看Flowable源码的DatabaseType枚举同时需要在数据源配置中指定driver-class-name。注意模式Schema和表空间国产数据库对模式、用户、表空间的概念可能与MySQL/PostgreSQL不同。在连接URL和Flowable配置中可能需要明确指定schema。测试SQL兼容性虽然Flowable官方宣称支持但国产数据库的SQL语法尤其是DDL和函数可能存在细微差别。务必在测试环境进行完整的流程创建、运行、查询测试。关注启动时建表语句、历史查询等环节的日志是否有SQL错误。6. 版本升级实战指南与风险控制从旧版本如Flowable 6.6 Spring Boot 2.4升级到新版本如Flowable 6.8 Spring Boot 2.7需要系统性的规划和测试。升级步骤备份备份备份完整备份数据库所有ACT_*表和项目代码。在POM中更新版本号将spring-boot-starter-parent和flowable-spring-boot-starter的版本更新为目标版本。解决依赖冲突运行mvn dependency:tree解决因版本升级带来的新依赖冲突。数据库迁移准备将flowable.database-schema-update设为true在测试环境启动应用。Flowable引擎会自动检查数据库版本并执行必要的迁移脚本位于其JAR包的org/flowable/db/upgrade目录下。仔细观察启动日志确认迁移成功。API和配置变更检查查阅Flowable和Spring Boot的官方发布说明Release Notes重点关注“Breaking Changes”部分。例如Spring Boot 2.4到2.7可能废弃了一些配置属性需要替换。Flowable的某些内部API也可能有变动。全面回归测试单元测试运行所有涉及Flowable Service API调用的单元测试。集成测试测试核心业务流程的完整端到端执行包括流程启动、任务完成、网关判断、定时事件、异步调用等。数据验证检查升级后原有的流程实例、历史任务、流程变量等数据是否被正确迁移和访问。生产环境部署在测试环境验证无误后制定生产环境升级方案。通常采用蓝绿部署或滚动升级将风险降至最低。风险控制要点灰度发布如果可能先让一部分非核心业务或内部用户使用新版本。回滚预案准备好一键回滚到旧版本应用和数据库备份的方案。数据库降级通常非常困难因此备份是关键。监控告警升级后加强对流程引擎关键指标如异步执行器队列积压、任务完成耗时、数据库连接数的监控设置告警阈值。

相关新闻

Flowable与Spring Boot版本对照表:构建稳定工作流应用的核心指南

Flowable与Spring Boot版本对照表:构建稳定工作流应用的核心指南

1. 项目概述:为什么我们需要一份Flowable与Spring Boot的版本对照表? 如果你正在用Spring Boot开发一个需要工作流引擎的应用,并且看中了Flowable,那么你遇到的第一个、也是最关键的问题,很可能就是版本兼容性。Flowa…

2026/10/19 11:21:27 阅读更多 →
深度学习梯度裁剪:原理、实现与调优实战指南

深度学习梯度裁剪:原理、实现与调优实战指南

1. 项目概述:为什么你的模型训练会“爆炸”?如果你在训练神经网络时,遇到过损失值突然变成NaN(不是一个数字),或者损失曲线像坐火箭一样垂直飙升然后彻底失控,那么你大概率是遇到了“梯度爆炸”…

2026/10/20 10:40:18 阅读更多 →
大模型训练并行化:数据并行、张量并行与流水线并行的核心原理与混合策略

大模型训练并行化:数据并行、张量并行与流水线并行的核心原理与混合策略

1. 从单卡到集群:大模型训练并行化的必然之路 如果你最近在折腾大模型训练,或者只是对动辄千亿、万亿参数模型的训练过程感到好奇,那你大概率会频繁听到三个词: 数据并行(DP)、张量模型并行(TP…

2026/10/20 11:30:06 阅读更多 →

最新新闻

GraphRAG工程实践:知识图谱如何补足向量检索的推理短板

GraphRAG工程实践:知识图谱如何补足向量检索的推理短板

向量检索失效的那一刻,我才决定认真搞GraphRAG年初做过一个企业内部制度问答系统,刚开始用的是经典的向量库RAG方案:文档切块、embedding、top-k召回、拼prompt喂给大模型。原型阶段跑得很顺,演示的时候领导问了一个问题——"…

2026/10/20 13:08:00 阅读更多 →
AI辅助教材编写如何实现低查重?从大纲到成稿的实用工作流

AI辅助教材编写如何实现低查重?从大纲到成稿的实用工作流

说实话,把“AI写教材”和“低查重”放在一起,很多人第一反应是拿来凑字数、糊弄领导。我在课程开发这行干了也有几年,教材、课件、实训手册都写过,真实的感受是:AI真正厉害的地方不在“替你写”,而在“帮你…

2026/10/20 13:08:00 阅读更多 →
Repast仿真建模实战:从调度器到参数扫描的ABM完整教程

Repast仿真建模实战:从调度器到参数扫描的ABM完整教程

简介:面向社会科学、经济学与复杂系统建模初学者的Repast完整英文教程与实例包,适合希望系统掌握多Agent仿真平台的读者。资源共72个文件,以38个htm和28个html教程页面为主体,搭配CSS样式表、界面位图、JavaDoc索引及内嵌示例压缩…

2026/10/20 13:08:00 阅读更多 →
当AI写了八成代码,程序员真正该练的判断力与工作流

当AI写了八成代码,程序员真正该练的判断力与工作流

最近那篇流传很广、署名某位图灵奖得主的论文,在程序员圈子里算是彻底刷了屏。刷屏的核心是一个数字:AI生成的代码占比已经超过八成。我刷完评论区,感觉大家自动分成两派:一派像看到了预言,说这是给程序员发的预警&…

2026/10/20 13:08:00 阅读更多 →
AI辅助教材编写:高效产出与低查重降重技巧全解析

AI辅助教材编写:高效产出与低查重降重技巧全解析

写教材这件事,听起来是老师或培训师的基本功,但真正做过的人都明白它有多熬人。在高校、职业院校和培训机构里,教材编写往往是压在教师身上的隐形大山:既要搭框架、找素材、写案例,又要排版配图、设计练习,…

2026/10/20 13:08:00 阅读更多 →
Flutter开发鸿蒙应用:从零搭建药品服药记录器全流程教程

Flutter开发鸿蒙应用:从零搭建药品服药记录器全流程教程

做跨平台开发这几年,我用 Flutter 写过不少工具类应用,最近刚把一个药品服用记录器顺利跑到了鸿蒙手机上。这个项目从零开始做,覆盖了环境配置、数据表设计、服药计划、本地通知、真机联调这一整条链路,中间踩了不少坑&#xff0c…

2026/10/20 13:06:59 阅读更多 →

日新闻

CLRC663芯片Pin-to-Pin替代实战:从评估到量产全记录

CLRC663芯片Pin-to-Pin替代实战:从评估到量产全记录

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

2026/10/20 1:01:30 阅读更多 →
ESP32舵机控制指南:原理、多路驱动与避坑实战

ESP32舵机控制指南:原理、多路驱动与避坑实战

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

2026/10/20 1:01:30 阅读更多 →
位移法实现一阶低通滤波:单片机ADC采样降噪实战

位移法实现一阶低通滤波:单片机ADC采样降噪实战

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

2026/10/20 1:01:30 阅读更多 →

周新闻

基于GMM的语音识别系统原理与MATLAB实现详解

基于GMM的语音识别系统原理与MATLAB实现详解

说到基于高斯混合模型(GMM)的语音识别系统,很多人第一反应就是一堆数学公式,觉得门槛很高。但如果你真的在MATLAB里把它落地跑通,会发现核心其实就是三件事:把声音变成特征向量,用GMM给每个类别…

2026/10/20 10:02:13 阅读更多 →
数字图像处理入门:反白、灰度化、调色板修改与导出txt实践

数字图像处理入门:反白、灰度化、调色板修改与导出txt实践

数字图像处理这四个字听起来挺唬人,但落到具体操作上,无非就是让计算机按你的想法“摆弄”像素。我在一个模拟项目X里用了一套特别经典的基础处理流程:对图像做反白、改调色板、彩色转灰度,最后把像素数据导出成txt文件。单看每一…

2026/10/19 17:32:41 阅读更多 →
机器人大脑技术盘点:具身智能的感知、决策与数据闭环

机器人大脑技术盘点:具身智能的感知、决策与数据闭环

如果你的信息流最近也天天刷到“机器人大脑”这个词,你会发现一个很有意思的现象:每个人说的“大脑”根本不是同一个东西。有人指的是大语言模型,有人指的是运动控制系统,还有人指的是能理解物理世界的端到端模型。在2026年这个时…

2026/10/20 2:50:50 阅读更多 →

月新闻

我发现了一个新思路:用 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/20 10:02:08 阅读更多 →
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/20 9:50:17 阅读更多 →
黑夜航拍船只数据集训练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/20 9:50:45 阅读更多 →