新闻详情

新闻详情

首页 / 资讯中心 / 详情

JMeter压测4000并发实战:从线程配置到瓶颈定位全解析

发布时间:2026/9/6 23:20:16来源:尧图网络
JMeter压测4000并发实战:从线程配置到瓶颈定位全解析
很多团队做性能压测时第一步就错了不管三七二十一先在 JMeter 里把线程数调到 4000然后点击启动结果 JMeter 自己先卡死了或者压测机 CPU 跑满服务端还没到瓶颈。这不是 JMeter 没用对而是对“4000 并发”的理解出了问题。并发数不等于线程数更不等于在线用户数。真正有效的并发是同时打到服务器上的活跃请求数量。本文将以 JMeter 压测 4000 并发为目标完整拆解一条实战路线从概念辨析、脚本设计、阶梯加压、分布式压测、监控排查到瓶颈定位。读完你不仅能跑出 4000 并发的压力测试还能回答老板最关心的问题服务器到底还能扛多少。做性能压测尤其是高并发压测最大的难点不是把并发数“拉上去”而是准确判断哪些请求在什么条件下达到多少 TPS、平均响应时间多少、资源消耗多少、系统的拐点在哪里。这也是本文要解决的核心问题。1. 压测 4000 并发前必须先想清楚的三个问题只看“4000 并发”这几个字很容易让人陷入数字崇拜。比如别人能做到 4000 并发我是不是也要做到如果做不到 4000是不是系统性能不行这里首先要澄清一个概念误区。第一个问题4000 并发到底指什么并发数在不同语境下含义差别很大。在线用户数登录系统但未必有操作的连接比如在线玩游戏、挂着页面。并发会话数服务器当前保持的会话连接数量。并发请求数同时发起的 HTTP 请求或业务请求数量。JMeter 中设置的线程数对应的是“虚拟用户数”。每个虚拟用户会持续循环执行脚本。如果每个用户每次循环只发一个请求那么理论并发请求数约等于线程数。但如果脚本中一个循环发 3 个请求那么同时打到服务器的请求数会接近线程数的 3 倍。所以配置 4000 线程不代表系统就是 4000 并发。它只是虚拟用户数真正的并发量取决于单位时间内实际发出的请求数。第二个问题4000 并发的压测结果是否真实反映了系统能力JMeter 运行 4000 线程时每台压测机本省就在消耗 CPU 和内存。如果压测机资源不足请求本身会产生排队导致响应时间虚高。这测出来的不是服务器性能而是压测机瓶颈。另外JMeter 默认的 HTTP 客户端在 4000 线程下会创建大量连接如果没开启连接复用会带来严重的 TIME_WAIT 问题压测结果同样失真。第三个问题压测的目标是什么是找到瓶颈还是跑一个数字性能压测的核心目标是找到系统的承受边界和瓶颈点。4000 并发只是一个目标值或压力水平更重要的是观察系统吞吐量Throughput即 TPS是否还能增长平均响应时间Avg RT是否出现断崖式升高错误率Error%是否超过阈值CPU、内存、磁盘、网络是否达到瓶颈。在实际项目中更推荐的做法是先小并发摸底再阶梯加压观察系统的“拐点”出现在哪里。如果系统在 1500 并发时 TPS 就开始下降那 4000 并发压测的意义就在于论证当前系统不支持 4000 并发需要优化或扩容。这个结论本身就是性能压测最重要的产出。1.1 这些核心术语必须先对齐术语含义在 JMeter 中对应的概念线程数虚拟用户数Thread Group 中的 Number of ThreadsRamp-Up 时间达到最大线程数所需时间Thread Group 中的 Ramp-Up Period循环次数每个虚拟用户执行的循环次数Loop CountTPS每秒事务数系统吞吐量核心指标通过聚合报告或后端监听器统计RT响应时间单个请求的耗时聚合报告中的 Average / Percentile错误率失败请求占总请求的比例聚合报告中的 Error %拐点吞吐量开始下降或响应时间急剧升高的点通过阶梯加压观察2. JMeter 核心机制与 4000 并发的技术挑战JMeter 是 Apache 旗下基于 Java 的性能测试工具。它的核心机制是通过线程组模拟虚拟用户每个线程独立运行测试计划中的 Sampler采集并汇总结果。2.1 4000 并发压测难点在哪里如果只是做一个 50 并发的接口冒烟测试JMeter 默认配置足够。但在 4000 并发场景下会遇到几个非常现实的问题问题一本地压测机成为瓶颈。4000 个线程同时运行每个线程都要维护自己的上下文、请求数据、响应数据。JMeter 默认的 JVM 参数通常不足以支撑这么大的并发量会出现 GC垃圾回收频繁、内存溢出、线程阻塞等问题。问题二连接数耗尽。如果被测服务部署在 Tomcat 上默认最大线程数通常是 200。当并发量超过 200 时多余的请求会进入 Tomcat 的连接队列等待。如果 JMeter 并发到 4000Tomcat 日志中会大量出现连接超时甚至拒绝连接的错误。问题三网络带宽与端口资源限制。一台压测机发出 4000 并发请求时会消耗大量的客户端端口。Linux 系统默认临时端口范围有限通常是 32768-60999如果连接没有及时复用和回收端口耗尽后新请求将无法发出。问题四资源监控缺失。压测过程中如果只盯着聚合报告不关注服务器 CPU、内存、磁盘 I/O、网络等指标即使发现问题也无法定位是 GC 耗时长、数据库连接池不够还是磁盘写入太慢。理解了这四个挑战后面的操作步骤就有了针对性。3. 环境准备从 JDK 到 JMeter 插件在开始 4000 并发压测之前先准备好环境。本文章节的版本信息以实际操作环境为准重点是演示过程和方法。3.1 JDK 安装JMeter 是 Java 应用需要 JDK 1.8。建议使用 JDK 8 或 JDK 11这两个版本在兼容性和稳定性上表现较好。安装完成后验证版本java -version如果输出中包含类似java version 1.8.0_xxx或openjdk version 11.0.xx的信息说明 JDK 安装成功。3.2 JMeter 下载与安装从 Apache JMeter 官网下载二进制包解压到任意目录即可。需要注意Windows 下解压后运行bin/jmeter.bat启动界面Linux/macOS 下运行bin/jmeter.sh启动。启动成功后会看到 JMeter 图形界面初始配置即可满足普通压测需求。3.3 必要插件安装对于 4000 并发场景推荐安装以下插件阶梯线程组Ultimate Thread Group该插件允许设置多个阶段的线程数、启动时间、持续时间和停止时间。比 JMeter 自带的线程组更适合观察系统在不同并发水平下的表现。服务器性能监控插件PerfMon用于实时监控被测服务器的 CPU、内存、磁盘和网络指标。安装插件的方式通常有两种一种是下载 JMeter Plugins Manager在插件管理器中勾选安装一种是手动下载 JAR 包放入lib/ext目录并重启 JMeter。注意插件版本必须与 JMeter 主版本兼容安装失败时优先检查 JMeter 主版本与插件版本是否匹配。3.4 JVM 参数调优4000 线程运行时JMeter 默认的 JVM 堆内存很可能不够。建议修改bin/jmeter或bin/jmeter.bat中的 JVM 参数。# Linux/macOS 下修改 bin/jmeter 文件找到 HEAP 参数 HEAP-Xms2g -Xmx4g -XX:MaxMetaspaceSize512m修改完成后重启 JMeter。这里要特别注意堆内存并不是越大越好如果压测机本身只有 4G 内存强行分配 6G 堆会直接导致压测机频繁 GC进而影响压测结果。3.5 压测机系统参数调整对于 Linux 压测机需要调整系统文件句柄数和临时端口范围。临时端口范围控制在 4000 并发请求时这些参数非常重要。# 查看当前临时端口范围 cat /proc/sys/net/ipv4/ip_local_port_range # 临时修改临时端口范围重启后失效如需永久生效可写入 sysctl 配置 echo 1024 65535 /proc/sys/net/ipv4/ip_local_port_range # 查看文件句柄限制 ulimit -n # 临时修改以 root 身份执行 ulimit -n 65535这些系统参数如果不变压测过程中很可能出现 “Cannot assign requested address” 的错误。4. 设计 4000 并发的压测场景压测场景设计是整个流程中最核心、也最容易被忽视的环节。很多团队直接加线程数完全不考虑业务模型导致压测结果无法指导生产容量规划。4.1 明确业务场景在设置 4000 并发之前先回答这些问题被测系统面向的用户量级是多少峰值时用户行为是什么是登录、浏览、下单、搜索还是上传文件这些操作的调用比例是多少如果是一次登录接口压测4000 并发意味着短时间内有 4000 个用户同时登录这通常对应大促秒杀或抢购场景。如果是混合场景30% 登录、40% 查询、30% 下单那么需要按比例合理分配线程数。4.2 选择线程组类型JMeter 自带的线程组适合固定并发数的压测比如直接设置 4000 线程。但更推荐使用阶梯线程组原因有两个4000 个线程同时启动会给服务器造成瞬间冲击这种冲击既不符合真实场景也不利于观察系统的平滑性能变化阶梯加压可以帮助定位系统拐点。4.3 设计测试脚本以登录接口为例一个典型的 HTTP 请求脚本需要包含以下组件线程组或阶梯线程组HTTP 请求默认值配置协议、域名、端口HTTP Cookie 管理器处理登录后的 SessionHTTP 请求 Sampler登录接口响应断言校验返回结果聚合报告结果汇总查看结果树调试用这里给出一个 JMeter 脚本片段示例以 XML 格式展示关键部分便于读者理解脚本结构实际操作可直接在 JMeter 界面中配置无需手写 XML!-- 文件路径login_script.jmx 中的线程组部分 -- ThreadGroup guiclassThreadGroupGui testclassThreadGroup testname登录接口 4000 并发 intProp nameThreadGroup.num_threads4000/intProp intProp nameThreadGroup.ramp_time60/intProp boolProp nameThreadGroup.same_user_on_next_iterationtrue/boolProp elementProp nameThreadGroup.main_controller elementTypeLoopController guiclassLoopControlPanel testname循环控制器 boolProp nameLoopController.continue_foreverfalse/boolProp intProp nameLoopController.loops100/intProp /elementProp /ThreadGroup对应到图形界面的含义是线程数4000Ramp-Up 时间60 秒60 秒内启动 4000 个线程相当于每秒新增约 67 个用户循环次数100 次4.4 参数化让 4000 个用户身份不重复压测登录接口时如果所有线程都使用同一个测试账号会面临两个问题一是测试数据耦合无法反映真实场景二是服务器可能因会话冲突产生误判。推荐使用 JMeter 的 CSV 数据文件配置实现参数化。准备测试账号文件users.csvusername,password user001,123456 user002,123456 user003,123456在 JMeter 中添加 CSV 数据文件配置文件名users.csv变量名称username,password分隔符,共享模式所有线程然后在 HTTP 请求的参数中引用变量{ username: ${username}, password: ${password} }这样 4000 个线程会循环读取 CSV 文件中的不同账号。5. 完整压力测试执行步骤上面完成了环境准备和脚本设计下面走一遍完整的压测执行流。假设目标系统是一个部署在http://192.168.100.10:8080的后端服务测试登录接口。5.1 在 JMeter 中创建完整测试计划步骤如下打开 JMeter右键 Test Plan选择 Add Threads Thread Group。在线程组中设置线程数为 4000Ramp-Up 为 60 秒循环次数为 100。添加 HTTP Cookie 管理器右键 Thread Group选择 Add Config Element HTTP Cookie Manager。添加 HTTP 请求默认值右键 Thread Group选择 Add Config Element HTTP Request Defaults填写协议为 http服务器名称为192.168.100.10端口为8080。添加 HTTP 请求 Sampler右键 Thread Group选择 Add Sampler HTTP Request填写请求路径/api/login请求方法为 POST并按之前的设计参数化用户名和密码。添加响应断言右键 HTTP Request Sampler选择 Add Assertion Response Assertion验证响应结果是否包含code:200或success:true。添加聚合报告右键 Test Plan选择 Add Listener Aggregate Report。关键逻辑解释HTTP Cookie 管理器负责维持会话HTTP 请求默认值避免重复配置响应断言判断请求是否真正成功只看 HTTP 200 不代表业务成功。5.2 命令行模式与非 GUI 模式4000 并发在 GUI 模式下执行会有两个明显问题一是 GUI 本身会消耗大量内存影响压测结果二是执行过程中点击界面可能导致线程阻塞。因此高并发压测必须在命令行模式执行# 进入 JMeter bin 目录 cd /opt/jmeter/bin # 执行压测脚本结果输出到 result.jtl并生成 HTML 报告 ./jmeter -n -t /opt/test_plan/login_4000.jmx -l /opt/test_plan/result.jtl -e -o /opt/test_plan/html_report参数说明-n非 GUI 模式-t指定测试计划文件路径-l指定结果日志文件路径-e测试结束后生成 HTML 报告-oHTML 报告输出目录执行过程中终端会输出实时进度包括线程启动数量、已完成的请求数、错误数量等。5.3 使用阶梯线程组观察拐点如果安装了 Ultimate Thread Group可以配置多个阶段。比如阶段 1500 线程启动 30 秒持续 60 秒阶段 21000 线程启动 30 秒持续 60 秒阶段 32000 线程启动 30 秒持续 60 秒阶段 44000 线程启动 60 秒持续 120 秒这种设计能有效观察系统在 500、1000、2000、4000 并发下的表现变化。6. 压测过程中的监控方法压测中最重要的环节就是同时监控“两端”JMeter 端的请求情况和服务器端的资源消耗。6.1 JMeter 端实时查看命令行压测时可以配合聚合报告监听器但 GUI 模式只建议在调试阶段使用。更好的方式是使用后端监听器将结果发送到 InfluxDB Grafana实现实时监控。如果不具备这套监控环境可以直接观察命令行输出中的实时摘要。6.2 服务器端资源监控推荐使用 nmon、top、free、dstat 等命令实时监控服务器资源。比如持续观察 CPU 和内存# 每 2 秒刷新一次按 CPU 使用率排序 top -d 2 # 查看内存使用情况 free -h # 查看磁盘 I/O iostat -x 2同时注意观察以下指标指标健康参考值出现问题的征兆CPU 使用率整体 ≤ 70%持续 100%说明计算资源饱和内存使用率整体 ≤ 80%频繁 swap内存溢出磁盘 I/Outil ≤ 70%磁盘 %util 持续接近 100%网络带宽不丢包不重传网络重传率高带宽打满应用线程数低于容器最大线程数线程池满大量请求排队6.3 应用日志与中间件监控如果系统采用 Tomcat需要查看 Tomcat 的可执行线程数是否打满。进入 Tomcat 目录查看日志tail -f /opt/tomcat/logs/localhost.log tail -f /opt/tomcat/logs/catalina.out当出现以下日志时说明服务端线程池已经达到上限SEVERE: All threads (200) are currently busy, waiting. Increase maxThreads or check the servlet当出现大量connect timed out错误时说明连接队列已满服务器拒绝新请求。MySQL 数据库连接池可以查看连接数是否达到上限一般通过show processlist查看当前活跃连接数。如果连接数长期接近 max_connections数据库连接池就会成为瓶颈。7. 如何分析压测结果压测完成后最关心的是三个指标TPS、响应时间、错误率。下面以聚合报告和 HTML 报告为工具分析 4000 并发下的性能体检报告。7.1 聚合报告关键指标解读聚合报告中的每行数据对应一个取样器。主要看以下几列字段含义优秀标准经验值Samples总请求数请求越多统计越可靠Average平均响应时间接口逻辑不同标准不同一般 500msMedian中位数响应时间比平均值更能反映大多数用户体验90% Line90% 的请求在此时间内完成一般 1000msMin / Max最小 / 最大响应时间最大值反映极端峰值情况Error %错误率一般 0.1%Throughput吞吐量即 TPS越高越好小结论如果 4000 并发下TPS 持续稳定且错误率接近 0说明系统具备承受 4000 并发的能力。如果 TPS 在某一并发量出现明显下降说明系统已过饱和后续压测只会增加排队时间不会带来更多吞吐量。7.2 常见结果误区很多测试人员看到平均响应时间 300ms就觉得系统性能很好。但这是错误的。假设有 100 个请求99 个耗时 100ms1 个耗时 20 秒平均响应时间是约 300ms。但真实用户体验是 99% 的用户很快1% 的用户卡了 20 秒。因此平均响应时间往往掩盖长尾问题。在 4000 并发压测中更应关注 90%、95%、99% 分位值以及最大值。如果 99% Line 是 800ms而 Max 是 15 秒说明系统存在明显的长尾延迟。7.3 判断系统瓶颈所在当 4000 并发压测结果不理想时按以下顺序排查应用层Tomcat 线程数是否打满、连接队列是否堆积中间件层Nginx 的 worker_connections 是否够用网关路由是否超时数据库层慢查询数量是否大幅增加连接池是否耗尽锁等待是否严重资源层CPU 是否打满磁盘 I/O 是否成为瓶颈内存是否频繁交换举个例子如果压测过程中服务端 CPU 只有 30%但 TPS 很低那么重点排查锁、慢 SQL、远程调用、序列化等它们可能才是真正的瓶颈。如果说 CPU 已经 95% 以上那说明计算资源耗尽扩展方向应该是加机器或优化代码。8. 4000 并发压测分布式方案当单台压测机资源不够支撑 4000 并发时可以采用 JMeter 分布式压测。这在高并发场景下几乎是必然选择。8.1 分布式架构JMeter 分布式结构包含两部分Master控制机负责分发脚本、汇总结果不直接产生压力。AgentSlave执行机负责实际运行线程组向被测系统发起请求。比如使用 4 台 4 核 8G 的 Agent每台分配 1000 个线程就能支撑 4000 并发。8.2 配置步骤假设 Master 和 Agent 机都安装了 JMeter首先配置 Agent 机进入bin/jmeter-serverWindows 是jmeter-server.bat# Agent 机启动远程服务默认端口 1099 ./jmeter-server -Djava.rmi.server.hostname192.168.100.20再配置 Master 机进入bin/jmeter.properties找到remote_hosts配置修改为remote_hosts192.168.100.20:1099,192.168.100.21:1099,192.168.100.22:1099在 Master 机器上使用命令行执行分布式压测./jmeter -n -t /opt/test_plan/login_4000.jmx -l /opt/test_plan/result.jtl -e -o /opt/test_plan/html_report -R 192.168.100.20:1099,192.168.100.21:1099,192.168.100.22:10998.3 分布式压测注意事项分布式压测有三个坑需要特别强调脚本中的数据文件CSV 文件必须同步分发到所有 Agent 机的对应路径且路径一致否则执行时读取不到文件。结果汇总的网络开销所有 Agent 的测试结果都要回传到 Master4000 并发下这个网络流量不小。如果 Master 带宽不足会造成结果丢失建议脚本中不要开启过多 Debug 监听器只保留聚合报告。时钟同步虽然 JMeter 是最终结果以各 Agent 上报时间为准但跨机器后服务器监控和 JMeter 结果的时间对应关系容易不准确建议部署 NTP 时间同步。9. 常见压测失败问题与排查方法4000 并发压测过程中最常见的错误和排查方法如下表所示问题现象可能原因排查方式解决方案压测机报 Cannot assign requested address本地临时端口已耗尽连接未复用netstat -antpl查看端口连接状态统计 TIME_WAIT 数量开启 HTTP 连接复用调大临时端口范围增加压测机数量JMeter 内存溢出 OutOfMemoryErrorJVM 堆太小结果数据量过大查看 jmeter 日志中的 OOM 报错检查 JVM 参数增大 HEAP 值减少不必要监听器使用命令行模式压测刚开始错误率飙升服务端线程池不够连接队列打满或压测请求没带正确的 Header/Token查看服务端日志查看聚合报告中具体错误内容增加服务端线程数或优化服务处理能力检查脚本的鉴权逻辑TPS 上不去CPU 和内存都低应用内部存在锁竞争、慢 SQL、远程调用超时、磁盘 I/O 瓶颈使用 Arthas 或 JProfiler 进行线程分析查看 BLOCKED 状态的线程查看慢查询日志优化 SQL、减少锁粒度、替换磁盘为 SSD 等响应时间出现周期性波动压测机 GC 周期性暂停或服务端有定时任务查看压测机 GC 日志查看服务端定时任务时间点调优压测机 JVM 参数调整或限制服务端定时任务期间的请求4000 线程启动后 JMeter 卡死本地线程数过多导致线程上下文切换开销过大查看压测机 CPU 使用率查看线程 dump改为分布式压测降低单机线程数每台不超过 1000-1500压测结果中所有请求都是 502/504网关或负载均衡连接后端超时后端已挂查看 Nginx 错误日志、后端应用日志检查后端服务是否宕机检查网关超时配置合理设置队列大小10. 最佳实践与工程化落地建议10.1 先做小流量调试再上 4000 并发很多团队在调试阶段就使用 4000 线程这是低效且危险的做法。建议先用少量线程10-50执行脚本用“查看结果树”检查请求参数、响应数据、断言是否正确。调试通过后再逐步加压到 4000。在压测评审中这种做法也更容易得到开发团队的信任。10.2 压测环境必须和生产隔离压测 4000 并发会对服务器、数据库造成真实冲击。线下压测必须使用独立压测环境且压测前要和开发、运维确认不影响其他项目。在云环境做压测要注意流量费用和限流策略推荐先小范围测试确认不会影响线上业务再执行。10.3 每个项目总结基线数据完成一轮压测后应该沉淀以下基线数据形成性能测试报告系统最大支持并发数系统最佳并发数TPS 最高的并发区间各接口 90%、99% 分位响应时间饱和点时的 CPU、内存、磁盘 I/O、网络指标这些数据沉淀后后续做容量规划、链路优化、扩容决策时可以直接作为参考。10.4 关注慢 SQL 与远程调用高并发场景下性能瓶颈最常出现在数据库和依赖服务。JMeter 压测发现 TPS 上不去时不要只看接口逻辑代码先看慢 SQL、连接池、Redis 缓存命中率、外部 WebService/RPC 调用时间。这些数据比盲目优化代码更有效。10.5 充分利用后端监听器建立监控体系团队如果具备 InfluxDB 和 Grafana 环境建议配置 JMeter 后端监听器Backend Listener将实时 TPS、响应时间、线程数指标写入时序数据库。这样在压测过程中可以像看监控大盘一样观察每一秒的性能变化。该配置的图形操作路径为右键 Test Plan - 添加 - 监听器 - Backend Listener选择org.apache.jmeter.visualizers.backend.influxdb.HttpMetricsSender然后填写 InfluxDB 的推送地址即可。11. 总结与后续学习路线本文围绕 4000 并发压测展开完整覆盖了概念澄清、环境准备、脚本设计、执行监控、结果分析、分布式压测与排错方法。核心结论有三点第一4000 并发不是简单设置 4000 个线程它考验的是测试脚本设计、压测机资源配置、服务器支撑能力和结果分析方法。第二性能压测的最终产出不是“跑了一个 4000 并发的数字”而是找出了系统的峰值点、瓶颈点和优化方向。第三从单机压测到分布式压测是并发量增长后的必然路径团队需要提前准备压测机资源池。如果你刚从功能测试转向性能测试下一步建议按这样的顺序练习用 JMeter 对本地项目做 100 并发的基础压测掌握脚本设计、断言、聚合报告分析对系统做阶梯加压找到 TPS 拐点理解资源与吞吐量的关系学习 JVM 线程分析、数据库慢查询优化、连接池调优掌握定位瓶颈的能力搭建 JMeter Grafana 监控体系并尝试对线上系统做小流量压测逐步积累容量管理经验。性能压测不是一次性工作而是系统上线前的质量门禁更是发现系统弹性能力的手段。希望这篇文章能帮你在 4000 并发压测这条路上少走弯路。建议收藏备用实际压测中遇到问题可以直接按文中的排查表对号入座。
网站建设高端定制企业官网
RELATED

相关资讯

更多精彩内容,欢迎继续阅读

较早相关资讯

最新相关资讯

闭环温度控制系统设计全流程:从传感器选型到PID调参实战 2026/9/6 23:56:21

闭环温度控制系统设计全流程:从传感器选型到PID调参实战

简介:一份完整的闭环温度控制系统电子工程设计报告,面向自动化与电子信息类学生及单片机开发者,适用于课程设计、毕业设计或项目预研中的温度控制方案构思。报告以8051单片机为核心,系统阐述了从功能指标制定、方案选型到硬件电路…

阅读更多 →
基于深度学习YOLOv8+PyQt5的车牌检测识别系统实战解析 2026/9/6 23:56:21

基于深度学习YOLOv8+PyQt5的车牌检测识别系统实战解析

直接开门见山这次要拆解的项目是“基于深度学习 YOLOv8 PyQt5 的车牌检测识别系统”。这是一个非常典型的计算机视觉桌面应用:前端用 PyQt5 做界面,后端用 YOLOv8 做目标检测,再配合 OCR 技术完成车牌字符识别。整个项目覆盖了目标检测、字符…

阅读更多 →
7.20 OLED的OLED_Refresh函数栈溢出踩内存 2026/9/6 23:56:21

7.20 OLED的OLED_Refresh函数栈溢出踩内存

void OLEDS_Refresh(void) {u8 i, n;//这里可能会导致栈溢出 换成静态变量staticstatic uint8_t buf[129]; /* buf[0]控制码 0x40, buf[1..128]像素数据 */for (i 0; i < 8; i){/* 设置页地址和列地址 */OLEDS_WR_Byte(0xB0 i, OLEDS_CMD); /* 页地址 0~7 */OLEDS_WR_B…

阅读更多 →
LangChain核心实战:从大模型调用到Agent开发与LangGraph选型 2026/9/6 23:56:21

LangChain核心实战:从大模型调用到Agent开发与LangGraph选型

刚开始接触 LangChain 的时候&#xff0c;很多同学都有这样的困惑&#xff1a;今天看到一个教程在讲 Model&#xff0c;明天又看到一个教程在讲 Agent&#xff0c;后天又冒出 LangGraph、RAG、CrewAI。各种概念堆在一起&#xff0c;感觉每个单词都认识&#xff0c;但就是串不起…

阅读更多 →
LangChain与Agent工程实践:从模型调用到稳定可控的大模型应用流程编排 2026/9/6 23:56:21

LangChain与Agent工程实践:从模型调用到稳定可控的大模型应用流程编排

我最早有“LangChain 到底有没有用”这个概念&#xff0c;是在一个做知识库问答的周会上。当时团队里的模型接口已经跑通&#xff0c;单条提问和回答都很正常&#xff0c;可一旦放进一个带历史记录、带文档检索、带多轮追问的真实产品里&#xff0c;整个流程就开始失控&#xf…

阅读更多 →
基于Spring Boot的自助健身房管理系统的设计与实现 2026/9/6 23:53:21

基于Spring Boot的自助健身房管理系统的设计与实现

摘 要 本毕业设计旨在开发一套基于Spring Boot框架的自助健身房管理系统&#xff0c;解决传统健身房人工依赖重、效率低等痛点。系统采用B/S架构&#xff0c;后端利用Java语言与MySQL数据库实现业务逻辑持久化&#xff0c;前端通过Vue框架与微信小程序提供双向交互&#xff0…

阅读更多 →

今日资讯

本周资讯

本月资讯

看完文章仍有疑问?

联系尧图顾问,获取一对一建站咨询

立即免费咨询 📞 400-888-8888
📞