压测与调优实战:摸清系统承载边界,定位并解决性能瓶颈
压力测试不是拿工具把系统压到崩溃就完事也不是看一下吞吐量数字高不高就收工。真正有价值的压测是能在上线之前把系统的真实承载边界摸清楚把隐藏在最深处的瓶颈揪出来顺带验证你做的缓存、连接池、线程池这些配置到底有没有生效。这篇指南我会围绕一个虚构的订单查询服务来展开完整流程从环境准备、压测设计、瓶颈定位到最终调优落地全是实际工作中沉淀下来的思路和操作习惯内容偏实战不会去铺概念。1. 压测前最容易被忽略的准备工作很多团队压测翻车不是工具用得不对而是环境准备阶段埋了雷。这一步如果不较真后面所有数据都是自欺欺人。1.1 为什么要隔离压测环境和联调环境我见过有人直接在联调环境里跑压测结果网关、消息队列、数据库全被压得告警旁边的同事正在调试接口被一波接一波的超时淹没场面一度非常混乱。联调环境的特点是有大量测试任务并行执行服务端的线程池、数据库连接数、磁盘IO本身就处于被占用的状态你在这种环境下压出来的极限值连参考价值都不大。正确的做法是准备一套独立的环境。如果资源充裕从网络层面做隔离是最省心的方案如果只能共用一套底层基础设施至少要保证被压测的服务、所依赖的中间件不会再被其他测试任务打扰。压测机本身也要单独部署千万不要直接用开发笔记本发起流量性能不稳还不是最致命的问题真正的问题是本机网络栈会成为瓶颈导致你以为是服务端扛不住其实是压力源自己先崩了。1.2 测试数据准备是压测成败的隐形变量压测环境的数据分布如果和线上差异太大结果会失真得很厉害。比如缓存命中率线上热key的访问占比是七成你测试环境里随便造了均匀分布的数据压出来的QPS和真实场景完全对不上。我处理模拟项目X的时候测试环境的订单表只有几万条数据压测时每次查询扫描的数据量比线上小了两个数量级接口RT整个是虚低的。数据准备至少要做三件事。第一数据量级要接近线上主表最好能拉到千万级必要时候从线上做脱敏拷贝再灌入测试库。第二数据分布要模拟真实特征尤其是订单状态、用户ID、按时间分区的字段分布不能是均匀的。第三压测涉及的核心数据的冷热比例要调出来人为地把一部分数据设置为高频访问另一部分低频访问这样才能把缓存的命中率、数据库缓冲池的命中率测准。1.3 凭经验猜性能基线的风险非常大不在压力测试之前先做一次基准摸底直接拍脑袋并发数拉到300这种情况我见过太多次。摸底测试的成本极低就是先让少量并发跑起来观察各项指标。比如先用50并发跑5分钟记录RT、QPS、CPU、GC、数据库连接数再逐步增加这个下探过程能帮助确认系统当前健康基线和拐点大概在什么位置。拉一个基准数据表格来做参考是很有用的做法并发QPSRT均值RT P99CPUGC频率数据库连接数50约80062ms110ms23%低15100约130076ms150ms41%中28200约1700118ms280ms68%中高51300约1800168ms460ms87%高76从这个表格能明显看出并发从200升到300的时候QPS几乎没有增长RT却飙升了。这通常意味着已经到了性能拐点要么是线程池在排队要么是锁竞争变得剧烈要么是数据库连接池被占满。这个摸底结果决定后续压测方案的阶梯设计同时能直接看到容量边界大概在哪里。2. 压测场景设计决定结果的可用度压测场景不是定义几个并发数就完事也不是一套脚本从头跑到尾。场景设计的严谨程度直接决定压测结果能不能作为容量评估依据。2.1 流量模型必须模拟线上特征真实的线上流量具有不均匀性随着时间波动突发与平峰交替出现。我在模拟某订单查询服务的压测时从网关拿到一段线上访问日志提取出用户查询接口的访问规律、各接口的调用比例、成功响应与异常响应的比例然后把这些比例还原到压测脚本里。常见的做法是把流量模型按比例配置成脚本。比如订单查询接口占60%、订单列表占25%、订单创建占15%下单这个接口里还要带少量支付回调的比例。有人会问压测是不是专注测一个核心接口就够了如果只做单接口性能验证当然可以但要做容量评估混合场景才具备参考性因为不同接口对资源的消耗特征不一样查询接口耗数据库IO创建接口耗CPU和锁资源混合起来才能暴露资源竞争问题。2.2 并发数和QPS目标的推算方式并发数不能乱拍我通常用两种方式推算。一种是根据线上高峰数据推算比如线上日活50万业务高峰在晚上8点到10点人均点击按20次算峰值时段大概占总流量的15%那么峰值QPS大约是50万乘20乘15%再除以7200秒算下来约208QPS。为了留出双11抢购这类突发活动的空间按峰值QPS的3到5倍作为压测目标比较稳妥也就是600到1000QPS。另一种方式是通过RT来推算并发数约等于QPS乘以平均RT秒单位。比如期望QPS到1000平均响应时间锁在100毫秒以内需要约100个并发线程。这是理论上限实际并发数还要看线程池活跃线程数和系统资源情况。压测阶梯我习惯按1倍、2倍、3倍、4倍目标QPS来设置每一档跑15分钟持续观察稳定性不要一上来就最高档。2.3 压测脚本中的临界值判断脚本里的超时设置、断言规则是很多人随便填的地方恰恰也是容易出问题的地方。超时设置不能把业务容忍RT当压测请求超时来用。比如业务容忍P99响应时间是500毫秒但压测请求的超时时间如果设成10秒那大量缓慢请求会被算成成功如果设成300毫秒又会把正常波动误判成失败。建议超时设置为目标RT的三倍左右同时把P95、P99纳入pass/fail判定标准。断言规则也要仔细设计。有的人只断言响应码是不是200不检查响应内容这样可能出现返回了成功码但业务数据不符合预期的情况压测报告里全部通过实际上逻辑已经出了问题。我在测试订单查询的时候会对关键的返回参数做断言比如订单数量、状态字段是否符合预期确保每次请求在业务层面也真正通过了验证。这一步很重要否则通过率和真实成功率对不上后续对结果的分析就全错了。3. 压测过程中的监控与数据采集压测执行过程中最重要的不是看压测报告而是把系统各个维度的可观测性数据同步记录下来。没有监控的压测相当于闭着眼睛开车你不知道系统的哪个部位先出了毛病。3.1 系统层和应用层哪个指标都不可少系统层的CPU、内存、磁盘IO、网络带宽这四样是基础底盘指标。CPU如果被打满先看是用户态消耗高还是内核态消耗高这决定了是业务代码的运算瓶颈还是系统调用的瓶颈。磁盘IO延迟如果异常升高则要考察日志写入、数据库刷盘、swap换页等环节。应用层需要盯的是JVM的堆内存使用、GC频率和停顿时间、活跃线程数、线程池队列长度。当系统压力到达高位时应用层的状态往往能更精准地暴露问题根因。连接池层面需要关注的是数据库连接池的活跃连接数、等待获取连接的线程数、Redis连接池的使用情况。我习惯做一张指标记录表每5秒抓一次快照时间段CPU%堆内存GC次数/秒活跃线程数线程池队列数据库连接池活跃RT P9910:00:00352.1G1.26803596ms10:00:30723.4G4.81301274260ms10:01:00914.2G9.61858598530ms从这个趋势可以很直观地看出队列和连接池到达临界值时RT同步恶化这是判断瓶颈点在哪个环节的原始依据。3.2 压测过程常见的翻车现场跑压测的时候我踩过的坑足够写一本书了。最典型的翻车现场是过大的压测流量把数据库连接池打满了然后数据库连接池满了之后应用所有线程都在等连接把线程池也占满了紧接着健康检查接口开始超时服务被注册中心摘掉。在流量持续打到摘掉节点的同时其他节点接不住全部流量也跟着崩了最终整条调用链全挂。这个场景说明了一个道理没有限流、没有熔断、没有降级保障的压测和真实的雪崩场景没有任何区别。所以我在压测过程中全程盯着连接池和线程池的容量。同时我建议压测环境里加上独立的监控大盘把核心指标切成一张图。不正常的指标往往呈现出上下游同步恶化的特征比如数据库CPU升高到80%同时应用层Tomcat线程池活跃线程飙到上限这个联动关系能帮助快速圈定瓶颈范围。3.3 压测期间线上告警误报的规避压测期间另一个容易忽略的问题是误告警阻塞。有些监控平台的告警阈值是按线上峰值流量设定的压测流量一旦超过阈值就会误报把值班同事吓得够呛。压测前建议要么提前通知好告警值班要么在压测期间调整相关告警策略把压测时间窗上报备好避免数据干扰误判。更严重的情况是压测写入了脏数据影响线上或者其他测试环境的数据一致性。比如压测创建订单的接口往数据库里写了大量测试订单如果不做清理和标记后续联调数据会非常混乱。我一般会在压测脚本里加标识参数比如用户名统一加前缀压测结束后按前缀批量清理数据绝不让压测数据污染正常测试环境。4. 压测结果分析与性能瓶颈定位压测跑完了拿到一大堆报告先看什么、怎么看是这套方法论里区分有没有经验的分水岭。很多新手盯着总QPS看数字高就开心数字低就慌完全没有定位问题的思路。4.1 QPS上不去时要先看的队列和线程状态当并发往上加而QPS不再增长第一个要看的是线程池的状态。线程池满了任务进队列RT会迅速飙高但QPS保持不变甚至下跌这说明瓶颈在应用自身的处理能力。打开线程dump看看线程都在干什么。如果是大量THREAD_WAITING说明都在等待锁或者等待连接池资源如果是大量RUNNABLE且CPU高那主要精力可以放到业务代码计算本身。如果线程池远没有满但QPS也上不去就要看下游依赖的容量。数据库的CPU和慢查询情况如何Redis的响应时间是否升高下游HTTP连接的响应时间是否异常。通过链路的追踪ID串起一次完整调用的时间分布快速定位耗时集中在哪个环节。之前压测订单查询时我发现RT分布中40%的耗时集中在MyBatis查询上于是针对SQL做了索引和缓存优化效果立竿见影接口性能直接翻了一倍还多。4.2 数据库瓶颈的识别的通用链路数据库往往是最先扛不住的环节。观察数据库监控面板如果CPU飙升到70%以上优先看慢查询记录是否大量出现。如果连接数跑到上限则要检查应用层的连接池配置和SQL执行时长。这两条是最常见的方向。打开慢查询日志找出耗时排名靠前的SQL用EXPLAIN分析执行计划。常见的坑是没有走索引比如在索引列上用了函数或者隐式类型转换导致索引失效。还有一个非常隐蔽的问题就是大翻页。偏移量越大扫描的行数越多比如LIMIT 200000,20看起来只返回20条实际扫描了20万行。这个问题在压测结果表现上很典型从某个并发档位开始RT陡增不是CPU一下子爆掉而是大量SQL扫描代价开始集中显现。4.3 应用层的GC频繁和锁竞争JVM的GC情况是压测分析中不可忽视的一环。查看GC日志时如果Young GC的频率不断增加且单次GC后内存回收效果有限说明系统在产生大量短生命周期对象同时堆空间可能存在频繁晋升的情况。当Old区的占用率持续走高并且FGC开始出现时往往意味着RT已经明显劣化了。锁竞争这个问题更隐秘。初期压测一切正常到达某个并发量后RT断崖式下跌线程dump显示大量线程blocked卡在同一个锁对象上。我处理过一个模拟案例是订单号生成器里用了一个全局synchronized方法平时看不出问题一旦QPS超过1500这个锁就成了全系统的瓶颈。后来把同步锁改成分段锁QPS上限一下提升到5000以上。线程dump是定位这类问题的利器任何客户端工具都比不上直接在压测峰值时抓线程栈然后逐条分析来得精准。5. 性能调优落地实践与前后对比定位到问题只是完成了第一步怎么调、调哪里、调完怎么验证才是真正拉开水平差距的部分。我在实际工作中会按照从应用到数据库再到中间件的顺序来做优化逻辑是先解决自己系统的问题再向外围依赖延展。5.1 先动业务代码和SQL再动配置我见过很多人拿到性能问题就先调JVM参数、改连接池大小折腾半天反而把系统调得更不稳定。正确的优先级是先审查业务逻辑和SQL执行计划。比如前面提到的大翻页问题把LIMIT偏移量改成基于游标的分页方式通过记录上一页最后一条记录的ID再加WHERE条件扫描行数从20万降到了几百。再比如有些查询会在循环里逐条执行SQLN1问题让数据库连接被大量占住改成批量查询或者再用关联查询一次取回所需数据数据库压力就能显著降下来。这类优化对性能的提升往往是倍数级的远大于配置调整带来的收益。5.2 JVM调优参数的实际调整思路确认应用代码和数据库没有明显问题之后再考虑JVM调优。JVM调优不是把堆调得越大越好堆过大反而会导致FGC时间过长。我在某压测项目中做了这样一组调整调整前堆内存8G新生代3G默认G1停顿频繁FGC一次耗时接近800ms压测接口P99不达标。调整后堆内存保持8G但对新生代重新划分调整了G1的停顿目标期望把最大停顿时间期望从默认值改成100ms让G1更积极地执行后台回收减少FGC发生的频率。调整之后FGC次数从原来的压测期间20多次降到了两三次接口P99稳定通过压测目标。JVM调优的关键在于立好目标设置每档停顿时间和吞吐量的期望值然后通过观察数据来确认参数是否合适而不是一味叠加参数。JDK版本不同、G1还是ZGC适用的参数组合都不一样这在实际操作中必须注意。5.3 连接池和线程池参数的配置心得连接池不是越大越好这是一个很多人的误区。数据库连接池的大小设置要考虑数据库能支撑的总连接数和单个连接的占用成本。我之前维护过一个模拟服务数据库连接池设置成500结果数据库瞬间就被打死了因为数据库本身的连接上限才300还被其他多个服务共享了一部分。一个相对靠谱的经验公式是连接数等于核心数乘2加有效磁盘个数。比如一个4核8线程的容器磁盘IO比较常规连接池设在10到15之间比较合适再配合合理的排队等待设置让应用在连接不足时等待而不是无限创建。线程池的大小要考虑IO密集型任务和CPU密集型任务的差别IO密集可以多一些线程尤其是在大量请求依赖下游查询时但也不能无上限否则会出现大量上下文切换反而拖慢整体处理速度。5.4 缓存引入后的数据一致性权衡缓存不是万能的但项目中如果查询热点数据占比很高加缓存往往是最有效的方案之一。我做过一次调整针对订单查询的热点数据做了两级缓存设计本地缓存做一级Redis做二级。命中率提升后数据库QPS从高峰期的8000降到了1000左右接口P99从180ms降到40ms以内数据库CPU使用率大幅下降。但是缓存一定会带来一致性问题尤其是订单这类有状态的数据。我的方案是针对状态频繁变化的订单采用缓存过期时间缩短到几秒的方式同时在做状态变更操作时主动删除缓存让下一次查询回源数据库。这个方案能在性能和一致性之间取得比较好的平衡。每次压测都要验证缓存命中率和回源比例确认没有缓存穿透、击穿的问题尤其是热点数据集中过期可能会导致瞬时数据库压力飙升。6. 调优后的回归验证与容量评估调优没有一次性做完的说法调完必须重新压测验证否则根本不知道改动起没起作用或者带来了什么新问题。6.1 回归压测的对照方法同样的场景、同样的数据量、同样的并发阶梯完整再跑一遍然后把核心指标和优化前对齐起来对比。我习惯做一张前后对照表指标调优前调优后变化幅度单机极限QPS约1800约3200提升77%RT均值168ms52ms下降69%RT P99460ms110ms下降76%FGC次数23次3次下降87%数据库CPU峰值82%43%下降48%这种前后对比的直观效果比任何分析报告都有说服力。调优后如果某个指标意外变差了要能立刻判断是哪项改动带来的副作用。逻辑上把改动一项一项回滚再压测是比较稳妥的双向验证方式。6.2 容量评估与水位线划分回归通过之后才有数据基础来做容量评估。我不太喜欢只输出一个“系统支持1000QPS”这种单点结论我更习惯输出一张容量水位表。比如分三个档位健康水位CPU低于50%RT稳定、警戒水位CPU达到70%-80%RT开始劣化、危险水位资源耗尽RT严重劣化。每个水位都对应明确的QPS区间再结合线上实际流量增长趋势就能推算出现有资源还能支撑多久。比如线上日常峰值800QPS处于健康水位如果按一个月增长30%估算大概两个多月后会进入警戒水位扩容计划和性能优化就得提前安排了。顺带提一个细节容量评估的时候资源冗余度也要考虑进去。比如单机极限能扛1000QPS部署两台机器看起来能扛2000QPS实际运营中更多要考虑突发流量翻倍、单台故障下线、发布期间服务重启这几个因素冗余一般要留到40%到50%才比较安全。很多线上故障的发生不是压测时不知道系统极限而是把资源用到了理论极限附近没有留出足够的安全余量应对突发情况。6.3 稳定性验证的长时间跑测价值容量边界摸清之后最后应该再做一次长时间稳定性验证。有些系统能扛住10分钟的极限压测但30分钟后开始出现内存泄漏或者连接池资源耗尽的问题。我一般会安排一次4到8小时的中高负载持续压测观察各项指标是否平稳GC频率是否随着时间推移逐渐升高线程数是否稳定在预期范围内是否有句柄数悄悄爬升。这类问题只有长时间运行才能暴露发布上线之后才被发现就晚了。长时间压测的时候还需要关注一个很现实的点是服务器时间同步如果压测机和服务器时间不同步日志和监控数据的时间戳会对不上排查问题会非常痛苦。提前把时间同步的配置检查好再等数据采齐了开始做分析整个流程就会顺很多。7. 关于如何延续这套流程的个人心得压测和性能调优在现实中从来不会只做一次。版本迭代、数据量增长、新功能上线每件事都可能改变性能特征所以关键是把这套流程固化成一种持续执行的机制。我在团队里习惯每次上线前小规模回归一次压测每次大版本发布前做一次完整压测把结果沉淀成历史基线。看到某个版本性能突然回退的时候和基线一对比就能快速锁定是哪个改动引起的回归。最后再说一个细节所有压测脚本、压测数据、报告结论都要存档可回溯。这看起来不起眼却是整个流程中最容易被低估的环节。半年后如果发现性能问题能翻出当时的压测配置和数据定位问题的速度和准确度会高很多。没有历史基线做参照的性能分析往往只能是没头苍蝇式的盲猜。

相关新闻

基于YOLOv8的SAR图像建筑物旋转目标检测与分割部署全攻略

基于YOLOv8的SAR图像建筑物旋转目标检测与分割部署全攻略

SAR图像里的建筑物检测,和普通光学遥感图完全是两码事。做过这个项目的人应该都有体会:光学图像里房子是纹理清晰的色块,而SAR图像里建筑物往往就是一团亮斑加几条暗线,周围还混着大量相干斑噪声。如果直接套用常规的水平框目标检…

2026/10/18 20:56:24 阅读更多 →
Java单链表三种插入方式详解:头插、尾插与任意位置插入

Java单链表三种插入方式详解:头插、尾插与任意位置插入

刚接触Java数据结构时,单链表往往是最先遇到的线性结构。无论是课程作业、技术面试还是实际项目封装,单链表的插入操作都是绕不开的基本功。这篇文章只聊一件事:Java单链表的三种插入方式——头插法、尾插法、任意位置插入法,从节…

2026/10/18 20:56:24 阅读更多 →
知识工作插件:WASM驱动的跨平台工具链胶水层

知识工作插件:WASM驱动的跨平台工具链胶水层

1. 项目概述:从“knowledge-work-plugins”看知识工作者的工具链重构“knowledge-work-plugins”这个词组乍一看像一个技术名词,但拆开来看,它直指当下知识型工作者最真实的生存状态——不是在写文档、查资料、写代码、做汇报,就是…

2026/10/18 20:55:23 阅读更多 →

最新新闻

前端如何开发Agent应用:认知边界、责任划分与实战Demo

前端如何开发Agent应用:认知边界、责任划分与实战Demo

1. 别再被“Agent”三个字吓住:前端同学的第一块认知拼图“Agent开发不是模型训练”——这句话我第一次在某次内部技术分享会上听到时,下意识摸了摸自己的键盘,心想:这跟我有啥关系?我连Prompt Engineering都还在抄模板…

2026/10/18 22:00:20 阅读更多 →
Python电商评论情感分析实战:从数据清洗到Streamlit可视化

Python电商评论情感分析实战:从数据清洗到Streamlit可视化

简介:一套面向电商数据分析、自然语言处理及课程设计场景的Python买家评论情感分析项目,包含完整源码、模型文件、多类评论数据集和详细代码注释,可支撑毕业设计、课程作业、答辩演示或入门实践。项目所有代码均测试运行成功,曾获…

2026/10/18 22:00:20 阅读更多 →
CSS hover父子联动原理与高性能实践指南

CSS hover父子联动原理与高性能实践指南

1. 项目概述:hover不是“悬停”那么简单,它是CSS中少有的父子联动开关你有没有试过,鼠标移到一个导航栏的菜单项上,不仅这个菜单项变色,它下面的二级下拉菜单也跟着展开?或者把鼠标移到一张商品卡片上&…

2026/10/18 22:00:20 阅读更多 →
信贷风控实战:从特征工程到模型调优的贷款违约预测指南

信贷风控实战:从特征工程到模型调优的贷款违约预测指南

简介:面向金融科技与信贷风控场景的机器学习实践源码,聚焦贷款违约风险预测,适用于金融机构信用评估、数据分析与建模学习者。压缩包共23个文件,约13.77MB,包含7个Python源码、2个CSV训练测试数据集、11个PNG图表&…

2026/10/18 22:00:20 阅读更多 →
面试官问:Agent评测重跑一遍分数就变,你先查哪里?

面试官问:Agent评测重跑一遍分数就变,你先查哪里?

面试官问 “同一个Agent,评测重跑一遍分数就变了,你先查哪里?” 最常见的反应是去改提示词,或者认定模型这次发挥不好。可要是负责打分的判定器读到的是上一轮留下的结果文件,一个什么都不做的Agent也能判通过。所以…

2026/10/18 22:00:20 阅读更多 →
2026 年 AI Skill 生态横评:TaoToken 统一 Key 通道下,这几个平台到底差在哪?

2026 年 AI Skill 生态横评: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/18 21:59:19 阅读更多 →

日新闻

基于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/18 0:00:55 阅读更多 →

周新闻

基于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/18 0:00:55 阅读更多 →

月新闻

我发现了一个新思路:用 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/18 0:55:02 阅读更多 →
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 阅读更多 →