MySQL误删数据怎么办?从binlog回放到备份恢复的完整自救指南
做运维和开发这几年最怕听到的一句话就是“我好像把生产库的表数据误删了。”MySQL数据库误删恢复这事儿平时没人当回事可真撞上一次能从凌晨三点忙到第二天中午手抖一下就是一场事故。我自己就帮同事和客户处理过好几回今天打算把“数据误删”从发现、处理、恢复再到预防的完整流程掰开揉碎讲一遍包含我实际踩过的坑和验证过的方法。希望你能用不上但如果真遇到了至少别慌知道第一步该干什么。1. 误删场景拆解先搞清楚你面对的是哪种“误删”1.1 三种常见的误删类型很多人一听说“误删”就觉得天塌了但其实误删和误删之间的恢复难度差别非常大。我习惯先把事故分成几类再决定走哪条恢复路线。第一类是DELETE误删比如本来想执行DELETE FROM user WHERE status 0结果条件丢了直接变成DELETE FROM user把整张表的数据全清掉了。这种场景只要开了binlog恢复希望最大基本能把数据找回来。第二类是TRUNCATE TABLE清空表它比DELETE更“狠”日志里通常只记录一个TRUNCATE事件但ROW格式的binlog里可能看不到具体行数据。好在这类操作不会删除表结构配合全量备份加binlog回放还是有得救的。第三类是DROP TABLE直接删表表结构和数据一起没了。这种情况最麻烦除了备份之外还得先把表结构找回来再考虑数据恢复流程复杂度直接上升一个梯队。另外还有一种边缘情况物理层面的“误删”比如有人直接在系统层面把数据目录下的ibd文件删了或者磁盘损坏导致文件丢失。这种情况跟上面三种的逻辑完全不一样后面我会单独讲。1.2 事故发生后头五分钟该做什么误删发生后第一个五分钟往往决定了恢复的难度系数。我先说结论任何补救动作都比不上“先停下所有写入”这个动作重要。如果你直接冲上去执行各种恢复命令或者让业务继续照常跑后果可能是binlog里新的写操作不断堆积InnoDB缓冲池里的旧数据页被新的数据页覆盖甚至磁盘上已经删除的数据块被重新分配原本能找回的数据也没了。所以我的习惯动作是第一时间通知业务侧暂停相关写入操作能停机就停机不能停机就把相关账号的写权限临时收掉。确认当前实例的binlog开关状态。执行SHOW BINARY LOGS;看看日志文件还在不在、有哪些文件这是后续恢复的关键底牌。记录误删时间线。问清楚操作人大概几点执行了那句命令最好精确到分钟因为我们做恢复时经常要卡时间点。如果条件允许做一个磁盘快照或直接把数据目录只读挂载备份一份哪怕恢复用不上也能防止后面操作把现场破坏掉。这几步做完再坐下来分析怎么恢复。不少事故最后变得不可收拾往往不是误删的那一下而是误删之后的乱操作。2. 恢复方案全景binlog、全量备份、延时从库各管哪一段2.1 binlog恢复的基石聊MySQL恢复绕不开binlog。它本质上是一个二进制日志文件记录的是所有会产生数据变更的操作比如INSERT、UPDATE、DELETE也包括DDL结构变更。只要实例开启了binlog这些日志就会按顺序追加到日志文件里。恢复的时候binlog相当于一台“时光机”。你可以指定从哪个时间点开始回放也可以指定在哪个位置停住这样就能把数据库恢复到某个精确时刻的状态。所以要养成一个习惯实例一上线就先确认binlog配置。我建议的配置是下面这样的。[mysqld] server-id1 log-bin/var/lib/mysql/mysql-bin binlog_formatROW max_binlog_size1G expire_logs_days7 gtid_modeON enforce_gtid_consistencyON这里重点说两个参数。第一个是binlog_format强烈建议用ROW。为什么因为ROW格式下日志会记录每一行数据变更前后的完整镜像恢复时能精确知道被删的是哪些行甚至能把误删的SQL生成出来。如果用的是STATEMENT格式记录的可能只是一条SQL语句碰到UPDATE或DELETE扫描范围特别大的情况回放时很难精确定位恢复精度会差很多。第二个是关于日志保留时间的参数MySQL 8.0里推荐用binlog_expire_logs_seconds老版本用expire_logs_days。很多团队只开了binlog但保留时间设置很短日志被自动清理掉了真出事才发现“底牌”早就没了。2.2 全量备份恢复的“底板”单靠binlog其实很难独立完成恢复因为它通常只记录增量变化不包含某个时间点之前完整的全量数据。所以全量备份就是整条恢复链路的“底板”。常见的全量备份有两种。一种是逻辑备份用mysqldump把表结构和数据导出成SQL文件优点是简单直观、跨版本恢复容易缺点是数据量大时恢复速度慢。另一种是物理备份比如用XtraBackup直接拷贝数据文件恢复时几乎可以做到秒级拉起实例是生产环境更推荐的方式。恢复的整体逻辑并不复杂先把最近一次全量备份恢复到一台实例上然后把备份时间点到误删时间点之间的binlog日志回放上去最终就能得到误删前的完整数据。可以理解为全量备份给你一张“断点照片”binlog帮你把照片之后发生的每一帧变化重新播一遍停在误删前那一刻。2.3 延时从库给误删上的一道保险如果你问我什么方案最能“偷懒”我的答案是延时从库。它的原理很简单给从库设置一个同步延迟时间比如600秒主库执行了误删操作从库不会立刻同步过去而是会晚10分钟才执行。这10分钟就是黄金救援窗口。只要发现得够快直接从延时从库里导出那张被误删的表丢回主库就行了甚至不需要碰备份和binlog。配置方法也简单在从库执行STOP SLAVE; CHANGE MASTER TO MASTER_DELAY 600; START SLAVE;我见过不少团队用这种方式保护核心业务表成本极低但价值极高。当然延时从库也有个问题如果误删发生后超过delay时间从库才被发现那从库也已经执行了误删语句这个兜底就失效了。所以它适合做第一层保险不适合替代backup和binlog。3. 实操流程从备份和binlog完整恢复一次误删3.1 一个典型的事故现场纸上谈兵没什么用我拿一个实际发生过的场景来演示。某天下午15:40左右一位开发同事在生产库执行清理脚本本来想删除payment_order表中状态为999的历史无效数据结果少写了WHERE条件整张表的有效数据全被删了。等业务侧发现接口大量报错时已经是15:55距离误删15分钟。排查下来这台实例每天凌晨2点做一次全量备份binlog保留7天。要恢复到15:40之前的状态思路是先把凌晨2点的全量备份恢复到一台临时实例再回放凌晨2点到15:40之间的binlog日志。这里要特别强调一点如果没有提前给业务停写那么15:40之后依然会有新的数据写入。这种情况下硬要恢复到15:40必然丢失之后15分钟的业务新增数据。所以在确认恢复方案之前必须让业务侧接受“回退到误删前、丢失误删后新增数据”的取舍或者把所有后续新增的合法数据提前导出留作回补。3.2 用mysqlbinlog解析并定位误删SQL第一步是先看binlog文件列表确认要回放哪些日志文件。SHOW BINARY LOGS; ----------------------------- | Log_name | File_size | ----------------------------- | mysql-bin.000010 | 107374200 | | mysql-bin.000011 | 107374180 | | mysql-bin.000012 | 15223001 | -----------------------------全量备份时间点是凌晨2点误删时间点是15:40那么从备份点开始涉及mysql-bin.000010到mysql-bin.000012这些文件。接下来用mysqlbinlog工具把日志解析成可读的SQL文件。mysqlbinlog --no-defaults --base64-outputDECODE-ROWS -v \ --start-datetime2025-01-10 02:00:00 --stop-datetime2025-01-10 15:40:00 \ /var/lib/mysql/mysql-bin.000010 recover_part1.sql这个命令里的几个参数之所以不能省是因为--no-defaults是防止mysqlbinlog读取到配置文件里的default-character-set参数后直接报错--base64-outputDECODE-ROWS配合-v才能把ROW格式的二进制事件解码成类似普通SQL的可读形式时间窗口用来控制解析范围避免日志文件过大导致生成的文件撑爆磁盘。解析出来后先用grep搜索一下误删相关的表名确认能够定位到那条DELETE操作。grep -n DELETE FROM \payment_order\ recover_part1.sql如果是ROW格式你可能看到的不止一条DELETE而是每被删的一行都会有一个DELETE事件。看到大量连续DELETE事件时基本就能确定误删发生的位置了。3.3 回放跳过误删语句的三种方法定位到误删SQL之后回放策略分三种按场景选。第一种最简单直接恢复到误删时间点之前。如果业务可以接受丢失误删之后的所有数据那把时间窗口的STOP位置设在误删前一刻回放过去就完事。这也是我推荐的默认方式逻辑最清晰出错概率最低。第二种更精细基于binlog位置点跳过误删语句。在解析出的日志里找到误删事件前后的# at 123456位置标记然后用--start-position和--stop-position精确定位把误删语句前后两段分开回放。这样既能恢复误删之前的数据也能保留误删之后合法的数据变更。mysqlbinlog --no-defaults --start-position100 --stop-position456789 mysql-bin.000012 | mysql -u恢复用户 -p目标库第三种适合特殊场景手动编辑解析后的SQL文件把误删语句直接剔除再整体回放。但这里有个坑如果binlog里还包含其他表的操作或者事务之间有依赖手动删语句很容易造成事务上下文断裂除非对业务特别熟悉否则不太建议在日常恢复里随便用。3.4 完整回放流程的串联整个恢复过程是先在临时实例上操作确认数据没问题后再考虑回归生产。回归生产的动作大概是把凌晨2点的全量备份恢复到新实例。按顺序回放凌晨2点到误删前的binlog日志。回放完成后检查目标表的数据量和业务侧手工比对几条关键数据。确认无误后把恢复好的表通过mysqldump单独导出再导入生产实例或者直接把临时实例切换成生产实例走应用侧切换流程。我特别想提醒的是第3步数据校验这步绝对不能省。别问为什么问就是有一次我恢复完发现看似一切正常第二天业务说少了两个多小时的数据原因是误删时间点记错了恢复到了更早的时间点。校验的目的不是走形式而是用最直观的方式确认恢复结果符合预期。4. 没有备份、没有binlog时的救急手段4.1 表被DROP了但表结构怎么找回来最惨的情况之一是没有备份、binlog也没有或者日志已经过期误删的是一整张表。这种时候“数据恢复”直接变成“考古”但也不是完全没救。先解决表结构。如果误删的是MySQL 5.7及之前版本的表且.frm文件还在磁盘上可以先试试用strings命令直接提取建表信息或者用一些社区工具解析.frm文件得到大致的建表语句。如果.frm文件也没了还有一个思路是从binlog的Table_map事件里还原字段结构。ROW格式的binlog在写入每行DML操作时会先记录一个Table_map事件里面包含了表名、列数、列类型等元数据。我确实靠这种方式还原过字段信息但它依赖binlog里有这张表的写入记录而且解析出来的结构不一定完整。4.2 利用文件句柄和内存残留抢救物理文件如果是物理文件丢失比如有人不小心rm掉了某个.ibd文件但MySQL进程还活着、表也没被DROP那有个Linux下的经典操作通过/proc/{mysqld_pid}/fd找回被删除但仍被进程持有的文件句柄。先用lsof找到对应进程和文件句柄。lsof -p $(pidof mysqld) | grep deleted然后从输出里找到被删文件对应的fd编号比如/proc/1234/fd/17直接复制出来。cp /proc/1234/fd/17 /恢复路径/原表名.ibd这个方法在文件系统层面上是可行的但复制回来的文件能不能被实例直接识别还有一堆变量要考虑。所以更稳妥的做法是只要MySQL进程还活着立刻用mysqldump导出这张表的数据能导多少是多少然后再考虑其他方案。如果表已经被DROP或者进程已经重启文件句柄和内存缓冲池里的数据页很可能已经释放这种情况就只能靠专业的恢复工具去扫描磁盘上未被覆盖的数据块了。坦白讲成功率并不高而且耗时往往以小时计所以千万别对这条路抱太大期望。4.3 云数据库的专用恢复通道现在很多团队的业务跑在云数据库上恢复思路和自建实例还是有区别的。云RDS类的产品通常自带自动备份和日志备份甚至内置了按时间点恢复的功能可以直接把整个实例回退到过去某个时刻。遇到误删时更推荐的做法是先创建一个基于时间点恢复的临时实例回退到误删前几分钟然后确认数据完整后再从临时实例导出误删部分的数据导回生产环境。如果误删之前刚好有一个只读实例或克隆实例存在而且它的同步位点还没有推进到误删语句那就更简单了直接从只读实例导出数据就行。这里要特别留意一点很多云数据库的只读实例也存在同步延迟但延迟普遍较小抢在延迟窗口内操作还是很有机会的。5. 常见问题与排查技巧实录5.1 误删后重启过库到底还有没有救这个问题的答案是看情况但绝对不建议主动重启。如果误删后有人顺手重启了MySQL物理文件层面被释放的句柄、内存缓冲池里的残存数据页都有可能彻底丢失一些基于底层文件扫描的恢复方案会直接失效。但如果你的恢复路径本来就规划好了“全量备份加binlog”重启并不会额外破坏备份和日志该恢复还是能恢复。所以我的建议是在没确认备份和binlog可用之前任何操作都以“不重启、停写入、保现场”为最高优先级。5.2 mysqlbinlog解析时的几个经典报错用mysqlbinlog的时候最常见的一个报错是unknown variable default-character-setutf8mb4。原因是客户端配置文件里写了default-character-setmysqlbinlog不认这个参数解决办法是在命令前加--no-defaults。第二个常见问题是解析出来的内容是一堆base64编码看不出任何SQL语义。这是因为你没加--base64-outputDECODE-ROWS -v或者只加了一半。把这两个参数配上ROW格式的事件才能被解码成可读的伪SQL。第三个坑在回放阶段如果源库启用了GTID直接把binlog回放到目标库时目标库会认为这些事务的GTID已经存在直接跳过执行。解决方法是解析时加上--skip-gtids让日志回放时不携带原GTID重新生成一套事务标识。mysqlbinlog --no-defaults --skip-gtids --start-position100 --stop-position456789 mysql-bin.000012 | mysql -u恢复用户 -p目标库5.3 恢复出来的数据对不上、少了一部分恢复完之后发现数据还是对不上通常有三个原因。第一是误删操作不只一条比如脚本里循环执行了多次DELETE你在binlog里只定位到了第一条后面的漏掉了。处理这类问题要边解析边数事件把误删周边前后几分钟的日志都仔细过一遍。第二是恢复时间点选错了业务说15:40但真正误删是15:37结果恢复到15:38的位点照样丢数据。所以定位时间点时最好结合应用日志、数据库慢日志、甚至工单系统多方交叉验证。第三是误删之后业务还有新的写入进来直接恢复到“某一时刻”自然覆盖不到这些新数据。这种情况需要先把误删后的合法变更找出来单独回补。5.4 快速定位误删事务的实用技巧定位误删事务一般先靠人肉回忆缩小范围再靠日志精确到位置。实操时我喜欢分两步走先把一个时间窗口内的binlog解析成文件然后用grep搜表名和关键词比如DELETE FROM、DROP TABLE、TRUNCATE。找到疑似事件后再看它前后的事件上下文确认是不是那笔误操作。如果开启了GTID定位会更轻松因为每个事务都有唯一的GTID编号误删事务前后的GTID断点一目了然恢复时可以精确指定跳过的编号。我这里再分享一个很多人都忽略的辅助手段如果实例开了general_log或审计插件日志里会记录每一次连接的操作时间、来源IP和执行的SQL拿这个跟binlog互相印证会把误删时间点缩小到几十秒甚至秒级。6. 日常预防让误删从“偶尔发生”变成“基本不可能”6.1 权限分层与高危操作拦截见过太多事故之后我越来越觉得“恢复能力”只是底线真正值钱的还是“让误删不发生”。权限分层是第一道闸门。开发账号通常只需要SELECT、INSERT、UPDATE、DELETE那就不要给它们DROP、TRUNCATE、ALTER这些高危权限。即使同样给DML权限也要按库或者按表最小化授权。REVOKE DROP, ALTER, CREATE, INDEX ON *.* FROM app_user%; FLUSH PRIVILEGES;只靠数据库权限还不够。我强烈建议高危操作走双人复核比如DROP表和TRUNCATE这类操作必须先在变更平台上登记由DBA执行开发自己不能连生产库直接操作。听起来繁琐但确实能挡住绝大多数“手滑悲剧”。如果团队技术底子厚一些还可以在代理层做无WHERE条件DELETE的拦截或者接一个SQL审核平台高危SQL直接卡在审核阶段。6.2 定期恢复演练别让备份变成“心理安慰”很多团队天天跑备份脚本但半年都没人认真验证过备份能不能恢复。我见过最离谱的情况是备份目录里躺着的文件其实是空的或者备份脚本因为磁盘空间不足早就停止执行了而监控居然没报警。所以务必要做定期恢复演练。每个月或者每个季度用最近一次备份加binlog在测试实例上完整走一遍“恢复到指定时间点”的流程。演练不只是为了训练操作更重要的是检验备份文件的完整性、binlog的连续性、恢复工具的兼容性。演练时顺便记录两个指标RTO恢复时间目标和RPO数据丢失量目标。比如目标是一小时内完成恢复、最多丢失5分钟数据那每次演练就看能不能达标。达不到就调备份频率或优化恢复流程直到稳定达标为止。6.3 一套可落地的备份策略最后给出一套可直接照抄的备份策略适合大多数中小团队项目建议配置全量备份方式每天凌晨低峰期物理备份优先保留7天binlog保留至少7天核心业务建议14到30天备份存储本地一份异地或对象存储一份备份验证每星期随机恢复一次到测试实例比对关键表行数云数据库开启自动备份和日志备份启用按时间点恢复这里多说一句binlog千万别只存在数据库本机磁盘上。如果磁盘坏了或者整机挂了本地binlog跟着没备份再全也追不回来。建议写个定时任务把binlog增量同步到其他机房或对象存储异地留底。这个习惯我坚持了很多年也实实在在救过几次场。说句真实体会我真正把恢复流程跑得滚瓜烂熟不是看书学会的而是某几次半夜帮人恢复误删数据、连续踩坑之后才明白的。恢复这件事难点从来不在某个命令有多复杂而在平时有没有把备份、binlog、权限管理、恢复演练这些基本功做到位。每次处理完事故我都会顺手把复盘文档和恢复脚本更新进值班手册下次再遇到类似情况直接按流程走不用临时拍脑袋。最后再分享一个个人习惯定期去数据库里随机挑一张表假装它被误删了然后在测试环境走一遍完整恢复。练的次数多了真出事时你就能像我一样打开文档、执行命令、从容收场。

相关新闻

搜索算法与OpenCV实战:构建消灭星星自动求解器

搜索算法与OpenCV实战:构建消灭星星自动求解器

简介:一套基于跨平台图形库Qt开发的消灭星星自动求解程序,面向游戏AI学习者和C/Qt开发者。程序采用单步最优蒙特卡洛方法自动计算消除策略,每轮模拟所有可能消除组合并评估预期得分,选择最优方案执行,平均得分可超过55…

2026/10/19 5:42:27 阅读更多 →
MinGW环境下编译FFmpeg 32位与64位动态库全攻略

MinGW环境下编译FFmpeg 32位与64位动态库全攻略

1. 为什么非要自己动手编译FFmpeg dll标题里这三个词基本就把场景说清楚了:mingw、FFmpeg、32位和64位动态库。先聊一个很多人问过我的问题——Windows上想用FFmpeg,直接从官网下载预编译包不好吗?为什么非要自己顶着mingw折腾一遍&#xff0…

2026/10/19 5:42:27 阅读更多 →
MySQL索引失效六大场景与慢查询排查实战

MySQL索引失效六大场景与慢查询排查实战

先分享一个真实排查经历:前几天有个同事跑过来问,说订单表里明明建了索引,查询状态字段还是慢,接口动不动就几百毫秒。我第一反应不是去看索引建没建,而是先让他把执行计划发我。EXPLAIN一出来,typeALL&…

2026/10/19 5:42:27 阅读更多 →

最新新闻

技术博客写作如何从零整理项目标题、正文与关键词

技术博客写作如何从零整理项目标题、正文与关键词

我注意到这次请求里还没有附带具体的项目信息。按要求,我需要收到“项目标题”才能动笔,所以麻烦先给我以下内容:项目标题: [标题] 项目正文: [通常比较零散、不完整的原始描述,可是任意领域内容] 关键词: [关键词1, 关键词2, ...…

2026/10/19 6:20:46 阅读更多 →
AI绘画提示词优化工具artcraft:中文自然语言驱动的本地化Stable Diffusion助手

AI绘画提示词优化工具artcraft:中文自然语言驱动的本地化Stable Diffusion助手

我无法基于当前输入生成符合要求的博文。原因如下:输入中项目标题为 "artcraft",但未提供任何实质性的项目正文、关键词、摘要描述或背景信息;所谓“相关热搜词”和“最新网络热词”字段为空,未给出具体词汇&#xff1b…

2026/10/19 6:20:46 阅读更多 →
2026年金融行业Jira替代选型:Gitee的定位与渐进迁移路线

2026年金融行业Jira替代选型:Gitee的定位与渐进迁移路线

过去两年我陆续帮几家金融机构做过研发管理工具的选型评估,几乎每次都会被问到同一个问题:Jira 还能用多久?到 2026 年,这个问题不再是“要不要换”的讨论,而是变成了“怎么换”“换成什么”的实操任务。国际产品的订阅…

2026/10/19 6:20:46 阅读更多 →
家庭版没有组策略和“本地用户和组”,所以‌不能像专业版那样直接重命名 Administrator‌,需要用命令行的方式先启用它,再改名。整体分四步:

家庭版没有组策略和“本地用户和组”,所以‌不能像专业版那样直接重命名 Administrator‌,需要用命令行的方式先启用它,再改名。整体分四步:

启用 Administrator 账户‌:右键开始菜单,选择“Windows PowerShell (管理员)”或“命令提示符 (管理员)”,输入 net user administrator /active:yes 回车。‌切换到 Administrator 登录‌:注销当前账户,在登录界面选…

2026/10/19 6:20:46 阅读更多 →
基于单片机多机通讯的仓库温度监控系统设计与实现

基于单片机多机通讯的仓库温度监控系统设计与实现

仓库场景下最怕的不是某个点温度过高,而是“点多了看不过来”。尤其是那种面积大、库位分散、货物堆叠高的仓储环境,靠人手拿测温枪去巡检根本不现实。这个项目的出发点很直接:用分布式测温节点把仓库各个角落的温度实时汇总到一台主机上&…

2026/10/19 6:20:46 阅读更多 →
基于Web的图表设计器diagram-design实战:从数据建模到交互实现

基于Web的图表设计器diagram-design实战:从数据建模到交互实现

做了快两年可视化编辑器相关的项目,陆续接触过不少基于Web的图表设计工具,其中一个最有代表性、也最让我印象深刻的,就是标题里这个“diagram-design”。如果你准备做流程图设计器、架构图编辑器、关系图谱编辑,或者只是在犹豫要不…

2026/10/19 6:19:46 阅读更多 →

日新闻

频率跟踪型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 阅读更多 →