大数据高性能计算实践:瓶颈拆解、参数调优与故障排查
去年接手一个离线数仓任务时我发现同一个统计任务在白天跑要40分钟凌晨跑只要8分钟。起初我以为只是集群资源争抢后来把整个执行计划拆开看才发现一半的时间耗在数据读取和网络shuffle上。这类问题在大数据项目里太常见了很多人把“高性能计算”简单理解成买几十台机器堆算力其实真正的瓶颈往往藏在数据分区、内存模型和任务调度这些细节里。这篇文章我会围绕“大数据领域的高性能计算实践”这个主题把我在实际项目中用过的设计思路、选型原则、调优参数和排查方法整理出来。内容不绑定某个具体业务场景适用于离线数仓、实时链路、数据服务等常见大数据工程。如果你正在做数据平台、跑批任务优化或者刚接触分布式计算想建立一套相对完整的性能优化方法论这篇文章应该能给你一个可落地的参考。我尽量不堆理论大部分内容来自真实环境里的验证和踩坑有些地方会说得比较直白。1. 先拆需求大数据场景下性能瓶颈到底在哪1.1 “高性能计算”在大数据语境里的真实含义很多人在聊大数据高性能计算时第一反应是想到了超算、GPU集群或者大规模并行编程但在工程落地中“大数据领域的计算性能”往往不是指单机的浮点算力而是指一条数据链路在有限资源下能否在预期时间内完成计算。这里有几个常见误区第一以为提高性能就是加机器。资源增加确实能提升吞吐但任务模型如果本身有问题加机器只会让资源浪费更严重。第二以为计算慢就是SQL写得不好。实际排查中输入数据分布、存储格式、分区策略、网络模型这些因素往往比SQL本身影响更大。第三以为性能优化只是调几个参数。参数调优确实见效快但没有架构层面的配合参数只能算是“缓解症状”。所以我更愿意把“数据高性能计算”理解成在存储、计算、网络、内存构成的约束空间内找到一条性价比最高的数据加工路径。它不是某个单一引擎的专属能力而是在工程层面综合考量的结果。1.2 瓶颈维度拆解存储、网络、CPU、内存拆解性能问题我习惯从四个维度分别看先把大头找到再做微调。存储侧主要看读数据的效率。一个计算任务如果从分布式文件系统读取大量小文件或者读取的是低压缩率的文本格式IO开销会直接拉满。很多任务跑得慢不是计算引擎不行而是读进来的无效数据太多。网络侧关键是shuffle的数据量。分布式计算节点之间传输中间结果是大多数任务的隐形杀手。同一份数据如果分区键设计不合理可能产生几十GB的中间数据在网络里来回搬运。CPU侧主要消耗在序列化、反序列化、解压缩和真正的业务计算上。如果数据格式用得很差CPU会浪费大量周期在格式转换上而不是逻辑计算。内存侧既影响到执行效率也影响到任务稳定性。内存不够执行引擎会频繁落盘或者触发GC整个任务看起来像“卡住”了实际上是在做磁盘交换。这些维度不是彼此独立的。比如你改了压缩格式存储侧的文件变小了但CPU的解压开销上去了你把并行度调大CPU和内存用起来了但网络shuffle又变大了。所以我一直强调性能优化要整体看不能只盯一个指标。1.3 性能目标与衡量指标动手优化之前必须先定义“快”的标准。我常用的指标有几个。耗时是最直接的但要注意区分端到端耗时和计算耗时。端到端耗时包括排队、调度、日志生成计算耗时只算执行阶段。如果任务排队占用一半时间你优化再久也没用。吞吐量代表单位时间处理的数据量适合评估链路整体能力。流式场景里特别关注每秒处理条数和延迟之间的平衡。资源利用率容易被忽略。有时候一个任务跑得很快但只用了集群10%的资源那集群整体效率不高。我一般会同时看重资源利用率和单个任务耗时避免“局部快、整体空转”。还有一个指标是用成本折算跑完这个任务消耗了多少CPU时、内存时、磁盘带宽。有些优化方案看着快了但用了更多资源短期没感觉月度成本就上来了。所以我在选择方案时通常会算一笔资源账。2. 架构设计与引擎选型先选对赛道再拼命跑2.1 计算引擎的选型逻辑大数据领域可选的计算引擎非常多不同引擎擅长的场景差异很大。我做选型时一般从三个角度判断。延时敏感性。如果业务要求秒级响应就必须走流式计算链路如果分钟级到小时级可接受批处理引擎更合适。很多人在这上面摇摆不定导致结果两边不讨好。计算模型复杂度。如果任务是复杂的多表关联、大量自定义聚合SQL化或类SQL化的引擎能省很多开发成本。如果是算法类、图计算类则需要选择对应领域的专用框架。生态贴合度。重点看引擎和存储、调度、监控系统能否无缝衔接。不要为了追新而引入一个和现有体系割裂的引擎后续维护成本会非常痛苦。这里有一条比较务实的经验小团队优先选社区活跃、文档多、周边工具成熟的引擎不要赌冷门方案。冷门引擎往往前期看着美妙后期遇到问题连问的地方都没有。我在一个模拟项目里吃过类似的亏后来回退到成熟方案整个交付周期反而缩短了三分之一。2.2 存储选型与数据布局存储是整个性能体系的底座。一个常见的错误是把所有数据都往分布式文件系统里塞不管访问模式是什么。我现在的经验是冷数据优先放低成本的分布式文件系统热数据和需要高并发点查的数据放到具备随机读能力的存储里中间结果尽量留在计算集群本地。数据布局方式对性能影响也非常大。比如分区字段设计如果按天分区经常需要做跨月聚合时每次都会扫描大量分区如果按业务维度分区又可能导致分区数据量极不均匀。我在实际项目中倾向于用“大分区文件裁剪”的组合按天建一级分区内部再按业务维度做文件级裁剪既保证分区数量可控又减少不必要的读取。文件格式和压缩方案同样要提前定好。列式存储格式在典型分析场景下通常比行式格式少读很多列配合对应的压缩算法能进一步降低存储和IO。这个选择一定要结合真实的字段访问模式来定不能只看格式的基准测试。2.3 资源调度器的作用很多性能问题其实出在资源调度层面。计算引擎把作业提交上来谁来分配资源、怎么分、怎么排直接决定任务等待时间和资源争抢程度。我见过一些集群所有任务都跑在一个默认队列里大任务和小任务混在一起。小任务被大任务挤到后面大任务又被小任务频繁抢占资源大家互相拖累。解决思路一般是划分多个队列按业务优先级设置容量比例再为长耗时任务配置预申请资源避免与短任务竞争。调度器的选择上核心要关注是否支持资源池隔离、是否支持动态调整、是否有排队预估计。不要只看它“能不能跑起来”要问它“在多人同时使用时会不会失控”。一个能控制资源配比的调度策略比多买几台机器还要管用。3. 实操细节环境搭建、参数配置与计算作业实现3.1 集群规划与硬件考量业内很流行“软件定义一切”但硬件选型依然是性能基线。我给出的建议是不要一味堆高配每个节点配置要和任务模型匹配。CPU核数决定并行能力内存大小决定任务缓存和聚合的上限本地磁盘决定了shuffle中间结果的速度网络带宽决定了跨节点传输的上限。对于以离线批处理为主的场景我会更侧重内存和本地磁盘因为大量shuffle对磁盘和网络压力很大对于实时计算场景则更关注CPU稳定性和网络延迟。一个容易忽略的点是集群内异构问题。如果新老机器混用调度器默认分配资源时可能落到配置不足的老机器上直接影响任务性能。我在一个项目里遇到过类似情况后来通过标签分组的方式把高配置机器单独划成一个资源池重要任务强制调度到该资源池问题才解决。3.2 核心参数配置清单参数配置是高性能计算优化中最“立竿见影”的部分但也最容易出错。下面这张表是我在批处理场景里相对稳的一组参考配置注意不要直接照搬因为集群规模和数据类型不同参数会有很大差异。配置项参考值说明执行内存比例0.6~0.75预留足够内存给执行和聚合降低落盘概率堆外内存512MB~2GB网络和序列化需要堆外内存设置过小会频繁OOM并行度设置单个任务2~4个计算槽位并行度过大导致调度和shuffle开销上升序列化方式选择支持二进制的高效序列化避免使用慢速序列化能明显降低CPU压力广播阈值默认即可小表优先广播避免引起大范围shuffle分区数按数据总量控制在128MB~256MB一个分区分区太小会变慢分区太大会导致倾斜放大后台任务线程数默认的2~4倍适合频繁读写文件的任务但不过度增加所有参数都需要配合监控数据来调整。我见过有人把执行内存比例调到0.9结果频繁GC任务比调参前还慢。参数不是越大越好合适才是核心。3.3 一个完整计算任务的执行过程拿一个典型的日活统计分析任务举例。这个任务要从用户行为日志表里统计每个业务模块的当日访问人数。整体执行过程分四个阶段。第一步数据裁剪和最晚读取。在SQL层面先做分区裁剪和谓词下推只读取当天数据并过滤掉无用字段。这一层能省掉90%的扫描量。第二步预聚合。在读取数据后立即做部分聚合把大量明细数据先压成小粒度中间结果。这个操作能显著减少后续shuffle的数据量是整个任务性能提升最明显的一步。第三步确定分组策略。对统计维度进行分区重分布时充分考虑维度分布情况。对于热点模块尽量通过两阶段聚合避免单个计算节点成为瓶颈。第四步输出落盘。目标表选择合适的分区粒度和文件格式避免写入过多小文件。落盘前还可以做一次压缩用一点CPU开销换取存储和后续扫描时间的下降。这个流程执行完一个原本要跑40分钟的任务通常能压到15分钟以内。核心不是某个参数而是每个阶段都在减少无效数据、避免热点倾斜。4. 性能调优实战那些最常见的性能陷阱4.1 数据倾斜最典型的“高性能杀手”数据倾斜在分布式计算里太常见了简单说就是数据分到各个节点时严重不均衡。某个节点承担了绝大多数计算量其他节点早早完成任务干等着整体耗时被“最长木板”拖死。我遇到过最夸张的一次一张用户表按渠道分组某个渠道占比95%其它几十个渠道都只是零头。按渠道做聚合时几乎所有数据都压到同一个任务上其它几百个并发槽位全部闲置。最终解决方案是先做随机键打散两阶段聚合第一阶段把大渠道的数据随机拆成多份并行聚合第二阶段再合并结果。这里的关键是热点识别我一般会先在源表上做一次采样明确数据分布再决定要不要走两阶段方案。4.2 内存与GC调整任务又慢又卡的原因内存参数对分布式任务的影响经常神不知鬼不觉。任务明明没有OOM但执行时间就是上不去。打开监控一看发现JVM频繁进行垃圾回收执行线程大部分时间都在等待GC结束。我的调优原则是“尽量少实例化大对象、尽量减少对象在内存间的复制”。优先使用二进制格式和直接基于字节操作的逻辑减少反序列化带来的临时对象。同时把堆外内存留足否则网络缓冲区会把堆内空间挤爆。还有一个容易被忽略的点不要在业务逻辑里把所有数据一次性加载成一个大集合要养成“流式处理一线数据”的习惯。4.3 小文件与动态分区暗坑里的常客小文件问题是大数据性能优化的经典问题。大量小文件会让读取任务频繁切换文件句柄元数据服务压力剧增计算引擎也会因为“打开文件过多”而报错。我在一个日志清洗项目里发现有上亿个小文件分布在几十万个分区里每次扫描光等待文件枚举就占了整体耗时的一半。解决方法是先做一轮文件合并并设置合理的分区大小阈值。动态分区写入时还要控制单分区文件数上限避免“越写越多、越写越碎”。对于后续要频繁分析的数据我一般建议写入前用“先合并、再压缩、最后发布”的方式从源头控制文件数量。4.4 序列化与网络传输看不见的开销很多团队把注意力放在CPU和内存上却忽略了序列化开销。对象在节点间传输时序列化方式决定了传输体积和转换速度。我见过一个任务改用高效二进制序列化后shuffle数据体积直接下降了70%任务耗时降低40%。相同的数据不同序列化方式的体积差异非常大。某些基于反射的序列化机制虽然开发方便但生成的数据还附带大量结构信息在分布式场景下属于纯粹的浪费。在不影响业务代码可读性的前提下尽量选择紧凑的、不携带冗余结构的序列化方案。此外要合理使用压缩在CPU有余力的情况下开启压缩能显著减少网络传输和存储IO但CPU压力已经很高时就要谨慎了。5. 高频故障与排查技巧实录5.1 任务整体变慢如何快速锁定瓶颈任务变慢的第一步永远是“看监控曲线”而不是猜。我会先打开三个监控视图资源使用曲线、任务执行时间线、shuffle数据量。如果发现某个计算节点耗时远高于其它节点优先怀疑数据倾斜如果所有节点都在等一个阶段完成重点检查shuffle是否产生了巨大数据量如果CPU不高、磁盘很忙说明在落盘。有一个很实用的排查动作“把执行计划打印出来看每条物理算子的输入输出量”。有些框架可以图形化展示任务DAG灰常直观。我最常用的方法是找那些输入数据量小但输出数据量暴增的算子它们往往就是性能拐点。5.2 OOM内存溢出问题排查内存溢出是最折腾人的问题之一因为报错信息往往只能告诉你“哪个执行器内存不够”但真正原因可能多种多样。我按优先级排查五件事第一单次聚合数据量是否过大通常通过预处理或两阶段聚合解决第二动态分区是否太多同时写入大量分区时每个分区都会占用一部分缓冲第三广播表是否过大小表广播有阈值超过后反而会拖垮内存第四是否存在笛卡尔积或超大数据集连接第五代码里是否有显式收集全量数据的操作。有时候OOM并不是真的内存不够而是参数配置把内存全部划给了某个区域其它区域没有余量。这种情况下调整分区比例比加内存管用。5.3 数据结果不正确或重复计算性能优化改完之后结果变错了这个问题最容易翻车。常见原因有几个两阶段聚合时去重逻辑被破坏动态分区覆写任务被并行执行文件合并过程中没有处理重复提交时间窗口计算没有考虑乱序数据。我建议在改动任何会影响数据口径的优化策略前先单独保留一份“优化前结果”做全量对比。如果有差异优先看聚合和去重模块。性能优化必须守住数据正确性底线磨刀不误砍柴工。5.4 监控指标怎么选选监控指标也有讲究。只盯“任务状态正常”远远不够很多性能劣化在状态还是“运行中”时就发生了。我常用的监控组合如下监控维度关键指标作用资源层CPU使用率、内存使用率、磁盘IO等待判断是否资源争抢或配置不足任务层已运行时长、剩余阶段数、是否有任务长时间未完成及时发现卡点和倾斜数据层输入记录数、输出记录数、shuffle数据量对比同时期数据判断数据异常增长队列层排队时间、分配资源等待时间判断是集群饱和还是调度策略问题监控不需要多但要能构成一个完整的证据链。我遇到过很多次一上来就看最上层的任务耗时等找到问题时已经浪费了大量时间。先看数据层再看任务层最后看资源层排查效率会高很多。6. 沉淀一些工具与工作心得6.1 快速定位资源消耗大户的脚本思路集群里任务很多总有一些任务偷偷消耗大量资源。我不建议每次都去页面一个个点而是写一个简单的脚本周期性地扫描活跃任务列表提取每个任务的资源占用量和运行时长再按资源消耗降序拍出来。只要有了这张表哪些任务是“资源黑洞”一目了然。脚本本身不复杂核心是调好取数口径。要拿到任务的CPU核时和内存时同时关联队列和用户信息。我的脚本输出里一定会包含“已运行超过一定时间但数据输出为零”的任务这些通常是要优化或者清理的对象。6.2 性能压测的正确姿势性能压测最怕“拍脑袋定数据量”。我一般先把线上真实数据采一个样本按业务增长预期放大3到5倍作为压测数据规模。压测时不能只测一条链路最好模拟多任务并发毕竟真实集群不是一个任务在跑。压测过程中一定要记录“任务耗时、资源消耗、shuffle量、GC频率”四组数据前后对比才有说服力。如果只记录一个耗时你可能无法解释“为什么快”或“为什么慢”优化经验就没法沉淀。6.3 复盘方法论每次性能优化项目结束后我都会做一次简短复盘只回答三个问题。问题一这次优化真正起作用的改动是哪一个用数据说明而不是感觉。问题二哪些尝试是无用功记录下来下次不重复踩。问题三如果数据量再涨一个数量级当前方案还能撑住吗这一个问题能提前暴露架构老化风险。复盘不是写PPT而是把结论变成下一个项目的输入。我在团队里会维护一份“性能优化踩坑清单”每一条都带日期、场景、改动文件和前后对比数据。时间久了这份清单比任何文档都有价值。最后聊几句个人感受。数据性能优化这件事没有一套放之四海而皆准的方案。同一个任务可能换一批数据、换一个阶段、换一个业务目标最优解就变了。我能给的最实用的建议是先把数据分布摸清楚把执行计划看明白把资源监控接好再去做任何大改动。顺序反了大概率会花很多时间在错误的方向上猛跑。如果你也在做大数据的计算优化不要迷信某一个“神奇参数”或者“最优架构”把基线打好、监控拉齐、对比做足性能提升只是水到渠成的结果。

相关新闻

SPOOL文件解析:从Windows打印后台缓存中提取打印记录信息

SPOOL文件解析:从Windows打印后台缓存中提取打印记录信息

简介:打印监控领域,除了Hook打印函数、注册系统打印消息、生成虚拟打印机接管任务外,解析SPOOL文件是获取打印任务详情的另一条有效路径。这套资料面向打印监控、文档审计及打印驱动相关开发者,提供了完整的SPL/SHD文件解析工具链…

2026/10/13 1:36:03 阅读更多 →
鲈鱼体重预测模型:胸围+身长双变量回归实战指南

鲈鱼体重预测模型:胸围+身长双变量回归实战指南

简介:本资源是一份面向数学建模初学者与生态资源管理实践者的应用型建模案例,聚焦鲈鱼体重的现场快速估算问题。垂钓俱乐部需仅凭软尺测量身长与胸围,科学推算放生鲈鱼重量以实施奖励政策,该PDF完整呈现了从问题分析、假设构建到三…

2026/10/13 1:36:07 阅读更多 →
GOCI2波段解码指南:从手册到Python实战的遥感数据校准

GOCI2波段解码指南:从手册到Python实战的遥感数据校准

简介:本资源是面向遥感科学、海洋监测及卫星载荷研发领域研究人员与工程师的专业技术手册,聚焦GOCI2(第二代地球同步轨道海洋色度成像仪)的核心波段参数与系统性能指标,解决海洋光学遥感数据解译、传感器选型与辐射定标…

2026/10/12 23:46:13 阅读更多 →

最新新闻

AI合规不止于模型:ISO/IEC 42001:2023 管理体系要点解析

AI合规不止于模型:ISO/IEC 42001:2023 管理体系要点解析

简介:《ISO/IEC 42001:2023》是ISO与IEC联合发布的首个人工智能管理体系国际标准,为各类组织在使用或开发AI产品与服务时建立、执行、维护并持续改进AI管理系统(AIMS)提供了权威框架。这份PDF文档内含完整正文和附录,共…

2026/10/13 23:02:16 阅读更多 →
openpyxl读取Excel实战:从单元格到大文件性能优化

openpyxl读取Excel实战:从单元格到大文件性能优化

接过一个统计报表的活儿,要在一堆 Excel 里提取数据并汇总。刚开始我图省事,直接用 pandas 一把梭,后来发现需求越来越细:要判断单元格格式、要区分公式和结果、要处理合并单元格和文本型数字,还得在大文件场景下控内存…

2026/10/13 23:02:16 阅读更多 →
计算机二级C语言备考攻略:吃透题库与操作题是关键

计算机二级C语言备考攻略:吃透题库与操作题是关键

计算机二级C语言,大概是全国计算机等级考试里报名量最大的一科。我身边有不少人抱着“多一个证总没坏处”的心态报了名,然后备考方式就是借一本C语言教材从第一页开始啃,啃到指针就放弃,最后上考场,选择题靠直觉&#…

2026/10/13 23:02:16 阅读更多 →
破解版资源不可取:如何合规分享技术资源与实战笔记

破解版资源不可取:如何合规分享技术资源与实战笔记

简介:Evp破解版工具是一款面向服务端开发、部署及运维人员的实用资源,主要解决服务端文件的解压与修改问题。根据页面描述,该工具在服务端场景中具有不可替代性——常规解压软件可能无法正确识别或处理服务端特殊文件结构,必须借助…

2026/10/13 23:02:16 阅读更多 →
C++/WinRT 文件处理实战:从 StorageFile 到异步读写与流式处理

C++/WinRT 文件处理实战:从 StorageFile 到异步读写与流式处理

如果你刚从 Win32 转过来写 C/WinRT,第一件需要适应的就是“文件不再是一个句柄”。过去我打开文件拿到 HFILE,然后 ReadFile、WriteFile,一套组合拳打完收工。到了 C/WinRT 里,文件被封装成了StorageFile对象,读文件不…

2026/10/13 23:02:16 阅读更多 →
Django+LLM+遗传算法:打造AI驱动的旅游路线规划与推荐系统

Django+LLM+遗传算法:打造AI驱动的旅游路线规划与推荐系统

每年毕业设计的选题库里,“旅游网站”几乎是大热门,但说实话,十个里面至少有八个做成了标准的增删改查演示——用户注册登录、景点列表、后台维护,顶多再加一个关键字搜索。答辩的时候老师问一句“技术亮点在哪里”,很…

2026/10/13 23:01:16 阅读更多 →

日新闻

物联网系统集成避坑指南:从选型到验收的关键要点

物联网系统集成避坑指南:从选型到验收的关键要点

做了这么多年物联网系统集成的项目,我最大的感受是,大部分坑不是出在技术前沿,而是出在一些看起来很平常的地方。设备选了便宜的、协议没问清楚、现场没摸透、验收标准写得含糊——这些细枝末节,最后都会变成延期、超支和扯皮的大…

2026/10/13 0:00:57 阅读更多 →
ESP32舵机控制全攻略:从PWM原理到高级玩法与常见故障排查

ESP32舵机控制全攻略:从PWM原理到高级玩法与常见故障排查

如果你玩ESP32有一阵子了,很难不碰到舵机控制这道坎。做智能小车要转方向,做机械臂要抬关节,做云台要偏航俯仰,背后都是同一个东西在干活:舵机。而我见过太多人卡在“代码能编译、舵机就是不听话”这个阶段&#xff0c…

2026/10/13 0:00:57 阅读更多 →
CAN总线原理与STM32实战:抗干扰、仲裁、错误处理全解析

CAN总线原理与STM32实战:抗干扰、仲裁、错误处理全解析

1. 为什么CAN总线至今仍是工业现场的“硬通货”?——从汽车底盘到智能温室的真实需求你有没有拆过一辆老款燃油车的中控台?或者调试过某高校实验室里那台跑着Modbus协议却频频丢帧的PLC控制柜?又或者,在某个农业物联网项目里&…

2026/10/13 0:00:57 阅读更多 →

周新闻

流感时间序列预测实战: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 阅读更多 →