Oracle数据库自动收集统计信息:原理、配置与性能优化实战
1. 项目概述为什么数据库需要“自动体检”做数据库运维的同行们估计都经历过类似的场景某个风和日丽的下午业务系统突然变慢查询响应时间从毫秒级飙升到秒级业务部门电话直接打爆。你火急火燎地连上数据库一通检查发现CPU、内存、IO都正常最后定位到问题是某个核心大表的统计信息过时了。优化器基于一周前的数据分布为今天的数据量生成了一个极其低效的执行计划。手动收集一下统计信息系统瞬间恢复如初。这种“救火”经历一次就够让人头疼了。“Oracle自动收集统计信息”这个功能就是为了从根本上杜绝这类“计划外救火”而设计的。你可以把它理解为给Oracle数据库安排了一个7x24小时在线的“智能体检医生”。它的核心任务是在后台自动、持续地监控数据库中对象的“健康状态”——主要是数据量行数和数据分布列的离散度、空值比例等的变化。一旦检测到变化超出了预设的阈值这个“医生”就会在系统相对空闲的时段默认是每晚的维护窗口自动发起统计信息的收集工作确保优化器始终掌握着最新、最准确的数据“地图”从而生成高效的SQL执行计划。这个功能的价值远不止于“省事”。对于动辄数百个应用、成千上万张表的生产环境手动维护统计信息几乎是一项不可能完成的任务。自动收集机制将DBA从繁琐、重复且容易遗漏的手工操作中解放出来让他们能聚焦于更复杂的性能调优和架构设计。同时它通过持续性的“微调”避免了因统计信息突然大幅更新而可能引发的“计划突变”Plan Regression风险让系统性能保持在一个稳定、可预测的水平线上。简单来说它用自动化实现了数据库性能维护的“治未病”。2. 自动收集统计信息的核心机制与原理拆解理解自动收集统计信息不能只停留在“开了就能用”的层面。我们需要深入它的“调度中枢”、“决策大脑”和“执行单元”明白它何时启动、为何启动以及如何执行。2.1 调度中枢维护窗口与自动任务自动收集统计信息的核心调度器是Oracle的“自动维护任务”AutoTask框架。这个框架预定义了几个关键任务其中就包括“自动优化器统计信息收集”。这个任务并非随时运行而是被绑定到预定义的“维护窗口”Maintenance Window上。Oracle默认创建了周一到周日、每天一个的维护窗口例如“MONDAY_WINDOW”通常是从晚上10点到凌晨2点“SATURDAY_WINDON”和“SUNDAY_WINDOW”的时长会更长。这些窗口定义了自动任务可以运行的时间段。你可以通过DBA_AUTOTASK_WINDOW_CLIENTS视图查看任务与窗口的关联情况。自动收集统计信息任务会尝试在其所属的维护窗口内完成工作如果窗口关闭时仍未完成任务会被中断并在下一个窗口开启时继续。注意维护窗口的开启依赖于数据库的“自动任务”功能是否启用。如果因为某些原因例如早期的手工调整禁用了自动任务那么自动收集统计信息也将停止工作。检查命令是SELECT client_name, status FROM dba_autotask_client;确保“auto optimizer stats collection”的状态是“ENABLED”。2.2 决策大脑什么情况下会触发收集这是自动收集机制最智能的部分。它并不是盲目地对所有对象进行全量收集而是基于一套精密的启发式算法来决定收集目标。主要依据以下几个判断维度陈旧对象Stale Objects这是最主要的触发条件。Oracle通过监控表上的DML操作INSERT, UPDATE, DELETE, TRUNCATE数量来判断数据是否发生了“显著”变化。监控的阈值不是固定的行数而是一个比例。默认的规则是当表中发生变化的行数超过总行数的10%时对于数据量非常大的表这个阈值会动态调低该表就会被标记为“陈旧”。你可以在DBA_TAB_STATISTICS视图中查看STALE_STATS列来确认。空统计信息对象Objects with No Statistics对于新建的、或者从未收集过统计信息的表或索引自动收集任务会将其纳入收集范围。监控状态Monitoring从Oracle 10g开始默认情况下表的监控特性是开启的MONITORING。这是实现陈旧性判断的基础。如果表的监控被关闭ALTER TABLE ... NOMONITORING;自动收集将无法感知该表的数据变化。在11g及以后版本此参数已被废弃监控默认且强制开启。2.3 执行单元收集策略与资源控制当决策大脑确定了要收集的对象列表后执行单元就开始工作。它并不是简单地调用DBMS_STATS.GATHER_TABLE_STATS而是采用了一套更精细的策略并行与串行自动收集任务会根据系统CPU数量、当前负载以及维护窗口的剩余时间动态决定使用并行度。对于大表它会尝试使用并行来加速对于小表或系统繁忙时则采用串行。增量与全局对于分区表11g引入了增量统计信息收集特性。自动收集可以只收集发生数据变化的分区的统计信息然后智能地推导出全局表的统计信息这极大地减少了大分区表的维护开销。采样比例自动任务会根据表的大小智能调整ESTIMATE_PERCENT参数。对于超大型表它可能采用一个较低的采样比例如1%在精度和速度之间取得平衡。资源管理自动收集任务受“资源管理器”Resource Manager的约束。DBA可以为维护窗口专门创建一个资源计划限制自动任务消耗的CPU、I/O等资源防止其过度影响可能仍在运行的批处理作业。理解这套机制后我们就能明白自动收集统计信息是一个高度可配置、智能化的后台服务而非一个简单的定时作业。3. 核心配置、管理与监控实操指南知道了原理我们来看看如何驾驭它。大部分情况下默认配置就能良好工作但对于特定的生产环境精细化的调整是必不可少的。3.1 关键配置参数解析与调整自动收集的行为主要由DBMS_STATS包中的参数控制其中最重要的是DBMS_STATS.SET_GLOBAL_PREFS过程。以下是一些关键参数的调整思路AUTO_TASK_STATUS: 控制自动任务本身的开关。除非有特殊原因如大规模数据迁移期间否则应保持ENABLED。-- 查看状态 SELECT parameter_name, parameter_value FROM dba_advisor_parameters WHERE task_name AUTO_OPT_STATS_TASK AND parameter_name AUTO_TASK_STATUS; -- 禁用谨慎操作 EXEC DBMS_STATS.SET_GLOBAL_PREFS(AUTO_TASK_STATUS, OFF);CASCADE: 决定收集表统计信息时是否同时收集索引统计信息。默认是DBMS_STATS.AUTO_CASCADE让Oracle自己决定。对于索引列数据分布与表列差异很大的场景可以评估是否设置为TRUE确保一致性。EXEC DBMS_STATS.SET_GLOBAL_PREFS(CASCADE, DBMS_STATS.AUTO_CASCADE);DEGREE: 并行度。默认是NULL即由Oracle根据对象属性和系统负载决定。在硬件资源充足且维护窗口时间紧张的系统可以适当设置一个全局并行度如DEGREE 8来提升收集速度。EXEC DBMS_STATS.SET_GLOBAL_PREFS(DEGREE, 8);METHOD_OPT: 控制直方图Histogram的收集策略。这是最容易引发性能问题的参数之一。默认是FOR ALL COLUMNS SIZE AUTO。Oracle会自动为那些在WHERE条件中出现、且数据分布不均匀的列创建直方图。但在某些极端情况下过多的直方图尤其是高度平衡直方图可能导致执行计划不稳定。对于已知的、数据分布均匀的列可以将其排除。-- 例如不为某些列收集直方图 EXEC DBMS_STATS.SET_TABLE_PREFS(SCHEMA_NAME, TABLE_NAME, METHOD_OPT, FOR ALL COLUMNS SIZE 1, FOR COLUMNS SIZE 254 COLUMN_NAME);维护窗口调整如果默认的维护窗口时间与你的业务高峰或批处理时间冲突必须调整。-- 首先查看当前窗口 SELECT window_name, repeat_interval, duration FROM dba_scheduler_windows WHERE enabled TRUE; -- 修改窗口时间例如将周一窗口改为凌晨1点到5点 BEGIN DBMS_SCHEDULER.SET_ATTRIBUTE( name MONDAY_WINDOW, attribute REPEAT_INTERVAL, value FREQWEEKLY;BYDAYMON;BYHOUR1;BYMINUTE0;BYSECOND0 ); DBMS_SCHEDULER.SET_ATTRIBUTE( name MONDAY_WINDOW, attribute DURATION, value NUMTODSINTERVAL(4, HOUR) ); END; /3.2 日常监控与健康检查脚本不能配置完就撒手不管。建立日常监控机制是确保自动收集健康运行的关键。检查自动任务状态与历史-- 查看自动任务客户端状态 SELECT client_name, status, consumer_group, window_group FROM dba_autotask_client; -- 查看最近自动统计信息收集任务的执行情况 SELECT operation, target, start_time, end_time, status FROM dba_optstat_operations WHERE operation LIKE gather% ORDER BY start_time DESC FETCH FIRST 20 ROWS ONLY;识别陈旧对象与未收集对象-- 查看当前有哪些表的统计信息是陈旧的 SELECT owner, table_name, stale_stats, last_analyzed FROM dba_tab_statistics WHERE stale_stats YES AND owner NOT IN (SYS, SYSTEM) ORDER BY last_analyzed NULLS FIRST; -- 查看从未分析过的对象 SELECT owner, table_name FROM dba_tables WHERE last_analyzed IS NULL AND owner NOT IN (SYS, SYSTEM) AND temporary N;监控维护窗口执行详情SELECT wi.window_name, wi.start_time, wi.actual_duration, wj.job_name, wj.actual_start_date, wj.run_duration, wj.status FROM dba_autotask_window_history wi LEFT JOIN dba_scheduler_job_run_details wj ON wi.window_start_time wj.log_date WHERE wi.window_name LIKE %WINDOW ORDER BY wi.start_time DESC FETCH FIRST 10 ROWS ONLY;3.3 特殊对象的处理策略自动收集虽好但并非万能。对于一些特殊对象需要手动干预策略。** volatile 表变化剧烈的表**有些小表数据量不大但每天会被全量删除再插入多次。对于这种表自动收集可能因为其10%的变化阈值而频繁收集得不偿失。更好的策略是锁定Lock其统计信息。-- 先收集一次好的统计信息 EXEC DBMS_STATS.GATHER_TABLE_STATS(APP_OWNER, VOLATILE_TABLE); -- 然后锁定防止被自动任务覆盖 EXEC DBMS_STATS.LOCK_TABLE_STATS(APP_OWNER, VOLATILE_TABLE); -- 解锁命令 -- EXEC DBMS_STATS.UNLOCK_TABLE_STATS(APP_OWNER, VOLATILE_TABLE);外部表与全局临时表外部表的统计信息通常需要手动设置或通过DBMS_STATS导入。全局临时表的统计信息是会话私有的自动收集不适用应在应用代码中针对会话级数据手动收集。超大表数十亿行对于这类表全量收集可能永远无法在维护窗口内完成。此时需要考虑使用增量统计信息如果是分区表。手动设置一个非常低的、固定的采样比例如ESTIMATE_PERCENT 0.01。仅收集关键列的统计信息忽略那些不参与查询条件的列。将大表排除在自动收集之外采用自定义的、周期更长的手动收集策略。4. 常见问题、故障排查与性能优化实录即使配置得当在实际运行中也可能遇到各种问题。下面是我在多年运维中积累的一些典型场景和解决思路。4.1 自动收集“失灵”了——故障排查清单当发现SQL性能下降怀疑是统计信息未及时更新时请按以下清单排查检查自动任务总开关确认AUTO_TASK_STATUS是ENABLED。检查维护窗口确认最近的维护窗口是否成功打开并执行了任务。查看DBA_AUTOTASK_WINDOW_HISTORY和DBA_SCHEDULER_JOB_RUN_DETAILS。检查对象监控确认问题表的监控是开启的现代版本通常无需担心。检查陈旧性判断确认该表的STALE_STATS是否为YES。如果数据变化很大但此列仍为NO可能是监控数据尚未刷新。可以尝试手动执行DBMS_STATS.FLUSH_DATABASE_MONITORING_INFO来刷新。检查资源竞争在维护窗口期间是否有其他重量级作业如大型报表查询、数据备份耗尽了系统资源导致自动任务进度缓慢甚至超时失败查看DBA_RESUMABLE和ASH/AWR报告。检查对象锁定是否有人手动锁定了该表的统计信息查询DBA_TAB_STATISTICS的STATTYPE_LOCKED列。4.2 自动收集“太积极”了——资源与干扰控制有时问题不是不收集而是收集得太频繁或影响到了业务。场景凌晨的批处理作业经常变慢发现与维护窗口时间重叠自动收集任务消耗了大量I/O和CPU。解决方案调整窗口时间这是最直接的方法将维护窗口调整到批处理作业完全结束之后。使用资源管理器创建一个资源计划在维护窗口内限制“AUTO_TASK”消费者组的资源使用上限确保批处理作业有最低保障资源。排除特定对象对于在维护窗口期间必须保持高性能的表可以将其从自动收集中排除。EXEC DBMS_STATS.SET_TABLE_PREFS(SCHEMA, TABLE_NAME, PUBLISH, FALSE);设置PUBLISH为FALSE后自动任务仍会收集该表的统计信息但不会直接发布到数据字典而是存放到暂存区。DBA可以在合适的时间手动检查并发布DBMS_STATS.PUBLISH_PENDING_STATS。4.3 收集后性能反而下降——处理“计划突变”这是最令人头疼的问题自动收集后某个关键SQL的执行计划突然变差性能急剧下降。根本原因新的统计信息改变了优化器对数据分布和基数的估算导致它选择了一个理论上更优但实际运行更差的执行计划例如错误地选择了索引扫描而非全表扫描。应急恢复立即使用DBMS_STATS.RESTORE_TABLE_STATS将统计信息回滚到之前的某个良好版本。Oracle会自动保存一段时间的历史统计信息。-- 查看可恢复的时间点 SELECT * FROM dba_optstat_operations WHERE target LIKE %TABLE_NAME% ORDER BY start_time DESC; -- 恢复到特定时间点 EXEC DBMS_STATS.RESTORE_TABLE_STATS(SCHEMA, TABLE_NAME, as_of_timestamp TO_TIMESTAMP(2023-10-27 22:00:00, YYYY-MM-DD HH24:MI:SS));长期解决创建SQL计划基线SQL Plan Baseline在性能良好时为关键SQL固定其执行计划。这样即使统计信息变化优化器也会优先选择已固定的计划。调整收集参数检查是否为相关列创建了“不受欢迎”的直方图。尝试调整METHOD_OPT排除某些列或限制直方图桶数。使用增量更改发布对于12c及以上版本可以考虑使用DBMS_STATS.SET_GLOBAL_PREFS(INCREMENTAL_STALENESS, USE_STALE_PERCENT)等更精细的控制策略。4.4 分区表收集策略选择增量 vs 全局对于大型分区表统计信息收集策略的选择直接影响效率和准确性。增量统计信息Incremental Statistics原理只收集数据发生变化的分区的统计信息并通过汇总这些分区级统计信息来推导全局统计信息。优点对于每天只新增一个分区的表收集速度极快资源消耗小。启用EXEC DBMS_STATS.SET_TABLE_PREFS(SCHEMA, PART_TABLE, INCREMENTAL, TRUE);注意点需要额外维护“概要信息”Synopsis。在分区维护操作如DROP/TRUNCATE PARTITION后可能需要手动处理概要信息。全局收集Global Statistics原理每次收集都视为一个全新的表重新计算所有分区的统计信息并汇总。适用场景分区数量较少如100或者分区数据经常发生跨分区的全局性变化。缺点对于成百上千个分区的大表收集时间可能无法接受。实操心得对于按时间范围分区、且主要查询都带有分区键条件的事实表强烈推荐启用增量统计信息。在启用后第一次收集可能需要较长时间因为它要建立基线但之后的日常维护将变得非常轻量。5. 高级技巧与定制化自动收集方案当默认的自动收集无法满足复杂环境的需求时我们就需要更高级的定制方案。5.1 利用统计信息偏好进行精细化管控DBMS_STATS.SET_*_PREFS系列过程提供了对象级的精细控制。我们可以为不同的表设置不同的策略。场景一个核心交易表TXN_TABLE需要高精度的统计信息且必须在每晚2点前完成收集一个历史日志表LOG_TABLE数据量大但查询简单可以接受低精度和更长的收集时间。方案-- 为交易表设置高采样比例并优先收集 EXEC DBMS_STATS.SET_TABLE_PREFS(APP, TXN_TABLE, ESTIMATE_PERCENT, DBMS_STATS.AUTO_SAMPLE_SIZE); -- 使用自动采样通常较高 EXEC DBMS_STATS.SET_TABLE_PREFS(APP, TXN_TABLE, PRIORITY, CRITICAL); -- 设置高优先级如果Oracle版本支持 -- 为日志表设置低采样比例并可能在周末收集 EXEC DBMS_STATS.SET_TABLE_PREFS(APP, LOG_TABLE, ESTIMATE_PERCENT, 1); -- 固定1%采样 -- 无法直接指定日期但可以通过创建自定义任务实现见下文5.2 创建自定义的自动收集任务当默认的维护窗口和策略完全不符合业务节奏时我们可以彻底接管创建自己的自动收集任务。场景系统只有每周六凌晨有足够长的空闲时间需要在这段时间内按照自定义的规则如先收集核心表再收集非核心表完成统计信息收集。方案使用DBMS_SCHEDULER创建自定义作业链。创建收集核心表的程序CREATE OR REPLACE PROCEDURE gather_critical_stats AS BEGIN DBMS_STATS.GATHER_SCHEMA_STATS( ownname APP, options LIST OBJECT, objlist DBMS_STATS.OBJECTLIST(TXN_TABLE, USER_TABLE, PRODUCT_TABLE), degree 4 ); END;创建收集非核心表的程序略。创建调度作业链BEGIN DBMS_SCHEDULER.CREATE_JOB( job_name WEEKLY_STATS_JOB, job_type PLSQL_BLOCK, job_action BEGIN gather_critical_stats(); gather_noncritical_stats(); END;, start_date SYSTIMESTAMP, repeat_interval FREQWEEKLY;BYDAYSAT;BYHOUR2, enabled TRUE, comments Custom weekly stats collection job ); END;禁用默认的自动收集任务在自定义方案稳定运行后记得将全局的AUTO_TASK_STATUS设置为OFF避免冲突。5.3 混合云与多租户环境下的考量随着架构演进自动收集的部署也需要适应新环境。自治数据库Autonomous Database在Oracle自治数据库中统计信息收集是完全自动化且黑盒化的用户无法也不需要进行干预。DBA需要转变思维从“如何收集”变为“如何验证和信任”系统自动收集的结果并利用其提供的性能工具进行监控。多租户架构CDB/PDB在可插拔数据库环境中自动收集任务可以在容器数据库CDB级别或每个可插拔数据库PDB级别进行配置。通常建议在每个PDB内独立管理其统计信息收集策略因为每个PDB的业务负载和数据特征可能完全不同。可以通过连接到PDB后使用DBMS_STATS设置该PDB内的首选项。数据仓库与OLAP系统这类系统数据量极大加载模式通常是周期性的批量ETL。自动收集的“陈旧性”监控可能不适用。更佳实践是在ETL加载流程的最后一步显式调用DBMS_STATS来收集加载后数据的统计信息确保在业务查询开始前统计信息就是最新的。最后再分享一个小技巧定期比如每季度审查一次DBA_TAB_STATISTICS和DBA_IND_STATISTICS关注那些“LAST_ANALYZED”时间非常久远但又不是“STALE”的表。这些表可能是静态的维度表或者是监控机制未能捕捉到的特殊变化表。对于它们手动建立一次收集并锁定其统计信息或者将其纳入自定义的、周期更长的收集任务中可以避免潜在的“统计信息突然失效”风险。自动化虽好但人的定期巡检和逻辑判断依然是保障系统稳健运行的最后一环。

相关新闻

英雄联盟智能助手Seraphine:3分钟免费安装,实时战绩查询与BP决策优化全攻略

英雄联盟智能助手Seraphine:3分钟免费安装,实时战绩查询与BP决策优化全攻略

英雄联盟智能助手Seraphine:3分钟免费安装,实时战绩查询与BP决策优化全攻略 【免费下载链接】Seraphine 英雄联盟战绩查询工具 项目地址: https://gitcode.com/gh_mirrors/se/Seraphine 还在为英雄联盟对局信息不足而烦恼?想在BP阶段就…

2026/10/19 4:51:27 阅读更多 →
设备预测性维护失效真相大起底,92%企业忽略的3层数据断点与工业大模型校准方法

设备预测性维护失效真相大起底,92%企业忽略的3层数据断点与工业大模型校准方法

更多请点击: https://codechina.net 第一章:设备预测性维护失效真相大起底,92%企业忽略的3层数据断点与工业大模型校准方法 工业现场中,78%的预测性维护系统在上线6个月内准确率下降超40%,根源并非算法缺陷&#xff0…

2026/10/19 5:39:39 阅读更多 →
AI 检测怎么看?学校要求、文本证据和人工判断你的文章是不是 AI

AI 检测怎么看?学校要求、文本证据和人工判断你的文章是不是 AI

看 Turnitin AI 检测时,先确认报告是否适用于这份文本,再查看被标出的段落和报告说明,最后结合草稿、来源、写作记录及学校程序作人工判断。AI 写作分数只是一个线索,不能单独证明学术不端,也不能替代教师调查、学生说…

2026/10/20 0:37:35 阅读更多 →

最新新闻

PS自带字体设计商标侵权风险高,安全用字流程详解

PS自带字体设计商标侵权风险高,安全用字流程详解

前几天有个做电商的朋友发了个文件给我,说是新做的品牌字标,急着要提交商标注册。我打开一看,他用PS里的自带字体拉了四个字,又加了个描边,觉得很稳。我第一句话就问:这字体你拿到商用授权了吗?…

2026/10/20 5:54:19 阅读更多 →
鸿蒙应用开发中的手势冲突排查与解决实战指南

鸿蒙应用开发中的手势冲突排查与解决实战指南

先讲个我实际踩过的坑。上次做一个卡片瀑布流页面,每张卡片本身支持左右滑动来切换操作按钮,页面本身又是一个可上下滚动的长列表。写完之后第一轮自测就翻车了:手指在卡片上左右滑,列表纹丝不动;上下滑,卡…

2026/10/20 5:54:19 阅读更多 →
P2P_SDK集成指南:NAT穿透与音视频传输避坑实践

P2P_SDK集成指南:NAT穿透与音视频传输避坑实践

简介:这份TUTK IoTC官方SDK压缩包为开发者在Android、iOS、Windows及macOS平台快速构建摄像头P2P监控系统提供完整工具链,面向物联网或音视频领域的工程人员。压缩包内共1187个文件,整体约56.15MB,其中既包含Java、C源码及头文件&…

2026/10/20 5:54:19 阅读更多 →
App Inventor 集成 MQTT:用 UrsAI2Paho 扩展实现物联网实时通信

App Inventor 集成 MQTT:用 UrsAI2Paho 扩展实现物联网实时通信

简介:面向App Inventor开发者的UrsAI2Paho扩展包,是一个基于Eclipse Paho客户端库的MQTT插件,目标是让没有网络编程经验的用户也能通过拖拽积木完成连接服务器、发布/订阅主题和接收消息等物联网通信任务;内置心跳维持与QoS消息等…

2026/10/20 5:54:19 阅读更多 →
Eplan许可证管理优化:从部署到维护的完整排查指南

Eplan许可证管理优化:从部署到维护的完整排查指南

在电气设计团队里,Eplan 的许可证管理几乎每个管理员都绕不过去。日常最常听到的抱怨就是"明明采购了足够的授权,图纸高峰期却提示许可不足",或者"墙边工位那台电脑连着的是我们团队的许可证,但那人已经出差两周了…

2026/10/20 5:54:19 阅读更多 →
PPT工程化实战:用ppt-master实现演示文稿批量生成与自动化

PPT工程化实战:用ppt-master实现演示文稿批量生成与自动化

1. 项目缘起与核心定位第一次看到“ppt-master”这个标题,我脑子里蹦出来的不是某个具体工具,而是一类非常典型的工程需求:把演示文稿从“手工活”变成“可编程、可复用、可批量”的流水线。过去几年里,我参与过不少内部汇报、产品…

2026/10/20 5:53:19 阅读更多 →

日新闻

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/19 10:02:04 阅读更多 →
数字图像处理入门:反白、灰度化、调色板修改与导出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/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/19 9:10:22 阅读更多 →
黑夜航拍船只数据集训练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 阅读更多 →