MySQL UPDATE详解:从基础语法到生产级避坑指南
MySQL的UPDATE更新数据详解从基础语法到生产级避坑指南做后端开发和数据库运维这些年我见过太多在UPDATE语句上栽跟头的案例。轻则更新错行重则全表数据被覆盖甚至直接把生产库搞锁死。说实话SELECT查错大不了重查一次DELETE删错了还能靠备份恢复唯独UPDATE这个操作一旦执行了错误的条件改写的行数据可能连日志都难恢复原样。所以不管是刚入行的新人还是写了好几年SQL的老手我都建议把UPDATE这块系统性地过一遍把底层逻辑和边界情况都弄清楚。这篇内容适合所有使用MySQL的开发者和DBA我会从最基本的单表更新讲起把多表关联更新、事务与锁的行为、批量更新性能优化、以及错误排查这几个层面全部拆开配合具体的SQL示例和踩坑记录来说。你可以把它当成一份完整的UPDATE速查手册遇到拿不准的写法随时回来看。1. UPDATE的底层逻辑与基础语法拆解1.1 一条UPDATE语句的生命周期先明确一个问题UPDATE在MySQL内部到底是怎么执行的理解了这个你才能解释清楚为什么某些UPDATE慢为什么某些UPDATE会锁住一大片行。当客户端发来一条UPDATE语句MySQL的流程大致是这样的先通过连接器验证账号权限再走分析器做词法语法解析然后优化器决定走哪个索引、用哪种方式扫描最终交给执行器去真正读取和修改数据。对于InnoDB存储引擎来说执行器拿到需要更新的行之后并不是直接改磁盘文件而是先把这个行放入缓冲池在内存中完成修改同时记录undo log用于回滚记录redo log用于崩溃恢复等待合适时机再刷盘。这里有一个关键点需要留意InnoDB的更新是当前读它读取的永远是数据的最新已提交版本而不是快照读。简单类比一下快照读就像拍了一张照片看的是某个时间点的状态当前读则是实时看屏幕看到的就是现在。UPDATE必须基于当前读否则可能出现两个事务同时更新同一行、互相覆盖的问题。1.2 基础语法SET、WHERE、LIMIT的配合单表更新的完整语法是这样的UPDATE table_name SET column1 value1, column2 value2, ... WHERE condition ORDER BY ... LIMIT ...;逐段拆开说SET字句指定要修改的列和新值。新值可以是字面量也可以是表达式甚至可以引用其他列的值。比如SET quantity quantity - 1表示在原值基础上减1这种写法在库存扣减场景里非常常用。需要注意的是多条赋值按从左到右的顺序执行后面的赋值能看到前面赋值的结果。比如SET a a 1, b a中b拿到的是a加1之后的值。WHERE字句限定要更新哪些行。这是UPDATE里最核心、也最危险的部分。如果不写WHEREMySQL会把表中所有行的指定列全部更新一遍这在生产环境里基本等于事故现场。我见过不止一次因为代码里少拼了一个条件导致整个用户表的昵称字段被统一改成同一个值的例子。ORDER BY和LIMIT这两个子句在UPDATE中同样可用作用是控制更新顺序和更新行数。典型场景是只更新前N条记录比如给积分排行榜前三名额外加奖励分UPDATE users SET score score 100 ORDER BY score DESC LIMIT 3。带ORDER BY的UPDATE还会影响锁的获取顺序在特定场景下可以减少死锁概率这一点后面细说。1.3 说说列赋值的几种实用写法除了直接赋值SET字句里还能玩出不少花样。第一种是使用表达式。比如要把价格统一上调百分之十SET price price * 1.1。这里不用先把原价查出来再算直接引用列本身即可。第二种是通过CASE WHEN做条件赋值一次UPDATE就能按不同规则更新不同行。这个技巧在处理批量差异化更新时非常实用后面专门开一节细讲。第三种是使用系统函数比如SET updated_at NOW()记录更新时间或者SET status IF(score 60, pass, fail)按条件分支赋值。第四种是把另一个查询的结果作为新值。这种写法有一定的限制和讲究放在多表更新部分统一展开。这里先记一个结论在SET中引用其他表的数据要么用多表UPDATE语法要么用相关子查询不能直接写成SET a.col (SELECT ...)然后省略表名那样会被MySQL当成赋值给一个变量。2. 进阶玩法带JOIN的多表更新与子查询更新2.1 MySQL支持的多表UPDATE语法日常业务中根据A表数据更新B表字段这种需求非常常见。比如订单表里的买家昵称变了想同步到订单快照表或者根据商品分类的最新折扣统一更新商品表里的价格。MySQL提供了两种多表更新的写法。第一种是传统的多表UPDATE语法UPDATE orders o JOIN users u ON o.user_id u.id SET o.user_name u.name, o.user_phone u.phone WHERE u.status 1;这种写法的逻辑是先做表连接得到满足JOIN条件的匹配结果集然后对结果集中的目标表行执行SET操作。注意如果JOIN关系是一对多也就是说右边表有多条记录匹配左边的一行那么MySQL会用其中一条匹配记录的值来更新这一行不会报错但结果可能在语义上不够严谨。比如用分类表JOIN商品表如果分类ID在分类表里是唯一的一对多没问题更新的是每一本商品书对应分类的折扣但如果右边表本身有重复关联字段实际取哪一条就取决于执行计划了这种不确定性要尽量避免。第二种是使用WHERE EXISTS或相关子查询的写法UPDATE products p SET p.discount_price p.original_price * 0.8 WHERE EXISTS ( SELECT 1 FROM categories c WHERE c.id p.category_id AND c.is_sale 1 );这种写法里UPDATE部分只涉及一个表子查询纯粹用于过滤条件。它的语义比JOIN写法更清晰而且对于只想根据关联关系过滤、但不需要引用关联表字段的场景推荐优先使用这种写法。2.2 表连接更新的常见陷阱多表UPDATE最容易踩的坑有两个。第一个坑是连接字段没有索引导致全表逐行扫描。JOIN更新的性能很大程度上取决于ON条件和WHERE条件能否用到索引。如果user_id在外键列上没有索引MySQL就得对orders表做全表扫描对每一行去users表里做索引查找或全表扫描匹配这种更新在百万级数据量下会跑得非常慢。所以做多表更新之前先花30秒执行一遍EXPLAIN看看连接列的索引使用情况比盲目上线要稳妥得多。第二个坑是**UPDATE ... JOIN在SQL_MODE默认情况下不允许对同一张表做两次关联**。比如你想把一张表的某些行在JOIN后做两次不同的匹配在某些版本中会报错You cant specify target table for update in FROM clause。遇到这种情况解决办法通常是先把需要的数据查询出来放到临时表再通过临时表去更新目标表。2.3 用临时表实现“根据查询结果更新自身”这里有一个比较经典的需求把一张表里每个分组的某列值更新为分组内另一列的最大值。举个例子假设有一张学生成绩表每个学生有多门成绩我们想把每个学生的最高分同步到student_score列。直接写子查询更新同一个表会触发You cant specify target table for update in FROM clause错误报错原因是MySQL不允许在UPDATE的FROM子句中直接查询正在被更新的目标表。绕过这个限制最稳的办法就是先创建临时表把结果算出来再关联更新CREATE TEMPORARY TABLE tmp_max_score AS SELECT student_id, MAX(score) AS max_score FROM exam_scores GROUP BY student_id; UPDATE exam_scores e JOIN tmp_max_score t ON e.student_id t.student_id SET e.best_score t.max_score;临时表在会话结束时自动销毁不会影响线上数据文件。处理同表聚合更新这类需求这套组合拳够用了。为什么会报这个错根源在于MySQL对在更新一张表的同时查询并修改这张表的行为做了保守限制防止你读到的数据在更新过程中发生变化导致SQL语义不可预期。3. 事务、锁定与并发下的UPDATE3.1 事务中的UPDATE到底什么时候生效如果你在一个事务里执行了一条UPDATE但还没有COMMIT那么这条更新在事务外部是看不到的只有在当前事务内才能读到。这个特性来自事务的隔离机制InnoDB默认的隔离级别是REPEATABLE READ同一事务内多个读操作看到的是同一个快照。另外一个很重要的点UPDATE会获取行级排他锁这个锁会一直持有到事务结束COMMIT或ROLLBACK而不是语句执行完就释放。这就是为什么你在事务里执行了一条UPDATE之后如果迟迟不提交其他会话再想更新同一行就会一直阻塞等待直到你提交或超时。实操中我强烈建议把先SELECT确认再UPDATE和UPDATE后立刻COMMIT这两个习惯刻进肌肉记忆里。开事务不等于可以慢慢磨蹭锁持有时间越长并发冲突的概率越大。3.2 行锁背后的原理和锁等待排查InnoDB的行锁并不是简单地把某一行锁住而是通过索引记录来实现的。具体来说是根据WHERE条件定位到的索引记录来加锁。如果你的WHERE条件没有走索引InnoDB只能通过全表扫描来定位目标行那么它就会对扫描过程中经过的每一条记录都加上锁——这实际上相当于把整张表给锁了。所以经常听到的明明只是更新一行为什么把整表锁住了十有八九就是WHERE条件没有索引。排查锁等待的办法很简单执行SHOW ENGINE INNODB STATUS;在输出里找LATEST DETECTED DEADLOCK或者TRANSACTIONS段落能看到当前占用锁和等待锁的事务详情。更直接的方式是查询SELECT * FROM performance_schema.data_locks; SELECT * FROM performance_schema.data_lock_waits;这两张表会告诉你当前有哪些事务持有锁、哪些事务在等待、等待的锁ID是什么。定位到阻塞源头后要么让持有锁的事务尽快提交要么在代码层面对冲突操作做重试。3.3 减少死锁的几条实用建议死锁的官方定义是两个或多个事务互相持有对方需要的锁导致谁也无法继续。比如事务A更新了id1的行想继续更新id2的行事务B先更新了id2的行想继续更新id1的行。如果不做干预两者就会互相等待。要减少死锁比较有效的做法有以下几条第一让事务按固定顺序访问资源。如果约定所有代码都先更新id1再更新id2事务B就不会出现先拿id2再拿id1的情况。这个思路在批量更新多条记录时尤其适用。第二尽量减小锁的范围和持有时间。WHERE条件能精确到主键就不扫描大范围SET里只更新必要的列事务里不要夹杂耗时的外部调用这些都能显著减少锁被占用的窗口。第三善用ORDER BY让加锁顺序一致。对同一条UPDATE语句里的多行更新MySQL加锁顺序通常与执行计划的访问顺序一致而执行计划又受ORDER BY影响。所以在批量UPDATE场景中显式加上ORDER BY相当于手动统一了加锁顺序。3.4 被忽视的“0行更新”行为执行UPDATE时如果WHERE条件匹配到了行但SET后的新值和旧值完全一样MySQL会把匹配行数返回为0或者返回实际行数取决于驱动配置默认的客户端协议里Rows matched通常显示为匹配到的行数但Changed是0。这个行为本身无害但会影响两个地方第一如果你用了ORM框架有些框架会因为影响行数为0而返回更新失败导致业务层误判第二如果表上有ON UPDATE CURRENT_TIMESTAMP的字段但值没有变化这个时间戳不会被刷新。如果需要值没变化也强制刷新时间戳可以给时间戳字段显式赋值为NOW()如果业务层要根据影响行数判断数据是否有变化直接依赖Changed值即可不要用Matched值。4. 批量UPDATE的性能优化思路4.1 别在循环里一条条UPDATE很多项目初期数据量小大家习惯了在代码里遍历集合每拿到一条记录就执行一次UPDATE。这种做法在小数据量时没什么问题但一旦数据量上来每一条UPDATE都要经历一次SQL解析、网络往返、事务提交性能会急剧恶化。以10000条数据为例如果循环单条更新哪怕每条只要0.5毫秒总共也要5秒以上这还是不考虑网络开销的结果。换成批量更新效率会高出好几个数量级。具体的批量更新方案有两种一种是生成多条UPDATE语句放在一个事务里批量提交另一种是拼成一条CASE WHEN的UPDATE。多条UPDATE放一个事务思路简单也方便复用现有更新逻辑但缺点是要拼大量的SQL文本且每一条仍然有独立的解析成本。CASE WHEN更新则是把多行合并成一条语句执行SQL解析次数大幅下降对DB的压力明显更小。数据量在几百到几千级别时CASE WHEN方案的性能优势非常明显。4.2 CASE WHEN批量更新的具体写法比如要把多个用户的积分统一做差异化调整普通做法是循环执行三条UPDATE但更好的方式是UPDATE users SET score CASE id WHEN 1001 THEN score 10 WHEN 1002 THEN score - 5 WHEN 1003 THEN score 100 ELSE score END, updated_at NOW() WHERE id IN (1001, 1002, 1003);这样一条UPDATE就把三个用户的更新全部完成。逻辑也很清晰CASE根据id的值做匹配命中哪条就走哪个分支WHERE IN限定了只更新这三个用户。这里有几个细节要注意。第一WHERE IN里的id数量和CASE WHEN里的分支应当保持一致否则会出现把某些行意外更新成ELSE分支值的情况。上面例子中ELSE score表示保持原值如果漏了ELSE分支而WHERE条件又匹配到了预期之外的行CASE没有匹配项时会返回NULL等于把score列清空成NULL。这是批量更新中最危险的隐藏雷区。第二尽量限制IN列表长度。单条语句里塞几千个id会让SQL文本非常长超过了max_allowed_packet限制会直接报错。建议每500到1000条分一批分批执行。第三批量更新也要加适当的WHERE条件。有些开发者觉得CASE已经覆盖了所有分支就省略WHERE结果本来只想更新部分行却把整表扫描了一遍还占了大量锁这是妥妥的负优化。4.3 UPDATE与INSERT ... ON DUPLICATE KEY UPDATE的选型在存在则更新不存在则插入的场景里很多人的第一反应是先SELECT判断再决定UPDATE还是INSERT。实际上更高效、也更符合原子性要求的做法是用一条语句完成INSERT INTO user_points (user_id, points, updated_at) VALUES (1001, 20, NOW()) ON DUPLICATE KEY UPDATE points points 20, updated_at NOW();前提是user_id上必须有唯一键或主键。这个语句的语义是如果插入的数据与唯一键冲突就执行后面的UPDATE而不是报错。它在并发场景下比先查再写更安全因为查和写之间天然没有竞态窗口。和普通UPDATE相比这条语句特别适合计数器累加、最后登录时间更新等高频写入场景。需要注意的一点是ON DUPLICATE KEY UPDATE虽然写法上带INSERT但在更新分支里返回的affected-rows语义和普通UPDATE不同插入返回1更新返回2无变化返回0某些ORM框架会根据这个值做不同的后续处理踩过一次就懂了。5. 高频故障与排查手册5.1 误更新全表的自救方式事故描述执行UPDATE时忘了带WHERE条件或者WHERE条件因为参数为NULL导致恒为真结果全表被更新。这种事一旦发生第一反应必须是冷静然后立刻止损。不过要明确一点MySQL没有类似回收站的机制UPDATE既不会像DELETE那样可以靠事务回滚。所以唯一能依靠的防线是备份和binlog。如果开事务且未提交直接ROLLBACK即可。如果已经提交就得依赖binlog做逆向恢复通过解析binlog把当时UPDATE之前的旧值找出来。操作思路是用mysqlbinlog工具解析binlog日志把误更新涉及的SQL提取出来再把反操作SQL拼接回去。这个流程很繁琐而且不一定能100%恢复所有数据。所以最核心的预防手段是执行涉及重要表的UPDATE之前先手动备份目标表数据CREATE TABLE backup_users_20250101 AS SELECT * FROM users;在更新开始前花一秒建个备份表能在出事之后省下几小时甚至几天的恢复时间。5.2 UPDATE不生效的几个常见原因用户经常反馈我执行了UPDATE但数据没有变化背后通常有四种原因。第一种是WHERE条件没有匹配到任何行所以影响行数为0。这种情况最容易排查把WHERE条件单独拿出来SELECT一下确认是否有结果。第二种是匹配到了行但SET后的值和原值相同Changed为0。这个前面章节已经提过不是SQL的问题是业务上已经满足条件。第三种是更新被事务阻塞。如果另一个事务持有行锁你的UPDATE会一直处于等待状态表现为语句卡住不动。通过查询performance_schema.data_lock_waits可以看到阻塞源头。第四种是权限问题。账号对当前表只有SELECT权限没有UPDATE权限MySQL会直接报错而不是静默失败所以相对好排查。5.3 锁等待和死锁的快速定位当UPDATE执行超时并且错误信息里能看到Lock wait timeout exceeded说明语句在获取锁时等待超过了innodb_lock_wait_timeout的阈值默认50秒。这一步的排查重点是找出谁占用了锁。快速定位SQL如下SELECT waiting_trx_id, waiting_pid, waiting_query, blocking_trx_id, blocking_pid, blocking_query FROM sys.innodb_lock_waits;这条查询能直接看到等待方和阻塞方的进程ID以及SQL文本然后通过KILL阻塞方进程或让其提交事务来恢复。死锁则不同它通常不需要人工干预InnoDB会自动检测并回滚其中一个事务应用层只需要对死锁错误做重试即可。常见的死锁报错码是1213对应错误消息Deadlock found when trying to get lock; try restarting transaction。5.4 低版本MySQL的兼容性注意如果项目还在使用MySQL 5.6或更早版本有些行为和5.7、8.0差别较大。比如5.6之前对同一张表的UPDATE子查询限制更严格某些JOIN UPDATE的写法也无法使用5.7开始支持对JSON类型列的更新8.0以后窗口函数、公共表表达式CTE可以在UPDATE里配合使用。如果代码要兼容多个版本建议在预发布环境各版本都跑一遍核心UPDATE语句不然上线后再发现语法或行为差异排查成本会翻好几倍。另外有一个细节MySQL 8.0起UPDATE语句默认不再隐式提交事务这一点和之前版本是不同的如果沿用旧习惯写执行UPDATE后直接断连的代码可能造成事务未提交就断开连接池回收时触发回滚数据没更新却被日志记录成已执行的假象。这类问题排查起来相当隐蔽值得留个心眼。最后分享两条个人经验在我实际维护数据库的经验里UPDATE写错的概率要远高于SELECT写错因为SELECT的失误最多是取错数据肉眼和测试用例容易发现而UPDATE的失误往往直接写进正式数据里如果不仔细核对很难察觉。所以我现在处理任何生产环境的数据订正需求都坚持一个流程先备份对应表在测试库把UPDATE语句用真实数据子集跑一遍核对影响行数最后用SELECT COUNT(*)和SELECT ... WHERE双重确认目标数据和影响范围再在正式库执行。这套流程看起来多花了十几分钟但换来的安心感是巨大的。还有一个小技巧对于固定字段的频繁更新比如状态流转、计数累加尽量把这些逻辑收敛到数据库存储过程或者固定的SQL模板里而不是每次都在业务代码里拼SQL。拼SQL的过程中一旦出现字段名映射错误或转义遗漏轻则更新错列重则引入SQL注入风险。让UPDATE语句保持简洁、可预期、可审计是每一位和数据打交道的人都需要养成的习惯。

相关新闻

Vue+mpvue+Koa多端实践:天气展示与图片标注功能复盘

Vue+mpvue+Koa多端实践:天气展示与图片标注功能复盘

最近把海创软件组的这个综合项目复盘了一遍,发现它正好串起了我平时工作里最常碰到的几条技术线:Vue页面、mpvue小程序、Koa服务端,以及一个用纯JS实现的图片点击标注坐标功能。项目本身不大,但积累下来的问题和经验倒不少。这篇博…

2026/10/14 19:29:45 阅读更多 →
五大开源图像模型深度解析:架构、部署与ComfyUI实战

五大开源图像模型深度解析:架构、部署与ComfyUI实战

这几年国产开源图像模型是真的卷,FLUX.2、Seedream(即梦)、Z-image、Qwen-Image、GLM-Image这五个名字高频出现在各种社区讨论里,但大多数人其实是跟着热搜和他人工作流在跑,对模型本身的基础认知很模糊。包括我自己&a…

2026/10/14 19:29:45 阅读更多 →
价值投资短期套利策略:市场错误定价的识别与操作

价值投资短期套利策略:市场错误定价的识别与操作

1. 价值投资中的特殊策略:短期套利在传统认知中,价值投资往往与"长期持有"划等号,但华尔街传奇投资人艾因霍恩(David Einhorn)通过绿光资本(Greenlight Capital)的实践,展…

2026/10/14 19:28:44 阅读更多 →

最新新闻

原生JS组态软件实战:无后台监控界面的数据格式与架构设计

原生JS组态软件实战:无后台监控界面的数据格式与架构设计

简介:一份基于原生JavaScript实现的组态软件源码包,面向Web前端与工业自动化开发者,用于在无后台依赖环境中通过拖拽方式快速构建电力一次接线图、工业流程图等图形界面。压缩包共1013个文件,约14.4MB,以svg、png、gif…

2026/10/14 22:55:37 阅读更多 →
离职原因这样回答,面试官当场刮目相看:三步包装法详解

离职原因这样回答,面试官当场刮目相看:三步包装法详解

“我的离职原因是个人的职业发展规划……”这话一出口,对面面试官的眼神是不是闪了一下?别觉得奇怪,很多求职者都折在这句话上。明明说的是真心话,怎么就变成了减分项?干了十几年招聘,我筛过几万份简历、做…

2026/10/14 22:55:37 阅读更多 →
HEIC转JPG全攻略:格式原理、工具选择与批量转换实战

HEIC转JPG全攻略:格式原理、工具选择与批量转换实战

做图像处理这几年,被问得最多的问题之一就是:HEIC格式怎么转成JPG。来源基本都是iPhone用户,拍的照片在手机上看一切正常,发到Windows电脑上打不开,传到某些网络平台上不认,发给安卓朋友半天收不到预览。HE…

2026/10/14 22:55:37 阅读更多 →
Selenium自动化测试实战:定位策略、等待机制与框架搭建

Selenium自动化测试实战:定位策略、等待机制与框架搭建

1. 为什么还在用Selenium:一个老牌框架的历久弥新做Web自动化测试的朋友,几乎没人绕得过Selenium。哪怕这几年新工具层出不穷,Playwright、Puppeteer、Cypress一个比一个火,但我在一线项目里兜兜转转这么多年,但凡遇到…

2026/10/14 22:55:37 阅读更多 →
腾讯开源 Octop Agent 实战:任务编排与工具调用标准化解析

腾讯开源 Octop Agent 实战:任务编排与工具调用标准化解析

1. 从标题拆解 Octop 的定位与野心 第一次看到“Octop:像 WorkBuddy 的腾讯开源 Agent”这个标题,我的直觉是:这又是一个把“Agent”当卖点的项目,但“像 WorkBuddy”这个类比很关键。WorkBuddy 在圈内的口碑是“把复杂任务拆成可…

2026/10/14 22:55:37 阅读更多 →
Axure交互动效入门:事件、用例与动作三要素实战解析

Axure交互动效入门:事件、用例与动作三要素实战解析

很多刚接触原型设计的人,一听到“Axure交互动效”就觉得这是进阶内容,得先把元件、样式、页面这些基础吃透了才敢碰。我实际带新人的过程中发现,这个顺序其实是反过来的:动效不但不是进阶内容,反而是理解Axure底层逻辑…

2026/10/14 22:54:32 阅读更多 →

日新闻

AnyPS5通用适配层设计:兼容性与性能的工程取舍

AnyPS5通用适配层设计:兼容性与性能的工程取舍

1. 从"AnyPS5"这个名字说起:它到底想解决什么问题第一次看到"AnyPS5"这个标题,我脑子里冒出来的第一个念头是:这大概率是一个围绕"跨平台运行"或者"通用适配"做文章的项目。名字里的"Any"…

2026/10/14 0:00:41 阅读更多 →
Flutter跨平台开发实战:二手交易应用与HarmonyOS适配

Flutter跨平台开发实战:二手交易应用与HarmonyOS适配

1. 项目概述:Flutter跨平台二手交易应用开发作为一名长期从事移动应用开发的工程师,我最近完成了一个基于Flutter框架的二手物品交易平台项目。这个项目最吸引我的地方在于它完美结合了Flutter的跨平台优势与HarmonyOS的生态特性,实现了"…

2026/10/14 0:00:41 阅读更多 →
DFS算法解决飞机降落调度问题实战

DFS算法解决飞机降落调度问题实战

1. 项目背景与核心思路飞机降落问题是一个经典的调度优化场景,也是算法竞赛和面试中的高频题目。这个题目要求我们合理安排多架飞机的降落顺序和时间,确保所有飞机都能安全着陆而不发生冲突。在实际航空管制中,这类问题直接关系到飞行安全和机…

2026/10/14 0:00:41 阅读更多 →

周新闻

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

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

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

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

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

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

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

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

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

2026/10/14 3:29:58 阅读更多 →

月新闻

我发现了一个新思路:用 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/13 22:01:27 阅读更多 →
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/14 22:45:47 阅读更多 →
黑夜航拍船只数据集训练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/14 7:53:34 阅读更多 →