JMeter保姆级教程:从接口调试到命令行压测与HTML报告生成
JMeter 是我做性能测试用得最多的工具没有之一。你要想测接口、调并发、验证系统在上线前能不能扛住一波流量大部分场景它都够用而且免费、开源、跨平台。这篇保姆式教程我按自己带新人的顺序写从下载安装、编写脚本、参数化、断言到命令行压测、生成报告、常见报错排查一步步带着做。内容会重点覆盖 JMeter 性能测试步骤、JMeter 脚本编写细节以及一些文档里不会写但实际操作一定会遇到的坑。适合刚接手接口测试和压测工作的同学也适合想从 GUI 点击升级到命令行压测的人当作参考。1. 先说清楚JMeter 到底解决什么问题很多人一上来就找 JMeter 下载地址装完发现不会用然后卡在“线程组”“Sampler”“监听器”这些概念上。其实不用怕 JMeter 的逻辑特别朴素它模拟多个虚拟用户按你设计的场景往服务器发请求再把服务器返回的结果收集起来算成指标给你看。你可以把它理解成一个“能同时干很多活的机器人团队”每个线程就是一个虚拟用户每个请求就是一次用户操作。1.1 压测、接口测试、性能验证三件事JMeter 最初是用来做 Web 应用压力测试的后来发展成支持 HTTP、HTTPS、JDBC、FTP、MQTT 等协议的通用测试工具。我习惯把它拆成三层来理解。第一层是接口调试。比如后端同事告诉你“登录接口已经写好了你测一下”你不需要先启动一套复杂的前端页面直接用 JMeter 发一个 POST 请求带上用户名密码看返回对不对就行。这一层用的功能很少线程组、HTTP 请求、查看结果树。第二层是半自动化的回归测试。接口多了以后每次版本迭代都手动点一遍太累。你可以用 JMeter 把常用接口串成脚本配合 CSV 参数化和断言每次发版前跑一遍看有没有接口挂掉。这一层开始涉及参数化、断言、JSON 提取器和响应处理。第三层才是压测。你需要回答“这个系统最多能扛多少并发”“接口 99% 响应时间是多少”“错误率会不会很高”。这时就必须设计好线程数、Ramp-Up 时间、循环次数然后脱离 GUI用命令行执行压测最后生成性能报告。这也是网上搜索量最大的一块比如“JMeter 压测简单步骤”“JMeter 性能测试步骤”基本都是这个阶段的需求。1.2 这篇教程适合谁、怎么读如果你是纯新手建议按顺序从第二章开始看先把环境装好再跑通第一个请求然后逐步加入参数化、断言和压测。如果你已经写过几个 JMeter 脚本只是对某些细节不确定可以直接跳到第四章往后重点看 RESTful 参数写法、上传文件、Cookie 处理、JDBC 参数化、动态调整 QPS 以及常见报错。有一点我提前说明JMeter 本身是工具性能测试背后牵扯到系统架构、中间件配置、数据库连接池、服务器资源监控。工具只能告诉你“哪里慢了”但“为什么慢”通常需要结合你的业务场景去分析。所以这篇教程里我尽量每个步骤都解释为什么这么操作而不是只给一个操作路径。2. 环境准备下载、安装、启动避坑JMeter 是 Java 写的所以第一件事不是下载 JMeter而是确认你的电脑上有合适的 JDK。很多新手卡在“双击 jmeter.bat 闪退”或者“java 命令找不到”基本都是 JDK 环境变量没配好。2.1 JMeter 官网下载与 JDK 版本选型请认准 JMeter 官网地址jmeter.apache.org。不要从第三方下载站拿安装包那些包可能捆绑广告、篡改脚本甚至藏着恶意程序。进入官网后点击 Download找到对应平台压缩包。Windows 下载 zipmacOS 和 Linux 也下载 tar.gz 即可 JMeter 不需要安装解压就是一个完整的目录。JDK 版本和 JMeter 版本需要匹配。我这边遇到过 JMeter 5.5 在 JDK 17 上跑没问题但 JMeter 5.1 配 JDK 11 也能用。总的原则是JMeter 5.x 至少需要 JDK 8新版本建议直接上 JDK 11 或 JDK 17。下表是我常用的搭配参考JMeter 版本JDK 版本要求建议JMeter 5.4 及以下JDK 8 或 11老机器兼容性好JMeter 5.5JDK 8/11/17我主力使用稳JMeter 5.6 及以上JDK 8/11/17/19需要插件时注意兼容安装完 JDK 后必须配置JAVA_HOME环境变量并把%JAVA_HOME%\bin加到 Path 里。Windows 用户在命令行敲java -version能看到版本号才算通过。macOS 用户可以在终端敲java -version验证如果没有会自动提示安装。2.2 启动配置、插件管理器与目录结构解压 JMeter 包后进入bin目录。Windows 双击jmeter.batmacOS/Linux 执行jmeter。如果启动后界面都是英文没关系可以在Options - Choose Language里切换成简体中文。JMeter 的目录结构里你只需要关注三个地方bin启动脚本、证书、配置文件都在这里lib第三方驱动和扩展 jar 放这里lib/ext官方和第三方插件一般放这里比如要测数据库就把对应数据库的 JDBC 驱动 jar比如mysql-connector-java-x.x.x.jar放到lib目录后重启 JMeter。要装额外的插件最简单的方式是使用插件管理器先手工下载plugins-manager.jar放入lib/ext重启后菜单栏会出现Options - Plugins Manager在里面搜索需要的插件安装即可。这里提醒一句插件不要贪多。很多人一上来把 MQTT、WebSocket、PerfMon 全部装上结果启动慢脚本模板也乱。用到哪个装哪个最稳。3. 五分钟跑通第一个压测脚本环境装好以后先别急着去搞复杂的东西。我建议你先用本地或者公网的一个简单接口把整个链路跑通线程组 - HTTP 请求 - 监听器 - 运行 - 看结果。这样你脑子里就有了一张地图后面所有功能都是在这张地图上加细节。3.1 线程组、HTTP请求、监听器怎么配合打开 JMeter 后左边默认是空测试计划。右键测试计划添加一个线程组添加 - 线程(用户) - 线程组。这里有三个核心参数线程数模拟的并发用户数。10 就是同时 10 个用户。Ramp-Up 时间秒多少秒内启动所有线程。10 秒内启动 10 个线程就是每秒启动 1 个。循环次数每个线程执行几次请求。选择永远就是一直压直到手动停止。这三个参数会直接影响压测模型。比如你想模拟 100 个用户同时点击登录最好不要把 Ramp-Up 设为 0因为一瞬间发起 100 个并发请求和 10 秒内慢慢加到 100 个服务器的压力特征完全不一样。继续添加 HTTP 请求右键线程组 -添加 - 取样器 - HTTP 请求。在请求页填写协议、服务器名称或 IP、端口、方法、路径。先找一个公网测试接口举例如下协议https 服务器名称或IPhttpbin.org 端口443 方法GET 路径/get然后给 HTTP 请求添加一个查看结果树右键 HTTP 请求 -添加 - 监听器 - 查看结果树。点击上方绿色小三角运行结果树里就能看到每个请求的响应数据、响应码、请求时间。这一步是接口调试的最基础能力很多人光靠这个就能完成大量接口联调工作。看到绿色对勾之后再加一个聚合报告监听器右键线程组 -添加 - 监听器 - 聚合报告。再次运行聚合报告会给出平均响应时间、吞吐量、错误率。虽然这个监听器在大规模压测时一般不采信但用来快速验证脚本通不通已经足够了。3.2 用命令行代替 GUI 执行压测GUI 模式适合调试但真正压测时不要用 GUI。原因很简单JMeter 本身也吃 CPU 和内存GUI 会把宝贵的资源花在画图表上影响压测结果。所以生产压测一定要用命令行模式。先把当前测试计划保存为login_test.jmx然后打开命令窗口进入 JMeter 的bin目录执行jmeter -n -t /path/to/login_test.jmx -l /path/to/result.jtl -e -o /path/to/report参数说明-nnon-GUI 模式-t指定脚本文件-l输出结果文件名一般用.jtl或.csv-e测试结束后生成 HTML 报告-oHTML 报告输出目录必须是一个不存在的空目录比如第一次跑报告目录已经存在就会报“文件已经存在”。这是一个非常高频的报错解决办法就是删除旧目录或者换一个新目录名。命令行跑完后控制台会输出关键信息比如summary 500 in 00:00:10 49.5/s Avg: 230 Min: 180 Max: 450 Err: 0 (0.00%)。这里一眼就能看到总请求数、吞吐量、平均响应时间、错误率。如果你觉得英文报告不够直观后面第六节我会讲怎么汉化 HTML 报告。4. 接口测试的实战细节参数、上传、Cookie、录制跑通一个简单的 GET 请求后接下来要面对的都是真实业务里躲不开的问题怎么传参、怎么传文件、怎么维持登录态、怎么处理 HTTPS 请求。这一节我把高频场景都过一遍。4.1 HTTP 请求编写与 RESTful 参数先讲普通参数。如果是 GET 请求可以在 HTTP 请求页面的Parameters表格里添加键值对也可以直接拼在路径后边。比如路径/api/v1/users?page1size20如果是 POST 请求且提交的是表单同样在Parameters里加键值对。如果是提交 JSON比如{username:admin,password:123456}那么要点开请求里的Body Data标签直接粘贴 JSON 字符串。注意此时要在请求中添加一个 HTTP 信息头管理器设置Content-Type: application/json否则服务端可能解析不了。RESTful 接口的路由参数比较特殊很多人问 JMeter 的 restful 参数怎么写。比如接口文档写的是GET /api/v1/users/{userId}你不能直接写一个花括号让 JMeter 识别得先把路径里的动态值替换成变量。在测试计划里添加一个用户自定义变量名字叫userId值比如 1001然后在路径里写/api/v1/users/${userId}这样以后你只需要改自定义变量不用改一堆请求。实际压测中这个userId还可以来自 CSV 参数化、数据库查询结果、上一个接口的响应值这就是接口串联的基础思路。4.2 上传文件与 Cookie 设置上传文件这种场景很常见JMeter 做起来不复杂。在 HTTP 请求中勾选Use multipart/form-data然后在Files Upload区域填写文件路径、参数名称和 MIME 类型。比如上传头像参数名通常是file文件类型是image/png。文件路径里如果包含中文或空格建议提前重命名免得某些后端框架解析遇到问题。Cookie 管理用 HTTP Cookie Manager。最简单的方式是添加一个HTTP Cookie Manager到线程组然后手动添加键值对。更接近真实场景的做法是用登录接口拿到的 token 或 sessionId 存在变量里再通过 Cookie Manager 引用变量。举个例子一个接口返回tokenabc123你可以用正则表达式提取器或者 JSON 提取器把它抓出来存到变量里然后在 Cookie Manager 中添加名称token 值${token}这里容易踩的坑是“跨线程组调用变量”。JMeter 的线程组默认是隔离的第一个线程组登录第二个线程组做业务第二个线程组里的${token}是取不到的。解决方案可以勾选“线程组间共享变量”或者把登录接口放在同一个线程组内通过循环控制器、事务控制器来控制顺序。很多人想当然地把登录和业务拆成两个线程组结果 token 一直为空排查了半小时才发现是作用域问题。4.3 HTTPS 脚本录制与证书安装硬手写 HTTPS 接口没问题但遇到复杂流程比如几十个请求、参数之间互相引用手写会非常痛苦。JMeter 提供 HTTP(S) 测试脚本录制器原理是起一个本地代理浏览器把请求发给代理JMeter 顺手把请求记录成脚本。操作步骤是这样先在线程组之前添加一个非测试元件 - HTTP(S) 测试脚本录制器端口默认 8888。然后在浏览器里配置代理IP 填127.0.0.1端口填8888。如果你要录 HTTPS 网站浏览器第一次访问时会有证书警告因为 JMeter 的根证书还没有被系统信任。证书文件在 JMeter 的bin目录下名字叫ApacheJMeterTemporaryRootCA.crt。你需要在操作系统的受信任根证书颁发机构中导入这个证书然后重新启动浏览器。导入证书后重新录制HTTPS 请求就能正常记录。不过录制出来的脚本通常夹杂很多静态资源请求比如 JS、CSS、图片这些在压测中一般没必要。你可以配置录制器的“请求过滤”规则排除掉.js|.css|.png|.jpg|.gif|.ico这类后缀脚本会干净很多。还有一个建议录制只是起点不是终点。录制结束后一定要仔细检查录出来的域名、端口、参数尤其是动态 token、时间戳这类数据大概率需要做参数化或关联直接重放很容易失败。5. 参数化与断言让脚本贴近真实业务一个登录接口如果每次都使用同一个账号压测结果很难反映真实场景。因为服务器可能有缓存单个账号可能被限制登录次数或者数据状态被重复修改。所以参数化几乎是所有正式压测脚本必须做的事。另一方面压测时如果不做断言你根本不知道服务器返回的是成功页面还是 500 错误页。5.1 CSV 参数化与数据库参数化最简单的参数化是用 CSV 文件。右键线程组添加配置元件 - CSV 数据文件设置填写文件路径和变量名。比如 CSV 里每行是username,password那么变量名写username,password脚本里用${username}、${password}引用。这里有三个容易搞错的地方。第一CSV 文件路径最好用相对路径否则换个机器跑脚本就要改一遍。第二Recycle on EOF默认是 True意思是数据读完以后重新循环使用适合大量迭代压测如果每个账号只能用一次就需要改成 False。第三Sharing mode默认是 All threads如果你希望每个线程都拿到不同的数据注意线程数和 CSV 数据量要足够否则后面线程会拿重复数据。如果说 CSV 参数化是“离线准备数据”数据库参数化就是“压测时实时取数”。操作是这样先在测试计划里添加配置元件JDBC Connection Configuration填数据库 URL、用户名、密码并设置一个连接名称。然后在线程组里添加JDBC Request写一条查询语句比如根据用户名查到它的用户 IDSELECT id FROM users WHERE username ${username}JDBC Request 里有一个Result variable name如果填userData那么查询结果可以在后续请求里用userData_1引用第一行第一列userData_2引用第一行第二列userData_#表示总行数。我之前看到很多人搜索“JMeter 将 JDBC Request 查询出的数据作为下一个接口的参数”其实就是这个用法。如果查询结果很多需要动态取第 N 行可以配合计数器。例如计数器变量叫idx引用时用${__V(userData_${idx}_1)}这样可以把每一行数据依次用于不同请求。用到的核心函数是__V它的作用是拼接变量名后再取值很多人在这里卡住。5.2 响应断言、JSON 断言与 Beanshell 高级用法参数化解决“数据从哪来”断言解决“结果对不对”。最推荐的是和协议匹配的断言不要只依赖查看结果树手动看。简单文本接口可以用响应断言添加添加 - 断言 - 响应断言设置要匹配的响应文本、响应代码或者响应头。比如登录接口成功会返回success:true就在断言里填success:true。注意 JMeter 会检查返回的“整个响应体”如果你只写success而响应里到处都有这个词容易误判。如果是 JSON 接口强烈建议用JSON 断言。这种断言基于 JSONPath 语法比如判断返回结果里的code是否为 0JSONPath 表达式写$.code期望值填0。相比“包含字符串”这种方式JSONPath 定位更精准不会因为某个字段值里恰好出现相似内容导致误判。Beanshell 断言属于更复杂、更灵活的做法。JMeter 里很多“动态”需求都可以用 Beanshell 或者 JSR223 脚本实现。比如你要在某个请求返回后从响应里提取一个字段判断它是否大于某个阈值然后再决定是否往后续请求里传递。响应断言做不到这种逻辑Beanshell 可以。一个简单示例String resp prev.getResponseDataAsString(); if (resp.contains(\status\:0)) { Failure false; } else { Failure true; FailureMessage 响应中未找到 status0实际内容 resp; }这里prev是当前取样器对象Failure和FailureMessage是 Beanshell 断言里预设的变量。旧项目用 Beanshell 没问题但新脚本我更推荐 JSR223 取样器配 Groovy 语言性能更好语法也更现代。如果你只是需要做复杂判断没必要从 Beanshell 迁移到 Groovy但如果你的脚本里大量使用脚本逻辑且压测时长很长Groovy 的优势会非常明显。还有一个高频需求是“动态调整 QPS”。有人用 Beanshell 配合 bshclient 远程控制 JMeter 属性也有人直接改线程数重启压测。我的经验是如果不是特殊场景用 JMeter 自带的Constant Throughput Timer或者Throughput Shaping Timer插件会稳得多。Constant Throughput Timer 可以按每分钟固定吞吐量发包Throughput Shaping Timer 则可以用图形化的方式配置吞吐量阶梯比如第 1 分钟 100 QPS第 2 分钟 200 QPS第 3 分钟 300 QPS。这样既能模拟流量突增也能避免在脚本里写一堆 Beanshell可维护性好很多。6. 性能测试指标与 HTML 报告脚本准备完之后压测结果怎么看是很多人头疼的地方。初学者最容易犯的错是只看“平均响应时间”和“总请求数”然后得出一个不完整的结论。真正的性能测试指标至少要覆盖吞吐量、响应时间分布、错误率和资源占用。6.1 性能指标到底看哪些先说 TPS全称是 Transactions Per Second每秒事务数。JMeter 聚合报告里叫Throughput单位是/sec它表示服务器每秒能处理的请求数量。这个概念让你知道系统的“处理能力”是多大。但 TPS 高不代表体验好还得看响应时间。响应时间不能只看平均要看分位数。平均响应时间很容易被极端值拉偏比如 99 个请求都是 10 毫秒1 个请求是 3 秒平均还是 30 毫秒左右体感却非常卡。所以压测报告里要有 P90、P95、P99。P95 表示 95% 的请求响应时间都小于这个值用来描述绝大多数用户的体验更准确。JMeter 的聚合报告默认不直接显示 P95/P99需要你在聚合报告里勾选对应的分位数设置或者从 HTML 报告中查。错误率是压测中的一个红线。一般接口压测错误率低于 0.1% 算比较健康如果达到 1% 以上基本说明系统已经出现异常。要注意错误率的统计并不只是 HTTP 500超时、连接拒绝、断言失败都算错误。有时服务器返回 200 但响应体里是错误提示这种只有靠断言才能识别。并发用户数和线程数也不是一回事。JMeter 里的线程数只是“虚拟用户数”实际到达服务器的并发请求数还取决于思考时间、Ramp-Up、业务逻辑耗时。压测报告里我会习惯性记录“线程配置”和“实际 TPS”两项方便后续复现。指标含义参考判断TPS每秒处理事务数越高越好但需配合响应时间平均响应时间所有请求响应时间平均值适合快速判断不适合单独下结论P95/P9995%/99% 请求的最大响应时间用户体验的重要参考错误率错误请求数 / 总请求数一般在 0.1% 以下并发用户数JMeter 线程数模拟虚拟用户数不等于服务器实际并发6.2 生成 HTML 报告与汉化模板命令行压测时加上-e -o参数JMeter 会自动生成一份 HTML 报告里面包含请求数、响应时间分布、TPS 曲线、响应时间曲线、错误率等多种图表。报告非常适合直接贴到工作群里省去自己写一堆表格的时间。生成报告的命令再放一次jmeter -n -t test.jmx -l result.csv -e -o report_dir注意-l生成的结果文件如果再次运行会覆盖最好每次压测前删掉旧文件。因为 JMeter 默认不会清空如果累加报告数据会混乱。-o指定的目录必须不存在或为空否则会报“文件已经存在”。HTML 报告默认是英文想汉化可以去找一下“JMeter HTML 报告汉化模板”。市面上的汉化方案大多是把bin/report-template目录下的模板文件替换成中文版本或者修改bin/reportgenerator.properties中的设置。我自己用过几种汉化模板效果还行不过要注意模板版本和 JMeter 版本匹配否则生成的报告可能缺少某些图表。如果你只是内部看报告英文模板也不影响理解毕竟图表的含义是共通的。对于更深入的性能分析我建议把 JTL/CSV 结果导入 Grafana 或 Prometheus 体系但这需要额外搭环境不是入门范围。入门阶段先用 JMeter 自带的 HTML 报告就够了。7. 常见问题与一个完整实战场景这个部分我整理了实际工作中几乎每天都会被问到的报错以及在真实项目里从本地脚本到云上环境做高并发压测的完整流程。如果你已经走到这里相信你对 JMeter 已经有了完整的框架感。7.1 高频报错及排查思路先列一个高频报错速查表方便你对着排查报错/现象常见原因解决方向java.io.IOException: Error writing to server客户端与服务端连接被断、服务端连接池耗尽、压测机连接数超限检查并发是否过高、连接池配置、请求超时降低线程数或增加服务端连接数报告目录文件已经存在-o目录非空换新目录或删除旧目录启动 JMeter 后闪退JDK 未安装或 JAVA_HOME 未配置安装 JDK 并配置环境变量命令行java -version验证HTTP 响应乱码服务端返回编码不是 UTF-8HTTP 请求里设置 Content Encoding 为 gbk 或 utf-8或在结果树里切换编码HTTPS 证书警告/录制失败JMeter 根证书未导到系统信任库导入 bin 目录下的 ApacheJMeterTemporaryRootCA.crtJDBC 驱动找不到jar 没放到 lib 目录下载对应数据库驱动 jar 放入 lib 后重启 JMeterCookie 不生效作用域问题或 Cookie 值未被变量替换检查 Cookie Manager 位置、变量是否提取成功压测机 CPU 打满但目标服务器很空闲单机压测线程数开太高降低线程数或改用分布式压测压测机和服务端资源要分开java.io.IOException: Error writing to server这个报错在实际压测里特别容易出现尤其是高并发压测时。它本质上是一个 I/O 异常表示 JMeter 发数据到服务器时连接已经被断开。可能是服务端主动断掉连接也可能是压测机和服务器之间的网络连接被防火墙清掉还可能是开了太多线程导致压测机本身 socket 不够用。我遇到最多的场景是 500 线程以上单机压测压测机的文件句柄数不够Linux 下可以临时调高 ulimit但更建议先减线程、增加持续时长或者换成分布式压测。7.2 从本地脚本到云上高并发压测有一个非常典型的项目场景原本跑在单节点 Kubernetes 上的微服务环境要迁移到云上 ECS迁移完成后需要压测人员用配套 JMeter 脚本做高并发测试验证新环境的承载能力。这种“本地压测脚本到云端压测”的转化比想象中要麻烦但流程是可以标准化的。我先说准备工作。拿到原环境 JMeter 脚本后第一步不是直接跑而是做一次脚本“可移植性检查”。看看脚本里有没有绝对路径比如 CSV 数据文件指向/home/olduser/data.csv云上环境肯定不存在看看有没有依赖特殊插件比如 MQTT、Kafka 插件如果压测机是新装的要先把插件安装好再看看脚本里的数据库地址、接口域名是不是指向原环境的内网地址。第二步是准备压测机。云上压测机最好和被测 ECS 在同一个私有网络或者至少网络延迟足够低。不要在本地电脑直接压云端公网 IP那样一来网络波动会混入测试结果二来本地带宽可能已经先成为瓶颈。第三步是小流量冒烟。先设置线程数为 10循环次数 1 到 2 次跑通接口确认响应正常断言通过。如果冒烟阶段就报错先把环境问题解决掉不要直接上高并发。第四步是设计梯度压测。比如 50、100、200、500 线程每个梯度持续 3 到 5 分钟观察 TPS 和响应时间是否随并发数线性增长。如果 200 线程时 TPS 还在涨、P95 没超阈值就可以继续往上压如果 500 线程时错误率突然升高说明系统已经接近瓶颈这时要把服务端 CPU、内存、数据库连接池、GC 日志一起拉出来看。第五步是保存结果。每个梯度单独保存一份 JTL/CSV避免混淆。压测结束后统一生成 HTML 报告作为迁移验收的交付物。我在跑这种上云压测前一定会检查三件事脚本里没有绝对路径、结果目录已经清空、压测机的时间和被测服务器时间一致。听起来都很基础但每一条都会导致报告不可信。最后再分享一个小技巧正式压测之前先用极低并发跑一遍基线脚本记录正常耗时和错误率后面所有梯度结果都和它对比这样你的数据才有说服力。

相关新闻

基于NB-IoT的智能井盖监测系统:从硬件选型到云平台落地的完整实践

基于NB-IoT的智能井盖监测系统:从硬件选型到云平台落地的完整实践

城市井盖这件事,听起来不起眼,但真出了事往往就是大事。井盖被盗、破损、被雨水顶开,轻则影响市政排水,重则行人车辆发生事故。我去年全程参与了一套基于NB-IoT的智能井盖安防与在线监测系统,从需求梳理、硬件选型、固…

2026/9/19 8:56:02 阅读更多 →
OHIF Viewers v3 全版本迁移路线图:从 2.x 到 3.12 的升级指南总览

OHIF Viewers v3 全版本迁移路线图:从 2.x 到 3.12 的升级指南总览

OHIF Viewers v3 全版本迁移路线图:从 2.x 到 3.12 的升级指南总览 【免费下载链接】Viewers OHIF zero-footprint DICOM viewer and oncology specific Lesion Tracker, plus shared extension packages 项目地址: https://gitcode.com/GitHub_Trending/vi/Viewe…

2026/9/19 8:56:02 阅读更多 →
Apache Kafka 消息协议定义体系详解:基于 JSON 规格文件的消息生成机制

Apache Kafka 消息协议定义体系详解:基于 JSON 规格文件的消息生成机制

Apache Kafka 消息协议定义体系详解:基于 JSON 规格文件的消息生成机制 【免费下载链接】kafka Mirror of Apache Kafka 项目地址: https://gitcode.com/gh_mirrors/kafka31/kafka 本篇技术指南以 Kafka 仓库中 clients/src/main/resources/common/message/R…

2026/9/19 8:56:02 阅读更多 →

最新新闻

网站备案点不进去别慌,3个免费工具帮你10分钟定位

网站备案点不进去别慌,3个免费工具帮你10分钟定位

网站备案点不进去别慌,3个免费工具帮你10分钟定位 找建站公司最怕什么?怕被坑高价,更怕交完钱后网站上线卡在备案环节,对方甩锅说是你的问题。很多安徽的甲方朋友在对接开发团队时,一遇到“网站备案点不进去”就心慌,觉得是不是被收了智商税,或者服务器配置太贵没买对。其实,这根本不是高价套餐才能解决的技术难…

2026/9/19 9:47:09 阅读更多 →
BrewUI 图形化客户端:让 Homebrew 包管理与服务运维一目了然

BrewUI 图形化客户端:让 Homebrew 包管理与服务运维一目了然

1. BrewUI 到底是什么,我为什么搁置纯命令行来用它先说结论:BrewUI 是 Homebrew 的一个图形化客户端,本质作用就是把你平时在终端里敲的brew install、brew services start、brew update、brew cleanup这些操作,变成一个个看得见、…

2026/9/19 9:46:21 阅读更多 →
在 minikube 中使用 AMD GPU:基于 docker 驱动开启 amd.com/gpu 设备插件支持

在 minikube 中使用 AMD GPU:基于 docker 驱动开启 amd.com/gpu 设备插件支持

在 minikube 中使用 AMD GPU:基于 docker 驱动开启 amd.com/gpu 设备插件支持 【免费下载链接】minikube Run Kubernetes locally 项目地址: https://gitcode.com/gh_mirrors/mi/minikube 本教程基于 site/content/en/docs/tutorials/amd.md 编写&#xff0c…

2026/9/19 9:46:21 阅读更多 →
从零实现简易物理引擎:刚体碰撞与堆叠模拟

从零实现简易物理引擎:刚体碰撞与堆叠模拟

我注意到这次请求没有带上实际要写的【项目标题】和相关信息,只有模板占位行,所以我暂时没法直接开写。为了保证产出的是紧扣主题、能直接复现的实操型博文,我需要你把这几个字段补全:项目标题: [你想写的具体标题,比如…

2026/9/19 9:46:21 阅读更多 →
什么是functions-samples?Firebase Cloud Functions官方示例库完整指南

什么是functions-samples?Firebase Cloud Functions官方示例库完整指南

什么是functions-samples?Firebase Cloud Functions官方示例库完整指南 【免费下载链接】functions-samples Collection of sample apps showcasing popular use cases using Cloud Functions for Firebase 项目地址: https://gitcode.com/gh_mirrors/fu/function…

2026/9/19 9:46:21 阅读更多 →
uni-app x 权限管理实战:uni.openAppAuthorizeSetting 跳转系统授权管理页完全指南

uni-app x 权限管理实战:uni.openAppAuthorizeSetting 跳转系统授权管理页完全指南

uni-app x 权限管理实战:uni.openAppAuthorizeSetting 跳转系统授权管理页完全指南 【免费下载链接】uni-app A cross-platform framework using Vue.js 项目地址: https://gitcode.com/gh_mirrors/un/uni-app 导读 uni.openAppAuthorizeSetting 是 uni-app…

2026/9/19 9:46:21 阅读更多 →

日新闻

BP神经网络时序预测:滑窗长度与多窗口平均策略

BP神经网络时序预测:滑窗长度与多窗口平均策略

简介:面向机器学习、深度学习与数据建模学习者的一份完整研究文献,聚焦BP神经网络在农业产量预测中的应用。文档以1980—2018年全国棉花产量为样本,系统讲解数据归一化处理、激活函数原理、多层神经网络结构搭建及训练流程,展示敏…

2026/9/19 0:00:30 阅读更多 →
Transformer训练实时监控实战:基于MindSpore的损失曲线可视化方案

Transformer训练实时监控实战:基于MindSpore的损失曲线可视化方案

上个月调一个Deformable DETR模型,在单卡上要跑将近两天。第二天早上我下意识打开终端翻日志,发现loss从凌晨两点就开始往上爬,一路从0.8涨到1.35,整整六个小时没人发现。那六个小时的训练不仅白跑,还霸占着卡——等于…

2026/9/19 0:00:30 阅读更多 →
OpenCloud 中的 Go 类型安全转换库 spf13/cast:从零值回退到泛型 API 的完整实战指南

OpenCloud 中的 Go 类型安全转换库 spf13/cast:从零值回退到泛型 API 的完整实战指南

OpenCloud 中的 Go 类型安全转换库 spf13/cast:从零值回退到泛型 API 的完整实战指南 【免费下载链接】opencloud 🌤️ OpenCloud is the open source platform for file management, sharing and collaboration. Simple and sovereign. 项目地址: htt…

2026/9/19 0:00:30 阅读更多 →

周新闻

AI SDK Harness 依赖更新指南:掌握 harness 包 SDK 依赖的升级、桥接同步与一致性校验

AI SDK Harness 依赖更新指南:掌握 harness 包 SDK 依赖的升级、桥接同步与一致性校验

AI SDK Harness 依赖更新指南:掌握 harness 包 SDK 依赖的升级、桥接同步与一致性校验 【免费下载链接】ai The AI Toolkit for TypeScript. From the creators of Next.js, the AI SDK is a free open-source library for building AI-powered applications and ag…

2026/9/19 3:59:36 阅读更多 →
Refine v5 Ant Design NumberField 组件实战:基于 Intl 的本地化数字格式化

Refine v5 Ant Design NumberField 组件实战:基于 Intl 的本地化数字格式化

Refine v5 Ant Design NumberField 组件实战:基于 Intl 的本地化数字格式化 【免费下载链接】refine A React Framework for building internal tools, admin panels, dashboards & B2B apps with unmatched flexibility. 项目地址: https://gitcode.com/GitH…

2026/9/19 3:53:08 阅读更多 →
Flutter应用改名全指南:从Android到iOS的配置与工具实践

Flutter应用改名全指南:从Android到iOS的配置与工具实践

刚接一个外包项目时,甲方要求把工程里临时用的应用名改成正式产品名。我本来觉得“改名”这种小事,打开配置文件改一行不就完了?结果真动手才发现,Flutter项目里“应用名称”根本不是一处配置,而是一整套散落在 Androi…

2026/9/19 4:02:43 阅读更多 →

月新闻

持续集成 流水线自动化与 声明式交付 实践:原型怎样变成可用功能

持续集成 流水线自动化与 声明式交付 实践:原型怎样变成可用功能

持续集成 流水线自动化与 声明式交付 实践:原型怎样变成可用功能分类:[AI/大模型]细分主题:AI 增强型 CI/CD 流水线自动化与 GitOps 实践:Agent 工作流、工具调用与任务拆解:从原型到生产的验收清单很多团队在尝试用大…

2026/9/16 22:31:27 阅读更多 →
容器编排 生产环境运维与排障实战:复盘记录怎样真正派上用场

容器编排 生产环境运维与排障实战:复盘记录怎样真正派上用场

容器编排 生产环境运维与排障实战:复盘记录怎样真正派上用场分类:[工程技术]细分主题:Kubernetes 生产环境运维与排障实战:可复制的项目复盘模板与决策记录大部分团队的事故复盘报告,最后都变成了躺在 Confluence 或钉…

2026/9/15 21:39:18 阅读更多 →
容器 容器化技术与镜像安全管理:核心链路应该先拆哪一步

容器 容器化技术与镜像安全管理:核心链路应该先拆哪一步

容器 容器化技术与镜像安全管理:核心链路应该先拆哪一步分类:[工程技术]细分主题:Docker 容器化技术与镜像安全管理:核心链路的逐步实现与关键代码取舍面对一个积累了五六年历史包袱的单体架构应用(包含 Web 接口、后台…

2026/9/16 22:32:59 阅读更多 →