MySQL连接查询优化:从执行计划到索引调优的实战指南
上周值班的时候开发同事发来一条消息订单列表页的一个普通查询线上跑了快三秒还没出来。我扫了一眼那条SQL单看每一张表都有索引可一旦把三张表 JOIN 到一起执行计划就变得很难看驱动表选错关联字段的索引也没用上一眼看过去就是典型的连接查询优化问题。MySQL里的连接查询JOIN几乎是每一套业务系统的命根子尤其电商、内容、后台管理这类重结构化数据的场景超过一半的业务SQL都会带JOIN。而连接查询的优化算法说穿了就是MySQL优化器在“怎么连、按什么顺序连、用什么算法连”这三件事上的决策逻辑。很多人以为连接查询写出来就行效率靠数据库自己把握但实际工作中你很快会发现一旦数据量上了百万级优化器替你做的选择不见得是最好的甚至可能会捅出大篓子。这篇文章我想系统拆一下MySQL连接查询的优化算法全景、常见的性能问题成因以及我从实际排障中总结的调优套路。不管是刚接触MySQL的后端开发还是被慢查询折磨过的运维同学应该都能从里面找到可落地的思路。1. 连接查询优化算法的核心思路拆解1.1 优化器在连接查询中到底在“优化”什么先说一句很多人误解的话MySQL的“连接查询优化算法”核心并不是某一种固定的连接算法而是一个基于代价估算的决策过程。优化器拿到一条带JOIN的SQL后会做这么几件核心决策选择连接顺序、选择连接算法、选择访问路径是否用索引、用哪个索引。优化器估算每条执行路径的“代价”这个代价不是拍脑袋估的而是依据表的行数、行大小、索引区分度、条件过滤比例、缓冲区大小等统计数据通过一套成本模型算出来的。你可以把它理解成一个外卖骑手在规划路线手上的订单数据量越多、路线越绕扫描行数越多、路况越差IO越重成本就越高。优化器要选的就是一条它认为总成本最低的路线。这里面有一个非常重要的概念叫“驱动表”两表JOIN时优化器选择的第一张表就是驱动表outer table另一张是被驱动表inner table。驱动表决定了要拿多少行去被驱动表里匹配。通常情况下小表驱动大表是默认的最优策略但优化器并不总是能精准判断谁大谁小因为它的判断依据是统计信息而统计信息可能过期、可能估算不准。1.2 三大连接算法的原理、适用场景与演进既然聊连接查询优化算法就绕不开MySQL实际执行JOIN时使用的几种算法。我在排查慢SQL时经常要用EXPLAIN里的Extra列去确认当前JOIN到底走了哪种算法这里把最常见的几种掰开揉碎讲清楚。Nested-Loop Join嵌套循环连接这是最基础也最常见的连接方式。它的执行逻辑非常朴素从驱动表取出一行然后去被驱动表里查找匹配的行找到后合并结果再取下一行循环往复。用生活里的例子来类比你在食堂窗口拿着一串菜名驱动表去另一排柜台找对应的菜被驱动表点一道菜就跑到柜台一次点十道菜就来回跑十趟。如果被驱动表上有合适的索引每次查找都是“索引定位”速度很快这种方式叫Index Nested-Loop Join如果被驱动表没有索引每次都要全表扫描那性能就要命了这种方式就是Simple Nested-Loop Join实际生产中基本不会容忍它出现。Block Nested-Loop Join块嵌套循环连接为了减少被驱动表被扫描的次数MySQL引入了join_buffer。执行时它会把驱动表的一批行放进内存缓冲区一次性拿这一批数据去和被驱动表匹配。这样一来被驱动表只需要被扫描更少的次数磁盘IO明显下降。还是拿食堂打比方原来点一道菜就跑一趟现在你手里有一张“菜牌”上面记着好几道菜跑到柜台前一次性把这一批菜都取回来。这个算法在MySQL 5.7及之前是解决无索引JOIN的主要手段但它依赖join_buffer_size这个参数如果驱动表一次性装载不下就会分成多段加载性能依然不稳定。Hash Join哈希连接MySQL 8.0.18开始正式引入了Hash Join并在8.0.20及之后基本取代了Block Nested-Loop Join在无索引连接场景下的地位。它的原理是把驱动表里参与连接的条件字段计算成哈希值构建一个哈希表然后逐行扫描被驱动表用同样的哈希算法去哈希表里探测匹配。整个过程中被驱动表只需要扫描一遍对于等值连接场景性能往往远超块嵌套循环。Hash Join在OLAP类查询、报表统计类SQL里特别好用因为这类SQL经常涉及大表关联、无索引连接。过去在MySQL 5.7里一条大表连大表没索引的SQL能把数据库拖垮8.0里靠Hash Join能优雅地撑住很多场景。这三种算法的对比表如下我个人排查问题时经常参考算法被驱动表访问方式内存依赖适用场景缺点Index Nested-Loop Join索引查找低被驱动表连接字段有索引、驱动表行数小驱动表过大时循环次数多Simple Nested-Loop Join全表扫描低理论存在实际应尽量避免被驱动表反复全表扫描Block Nested-Loop Join批量匹配高join_buffer_size无索引连接、MySQL 5.7及以前大表驱动时缓冲区不够会分批加载Hash Join哈希探测高内存/临时文件等值连接、大表关联、8.0环境非等值连接不支持构建哈希表有耗时1.3 连接顺序的选择逻辑为什么“小表驱动大表”不总是成立优化器决定连接顺序的核心依据是成本而不是简单地“把行数少的放前面”。它需要结合WHERE条件中的过滤能力、索引可用性、预估扫描行数等综合计算。比如下面这条SQLSELECT u.name, o.order_no FROM orders o JOIN users u ON o.user_id u.id WHERE o.status 1 AND u.level 3;如果orders表有100万行但status1能过滤到只剩5000行users表有50万行但level3能过滤到只剩20万行那么优化器大概率会先查orders过滤后5000行作为驱动表即使orders表原始行数比users大。所以我在判断优化器选择是否正确时从来不看表的物理数据量只看“经过WHERE过滤后预估参与连接的行数”。这里容易踩的坑是统计信息不准。如果表很长时间没做 ANALYZE TABLE优化器拿到的行数是几个月前的那它估算的过滤后行数就会偏差很大连接顺序自然容易选错。这种问题往往毫无征兆数据量没怎么涨SQL却突然慢了我在后面第4章会专门讲排查方法。2. 连接查询性能问题的真正源头2.1 驱动表选错优化器不是万能的我先抛一个我自己踩过的坑。有一张订单明细表detail_table数据量大概600万行一张商品表product_table只有2万行。业务逻辑是按订单筛选商品信息SQL大概长这样SELECT d.id, d.order_no, p.product_name FROM detail_table d LEFT JOIN product_table p ON d.product_id p.id WHERE d.create_time 2024-01-01;当时的执行计划非常离谱detail_table作为驱动表没问题但product_table上关联字段居然没有走主键索引Extra列显示的是Block Nested-Loop Join说明优化器认为product_table的product_id相关性太低、走索引不如直接全表加载进join_buffer。当detail_table过滤后还剩80万行时80万行去匹配2万行的商品表表面上是“大表驱动小表”好像没问题但实际上是80万行每行都要到缓冲区里去探测一次耗时直接到了秒级。后来我重建了统计信息并给product_table的id主键做了ANALYZE优化器重新估算后执行计划改成了Index Nested-Loop Join耗时从2.1秒降到40毫秒。这个案例告诉我优化器选的连接顺序不是不可更改的统计信息一旦失真再“正确”的算法也救不回来。2.2 关联字段索引失效的六种常见情形连接查询调优一半的时间都在和索引较劲。JOIN关联字段加了索引但执行计划就是不走这是最让人抓狂的问题。我整理了六种高频的索引失效场景基本覆盖工作中九成的情况隐式类型转换表A的product_id是varchar类型表B的product_id是bigint类型连接时MySQL会把varchar转成数值再比较函数套在索引列上索引直接失效。我记得排查过一个case两表字段一个是varchar(32)存数字一个是bigintJOIN条件ON a.uid b.uid结果就是全表扫描。字符集不一致表A的user_name列是utf8mb4表B是utf8连接时要么做隐式转换要么无法走索引。建表时统一用utf8mb4不只是为了表情符号更是为了JOIN效率。排序规则不一致两张表字段的collation不同比如一个是utf8mb4_general_ci一个是utf8mb4_0900_ai_ci也会导致优化器放弃索引。关联字段上使用函数或表达式ON DATE(a.create_time) DATE(b.create_time)这种写法优化器拿不到原始的索引区间只能全表算完再比较。前导模糊查询ON a.name LIKE CONCAT(%, b.name)这类带前置通配符的连接条件B树索引根本没法走。优化器认为索引区分度太低比如性别字段、状态字段这类低基数列优化器估算全表扫描的代价还不如索引查找就不走索引了。这里额外强调一点字符集不一致造成的性能问题特别隐蔽表面上看数据都能关联上SQL也不报错但就是慢。排查时可以执行SHOW CREATE TABLE对比两张表关联字段的CHARSET和COLLATION一眼就能看出问题。2.3 连接过程中的临时表与排序很多连接查询还会带上ORDER BY、GROUP BY、DISTINCT这几兄弟凑在一起往往会产生临时表。MySQL里临时表分为内存临时表和磁盘临时表当GROUP BY的数据量超过tmp_table_size或者max_heap_table_size时内存临时表会转为磁盘临时表性能断崖式下跌。我处理过一个统计报表SQL里面带了三张表JOIN加GROUP BY加ORDER BYEXPLAIN显示Using temporary; Using filesort。当时线上tmp_table_size只有16MB统计结果一跑就落盘整个查询跑了9秒。后来调大了tmp_table_size并且改造SQL尽量减少GROUP BY列优化成先用子查询缩小数据集再连接时间直接降到200毫秒以内。所以排查连接查询性能问题时如果EXPLAIN里出现Using temporary或Using filesort一定要重视。它们不代表不能用但说明查询过程中有额外的排序和建表开销数据量一大就成了拖垮性能的定时炸弹。3. 从慢查询到执行计划连接查询调优的完整实战3.1 先定位慢SQL慢查询日志是第一步调优连接查询第一步不是看代码而是把“案发现场”固定下来。MySQL提供了慢查询日志可以记录执行时间超过阈值的SQL。我通常用下面这套配置slow_query_log 1 slow_query_log_file /var/log/mysql/mysql-slow.log long_query_time 1 log_queries_not_using_indexes 0long_query_time设成1秒是一个比较合理的起点。生产环境如果有比较重的报表SQL可以在会话级别临时设低一些比如SET long_query_time 0.5针对特定时间段抓取更细的信息。慢查询日志打开后可以用mysqldumpslow做初步聚合把频繁出现的慢SQL找出来mysqldumpslow -s t -t 10 /var/log/mysql/mysql-slow.log方式比较直接但能快速定位到“哪些SQL最该被优化”。还有一种方式是直接在会话里定位单条SQL的耗时分布MySQL 5.7可以用Performance Schema的events_statements_summary_by_digest来做聚合统计比慢查询日志更全面适合系统性地做SQL健康检查。3.2 EXPLAIN执行计划解读连接查询的关键信息在哪定位到慢SQL之后立刻做一件事EXPLAIN。我自己习惯用EXPLAIN FORMATJSON因为它输出的成本估算更明确但常规的表格形式更适合快速判断。拿一个典型的电商订单查询来做示例EXPLAIN SELECT o.id, u.name, p.product_name FROM orders o JOIN users u ON o.user_id u.id JOIN products p ON o.product_id p.id WHERE o.user_id 12345 ORDER BY o.create_time DESC LIMIT 50;这里我故意让查询条件非常简单但假设users和products两表很大接下来看EXPLAIN的结果重点盯这几列列名判断要点type至少要达到ref或eq_ref级别如果出现ALL说明有全表扫描重点排查关联字段索引possible_keys可能使用的索引如果为空说明关联条件没索引或已失效key优化器实际使用的索引如果为空但possible_keys有值说明优化器弃用了索引rows预估扫描行数驱动表的rows应该尽量小Extra出现Using join buffer (Block Nested Loop)或Using where说明连接条件没用上索引出现Using temporary表示有临时表如果我看到的是typeALLkeyNULLExtraUsing join buffer (Block Nested Loop)那基本可以断定连接查询掉进了无索引JOIN的大坑。3.3 具体调优步骤从索引到SQL写法的完整改造结合上面那条示例SQL我把一套常见的调优流程完整走一遍。第一步梳理连接字段索引。先看JOIN条件涉及的字段是否都有索引。orders表上的user_id和product_id必须有索引users表的主键id是索引没有问题products表的主键id也是索引。如果缺索引优先创建连接字段的索引ALTER TABLE orders ADD INDEX idx_user_id (user_id); ALTER TABLE orders ADD INDEX idx_product_id (product_id);这里要注意如果一张表经常用user_id status create_time组合做查询那么单独加单列索引不如建联合索引更高效。联合索引的字段顺序遵循一个原则等值条件放前面排序条件放后面。所以对这条SQL比较理想的是ALTER TABLE orders ADD INDEX idx_user_create (user_id, create_time);这样既能用于WHERE的快速过滤又能让ORDER BY create_time避免filesort一举两得。第二步检查查询字段的规范性。把SELECT *改成只查询需要的列。在连接查询中如果查出来的列是驱动表的一部分可以考虑覆盖连接尽量走覆盖索引减少回表。尤其注意不要随意在SELECT列里加函数、计算表达式这些都会增加临时表的生成概率。第三步重置统计信息并观察。建完索引后执行ANALYZE TABLE orders;让优化器重新统计表行数和索引区分度然后重新EXPLAIN看连接算法是否从Block Nested Loop变成了Index Nested-Looprows估算是否大幅下降。我处理过很多类似的调优只加两个索引走完这套流程后原来1.8秒的查询优化到30毫秒以内非常常见。连接查询性能问题很多时候并不是算法本身不行而是优化器压根拿不到可用的索引路径。3.4 全局参数层面的连接查询调优有些时候SQL已经写得很规范索引也建了但连接查询还是慢。这就到了调整系统参数的环节。join_buffer_size是最常调整的参数之一。它控制Block Nested-Loop Join和Hash Join时用于存放批量数据的内存大小。默认值是256KBMySQL 8.0当驱动表的数据量超过这个缓冲区时就会分批加载被驱动表的扫描次数成倍增加。调大join_buffer_size确实能提升无索引JOIN的性能但这家伙是会话级别的简单说就是每个连接都可能会申请这么大一块内存。如果全局设成1GB100个并发连接就是100GB数据库直接崩。所以我的经验是只在需要跑重JOIN的业务会话里临时调大或者控制在合理范围比如64MB以内不要无脑设大。SET SESSION join_buffer_size 64 * 1024 * 1024;optimizer_switch参数控制优化器的一些特性开关。在MySQL 8.0.20之后hash_join默认是开启的。如果你升级到8.0后遇到执行计划变化可以检查这个变量SELECT optimizer_switch LIKE %hash_joinon%;但我不建议为了一条SQL去全局关闭hash_join更好的做法是理解它、利用它。tmp_table_size和max_heap_table_size控制内存临时表的上限这两个参数联动实际生效的是两者中的较小值。当连接查询带GROUP BY或DISTINCT且结果集较大时调大这两个参数能显著减少磁盘临时表的产生。但同样道理全局值别设太大比如内存临时表最大256MB那么同时有20个会话产生临时表就是5GB压力不小。下面是一个我常用的参数参考表适合大部分在线交易类业务参数默认值建议值说明join_buffer_size256KB1MB - 64MB按需会话级调整避免全局过高tmp_table_size16MB64MB - 256MB超过后转磁盘临时表max_heap_table_size16MB64MB - 256MB与tmp_table_size联动long_query_time10s1s慢查询日志阈值3.5 高并发连接池视角下的连接查询连接查询的性能问题不止在单条SQL执行本身还和连接池的配置有关。搜索热词里很多人关注“MySQL的数据库连接池”我必须多说一句连接池参数错误会让原本很快的连接查询在排队中被拖死。常见的连接池参数包括initialSize、maxActive、maxWait等。业务系统如果maxActive设得过小高峰期请求会阻塞在连接获取阶段表现为SQL响应变慢但数据库本身CPU不高。调优时建议把连接池的最大活跃连接数和数据库的max_connections做配套设计同时尽量控制连接池中的长事务因为连接查询会占用连接直到事务提交连接不够用再快的SQL也出不去。我之前在一个项目里碰到过诡异现象单条SQL跑150毫秒但接口整体耗时两秒。排查后发现连接池maxActive只有10而接口并发量是50大量请求在等连接。把maxActive调到50并结合数据库实际负载设置后接口耗时立刻恢复正常。连接查询优化不能只盯着EXPLAIN。4. 常见问题与排查技巧实录4.1 常见连接查询问题速查表我把工作里高频遇到的连接查询性能问题整理成一个速查表基本覆盖了绝大多数“慢查询工单”的核心原因现象直接原因排查方式解决思路执行计划出现ALL且Extra有join buffer关联字段无索引或索引失效EXPLAIN检查type/key为关联字段建索引并检查类型/字符集小表 JOIN 大表反而慢优化器把大表当驱动表了查看EXPLAIN第一行是哪张表ANALYZE TABLE更新统计信息必要时用STRAIGHT_JOIN连接查询带GROUP BY超慢临时表落盘看Extra是否有Using temporary调大tmp_table_size改写SQL减少分组中间结果字段类型不同但能关联成功隐式类型转换导致索引失效SHOW CREATE TABLE对比列类型统一字段类型比如id都用bigint并发一上来连接查询集体变慢连接池不够或参数不合理监控活跃连接数和等待数调整maxActive、maxWait配合max_connections升级MySQL 8.0后执行计划突变hash_join开关或统计信息变化比对升级前后EXPLAIN重新ANALYZE TABLE分析是否需要调整optimizer_switch4.2 一次印象深刻的连接查询排障全程说一个我印象非常深刻的真实排障经历虽然细节做了脱敏但思路值得参考。当时值班接到告警某条订单统计接口在晚上八点高峰时段频繁超时数据库CPU飙到90%。我先开慢查询日志抓了两分钟发现一条连接查询SQL平均执行时间5秒涉及四张表。EXPLAIN显示前两张表连接正常到了第三张表出现全表扫描Extra列直接提示Using join buffer。我首先比较了第三张表连接字段的类型发现表A的关联列是varchar(20)表B的关联列是char(20)。单看类型差异不大但排序规则一个是utf8mb4_general_ci另一个是utf8mb4_0900_ai_ciMySQL做连接比较时选择了隐式转换方案索引直接无法使用。我把两张表的连接字段统一改成utf8mb4_0900_ai_ci再重新EXPLAINtype从ALL变成了ref单条SQL从5秒降到80毫秒。这个案例的教训很清晰连接查询的调优不要总觉得是算法问题。很多时候就是建表时字符集或排序规则不一致埋了一颗雷平时数据量小不爆数据量一上来慢查询立刻现原形。4.3 几个值得长期坚持的避坑经验最后分享几个我在实战中沉淀下来的独门经验每一条都是用代价换来的。经验一定期ANALYZE TABLE。InnoDB的统计信息不是实时精确的它是通过采样估算出来的。数据发生大规模变更比如批量导入、大量删除后统计信息很容易失真。建议对高频JOIN的表设置周期性任务一天或一周执行一次ANALYZE TABLE让优化器始终有相对准确的决策依据。经验二必要时候干预连接顺序。如果确认优化器选择的驱动表有问题除了更新统计信息还可以用STRAIGHT_JOIN强制连接顺序写法是SELECT STRAIGHT_JOIN u.name, o.order_no FROM users u JOIN orders o ON o.user_id u.id;这会按照FROM语句里的表的先后顺序来连接。但注意STRAIGHT_JOIN是双刃剑强制顺序可能适得其反因为它关闭了优化器对其他连接顺序的搜索空间。我在生产上只在明确知道“某个顺序是最高效”的时候才用不做无脑干预。经验三在线加索引要防锁。连接查询调优经常会涉及加索引但大表在线加索引可能带来锁问题。MySQL 5.6之后支持Online DDL大部分加索引操作不需要长时间锁表但高峰期仍然可能产生较大的主从延迟。建议在业务低峰期操作并且用pt-online-schema-change这类工具对大表做变更避免事故。经验四不要只看一条SQL的EXPLAIN。连接查询的性能受并发环境影响巨大。一条SQL在自己测试环境走索引很快一到生产并发环境就慢很多时候是行锁竞争、buffer pool命中率、机器IO能力等问题叠加。EXPLAIN解决的是“执行方案对不对”但“跑得快不快”还得结合监控看整体负载。所以调优连接查询至少要看三个层面执行计划、索引状态、系统负载。经验五把大查询拆成小查询并不丢人。有的连接查询确实复杂四张五张表JOIN再加GROUP BY与其费半天劲调优不如在业务层把查询拆两步先查出主表过滤后的ID集合再用这个ID集合去关联查询。这种“人工优化算法”有时候比数据库优化器更有效因为它把复杂的优化问题拆成了业务天然能理解的两段式查询。我个人实操中的体会是MySQL连接查询的优化算法并不神秘它本质是一个基于成本的决策模型。MySQL优化器帮我们做了百分之八十的工作剩下百分之二十需要人来判断统计信息是否失准、索引设计是否合理、参数配置是否匹配。很多人一遇到连接查询慢就想着改SQL、调参数但真正效率最高的路径永远是先看执行计划再看索引最后才动参数。这三板斧走下来八成以上的连接查询性能问题都能被解决。最后再送一个小技巧每个月挑一个低峰期把系统里执行次数最多的前20条连接查询SQL全部EXPLAIN一遍重点看rows的估算值和实际扫描行数是否差异过大。如果长期相差超过五倍就说明统计信息该刷新了或索引需要调整。这种主动巡检的习惯比等问题爆发再救火要省心得多。

相关新闻

PLSQL Developer 13免安装中文版:开箱即用的原生语言支持

PLSQL Developer 13免安装中文版:开箱即用的原生语言支持

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/9/29 5:19:29 阅读更多 →
Windows桌面假死?一分钟自救指南:重启explorer.exe解决图标卡死

Windows桌面假死?一分钟自救指南:重启explorer.exe解决图标卡死

电脑桌面假死,应该是Windows用户最常遇到的“半死状态”了:鼠标指针还能动,但桌面上的图标全部点不动,任务栏也没有任何响应,点开始按钮就像点在石头上,连右下角的时间都定格不动。很多人的第一反应是长按电…

2026/9/29 5:30:25 阅读更多 →
DeepSeek本地部署Node.js网关实战指南

DeepSeek本地部署Node.js网关实战指南

1. 项目概述:为什么需要一个“DeepSeek Harness本地部署的Node.js网关”最近两周,我连续接到6个不同行业客户的技术咨询,问题高度集中:“能不能不依赖云API,把DeepSeek模型跑在自己服务器上,再用Node.js做一…

2026/9/29 2:16:30 阅读更多 →

最新新闻

WorkBuddy与MCP协议:构建可审计、可治理的数字员工操作系统

WorkBuddy与MCP协议:构建可审计、可治理的数字员工操作系统

1. WorkBuddy不是又一个聊天框:它正在重写“办公”这个词的定义 我第一次在客户现场看到WorkBuddy接管整套财务月结流程时,手里的咖啡凉了都没察觉。不是因为它多炫酷——界面甚至有点朴素——而是它把过去需要3个人、2天、7个系统切换、12次人工校验的闭…

2026/10/1 14:21:46 阅读更多 →
同一套沉浸光感如何覆盖标题栏、底部 Tabs 和弹窗:HarmonyOS 7 三种实现别混用

同一套沉浸光感如何覆盖标题栏、底部 Tabs 和弹窗:HarmonyOS 7 三种实现别混用

同一套沉浸光感如何覆盖标题栏、底部 Tabs 和弹窗:HarmonyOS 7 三种实现别混用 沉浸光感有了明确生效区域后,最容易出现的新问题是“哪里能亮就往哪里塞”。标题栏、横向 Tabs 的底部 TabBar 和指定弹窗虽然都能生效,但承担的交互职责完全不…

2026/10/1 14:21:46 阅读更多 →
【AI·FDE】第11篇:常驻 Agent 的工程框架——从 OpenAI DevDay「o」泄漏线索说起

【AI·FDE】第11篇:常驻 Agent 的工程框架——从 OpenAI DevDay「o」泄漏线索说起

【AIFDE】第11篇:常驻 Agent 的工程框架——从 OpenAI DevDay「o」泄漏线索说起 大模型工程师修炼手记 系列文章 | 2026年9月29日 第10篇我们讲了 Agent 上线前的五道安全基线。这一篇接着往前一步:当 Agent 不再是"你问一次、它答一次",而是长期存在、自带邮箱、…

2026/10/1 14:21:46 阅读更多 →
机器狗到底是啥?2026年最新用途讲明白

机器狗到底是啥?2026年最新用途讲明白

机器狗,英文 Quadruped Robot,简单说就是四条腿的移动机器人平台。具身智能(Embodied Intelligence)常被拿来讲它的“脑子”。2026年它早就不只是展会跳舞,更多用在园区巡检、能源场站、应急排查、高校科研。核心看三点…

2026/10/1 14:21:46 阅读更多 →
影刀RPA实操指南:流程复盘方法——每个项目结束该留下什么

影刀RPA实操指南:流程复盘方法——每个项目结束该留下什么

影刀RPA实操指南:流程复盘方法——每个项目结束该留下什么 流程跑通了,数据交了,然后呢?大部分人直接开下一个项目,三个月后接到相似需求,打开旧应用一看——变量名叫a1a2a3,指令堆了八百行没有…

2026/10/1 14:21:46 阅读更多 →
深度解析bus_register:Linux设备模型总线上户口与sysfs目录构建

深度解析bus_register:Linux设备模型总线上户口与sysfs目录构建

1. bus_register是什么,内核驱动模型的基石我得先说说为什么啃这块代码。Linux内核里的驱动模型(Driver Model)是整个设备管理的中枢,它把总线(bus)、设备(device)、驱动&#xff08…

2026/10/1 14:20:46 阅读更多 →

日新闻

我发现了一个新思路:用 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/1 0:00:30 阅读更多 →
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/1 0:00:30 阅读更多 →
黑夜航拍船只数据集训练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/1 1:01:17 阅读更多 →

周新闻

如何划分训练/验证集:Spirula Studio五种eval_mode策略详解

如何划分训练/验证集:Spirula Studio五种eval_mode策略详解

如何划分训练/验证集:Spirula Studio五种eval_mode策略详解 【免费下载链接】spirula-studio Cross-vendor 3D Gaussian Splatting trainer - video to splat to mesh, Vulkan or CUDA. 项目地址: https://gitcode.com/GitHub_Trending/sp/spirula-studio Sp…

2026/9/30 13:14:22 阅读更多 →
SEO怎么推广速查手册新手避坑实战指南

SEO怎么推广速查手册新手避坑实战指南

SEO怎么推广速查手册新手避坑实战指南 模板网站太丑不够用?别急着加滤镜,那是治标不治本。很多老板盯着后台流量掉得眼红,却还在纠结首页Banner的圆角是不是3像素。这就像穿着西装去挖土,姿势不对,努力白费。我整理这份 速查手册…

2026/9/30 18:13:06 阅读更多 →
FireRed-OpenStoryline少样本仿写深度解析:AI Agent如何复刻你的独特文案风格与节奏

FireRed-OpenStoryline少样本仿写深度解析:AI Agent如何复刻你的独特文案风格与节奏

FireRed-OpenStoryline少样本仿写深度解析:AI Agent如何复刻你的独特文案风格与节奏 【免费下载链接】FireRed-OpenStoryline FireRed-OpenStoryline is an AI video editing agent that transforms manual editing into intention-driven directing through natural language …

2026/9/30 13:14:49 阅读更多 →

月新闻

我发现了一个新思路:用 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/1 0:00:30 阅读更多 →
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/1 0:00:30 阅读更多 →
黑夜航拍船只数据集训练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/1 1:01:17 阅读更多 →