大规模数据SQL优化实战:从执行计划到数据倾斜
说实话干数据这行越久越发现一个反常识的现象很多人把大量精力花在学各种流行技术栈上但日常工作中使用频率最高、也最决定产出效率的反而是看起来最“基础”的SQL。尤其在数据科学流程里从数据探查、特征工程到结果验证每一步都绕不开取数。而一旦数据量上了千万级甚至亿级SQL写得好不好性能差距能拉到几十倍。我自己就见过太多“功能上完全正确”的查询放在大表上跑半小时都出不来改完执行计划几分钟搞定。这篇东西不讲语法入门专门聊数据科学场景下大规模数据的SQL优化实战技巧适合已经被取数折磨过、想系统提升查询效率的读者。1. 先把问题想清楚大规模数据SQL慢的根源到底在哪1.1 数据科学场景下的SQL特点和传统报表查询完全不一样数据科学里的SQL和业务报表常用的SQL有个很大的区别它往往不是简单查几个字段而是要在数亿行明细数据上做复杂的加工、聚合、关联和窗口计算。比如你要为某个用户群体构建行为特征通常需要把用户的多张行为表按时间窗口切片、去重、排序、汇总这中间每一个操作都可能触发大规模的数据扫描和洗牌。这个场景有几个典型特点。第一数据量级大单表几亿行很正常全表扫描是常态而非例外第二查询逻辑复杂动辄十几个JOIN、多层子查询、多个窗口函数叠加优化器稍微“想岔”一点代价就非常夸张第三交互式需求多数据科学探索阶段往往需要快速迭代一次查询等半小时整个工作流就被卡死了第四同一份数据经常被反复加工如果每次都从原始明细开始算浪费的算力会非常惊人。所以如果你用写小报表的思路来写大数据的SQL几乎必然踩坑。我见过有人用三张千万级表做多层嵌套子查询最内层用了好几个窗口函数结果执行计划里出现了三次超大规模的排序操作。这种查询任你底层存储再强也很难快起来。本质上是把必须人工干预的执行路径选择完全交给了优化器而优化器的统计信息一旦不准确代价估算就会严重失真。1.2 优化SQL最核心的是养成“执行计划思维”做SQL优化最先要建立的不是技巧而是思维。这个思维就是在看到一条SQL的瞬间脑子里就要自动浮现出它大概会被翻译成什么样的执行计划哪些操作会特别贵数据是怎么流动的。我把大数据SQL的“贵”归纳为三类成本。第一类是扫描成本就是底层引擎要读多少数据。比如查询里有个过滤条件如果过滤字段没有分区分桶那就只能全量扫描。第二类是洗牌成本就是数据在计算节点之间传输的量。GROUP BY、JOIN、DISTINCT这些操作都会触发重分布数据量一大网络传输就是巨大瓶颈。第三类是排序成本窗口函数、ORDER BY、去重排序都会引入全局或局部排序排序的数据量越大越慢而且非常容易导致内存溢出。回头看那些跑得极慢的SQL大部分都是这三类成本失控了。有些是过滤条件没有下压导致扫描了根本不需要的数据有些是JOIN顺序不对让中间结果集膨胀到可怕的地步还有些是窗口函数用得太随意引发了多余的全量排序。这些问题的共性是写的人根本没有“执行计划思维”以为SQL是声明式的数据库会自动优化。实际上好的优化器能帮你做很多事但前提是你得给它创造条件。我自己的习惯是任何一条要在大表上跑的查询上线前都强制自己看一眼执行计划。不用看懂全部细节重点盯几个地方——有没有全表扫描、有没有不必要的排序、JOIN的输入行数估算和实际是否严重不符。这一步花五分钟可能帮你省下后面几小时的等待时间。2. 数据组织上的优化技巧分区、分桶与排序键的取舍2.1 分区是“第一道闸门”直接决定扫描量数据科学的取数场景里时间维度几乎永远存在所以分区的首选键几乎都是日期。比如一张订单明细表如果按天分区查询时只要过滤条件里带上日期范围执行引擎就能直接裁剪掉无关分区只扫描需要的部分。这个收益有多大我遇到过真实的例子。一张十亿行的用户行为日志表不分区的版本跑一次全表聚合要四十分钟。加了按天分区同样的聚合查询如果只取三天数据扫描量直接降到原来的百分之一以下查询秒级返回。分区设计的核心原则很简单让最常见的过滤条件能直接裁剪数据。所以设计之初就要想清楚你平时取数最多的维度是什么。绝大多数情况下是日期其次可能是业务线、地域之类的高基数枚举值。但分区也不是越多越好。分区粒度过细会带来大量小文件问题尤其是流式写入的场景一个分区可能只有几MB的数据元数据开销反而拖垮整体性能。在实践中我一般建议小时级数据做天分区天级数据做月分区或者不分区具体要看查询模式。太碎的分区对优化器来说也是负担。2.2 分桶和排序键的实战配置思路分区解决的是扫描裁剪问题接下来要面对的就是JOIN和GROUP BY了。这里有两个非常重要的数据类型——分桶和排序键它们能极大减少洗牌和排序成本。分桶的原理是把数据按照某个字段的哈希值固定散列到N个桶里。如果两张表在JOIN字段上做了相同数量的分桶那么JOIN的时候就可以在桶级别直接对齐不需要全量重分布。这就像图书馆按书名首字母分类找书时直接去对应字母区域不用在整个馆里跑。分桶数量选择需要参考数据量和单桶大小通常让每个桶在合理范围内太大太小都不合适。排序键则是在写入时就把数据按照某些字段排好。这样查询时如果用了相同的排序字段做窗口函数或聚合引擎就能复用这个有序性省掉昂贵的排序步骤。这张表的设计价值在于让数据在物理存储层面就匹配上查询访问模式。很多人在意分区却忽略排序键其实是丢掉了一个隐蔽但可观性的性能优化维度。我见过一个很好的实践案例一张用户行为宽表按天分区再按用户ID分桶桶内按行为时间排序。下游做用户路径分析时既可以用日期裁剪分区又可以按用户ID稳定高效地JOIN窗口函数直接拿有序数据。三管齐下原本动不动就要几分钟的查询基本压到了十几秒。2.3 合理设置文件大小与存储格式别让小事拖垮性能规模上来之后很多性能问题已经不在SQL本身而在存储层。最常见的坑就是小文件过多。假设一张表被反复覆盖写入每次都产生大量小文件那么即使你有分区裁剪光打开文件、读元数据的开销也足以拖垮查询。针对这一类问题常规手段是在写入时控制文件数量。流式写入场景适合用定频滚动写入再合并的方式批量写入则尽量控制并行度。还有存储格式。列式存储是绝大多数分析场景的正确选择——只读需要的列压缩率高而且很多引擎能直接做整列裁剪优化。行式存储在这个场景下尽量不要用。这些细节如果不重视往往表现为优化器估算不准、执行计划异常笨重。但如果你从数据组织层面打好底子SQL优化会轻松非常多。3. JOIN优化实战合理做裁剪、广播和策略选择3.1 大表关联是谁在拖后腿数据科学场景中JOIN恐怕是性能的第一杀手。逻辑很简单两张表做JOIN需要在关联键上把数据配对数据在分布式环境里就会发生Shuffle——网络传输量跟参与JOIN的数据总量成正比。一次全量JOIN如果两边都是上亿行网络开销就到了一个非常夸张的量级。此外还有一个隐蔽问题就是JOIN键的数据倾斜。比如订单表关联用户表如果某些头部用户订单量巨大会导致所有数据都被分到同一个计算节点拖慢整体进度。这种问题有专门的手段去解决后面细说但首先得学会识别。3.2 广播小表是性价比最高的一招如果在JOIN里有一张表很小远小于单个节点的可用内存就应该使用广播JOIN也就是把小表复制到每个节点上让每个节点直接在本地完成关联。这个效果有多夸张我做过一个案例。一张五亿行的用户行为日志表按用户ID分桶要和一张只有几千行的城市维表做关联给每条日志补上城市信息。最开始的写法是用普通JOIN执行计划里出现了大量重分布整个查询跑了十几分钟都出不来。改成广播JOIN之后日志数据完全不需要移动每个节点各自拿着小表做本地查找分钟级跑完。这个操作在小表几十MB级别时收益最大一旦小表膨胀到几GB广播本身可能堵塞网络。所以做这个优化前要先确认小表的实际大小别想当然地“它应该不大吧”。3.3 关联键字段类型转换也要尽量提前收敛有一个非常不起眼但影响巨大的点关联键的数据类型不一致。比如一张表里用户ID是字符串另一张表里是数值或者一边是INT一边是BIGINT。为了JOIN底层引擎必然要对其中一侧做全量类型转换。这个转换本身计算开销不小而且可能导致优化器放弃很多原本可用的优化手段。原则很简单数据模型设计阶段就要尽量把关联键的类型在所有相关表里统一。这个坑在实时数仓场景里尤其常见数据从不同上游进来类型稍微有点差异下游JOIN时就埋了雷。统一了类型不仅JOIN跑得快后续维护也更省心。3.4 关联条件里参杂了复杂表达式优化器直接“摆烂”还有一个我需要重点提醒的情况不要在任何JOIN条件里写复杂的函数或表达式。比如ON a.user_id UPPER(b.user_id)这种写法会让优化器无法直接使用分桶或排序信息因为它无法保证函数处理后的值还保持原有的分布特性。这种情况下原本能对齐的分桶直接失效整个JOIN退化成最原始的全量Shuffle。数据科学场景经常要对脏数据进行清洗比如字符串大小写不统一、去掉空格等。我的建议是在数据建模阶段就完成这些清洗操作把干净的字段写进中间表而不是在下游JOIN时临时处理。让参与的关联字段保持“纯净”是大数据JOIN性能的一个基本前提。4. 窗口函数与聚合优化让数据少搬几次家4.1 窗口函数的隐性成本很多人低估了窗口函数是数据科学取数的神兵利器比如计算累计值、排名、移动平均、会话切分都离不开它。但窗口函数的性能坑也特别多。它的执行逻辑是按PARTITION BY字段把数据分组在组内做排序和计算。如果PARTITION BY字段的基数非常大意味着每一个分组都非常小可能每个节点上都要做大量零碎的小排序效率反而不高。更常见的问题是PARTITION BY字段选得不好导致数据需要在节点间来回倒腾。我见过一个典型场景有人想给用户行为日志按会话ID分组给会话内的每条记录编号。会话ID的粒度很细而且数据本身并没有按照会话ID做分布。结果就是每一条数据都要被重分布到正确的节点上整体Shuffle规模变大窗口函数的执行时间比预期长很久。在实际操作层面可以做的优化有几个方向。第一优先选择一个分布特征与底层数据存储一致的字段作为PARTITION BY能把数据本地化做到最高。第二如果只是需要去重而不是排序优先考虑聚合 去重逻辑替代窗口函数成本会小很多。第三如果一个窗口函数里既有PARTITION又有ORDER一定要明确排序键。如果排序键和底表排序一致引擎可以复用有序性。4.2 聚合优化从源头减少数据量聚合是做特征工程的核心手段。数据集团的常规套路是明细数据 → 不同时间窗口聚合 → 生成行为特征。这类SQL如果每次都从最底层的明细表开始算对计算资源的浪费会非常明显。优化方向有两个。一是使用中间表分层聚合。把明细层的聚合结果沉淀成中间层下游特征查询只在中间层上滚动聚合数据量小了两个数量级查询性能大幅提升。二是使用近似聚合函数。在需要去重统计场景下如果业务上接受近似值使用近似去重函数提升速度非常显著。我自己实践下来的体会是数据科学取数SQL不要只盯着单条查询怎么优化。把“按需重算”改成“以空间换时间”的增量加工思路对整体效率的提升比单点优化大得多。这个思想转变很值得数据从业者去体会。4.3 把重计算下沉到模型训练之前做成好习惯数据科学场景里同样的数据可能会被多个模型、多种特征实验反复使用。如果每次做特征都是从头取明细那是重复劳动消耗巨大。所以我很习惯把“多轮探索中不变的中间结果”物化成表然后再做特征衍生。举个很常见的例子用户近30天行为统计。如果模型要调参、要更新标签、要做时间窗口切分可能一天内就要跑几十次类似查询。如果每次都从原始行为明细表去聚合几十次查询全都进行全表扫描资源开销会非常夸张。但如果你提前把“用户近30天行为汇总”计算一次物理化成中间表后续每次只需要从这张小得多的中间表里取数速度呈数量级提升。所以做数据科学SQL优化思维不能局限在单条查询里更要有数据加工链路的全局观。5. 数据倾斜的识别与处理最常见也最隐蔽的坑5.1 数据倾斜的症状、原因和识别方法数据倾斜是大数据场景里最让人头疼的问题之一。症状是明明集群里有很多节点但某个节点的CPU和内存被拉满其他节点闲得发慌。整个查询的耗时被那个倒霉的节点卡住跑完要等最慢的节点。数据倾斜几乎都出现在两类操作里一是GROUP BY的某个KEY值太多二是JOIN时关联键分布不均。比如电商订单数据里“双11”当天的订单量可能是平时的一百倍如果有统计口径按天聚合这一天的数据倾斜就非常严重。又比如用户表里匿名用户或者某个超头部用户的行为记录非常多JOIN时这部分数据全压在一个节点上。要识别到底是不是倾斜最快的办法还是看执行计划或者任务监控。DataWorks、Spark UI、引擎自己的监控页面都会按节点/任务展示处理行数和耗时。一旦发现某个任务处理的行数远超其他节点基本可以确定倾斜了。还有一种经验判断查询语句里有关键字段的基数分布如果极不均匀出现倾斜的概率就极高。所以我在取数之前经常顺手跑一下SELECT 关联键, COUNT(*) FROM 大表 GROUP BY 关联键 ORDER BY 2 DESC LIMIT 20看看分布长什么样。5.2 处理JOIN倾斜的方法主要是打散和拆分处理JOIN倾斜核心思路是让倾斜的数据不要都跑到同一个节点上去。第一种方法是对倾斜KEY加随机前缀。给倾斜键加上随机前缀后原本集中在同一个KEY上的数据会分散到更多节点上。但代价是另一张表的关联键也需要做同样处理——给少量热点KEY复制出多份让它们能与随机前缀后的数据进行匹配。这个方法实现起来并不复杂但要小心别把数据放大得过于严重。如果热点KEY的数据量极大复制多份可能反而带来新的瓶颈。第二种方法是拆分查询。先把热点KEY的数据单独取出来用单独且有针对性的逻辑去处理同时把非热点部分用正常JOIN逻辑跑。最后把两部分结果UNION ALL。这种方法听起来繁琐但稳定性非常高也是很多资深工程师的兜底方案。我自己的经验是先试广播小表再试打散方案。如果热点本身极其集中拆分方案更可控。方法论不重要最终有效才是关键。5.3 GROUP BY倾斜分拆聚合再合并GROUP BY倾斜的治理思路类似。假设你要统计每个用户的特征但头部用户的数据特别多可以分两步走。第一步把用户分为普通用户和头部用户两类。普通用户正常做GROUP BY头部用户则可以按一定规则分拆——比如加上随机后缀先行聚合出各自的小结果再合并聚合结果。这个两步走方案能并行处理中途稳定性也更好。需要注意的是分拆粒度不要太细否则第二步合并时的小文件又会很多。我在实践中一般把每个热点KEY拆成几十份左右具体需要观察数据量来计算。6. 常见问题排查实录与避坑指南6.1 一条慢SQL的完整排查流程我现在的排查流程已经非常固定了。第一步拿出执行计划看扫描量。如果分区裁剪没生效先补分区条件。第二步看Shuffle量。找到触发重分布的操作——比如GROUP BY字段、JOIN键、DISTINCT分析它是否真的需要。第三步看排序。窗口函数和ORDER BY这些操作尽量复用底表的有序性。第四步看是否有倾斜。如果有热点KEY按第五节的方法处理。不要一上来就各种改写花样先做减法把不需要的扫描、Shuffle、排序都砍掉。大量慢查询其实都是这三个地方出现了多余的浪费。我帮很多人review过SQL发现一个很普遍的问题——明明过滤条件可以先做结果因为子查询嵌套太深过滤条件下压不下去底层引擎只能扫描大量无关数据。6.2 千万不要依赖“小数据量上的正确性”来判断大数据量下的性能一个特别容易让人栽跟头的误区是拿一小部分数据测试通了就认为没问题。小数据量下全表扫描无所谓Shuffle也不疼排序天价成本完全看不出来。一上生产环境几个亿的数据灌进去所有被隐藏的成本全部暴露查询直接卡死。所以我的建议是涉及大数据量的查询在写的时候就带上执行计划思维。不要只满足在样本集上“能跑通”还要在预期数据量级上估算“怎么跑”。如果算不清楚就找离线的小规模压测场景把执行计划抓出来看它面对更大输入时会不会选择糟糕的执行路径。6.3 一些容易忽略但收益很大的“小动作”除了上述优化技巧日常习惯里还有几个成本极低但收益极高的动作。第一用字段裁剪代替SELECT *。数据科学探索阶段经常随手SELECT *。但列式存储虽然只读用到的列如果连上了下游生成宽表整列的读写会非常可观。只留必要字段能有效压缩I/O。第二在常用JOIN、GROUP BY字段上建立合理的索引模型。在大数据平台中索引也叫数据跳转元数据合理使用可以显著减少数据扫描。第三活用近似计数和抽样函数。在探索阶段有时没有必要跑精确值一个精确到99%的近似值就能帮你判断方向。探索分析用近似发布用精确这是数据科学取数中很实用的分工。第四关注引擎版本与参数配置。现代SQL引擎有很多小参数与优化器开关通常能显著降低查询成本。这些动作都不需要你精通多高深的原理但组合起来对整个取数效率的提升非常可观。7. 从取数到用数的效率飞轮一个完整优化案例7.1 案例背景与原始SQL问题为了把这些技巧串起来我完整还原一个真实的取数优化过程。这个案例我脱敏处理过但核心逻辑一模一样。需求是这样的某公司运营团队要看近30天各品类商品的销售表现同时要关联用户维度分析新老客贡献。原始查询的逻辑是从行为明细表约十亿行里找出近30天的有效行为关联商品维表拿品类信息再关联用户维表拿新老客标签最后按品类和新老客做聚合统计。这个查询运行时间早就超出了可接受范围。看到这条SQL的第一时间我的直觉是几个问题都有扫描量过大、JOIN顺序有隐患、用户维表关联可能数据倾斜、聚合粒度太粗导致中间结果膨胀。7.2 优化过程与每一步的原理我采取的优化顺序是有讲究的。第一步先看数据组织。行为明细表有按天分区但查询条件里没有限制日期导致扫描了全部历史数据。于是先让运营明确“近30天”的确切口径改成过滤条件里带上准确日期区间这个改进直接去掉了大部分扫描量。第二步拆分聚合逻辑。原本是先JOIN完再聚合中间结果非常大。优化为先基于行为明细表做品类维度聚合再与商品维表JOIN获品类信息用户维表同理先做预聚合减少行数降低关联规模。这种“先聚合再JOIN”的思路能有效地把数据量压缩到JOIN之前完成避免无效膨胀。第三步处理用户维表的倾斜。用户维表中新客和老客的数量分布极不均衡头部老客的行为行为量巨大如果这部分不做处理JOIN阶段必然被这个热点拖垮。于是对热点用户做拆分布局先拆出头部用户单独处理再合并。这一步做完整个查询的执行稳定性显著提升。第四步优化存储与文件情况。发现这张表在写入时产生了大量小文件影响扫描效率于是调整写入策略让数据落盘更规整。7.3 优化效果复盘最终效果查询从原先的无法容忍时间缩短到几分钟以内。更关键的是集群资源占用大幅下降之前一次查询几乎占满资源优化后同一资源上可以并行跑好几个类似任务。这个案例分析下来没有特别神奇的技巧都是前面讲到的常规手段——数据裁剪、分区配合、合理JOIN顺序、预聚合、倾斜治理。但是把这些东西组合起来效果是数量级的而不是百分之几十的提升。8. 写在最后SQL优化是一条不断逼近数据本质的路我做了这么多年数据处理一个很深切的体会是SQL优化不是一个“技工活”它考验的是你对数据存储、分布式计算、业务口径的综合理解。每次优化本质都是在重新审视你的数据流动路径以及各个成本节点在哪里。有几个小习惯很推荐。取数前先看一眼表的设计——分区、分桶、排序键心里有个数写完SQL先看执行计划别急着跑经常复盘慢查询把原因和解决方案沉淀下来。这些习惯坚持半年到一年你会发现写SQL时踩坑的频率显著下降。另一个建议是多去了解你每天在用的引擎有哪些优化器和参数这些知识点能让你少走很多弯路。SQL这条路上的坑很多但每填一个坑你对数据的理解就更深一层。希望这篇内容能给你带来一些实用的思路少熬几个等查询的夜。

相关新闻

Labelme JSON转VOC XML:生产级转换器设计与工程落地

Labelme JSON转VOC XML:生产级转换器设计与工程落地

1. 项目概述:为什么非得把Labelme的json转成VOC XML?做图像目标检测的朋友,十有八九都踩过这个坑:在标注阶段图省事用了Labelme——界面清爽、支持多边形、拖拽顺滑,导出个json文件咔咔快;可一到模型训练环…

2026/10/14 2:39:27 阅读更多 →
七自由度车辆动力学模型开发与CarSim联合验证实践

七自由度车辆动力学模型开发与CarSim联合验证实践

1. 项目背景与核心价值七自由度车辆动力学模型是汽车研发领域的重要工具,相比传统的四自由度模型,它能更精确地模拟车辆在复杂工况下的动态响应。这个项目最吸引我的地方在于将非线性特性引入七自由度模型,并通过CarSim进行联合验证——这意味…

2026/10/14 2:39:27 阅读更多 →
Kinect 2.0标定实战:从内参到RGB-D像素级对齐

Kinect 2.0标定实战:从内参到RGB-D像素级对齐

/* 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 2:39:27 阅读更多 →

最新新闻

中国起名服务正在发生什么变化?从“大师经验”到专业化、品牌化服务

中国起名服务正在发生什么变化?从“大师经验”到专业化、品牌化服务

很长时间里,人们对于“找人起名”的想象都非常简单: 找一位有经验的老师, 报出生时间, 老师根据经验给出几个名字。 整个服务高度依赖: “这个大师厉不厉害”。 但今天再观察国内专业起名市场,会发现它已经…

2026/10/14 3:22:34 阅读更多 →
测试复盘怎么做才有用:从追责到改进

测试复盘怎么做才有用:从追责到改进

很多团队的测试复盘,开着开着就变成了批斗会。“这个bug为什么没测出来?”“谁负责的模块?”“下次注意啊。”散会之后,问题还在,下次照样出。还有一种更常见的:复盘开了,大家轮流说了一遍“我觉…

2026/10/14 3:22:34 阅读更多 →
我的国模白月光文馨妍

我的国模白月光文馨妍

原文 免责声明 全文均为AIGI 「勿辩,辩则尔胜。」 5500亿,三个啊 它的大名是文心一言。 网友叫它 ChatPPT。 我叫它文馨妍。 发布会那天我没看。 直播没看。回放也没看。 网上说,那场发布会从头到尾没拿出一台真机,全靠李总一张嘴。 我…

2026/10/14 3:22:34 阅读更多 →
让数据先会说话:数据字典、查询契约与接口语义化

让数据先会说话:数据字典、查询契约与接口语义化

> 系列:《VeapAI 自然语言操作实战》第 2 篇(核心篇)> 相关源码:veap-cloud/veap-modules/veap-gen/(在线开发与代码生成,含 src/main/resources/vm/ 模板)、veap-cloud/veap-modules/vea…

2026/10/14 3:22:34 阅读更多 →
跑得快,也查得到:性能契约、运行时间线与排障留痕

跑得快,也查得到:性能契约、运行时间线与排障留痕

> 系列:《VeapAI 自然语言操作实战》第 4 篇(基础篇)> 相关源码:veap-ui/src/components/AiAgentEngine/(调度、状态与写回)、veap-ui/src/views/ai/aiAgentProcessInstance/(实例与节点执…

2026/10/14 3:22:34 阅读更多 →
企业级 Agent 规模化落地:从单场景试点到收藏级架构蓝图,小白程序员必备指南

企业级 Agent 规模化落地:从单场景试点到收藏级架构蓝图,小白程序员必备指南

企业部署 Agent 多从单场景开始,但规模化会面临诸多挑战,如数据权威、权限边界、运行责任等。文章提出企业级 Agent 架构需厘清与公共能力、存量系统的协同关系,明确中央与业务域权责。核心设计原则包括保留核心系统权威、增强现有架构、新增…

2026/10/14 3:21:34 阅读更多 →

日新闻

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/13 2:54:56 阅读更多 →
影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

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

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

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

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

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

2026/10/13 1:58:08 阅读更多 →

月新闻

我发现了一个新思路:用 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/13 14:57:39 阅读更多 →
黑夜航拍船只数据集训练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/12 18:11:17 阅读更多 →