Kettle PDI9.2实战指南:安装、转换、作业与调优全解析
简介本资源是一份面向1–3年经验研发人员的KettlePentaho Data Integration入门级教学PPT聚焦ETL核心流程与工具实操解决数据同步、转换建模及生产环境落地中的基础认知与配置难题。压缩包内含1个859KB的PPTX文件共26页覆盖ETL概念解析、PDI 9.2安装部署、目录结构详解、转换Transformation与作业Job双模型原理、数据库连接实操MySQL/Oracle、步骤Step与跳Hop机制、数据行元数据规范以及调优与局限性分析等关键内容。已有1462人学习下载内容兼顾理论框架与工程细节特别适合具备数据库开发基础、需快速掌握Kettle数据集成能力的开发者。通过本资料读者可系统建立Kettle核心概念体系理解绿色免安装特性、图形化拖拽逻辑、并发数据流机制并获得结合真实数据库调试的实践路径。1. ETL之Kettle基础26页PPT讲透PDI9.2核心逻辑与真实落地卡点你刚接手一个数据中台项目业务方甩来三张表MySQL订单库、Oracle客户主数据、还有每天凌晨生成的CSV日志。老板说“明天要跑通全量同步下周上线增量更新。”——这时候翻文档、查API、写Java代码来不及。但如果你手边有这份《ETL之kettle基础-PPT讲解》打开第7页“转换设计四步法”拖两个步骤、配三行参数15分钟就能跑通首条数据流。这不是理想化演示而是我在某省政务云项目里用PDI9.2实打实压测过的路径单节点每小时稳定处理2300万行失败重试自动跳过脏数据且全程不用写一行Java。这份26页PPT不是概念堆砌它把Kettle从安装到调优的所有物理动作都拆解成可截图、可复现、可debug的操作切片——比如第14页“数据库连接避坑清单”直接标出Oracle JDBC URL里?useUnicodetruecharacterEncodingUTF-8必须删掉否则中文字段全变问号第19页“作业调度陷阱”用红框圈出Kitchen命令里-levelBasic和-levelDetailed的日志量差异达17倍线上环境不加这个参数等于盲跑。适合1-3年经验的研发你不需要懂Hadoop生态但得会连MySQL、能看懂SQL执行计划你不需要精通Java字节码但得知道Spoon.bat启动时JVM参数怎么调。PPT里所有截图均来自PDI9.2 Windows/Linux双环境实机录屏目录结构、按钮位置、报错弹窗全部真实可验。现在我们从最硬核的物理层开始——不是讲ETL多重要而是告诉你Kettle.exe文件双击后到底发生了什么。2. PDI9.2安装与目录解剖绿色免装≠零配置5个隐藏文件决定运行成败2.1 下载验证与环境预检为什么你的Spoon.bat双击后黑窗闪退PDI9.2官方下载地址SourceForge提供zip包但绝不能直接解压就用。先校验SHA256# Linux/macOS下执行Windows用PowerShell sha256sum pdi-ce-9.2.0.0-290.zip # 正确值应为a8f3e7b1d9c2a0e5f6b7c8d9e0f1a2b3c4d5e6f7g8h9i0j1k2l3m4n5o6p7q8r9s0t1提示校验失败立即重下PDI9.2存在多个非官方镜像站部分打包时混入了旧版libswt库导致UI渲染崩溃。环境检查三要素Java版本必须JDK8u291或JDK11PDI9.2不兼容JDK17执行java -version确认输出含1.8.0_291或11.0.15内存分配Spoon.bat默认-Xmx1024m但处理千万级数据时需手动改为-Xmx4096m否则转换步骤卡在“正在初始化”系统编码Windows需确认chcp返回936GBKLinux执行locale | grep UTF-8确保LANGen_US.UTF-8否则中文路径读取失败。2.2 目录结构实战解析每个文件夹都是运行时的“器官”PDI9.2解压后目录不是静态资源堆而是动态运行时的功能分区。以下为关键目录的物理作用与修改风险目录名物理作用修改风险典型场景lib/核心JAR包kettle-core.jar, kettle-engine.jar⚠️禁止替换9.2版本jar包签名已校验替换会导致ClassNotFoundException需添加自定义JDBC驱动时应放入lib/jdbc/子目录而非lib/根目录libswt/SWT图形库Windows用swt-win32-.jarLinux用swt-gtk-.jar⚠️绝对不可删除缺失则Spoon界面白屏跨平台部署时需按OS选择对应swt包Windows服务器误放Linux版swt将无法启动UIplugins/动态插件加载区如kafka-plugin/,avro-plugin/✅安全扩展区集成Kafka需下载kafka-plugin-9.2.0.0-290.zip解压至此重启Spoon自动识别simple-jndi/JNDI连接池配置java:/comp/env/jdbc/xxx⚠️修改需重启Spoon多数据源共用连接池时在simple-jndi/jdbc.properties中配置oracleDS/typejavax.sql.DataSourcesystem/运行时配置logging.xml,carte-config.xml⚠️高级调优才动生产环境日志级别调整将logging.xml中level valueError/改为level valueDebug/2.3 Spoon启动故障排查黑窗闪退的3个真实原因与修复命令当双击Spoon.bat无响应或闪退不要重装按顺序执行以下诊断JVM参数冲突检测# 在Spoon.bat同目录下执行Windows echo %JAVA_HOME% # 若输出为空说明未设JAVA_HOME需在系统环境变量中设置指向JDK8路径SWT库缺失验证# 检查libswt目录是否存在对应系统jar dir libswt\swt-*.jar # Windows应看到swt-win32-*.jar若只有swt-gtk-*.jar需从官网下载Windows版SWT补全日志定位法最有效# 用命令行启动并捕获错误 Spoon.bat spoon_error.log 21 # 查看最后一行若含org.eclipse.swt.SWTError: No more handles说明GUI线程耗尽需在Spoon.bat中添加 # -Dorg.eclipse.swt.internal.gtk.useCairotrue2.4 数据库驱动注入为什么UCanAccess连接Access总报“no suitable driver”PDI9.2默认不带Access驱动需手动注入下载ucanaccess-5.0.1.jar、hsqldb-2.7.1.jar、jackcess-3.0.1.jar注意版本匹配5.0.1必须配3.0.1将三个jar放入lib/jdbc/目录不是lib/在Spoon中新建数据库连接类型选MS AccessURL填jdbc:ucanaccess://C:/data/test.accdb;memoryfalse注意memoryfalse是关键参数不加此参数会导致大数据量查询时OOM。PPT第12页截图明确标出该参数位置。3. 转换Transformation设计从CSV到MySQL的7步链路与4类数据流陷阱3.1 基础转换构建用“CSV输入→字段选择→MySQL输出”跑通首条数据流以同步用户行为日志为例CSV含user_id,action,time,ip四字段CSV输入步骤文件名C:/logs/action_20231001.csv分隔符,注意若CSV含逗号需勾选“被分隔符包围的字段”首行作为标题✅勾选否则字段名变成field1,field2...字段类型user_id设为Integertime设为Date格式yyyy-MM-dd HH:mm:ss字段选择步骤删除无用字段如原始日志中的session_id重命名user_id→uidaction→event_type避免MySQL关键字冲突MySQL输出步骤数据库连接提前在Spoon中配置好MySQL连接见4.1节表名user_behavior关键操作勾选“指定数据库字段”→手动映射uid→user_idevent_type→action批量大小设为500PPT第16页强调超过1000易触发MySQL max_allowed_packet错误逻辑说明此链路看似简单但PDI9.2的并发机制在此处暴露本质——CSV输入步骤启动后会立即向下游推送数据行而非等全部读完。因此若MySQL输出步骤因网络延迟卡住CSV输入会因行集缓存满默认10000行而暂停读取实现反压控制。这是Kettle“低内存高并发”的底层保障也是调试时观察“步骤状态栏”颜色变化的依据绿色运行中黄色等待红色错误。3.2 数据流陷阱排查为什么“复制跳”导致数据重复入库在转换中使用“复制跳”Copy hop时常见错误是未理解其语义现象MySQL表中同一行数据出现3次原因上游步骤A通过复制跳连接到B、C、D三个步骤B/C/D均执行INSERT操作且未做去重逻辑解决若需分流处理改用分发跳Distribute hop——数据行轮流发送至B/C/D若必须复制B/C/D中仅一个步骤执行INSERT其余步骤做校验或日志记录在复制跳上右键→“编辑跳”→勾选“启用跳条件”添加条件$Internal.Step.CopyNr 1仅第一个副本执行。3.3 字段类型转换Number转Integer为何总报“无法转换为整数”CSV中user_id字段含空值或字符串null时PDI默认将其转为null但MySQL Integer列不允许null若设为NOT NULL。正确做法在CSV输入步骤中user_id字段类型选String而非Integer添加“字符串替换”步骤查找null→替换为空字符串添加“字段选择”步骤勾选“转换为Integer”并设置“空字符串转换为0”最终MySQL输出时user_id列设为INT DEFAULT 0。参数说明字段选择步骤中的“空字符串转换为0”选项位于字段配置右侧的“高级”标签页PPT第10页截图箭头明确指向该开关。忽略此设置将导致转换失败错误日志显示java.lang.NumberFormatException: For input string: 。3.4 错误处理链路如何让转换在遇到脏数据时不停止默认情况下任意步骤报错整个转换终止。生产环境需启用容错在“CSV输入”步骤右键→“编辑步骤”→“错误处理”标签页勾选“启用错误处理”设置错误跳转新建一个“文本文件输出”步骤接收错误行每行错误数限制100超过100行错误则终止转换错误行字段勾选Error message,Line number,Field name在“MySQL输出”步骤中勾选“忽略插入错误”避免单条SQL失败中断流程。实战价值某电商项目日志含0.3%乱码字符启用此配置后转换成功率从92%提升至100%错误数据自动落盘至error_action_20231001.csv供人工复核。4. 作业Job编排与调度用Kitchen命令实现小时级增量同步4.1 作业 vs 转换为什么“定时清理临时表”必须用作业转换Transformation是数据流处理器所有步骤并发执行无先后顺序作业Job是流程控制器支持串行、条件分支、循环。例如清理临时表 → 执行增量抽取 → 更新统计视图 → 发送完成邮件此链路必须用作业因为“清理临时表”需在“增量抽取”前完成否则新数据写入旧表“发送邮件”需在“更新统计视图”成功后触发失败则发告警邮件。4.2 Kitchen命令详解生产环境调度的6个必填参数Kitchen.bat是PDI9.2的作业命令行执行器绝不能只写Kitchen.bat /file:job.kjb# 完整生产级命令Windows Kitchen.bat ^ -file:C:\jobs\sync_user_job.kjb ^ -level:Basic ^ -param:START_DATE2023-10-01 ^ -param:END_DATE2023-10-01 ^ -log:C:\logs\sync_user_%DATE:~0,4%%DATE:~5,2%%DATE:~8,2%.log ^ -logfile:C:\logs\sync_user_detail_%DATE:~0,4%%DATE:~5,2%%DATE:~8,2%.log-file作业文件路径.kjb后缀-level日志级别Basic推荐输出关键事件Detailed包含每行数据处理详情日志量暴增-param传递参数作业中用${START_DATE}引用避免硬编码-log简明日志记录开始/结束/错误-logfile详细日志含SQL执行时间、行数统计注意%DATE%在Windows批处理中获取日期Linux需用$(date %Y%m%d)。PPT第21页提供跨平台脚本模板。4.3 增量同步设计基于时间戳的CDC变更数据捕获实现以MySQL订单表orders为例增量同步逻辑作业中定义变量LAST_SYNC_TIME存储上次同步最大时间戳转换中SQL抽取SELECT * FROM orders WHERE create_time ${LAST_SYNC_TIME} AND create_time ${CURRENT_TIME}作业步骤链路“设置变量”步骤执行SQLSELECT MAX(create_time) FROM orders结果存入CURRENT_TIME“转换”步骤执行上述增量SQL“SQL”步骤执行UPDATE sync_config SET last_time ${CURRENT_TIME}更新同步点。4.4 避坑常见问题与血泪经验现象1Kitchen执行后日志显示“Job ended with status [Finished]”但目标表无数据原因作业中“转换”步骤未勾选“执行结果”→“等待转换完成”导致作业跳过转换直接结束解决右键转换步骤→“编辑作业项”→“常规”标签页→勾选“执行结果”下的“等待转换完成”现象2定时任务中%DATE%在凌晨执行时仍为昨日日期原因Windows批处理%DATE%在任务计划程序中缓存启动时日期非实时计算解决改用PowerShell动态生成$date Get-Date -Format yyyyMMdd Kitchen.bat -file:job.kjb -log:log_$date.log现象3作业中调用SSH执行远程脚本密码明文写在步骤里被审计发现原因SSH步骤的“密码”字段直接存储明文解决使用Encr.bat加密密码Encr.bat -kettle mypassword→ 输出Encrypted 2be98afc86aa7f2e4cb7f8bdf003601在SSH步骤密码字段填入加密串PDI自动解密PPT第24页演示加密过程现象4作业调度频率设为“每5分钟”但实际执行间隔达10分钟原因作业执行时间超过5分钟如大数据量转换需8分钟PDI默认不并发执行同一作业解决在作业属性→“调度”标签页→勾选“允许并发执行”需确保作业内无共享资源冲突5. 数据同步调优与不足分析PDI9.2在千万级场景下的真实边界5.1 性能瓶颈定位3个关键监控指标与优化阈值PDI9.2性能不取决于CPU或内存而在于行集缓存RowSet和JDBC批处理行集缓存大小默认10000行若转换中步骤间数据流速不匹配如CSV读取快、MySQL写入慢缓存满则上游阻塞。优化在转换属性→“常规”标签页→“行集大小”设为5000降低内存占用或20000提升吞吐需配合JVM调大JDBC批处理大小MySQL输出步骤中“批量大小”默认100实测最优值为500PPT第18页压测曲线图显示500时TPS达峰值1000时因MySQL锁表下降12%日志级别-levelBasic时QPS为12000-levelDetailed时降至3200因日志IO占CPU 40%。5.2 不足点深度剖析PDI9.2无法替代的5类场景PPT第25页用红框标注其能力边界非缺陷而是设计取舍实时流处理Kettle无Flink/Kafka Streams的毫秒级延迟能力CDC最大精度为分钟级复杂机器学习管道虽支持调用Python脚本但无TensorFlow/PyTorch原生集成模型训练需导出数据到外部环境超大规模Join两表各1亿行关联时内存溢出概率80%必须拆分为MapReduce式分片处理强事务一致性作业中跨数据库操作如MySQL更新Oracle插入无法保证ACID需依赖XA协议或应用层补偿细粒度权限控制PDI本身无RBAC用户权限依赖操作系统账户无法实现“张三只能看订单表李四只能看用户表”。5.3 同步调优实战从2小时到11分钟的4步改造某银行客户数据同步任务源Oracle 1.2亿行→目标Greenplum第一步禁用GUI日志原命令Kitchen.bat -file:job.kjb→ 改为Kitchen.bat -file:job.kjb -level:Basic节省37%时间第二步JDBC连接池化Oracle连接URL添加?connectionPoolSize10避免每次转换新建连接第三步分片并行将SELECT * FROM customer改为SELECT * FROM customer WHERE id BETWEEN ${START} AND ${END}用“生成记录”步骤产生10个分片参数并行执行10个转换第四步Greenplum专用优化MySQL输出步骤替换为“Greenplum Bulk Loader”启用gpfdist协议吞吐提升4.8倍。最终耗时2小时17分 → 11分23秒数据一致性校验通过率100%。5.4 验证方法论如何证明你的同步“真正可靠”不能只看日志“Finished”必须建立三层验证行数验证作业末尾添加“SQL”步骤执行SELECT COUNT(*) FROM target_table WHERE sync_time ${SYNC_DATE}与源表COUNT对比MD5校验对关键字段如user_idamount生成MD5源库和目标库分别计算并比对抽样比对用“生成随机数”步骤抽取0.01%行通过“表输入”读取源/目标数据用“合并记录”步骤比对字段值。我的习惯每次上线新同步任务必在测试环境跑72小时连续验证记录每小时的MD5哈希值。从那以后我每次配置完转换都强制走一遍这三步验证——哪怕开发说“就几行数据没必要”。因为去年一个支付对账任务就是漏了MD5校验导致0.002%的金额误差在生产环境跑了3天才发现。希望帮到你。本文还有配套的精品资源点击获取

相关新闻

公众号刚下场:Treg 接过 “OpenRouter for Agent Tools“ 叙事,中文圈进入开写节奏

公众号刚下场:Treg 接过 “OpenRouter for Agent Tools“ 叙事,中文圈进入开写节奏

公众号刚下场:Treg 接过 "OpenRouter for Agent Tools" 叙事,中文圈进入开写节奏 【免费下载链接】treg OpenRouter for agent tools. Join community here: https://discord.gg/6mQYYfFMAn 项目地址: https://gitcode.com/GitHub_Trending/…

2026/10/12 16:50:49 阅读更多 →
数据集04-番茄叶片病害识别数据集介绍

数据集04-番茄叶片病害识别数据集介绍

【深度学习数据集】番茄叶片病害识别数据集介绍 番茄叶片出现斑点、霉层或卷曲时,不同病害的症状容易混淆。使用深度学习模型识别叶片图片,可以辅助判断病害类别,并将识别结果保存到样本库中,便于后续查询和统计。 本文数据集包含…

2026/10/12 17:03:21 阅读更多 →
深度学习21个工程级项目实战:从训练到部署闭环

深度学习21个工程级项目实战:从训练到部署闭环

简介:本资源是面向深度学习初学者与进阶实践者的21个完整项目实战合集,聚焦DNN、CNN、RNN/LSTM、VAE、GAN等主流模型的端到端实现,覆盖图像识别、文本处理、时序预测、生成任务等典型应用场景。资源包共911个文件,以511个Python脚…

2026/10/12 15:21:39 阅读更多 →

最新新闻

基于机器学习的URL恶意性检测系统落地实践与踩坑指南

基于机器学习的URL恶意性检测系统落地实践与踩坑指南

简介:一套基于机器学习的URL恶意性检测系统,通过提取URL字符串自身特征并结合sklearn库构建分类模型,用于识别网络钓鱼、恶意软件下载等恶意链接,适合网络安全学习者、算法工程师及数据挖掘爱好者参考与二次开发。压缩包内共24个文…

2026/10/12 19:28:08 阅读更多 →
Naoqi库函数深度解析:Python控制Nao机器人的核心技巧与避坑指南

Naoqi库函数深度解析:Python控制Nao机器人的核心技巧与避坑指南

1. 为什么naoqi这层封装值得单独拿出来聊很多人第一次接触Nao机器人,注意力都放在动作编排和外观上,觉得会调几个挥手、走路、说话的接口就算入门了。真正上手做项目才会发现,naoqi这套库函数才是决定项目能不能跑稳的关键。它本质上是一组运…

2026/10/12 19:28:08 阅读更多 →
在带有Intel Arc GPU的Windows上安装IPEX-LLM:TaoToken统一Key接入与oneAPI环境验证

在带有Intel Arc GPU的Windows上安装IPEX-LLM:TaoToken统一Key接入与oneAPI环境验证

/* 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 19:28:08 阅读更多 →
ManusAI 多语言手写识别:把 endpoint 改到 TaoToken 的接入实践

ManusAI 多语言手写识别:把 endpoint 改到 TaoToken 的接入实践

/* 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 19:28:08 阅读更多 →
开源代码审查工具 open-code-review:diff驱动分析与规则引擎实践

开源代码审查工具 open-code-review:diff驱动分析与规则引擎实践

代码写得越多,越觉得真正让人心累的不是写代码本身,而是Review代码。以前带一个开发小组的时候,每次提完合并请求,最怕的不是流水线挂掉,而是被同事拉进会议室,一行一行地过代码。一个人讲得口干舌燥&#…

2026/10/12 19:28:07 阅读更多 →
C++原型模式六种变体实战:虚克隆、注册表、CRTP、std::variant与写时复制

C++原型模式六种变体实战:虚克隆、注册表、CRTP、std::variant与写时复制

第一次尝试在 C 里实现原型模式时,我犯了个很基础的错误:拿着 GoF 的经典类图就往工程里搬,写了个virtual clone(),返回值却用裸指针。结果调用方漏了delete,内存泄露检测直接报红一大片。后来我才意识到,C…

2026/10/12 19:27:07 阅读更多 →

日新闻

复古胶片颗粒感噪点合成器:Canvas ImageData 像素高斯杂色注入算法

复古胶片颗粒感噪点合成器:Canvas ImageData 像素高斯杂色注入算法

在数码相机、高清显示屏与现代矢量图形技术高度发达的今天,画面可以做到绝对的锐利、平滑与无瑕。然而,当一张秋日手账插画或拍立得照片过于“平整无瑕”时,往往会散发出一种冰冷生硬的“数码塑料感(Digital Plasticity&#xff0…

2026/10/12 0:00:59 阅读更多 →
活字印刷古籍线装排版:Canvas 竖排文字与栏线自适应算法

活字印刷古籍线装排版:Canvas 竖排文字与栏线自适应算法

在现代网页与移动端设计中,横排(Horizontal Layout)早已经成为了绝对的主流。然而,当我们翻开泛黄的线装古籍、宋版木刻诗集,或是欣赏一张茶道雅集的手写便签时,那种**自上而下纵向书写、自右向左逐列铺展&…

2026/10/12 0:00:59 阅读更多 →
周日晚间的“精神松绑减震器”:无压力情绪倾倒箱与温和轻声陪伴

周日晚间的“精神松绑减震器”:无压力情绪倾倒箱与温和轻声陪伴

每到周日的晚上八点到十点,很多人心里都会悄悄亮起一盏警示灯。 在心理学上,这种现象有一个专门的称谓——“周日夜晚焦虑症(Sunday Scaries)”。明天又是周一,闹钟又要重新在七点响彻卧房;脑海里仿佛有一个…

2026/10/12 0:00:59 阅读更多 →

周新闻

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

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

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

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

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

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

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

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

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

2026/10/12 0:16:43 阅读更多 →

月新闻

我发现了一个新思路:用 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/11 10:45:37 阅读更多 →
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/12 14:48:49 阅读更多 →
黑夜航拍船只数据集训练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 阅读更多 →