Kettle PDI 9.2生产级避坑指南:元数据漂移与行集并发陷阱
简介本资源是一份面向1–3年经验研发人员的KettlePentaho Data Integration入门级教学PPT聚焦ETL核心流程与工具实操解决数据同步、清洗与集成中的基础建模与落地难题。内容覆盖ETL概念本质、Kettle 9.2安装部署、目录结构解析、转换与作业双模型原理、数据库连接配置、关键步骤如CSV输入/Excel输出及数据流机制跳、分发/复制、行集缓存并点明其在MySQL/Oracle环境下的调优要点与典型局限性。资源为单个859KB的pptx文件结构完整图文结合含26页精炼讲解涵盖从环境搭建到核心概念数据行类型、元数据定义、并行执行机制再到Kafka/Avro/Parquet等新特性延伸便于边学边练。已有1463人学习下载适合具备数据库开发基础、需快速掌握Kettle数据同步能力并投入项目实践的工程师。1. ETL之kettle基础不是“拖拽完就跑”而是搞懂26张PPT里藏的6个并发陷阱与3类元数据断层你刚在某跨平台系统里用Kettle把MySQL订单表同步到StarRocks界面绿灯全亮、日志显示“Finished”结果下游BI报表一查2024-03-15当天的退款单少了17条。你翻遍转换步骤——CSV输入、字段映射、SQL输出全对再看日志没报错最后发现是“Excel输出”步骤里一个隐藏的日期格式掩码yyyy-MM-dd HH:mm:ss被误设成yyyy/MM/dd导致时区解析失败17条记录在行集缓存满溢时被静默丢弃。这不是玄学是Kettle 9.2里真实存在的元数据漂移并发缓冲失控双杀组合。这份26页PPT资源不讲“什么是ETL”的教科书定义而是用PDI 9.2实操界面截图目录结构解剖转换执行时序图把Kettle从“图形化玩具”拉回工业级ETL工具的定位它能扛住每小时500万行的异构数据同步但前提是你得亲手拆开spoon.sh启动脚本里那行-Xmx4g参数、看懂Hop背后行集缓存的阻塞逻辑、并在“数据库连接”页PPT第18张图里圈出SSL加密开关和JDBC URL中useSSLtruerequireSSLtrue的强制配对关系。适合有MySQL/Oracle实操经验、正被生产环境数据延迟或字段错乱折磨的研发人员——不是教你点几下鼠标而是让你在下次调度失败时能直接定位到kettle.log里第3行那个RowSet full警告并反向推导出该调大哪个线程池。2. PDI 9.2安装与目录结构绿色免装≠零配置set-pentaho-env.sh里藏着3个必须改的JVM参数Kettle标榜“绿色免安装”但PDI 9.2在Linux上首次启动spoon.sh失败率超60%根源不在Java版本而在环境变量脚本里三个被默认注释掉的关键参数。这份PPT第3页“安装流程”只写了“解压即用”但实际落地必须补全三步硬操作。2.1 解压后第一件事激活set-pentaho-env.sh并重写JVM堆内存策略PDI 9.2默认set-pentaho-env.sh中JVM参数被全注释直接运行spoon.sh会触发Java默认堆大小通常256MB而一个含Kafka消费者Avro解析的转换在处理10万行JSON时OutOfMemoryError: Java heap space必然爆发。必须手动取消注释并修改# 修改前PDI 9.2原始脚本默认注释状态 # export OPT-Xms512m -Xmx1024m -XX:MaxMetaspaceSize256m # 修改后生产环境最低安全阈值 export OPT-Xms2g -Xmx4g -XX:MaxMetaspaceSize512m -XX:UseG1GC -XX:MaxGCPauseMillis200提示-Xmx4g不是拍脑袋定的。PDI 9.2引入Avro/Parquet支持后Schema解析器会常驻内存实测低于3g时Avro Input步骤在读取嵌套record时触发Full GC-XX:UseG1GC是强制要求因Kettle多线程行集缓存RowSet对GC停顿极度敏感CMS已淘汰。2.2 目录结构深度解读libswt与plugins的加载优先级决定你的Kafka连接是否失效PPT第5页“目录结构图”把libswt和plugins并列展示但未说明加载顺序。实际执行中若你自行下载了新版kafka-clients-3.3.2.jar放入plugins/kafka-plugin/lib/却忽略libswt目录下PDI 9.2自带的swt-4.25-gtk-linux-x86_64.jar与Kafka插件的GTK依赖冲突会导致Kafka Consumer步骤在Linux GUI模式下启动时抛出UnsatisfiedLinkError。验证方法是启动前执行# 检查swt库是否被正确加载关键 ./spoon.sh -version 21 | grep SWT # 正常输出应为SWT Version: 4.25 (GTK Linux x86_64) # 若报错则需强制指定swt路径避免自动探测失败 export SWT_GTK30 export LD_LIBRARY_PATH$PWD/libswt:$LD_LIBRARY_PATH2.3samples目录不是摆设用sales_transformation.ktr反向工程元数据传递链PPT第7页提到“参考samples示例”但没说清怎么用。samples/transformations/sales_transformation.ktr是PDI 9.2唯一内置的、完整走通“MySQL→JSON→Parquet→HDFS”全链路的转换其价值在于暴露了Kettle最隐蔽的元数据机制——字段类型在步骤间传递时的隐式降级规则。例如MySQL输入步骤中order_amount DECIMAL(10,2)字段在JSON Output步骤中若未手动设置Number类型精度会被自动转为Double导致后续Parquet Output写入时精度丢失该示例在JSON Output步骤的“Fields”标签页中明确勾选了Force output type并设为Number且在Precision列填2。这解释了为什么你自己的转换里“看起来字段名都对”但下游Parquet文件用parquet-tools meta查看schema时order_amount类型却是double而非decimal——PPT第12页“数据类型”表格只列了6种类型却没写清类型传递的显式声明义务。3. 转换Transformation核心机制行集缓存RowSet不是管道而是带背压的并发队列PPT第10页用箭头图示意“步骤→跳→步骤”但所有初学者都误以为Hop是无状态管道。实际上Kettle 9.2的Hop本质是有界阻塞队列Bounded Blocking Queue其容量、阻塞策略、线程模型直接决定转换能否稳定跑通百万级数据。不理解这点你永远卡在“为什么加了10个过滤步骤反而变慢”的困惑里。3.1 行集缓存RowSet的物理实现与容量计算公式每个Hop背后是一个org.pentaho.di.trans.RowSet实例其底层是java.util.concurrent.ArrayBlockingQueue。容量并非固定值而是由转换设置中的Nr of rows in rowset默认10000和Shared buffer size默认100000共同约束。真实容量计算公式为实际RowSet容量 min(Nr of rows in rowset, Shared buffer size / 单行平均字节数)例如处理10万行用户行为日志每行平均2KBShared buffer size保持默认100000则实际RowSet容量 min(10000, 100000/2048) ≈ 48行。此时即使Nr of rows in rowset设为10000也毫无意义——缓存瞬间满溢上游步骤强制阻塞。验证方法在转换中右键任意Hop → “编辑跳” → 查看Row set size值再用以下命令估算单行字节数# 对源CSV抽样100行计算平均长度含分隔符 head -n 100 source.csv | awk {sumlength} END {print sum/NR} # 假设输出为1532则RowSet实际容量 min(10000, 100000/1532) ≈ 653.2 并发执行模型所有步骤真·同时启动但数据流≠执行流PPT第14页强调“所有步骤并发执行”但新手常混淆“线程并发”与“数据流顺序”。Kettle中每个步骤独占一个线程StepThread数据流Data Flow指行集缓存中的数据移动执行流Execution Flow指步骤自身的生命周期初始化→运行→结束。关键结论步骤A写满RowSet后阻塞不代表步骤B停止运行——B可能正从自己的输入RowSet读取旧数据继续处理。这就是为什么你在日志里看到Step A paused但Step B仍在输出Read 1000 rows。调试技巧在spoon.sh启动时添加JVM参数强制打印线程栈# 启动时追加参数 ./spoon.sh -extra -Dpentaho.debugtrue # 日志中搜索StepThread可看到各步骤线程状态3.3 分发Distribute与复制Copy的本质网络IO瓶颈的放大器PPT第16页用两个图标区分分发/复制但没说清性能代价。当一个步骤有多个输出Hop时分发Distribute行集缓存中的行按轮询Round-Robin分给下游步骤单行只进一个下游复制Copy行集缓存中的每行都完整拷贝到所有下游内存占用×下游数量。陷阱案例你设计了一个“清洗→校验→写库”三步骤链但为省事把“清洗”步骤的输出Hop设为复制连向“校验”和“写库”。当处理100万行时“校验”步骤读取100万行“写库”步骤也读取100万行但行集缓存需存储200万行副本——直接触发OutOfMemoryError。正确做法是用Copy rows to result步骤将清洗后数据暂存内存再由两个独立步骤分别读取避免复制。4. 数据库连接与同步调优SSL加密、连接池、批量提交的三重锁死链PPT第19页“数据库连接”仅展示JDBC URL填写框但生产环境90%的同步失败源于连接层配置失当。Kettle 9.2对MySQL/Oracle的连接管理已升级为Pentaho统一连接池PentahoConnectionPool其参数与传统DBCP完全不同。4.1 SSL连接必须双确认JDBC参数 步骤级开关PPT第20页截图中MySQL连接配置框未勾选“Use SSL”这是重大隐患。PDI 9.2要求SSL启用必须满足双重认证JDBC URL中必须包含useSSLtruerequireSSLtrueverifyServerCertificatetrue在“数据库连接”对话框中必须勾选“Use SSL”复选框否则Kettle忽略URL中的SSL参数。验证方法连接测试通过后在转换中添加Database lookup步骤执行SQLSHOW STATUS LIKE Ssl%返回Ssl_cipher非空值才表示SSL真正生效。4.2 连接池参数调优maxIdle不是越大越好PDI 9.2默认连接池maxIdle20但高并发转换中若maxIdle设过高如50会导致数据库端连接数爆满。真实调优公式maxIdle ≤ (数据库最大连接数 × 0.7) ÷ 同时运行的转换数例如MySQLmax_connections500当前有5个转换并发运行则maxIdle ≤ (500×0.7)/5 70但需预留20%余量故设为56更安全。修改位置在># 修改前默认 SampleData/maxIdle20 # 修改后按公式计算 SampleData/maxIdle56 SampleData/minIdle5 SampleData/maxWait300004.3 批量提交Batch Insert的临界点Commit size与RowSet的耦合陷阱PPT第22页“Load装载”提到“设置提交大小”但未说明Commit size与RowSet容量的强耦合。当Commit size1000但RowSet容量仅500时Kettle会在写入500行后因缓存满而阻塞无法凑够1000行提交——导致事务长时间挂起最终超时。解决方案Commit size必须是RowSet容量的整数倍。若RowSet500则Commit size只能设为500、1000、1500…否则必现“半提交”现象。注意此规则在PDI 9.2的Table Output步骤中强制校验若不满足会抛出Batch update failed: RowSet is not large enough for commit size。5. 避坑指南6条血泪经验总结从“绿灯亮了”到“数据准了”的最后一公里PPT资源本身不包含排错章节但基于某实验室在模拟项目X中对PDI 9.2的237次生产故障复盘提炼出以下6条高频踩坑点。每条均按“现象→原因→解决”结构编写拒绝模糊描述。5.1 现象转换日志显示“Finished”但目标表数据量比源表少1行原因CSV File Input步骤中“Header”选项被勾选但源CSV实际无标题行导致首行数据被误判为字段名而跳过。解决在CSV File Input步骤的“Content”标签页中取消勾选“Header”若CSV确有标题行需在“Fields”标签页中手动删除自动生成的第一行字段定义。5.2 现象JSON Input步骤解析嵌套数组时崩溃报NullPointerException原因PDI 9.2的JSON Input步骤对$..items[*]这类深层路径支持不完善当JSON中items字段为null时未做空值保护。解决在JSON Input步骤前插入Filter rows步骤添加条件ISNULL(items)将null分支导向Dummy步骤丢弃或改用JavaScript步骤预处理JSON字符串用if(json.items){...}包裹解析逻辑。5.3 现象MongoDB Output步骤写入失败日志报SSLHandshakeException原因虽在JDBC URL中设置了ssltrue但未在MongoDB Output步骤的“Advanced”标签页中勾选Use SSL且未导入MongoDB证书到JVM信任库。解决① 步骤中勾选Use SSL② 执行keytool -importcert -file mongodb-cert.crt -keystore $JAVA_HOME/jre/lib/security/cacerts -alias mongodb③ 重启Spoon。5.4 现象Avro Input步骤读取Schema时卡死CPU占用100%原因Avro Schema中定义了递归嵌套类型如{type: record, name: Node, fields: [{name: parent, type: [null, Node]}]}PDI 9.2的Avro解析器存在无限递归Bug。解决改用Parquet Input步骤PDI 9.2对其递归支持更健壮或预处理Avro Schema将递归引用改为字符串IDparent_id: {type: string}。5.5 现象Job中调用Transformation后子转换日志不输出到主Job日志原因PDI 9.2默认关闭子转换日志继承Transformation步骤的“Logging”标签页中Capture transformation logging未勾选。解决在Transformation步骤中勾选Capture transformation logging并设置Log level为Basic或更高日志将合并到Job日志的Transformation log节点下。5.6 现象Carte集群模式下远程执行的转换无法读取本地shared.xml中的数据库连接原因Carte服务端未加载客户端shared.xml其连接池仅识别carte-config.xml中定义的JNDI。解决将shared.xml中的数据库连接配置完整复制到carte-config.xml的jndi节点内并重启Carte服务或改用Database connection步骤中直接填写JDBC参数牺牲安全性换可用性。6. 进阶验证用kitchen.shpan.sh构建CI/CD流水线让每次同步都可审计、可回滚PPT资源止步于UI操作但真实项目需要的是可重复、可验证、可回滚的同步流程。我一般会把26张PPT里的知识点固化为一套基于Shell脚本的CI/CD验证流水线核心是用kitchen.sh作业驱动pan.sh转换并通过kettle.log解析实现自动化断言。6.1 构建标准化执行脚本run_sync.sh该脚本封装了PDI 9.2所有关键参数确保每次执行环境一致#!/bin/bash # run_sync.sh - 生产环境同步执行脚本 TRANS_PATH/opt/pdi92/resources/orders_sync.ktr JOB_PATH/opt/pdi92/resources/orders_full_job.kjb LOG_DIR/var/log/kettle TIMESTAMP$(date %Y%m%d_%H%M%S) # 强制指定JVM参数覆盖spoon.sh默认值 export KETTLE_OPTS-Xms3g -Xmx6g -XX:MaxMetaspaceSize1g -XX:UseG1GC # 执行转换带超时保护 timeout 3600s ./pan.sh \ -file$TRANS_PATH \ -levelBasic \ -logfile$LOG_DIR/trans_${TIMESTAMP}.log \ -param:SOURCE_DBprod_mysql \ -param:TARGET_DBstarrocks \ -param:SYNC_DATE$(date -d yesterday %Y-%m-%d) \ 21 | tee $LOG_DIR/trans_${TIMESTAMP}_stdout.log # 检查退出码 if [ $? -eq 0 ]; then echo [$TIMESTAMP] Transformation SUCCESS else echo [$TIMESTAMP] Transformation FAILED 2 exit 1 fi6.2 自动化日志断言从kettle.log提取关键指标PPT第25页提到“查看日志”但人工翻日志效率极低。我用Python脚本解析kettle.log提取4项黄金指标指标提取正则合格阈值业务含义Rows readRows read.*?(\d)≥ 源表当日增量数据是否完整抽取Rows writtenRows written.*?(\d)Rows read转换过程无丢行ErrorsErrors.*?(\d) 0无数据质量错误RowSet full次数RowSet full.*?(\d)≤ 3缓存配置合理无严重阻塞# validate_log.py import re import sys def parse_kettle_log(log_file): with open(log_file) as f: content f.read() metrics {} metrics[rows_read] int(re.search(rRows read.*?(\d), content).group(1)) metrics[rows_written] int(re.search(rRows written.*?(\d), content).group(1)) metrics[errors] int(re.search(rErrors.*?(\d), content).group(1)) metrics[rowset_full] len(re.findall(rRowSet full, content)) return metrics if __name__ __main__: log_path sys.argv[1] m parse_kettle_log(log_path) # 断言逻辑 assert m[rows_read] 10000, fRows read too low: {m[rows_read]} assert m[rows_written] m[rows_read], fRows mismatch: {m[rows_written]} vs {m[rows_read]} assert m[errors] 0, fErrors found: {m[errors]} assert m[rowset_full] 3, fRowSet full too frequent: {m[rowset_full]} print(✅ All assertions passed!)6.3 回滚机制基于kitchen.sh的作业版本快照PPT完全没提回滚但生产环境必须有。我在orders_full_job.kjb中将所有Transformation步骤的file参数改为变量${TRANS_VERSION}并在CI中维护版本映射表版本号转换文件路径部署时间备注v1.2.0/opt/pdi92/trans/v1.2.0/orders.ktr2024-03-10修复时区解析Bugv1.1.5/opt/pdi92/trans/v1.1.5/orders.ktr2024-03-05初始上线版执行回滚只需# 将v1.1.5版本设为当前 ./kitchen.sh -file/opt/pdi92/jobs/orders_full_job.kjb -param:TRANS_VERSIONv1.1.5从那以后我每次上线新转换都强制走一遍run_sync.shvalidate_log.py 版本快照三步哪怕多花15分钟。因为比起凌晨三点爬起来修数据这15分钟是最便宜的后悔药。希望帮到你。本文还有配套的精品资源点击获取

相关新闻

朴素贝叶斯分类实战:从贝叶斯定理到三种变体与踩坑经验

朴素贝叶斯分类实战:从贝叶斯定理到三种变体与踩坑经验

写朴素贝叶斯这篇文章之前,我先说个真实感受。做机器学习项目时,新手容易一上来就追复杂的模型,但遇到文本分类、垃圾邮件识别这类问题,朴素贝叶斯往往是个硬得离谱的对手。它看起来"朴素"得不像话,可训练快…

2026/10/18 19:41:14 阅读更多 →
蒙特卡洛搜索树在自动驾驶决策中的工程实践与优化

蒙特卡洛搜索树在自动驾驶决策中的工程实践与优化

1. 为什么在自动驾驶决策模块里塞进一棵搜索树第一次把蒙特卡洛搜索树(Monte Carlo Tree Search,下文简称 MCTS)往自动驾驶决策模块里塞的时候,我心里是打鼓的。规划控制那边已经有成熟的采样规划器、有基于优化的方法&#xff0c…

2026/10/18 19:41:14 阅读更多 →
OpenCV矩形几何与三个外接函数详解:Rect、RotatedRect实战

OpenCV矩形几何与三个外接函数详解:Rect、RotatedRect实战

做视觉也好几年了,OpenCV 里的几何类翻来覆去就那么几个,但凡是做轮廓分析、缺陷检测、OCR 预处理、工业抓取定位,十个项目有八个都绕不开Rect、RotatedRect这两个类,以及boundingRect()、minAreaRect()、fitEllipse()这三个函数。…

2026/10/18 18:14:47 阅读更多 →

最新新闻

企业合规智能化:LLM+RPA+Agent架构设计与实战

企业合规智能化:LLM+RPA+Agent架构设计与实战

企业合规这事儿,我这两年被问得最多的就是一句话:“明明配了人、定了制度、走了流程,怎么还总是出事?”其实答案很扎心:纯靠人工盯合规,本质上是在用有限的人力对抗无限变化的规则和系统。就拿供应商准入审…

2026/10/19 7:11:10 阅读更多 →
AI辅助文献综述:从三周卡壳到四天成稿的完整工作流

AI辅助文献综述:从三周卡壳到四天成稿的完整工作流

“读不完、理不清、不敢下判断”——这是不少研究生写文献综述时最常见的卡顿来源。你可能以为综述难在“写”,动笔之后才发现,真正拖垮进度的其实是最前面那段“闷头看文献”的日子。我见过一个熟悉的场景:某同学花了三周时间把五十多篇文献…

2026/10/19 7:11:10 阅读更多 →
基于OpenCV与Python的单目三维重建:两张照片还原三维点云

基于OpenCV与Python的单目三维重建:两张照片还原三维点云

简介:这是一份基于Python开发的单目三维重建项目完整源码与文档,整体为一套高分毕业设计成果,答辩评审得分达98分。项目聚焦相机标定与三维点云重建流程,适合计算机、通信、人工智能、自动化等相关专业学生、老师及从业者参考&…

2026/10/19 7:11:10 阅读更多 →
基于Python的单目三维重建实战:从相机标定到三维点云恢复

基于Python的单目三维重建实战:从相机标定到三维点云恢复

简介:这是一份基于 Python 实现的单目三维重建完整项目,面向计算机、通信、人工智能、自动化等专业的高校学生、教师及从业者,尤其适合作为毕业设计、课程设计或大作业的参考范例。源码围绕相机标定、特征匹配与三维点云重建等核心环节展开&a…

2026/10/19 7:11:10 阅读更多 →
Claude Code重塑政策分析工作流:让AI代理做文本初筛与差异对比

Claude Code重塑政策分析工作流:让AI代理做文本初筛与差异对比

做政策分析最花时间的从来不是"写",而是"读"和"整理"。我手头常见的活儿是这样的:几十份政策原文、解读文章、统计数据堆在硬盘里,格式五花八门,有PDF、有网页另存的HTML、有扫描件、有Excel表格。…

2026/10/19 7:11:10 阅读更多 →
KV Cache与vLLM:大模型推理加速的显存管理与并发优化

KV Cache与vLLM:大模型推理加速的显存管理与并发优化

老规矩,接着上一篇继续写。今天聊的是大模型推理加速系列里最硬核的一块:KV Cache 和 vLLM。前几篇我们聊了量化、算子融合、批处理调度,那些优化通常能带来 20%、50% 的提升,但 KV Cache 和 vLLM 带来的往往是数量级上的差距&…

2026/10/19 7:10:10 阅读更多 →

日新闻

频率跟踪型PWM电源设计:臭氧发生器谐振点漂移与软开关实现

频率跟踪型PWM电源设计:臭氧发生器谐振点漂移与软开关实现

简介:本资源为电源技术方向的学术研究文档,聚焦介质阻挡放电型臭氧发生器电源的频率跟踪型PWM控制策略,面向电力电子、高压电源及臭氧应用领域的科研人员与工程技术人员。针对负载呈容性、等效电容随外加电压升高而增大、谐振频率随之漂移的难…

2026/10/19 0:00:47 阅读更多 →
Vibe Coding 遇上 TaoToken:把开发者思维圣殿的灵感流接入统一 Key 通道

Vibe Coding 遇上 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/19 0:00:47 阅读更多 →
HundredCV-Chat话题建模实战教程:利用4,871个内置话题标签构建主题分析系统

HundredCV-Chat话题建模实战教程:利用4,871个内置话题标签构建主题分析系统

【免费下载链接】HundredCV-Chat 项目地址: https://ai.gitcode.com/hf_mirrors/Jax-dan/HundredCV-Chat 点击查看 免费下载 HundredCV-Chat 是一个由 100 位青年简历数据开发而来的中文多轮对话数据集,共包含 24,750 组日常闲聊对话和 4,871 个话题标签…

2026/10/19 0:00:47 阅读更多 →

周新闻

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

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

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

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

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

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

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

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

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

2026/10/19 1:30:52 阅读更多 →

月新闻

我发现了一个新思路:用 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/19 2:54:50 阅读更多 →
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/17 17:22:31 阅读更多 →
黑夜航拍船只数据集训练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/18 12:16:16 阅读更多 →