Jmeter快速上手操作

news/2025/11/20 13:41:04/文章来源:https://www.cnblogs.com/luckyletop/p/19246761

JMeter快速上手操作手册
本手册适用于JMeter新手,旨在通过“理论+实操”的形式,帮助快速掌握接口性能测试的核心流程。手册基于JMeter 5.x版本编写,其他版本操作逻辑基本一致。

一、前置准备:环境搭建与工具安装

1.1 核心依赖:JDK安装
JMeter基于Java开发,必须先配置JDK环境,要求JDK 8及以上版本(推荐JDK 11)。
1.下载JDK:从Oracle官网(https://www.oracle.com/java/technologies/downloads/)或OpenJDK官网下载对应系统的JDK安装包。
2.安装JDK:双击安装包,按向导完成安装(建议安装路径不含中文和空格,如D:\Java\jdk11)。
3.配置环境变量:
新建系统变量JAVA_HOME,值为JDK安装根路径(如D:\Java\jdk11)。
4.编辑系统变量Path,添加%JAVA_HOME%\bin和%JAVA_HOME%\jre\bin。
5.验证:打开命令提示符(CMD),输入java -version,若显示JDK版本信息则配置成功。
1.2 JMeter安装与启动
1.下载JMeter:访问Apache JMeter官网(https://jmeter.apache.org/),在“Download”页面下载二进制压缩包(如apache-jmeter-5.6.zip)。
2.解压安装:将压缩包解压到无中文、无空格的路径(如D:\JMeter\apache-jmeter-5.6),解压后即为绿色版,无需安装。
3.启动JMeter:
Windows系统:进入JMeter安装目录的bin文件夹,双击jmeter.bat。
4.Mac/Linux系统:进入bin目录,执行sh jmeter.sh命令。
5.启动验证:启动后会弹出两个窗口——命令行窗口(后台运行,勿关闭)和JMeter图形化界面(操作主界面),界面显示“Apache JMeter”则启动成功。
1.3 界面语言设置(可选)
默认界面为英文,可设置为中文:
1.在JMeter主界面,点击顶部菜单栏“Options”→“Choose Language”→“Chinese (Simplified)”。
2.设置后界面即时切换为中文,部分插件可能仍显示英文,不影响核心使用。

二、核心概念:读懂JMeter核心组件
JMeter测试流程基于“测试计划-线程组-取样器-监听器”的层级结构,核心组件功能如下,后续操作需围绕这些组件展开:
核心组件 功能说明 核心作用
测试计划 JMeter测试的顶层容器,所有测试组件都需放在测试计划下 管理整个测试流程,可配置全局变量、用户定义属性等
线程组 模拟并发用户的核心组件,每个线程代表一个虚拟用户 控制并发数、循环次数、启动时间等负载参数
取样器 发起具体请求的组件(如HTTP请求、JDBC请求) 模拟用户操作,获取系统响应数据
配置元件 辅助配置取样器的参数(如HTTP信息头管理器、用户定义的变量) 简化参数设置,实现数据复用
定时器 控制请求发送的时间间隔(如固定定时器、高斯随机定时器) 模拟真实用户的操作节奏,避免请求集中发送
断言 验证响应结果是否符合预期(如响应断言、JSON断言) 判断请求是否“成功”(不仅是状态码,还包括业务逻辑)
监听器 收集和展示测试结果(如查看结果树、聚合报告) 分析性能指标(响应时间、吞吐量等),定位问题

三、实操步骤:HTTP接口性能测试完整流程
以“百度首页接口”为例,演示从测试计划创建到结果分析的完整流程,核心目标:模拟10个并发用户,循环5次请求百度首页,验证接口性能。
3.1 步骤1:创建测试计划
1.启动JMeter后,默认会自动创建一个“测试计划”,右键点击测试计划,选择“重命名”,改为“百度首页HTTP性能测试”(命名规范:清晰体现测试对象和类型)。
2.测试计划配置(可选):双击测试计划,可设置“用户定义的变量”(如将接口地址设为变量,方便后续修改),此处暂不配置,保持默认。
3.2 步骤2:添加线程组(设置并发负载)
1.右键点击“测试计划”→“添加”→“线程(用户)”→“线程组”。
2.双击线程组,配置核心参数(关键参数已标注):
线程数:设置为10(代表10个并发虚拟用户)。
3.Ramp-Up时间(秒):设置为5(代表10个用户在5秒内逐步启动,避免瞬间高负载,模拟真实场景)。
4.循环次数:设置为5(每个用户循环请求5次,总请求数=10×5=50次);若勾选“永远”,则持续请求直到手动停止。
5.调度器:若需设置测试时长(如持续10分钟),可勾选“调度器”,配置“持续时间”和“启动延迟”,此处暂不勾选。
6.配置完成后,点击“保存”按钮(或按Ctrl+S),将测试计划保存为.jmx文件(如D:\JMeter\TestPlan\baidu_test.jmx),JMeter测试计划均以该格式存储。
3.3 步骤3:添加配置元件(HTTP请求基础配置)
为避免每个HTTP请求重复配置相同参数(如请求头、服务器地址),添加“HTTP信息头管理器”和“HTTP请求默认值”:
3.3.1 添加HTTP信息头管理器
用于设置HTTP请求的头部信息(如Content-Type、User-Agent),模拟浏览器请求:
1.右键点击“线程组”→“添加”→“配置元件”→“HTTP信息头管理器”。
2.双击该元件,点击“添加”按钮,输入以下键值对:
名称:Content-Type,值:application/json;charset=utf-8(适配JSON格式请求,若为表单请求则设为application/x-www-form-urlencoded)。
3.名称:User-Agent,值:Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/118.0.0.0 Safari/537.36(模拟Chrome浏览器)。
3.3.2 添加HTTP请求默认值
用于设置所有HTTP请求的公共参数(如服务器地址、端口),减少重复配置:
1.右键点击“线程组”→“添加”→“配置元件”→“HTTP请求默认值”。
2.双击该元件,配置核心参数:
协议[http]:选择http或https(百度首页为https,此处选https)。
3.服务器名称或IP:输入www.baidu.com(目标服务器地址,无需加http前缀)。
4.端口号:https默认443,http默认80,此处留空即可(JMeter会自动匹配)。
3.4 步骤4:添加取样器(HTTP请求)
取样器是发起请求的核心,此处添加“HTTP请求”取样器,模拟访问百度首页:
1.右键点击“线程组”→“添加”→“取样器”→“HTTP请求”。
2.双击该取样器,配置参数(已在“HTTP请求默认值”中设置的参数可留空):
名称:改为“百度首页请求”(便于识别)。
3.方法:选择GET(百度首页为GET请求,POST请求需额外配置“参数”或“消息体数据”)。
4.路径:输入/(代表访问服务器根路径,即首页;若访问具体接口,如https://api.baidu.com/v1/user,则路径为/v1/user)。
5.参数:百度首页请求无参数,留空;若有参数(如https://www.baidu.com/s?wd=jmeter),则点击“添加”,输入名称wd,值jmeter。
3.5 步骤5:添加断言(验证响应结果)
断言是JMeter中用于验证请求“业务有效性”的核心组件,仅靠HTTP状态码200无法确保业务逻辑正确(如查询接口返回空数据、登录接口返回错误提示等)。本节将详细介绍常用断言的使用方法,满足不同场景的验证需求。
3.5.1 常用断言类型及适用场景
JMeter提供多种断言类型,需根据响应数据格式(文本、JSON、XML等)和验证需求选择,核心类型及适用场景如下:
断言类型 适用场景 核心优势
响应断言 验证文本响应、响应头、URL等包含指定内容(如HTML页面关键词、普通文本接口返回值) 通用性强,配置简单,适合大多数基础场景
JSON断言 验证JSON格式响应中指定节点的值(如接口返回{"code":200,"msg":"success"}) 精准定位JSON节点,支持多种匹配规则,适合RESTful API
XML断言 验证XML格式响应(如SOAP接口返回的XML数据)的节点值或属性 支持XPath表达式,对XML结构数据验证更高效
大小断言 验证响应数据的大小范围(如确保文件下载接口返回数据不小于1KB) 快速判断响应数据完整性,避免空响应或数据缺失
3.5.2 响应断言:文本内容验证(基础)
用于验证响应数据(文本、HTML、普通字符串等)中是否包含或匹配指定内容,以“百度首页接口”为例,验证响应中包含“百度一下”关键词:
1.右键点击“HTTP请求”→“添加”→“断言”→“响应断言”。
2.双击该断言,配置核心参数:响应字段:根据验证目标选择,常用选项包括:

  • 文本响应:验证响应体内容(如HTML页面、普通文本);
  • URL样本:验证请求URL是否符合预期;
  • 响应头:验证响应头信息(如Content-Type是否为text/html)。
    此处选择“文本响应”。
    3.模式匹配规则:根据匹配精度需求选择,核心规则说明:
  • 包含:响应中存在目标字符串即可(最常用,如验证“百度一下”);
  • 匹配:响应内容完全等于目标字符串(需精确匹配,适合固定响应);
  • 相等:与“匹配”功能一致,部分版本兼容性差异;
  • 字符串模糊匹配:支持通配符(如“百度*”匹配“百度一下”“百度搜索”);
  • 正则表达式匹配:支持正则表达式(如“百度\d+”匹配“百度123”)。
    此处选择“包含”。
    4.要测试的模式:点击“添加”,输入目标验证内容(如“百度一下”),需注意与响应内容完全一致(区分中英文空格、大小写)。
    5.否定断言(可选):勾选后表示“响应中不包含目标内容则断言通过”,常用于验证错误场景(如输入无效参数时返回“参数错误”)。
    6.验证效果:测试运行后,若响应中包含“百度一下”则断言通过(请求显示绿色),否则失败(红色),可在“查看结果树”的“断言结果”标签中查看失败原因。
    3.5.3 JSON断言:JSON接口精准验证(重点)
    当接口返回JSON格式数据时(如{"code":200,"data":{"name":"JMeter","version":"5.6"},"msg":"success"}),使用JSON断言可精准定位节点验证,步骤如下:
    1.准备测试场景:假设已添加一个返回JSON数据的HTTP请求(如接口https://api.example.com/tool/info),响应数据如下:{
    "code": 200,
    "msg": "请求成功",
    "data": {
    "name": "Apache JMeter",
    "version": "5.6",
    "status": "active"
    }
    }
    2.添加JSON断言:右键点击该HTTP请求→“添加”→“断言”→“JSON断言”(若未找到该选项,需安装JMeter Plugins插件)。
    3.配置断言参数:JSON Path表达式:输入目标节点的JSON Path路径,用于定位需要验证的字段,常用路径规则:
  • 根节点:$;
  • 一级节点:$.code(定位code字段);
  • 嵌套节点:$.data.name(定位data下的name字段)。
    此处若验证“code”为200,输入“$.code”;若验证“name”为“Apache JMeter”,输入“$.data.name”。
    4.期望值:输入目标节点的预期值(如验证code时输入200,验证name时输入“Apache JMeter”),注意数字类型无需加引号,字符串类型需加英文引号。
    5.匹配规则:选择“等于”“包含”“匹配正则表达式”等,常用“等于”确保字段精准匹配。
    6.预期值是否为空:若需验证节点值为空,勾选此项(无需输入期望值),反之取消。
    7.进阶配置:若需同时验证多个JSON节点,可添加多个JSON断言(一个断言对应一个节点),确保每个业务字段都符合预期。
    3.5.4 XML断言:XML格式响应验证
    适用于SOAP接口或返回XML数据的接口(如响应200success),核心步骤:
    1.添加XML断言:右键点击HTTP请求→“添加”→“断言”→“XML断言”。
    2.配置参数:XPath表达式:输入定位节点的XPath路径(如定位code节点输入“/root/code”)。
    3.预期值:输入节点的预期内容(如200)。
    4.忽略命名空间:若XML中包含命名空间,勾选此项可避免定位失败。
    3.5.5 大小断言:响应数据完整性验证
    用于验证响应数据的字节大小,确保接口返回数据完整(如文件下载接口、数据列表接口),步骤:
    1.添加大小断言:右键点击HTTP请求→“添加”→“断言”→“大小断言”。
    2.配置参数:响应字段:选择“响应数据”(验证响应体大小)或“响应头”(验证响应头大小)。
    3.条件:选择大小关系(如“大于”“小于”“等于”“大于等于”等)。
    4.大小(字节):输入目标大小数值(如验证响应不小于1024字节,选择“大于等于”,输入1024)。
    3.5.6 断言使用注意事项
    •断言作用范围:默认断言仅作用于当前HTTP请求,若需作用于线程组内所有请求,可将断言添加到线程组下(而非单个请求下)。
    •失败原因排查:请求失败时,在“查看结果树”的“断言结果”标签中可查看具体失败信息(如“未找到目标字符串”“JSON节点值不匹配”),据此定位问题。
    •性能影响:断言会消耗一定资源,正式性能测试时,非必要的调试性断言(如仅验证关键词的响应断言)可暂时禁用,避免影响测试结果准确性。
    •优先级:若添加多个断言,需确保断言逻辑无冲突,JMeter会按添加顺序执行所有断言,全部通过则请求成功,任意一个失败则请求失败。
    断言用于判断请求是否“业务成功”(不仅是状态码200),此处验证百度首页响应中是否包含“百度一下”关键词:
    1.右键点击“HTTP请求”→“添加”→“断言”→“响应断言”。
    2.双击该断言,配置参数:
    响应字段:选择“文本响应”(验证响应内容)。
    3.模式匹配规则:选择“包含”(判断响应中是否包含目标字符串)。
    4.要测试的模式:点击“添加”,输入“百度一下”(目标关键词,需与响应内容完全一致)。
    3.6 步骤6:添加监听器(收集与分析结果)
    监听器是查看测试结果的核心,推荐添加“查看结果树”(调试用)和“聚合报告”(性能分析用):
    3.6.1 添加查看结果树
    用于查看每个请求的详细信息(请求参数、响应内容、状态码等),适合调试:
    1.右键点击“线程组”→“添加”→“监听器”→“查看结果树”。
    2.配置说明:测试运行后,可在该组件中选择“请求”查看发送的参数,选择“响应数据”查看服务器返回的内容,红色记录代表请求失败(断言不通过或状态码错误),绿色代表成功。
    3.6.2 添加聚合报告
    用于展示性能核心指标,是性能分析的核心依据:
    1.右键点击“线程组”→“添加”→“监听器”→“聚合报告”。
    2.核心指标说明(测试运行后显示):
    样本:总请求数(此处应为50次)。
    3.平均值:所有请求的平均响应时间(单位:毫秒,越小越好)。
    4.中位数:50%的请求响应时间小于该值(更贴近真实用户体验)。
    5.90%百分位:90%的请求响应时间小于该值(重点关注,代表大多数用户的体验)。
    6.95%百分位:95%的请求响应时间小于该值(性能达标线常用指标)。
    7.99%百分位:99%的请求响应时间小于该值(极端用户体验)。
    8.最小值:最短响应时间。
    9.最大值:最长响应时间。
    10.异常%:请求失败率(断言不通过或状态码错误,应为0%,否则需排查问题)。
    11.吞吐量:单位时间内的请求数(单位:请求/秒,越大越好)。
    3.7 步骤7:运行测试与分析结果
    1.点击JMeter顶部工具栏的“启动”按钮(绿色三角形图标),测试开始运行,命令行窗口会显示运行日志,线程组名称旁会显示“运行中”状态。
    2.等待测试完成(线程组运行结束后,“运行中”状态消失),查看监听器结果:
    查看结果树:确认所有请求为绿色,无红色失败记录。
    3.聚合报告:重点关注“异常%”(需为0%)、“95%百分位”(根据业务需求判断是否达标,如要求≤500ms)和“吞吐量”(越大越好)。
    4.若出现失败请求(红色记录),排查思路:查看结果树的“断言结果”标签,明确是哪个断言失败及具体原因;
    5.查看“响应数据”,确认接口返回内容是否与预期一致(如JSON节点值错误、文本关键词缺失);
    6.检查断言配置(如JSON Path路径是否正确、模式匹配规则是否误选、期望值是否拼写错误);
    7.检查HTTP请求参数(如路径、方法、参数是否正确,避免因请求错误导致响应异常)。
    8.检查断言配置,确认“要测试的模式”与响应内容一致。
    9.检查HTTP请求参数(如路径、方法、参数是否正确)。

四、进阶技巧:提升测试效率
4.1 变量与参数化
当需要模拟多个不同用户请求(如不同手机号登录)时,可使用“用户定义的变量”或“CSV数据文件设置”实现参数化:
•用户定义的变量:适合少量固定参数,在测试计划或线程组下添加,使用${变量名}引用。
•CSV数据文件设置:适合大量参数(如100个手机号),将参数存为CSV文件(如user.csv),通过该组件读取,实现“一行数据一个请求”。
4.2 定时器使用
默认情况下,线程会连续发送请求,不符合真实场景,可添加定时器控制请求间隔:
•固定定时器:每个请求间隔固定时间(如1000毫秒,即1秒),右键线程组→添加→定时器→固定定时器。
•高斯随机定时器:请求间隔在固定值附近波动(如平均1秒,波动±0.2秒),更贴近真实用户操作。
4.3 命令行运行(推荐)
图形化界面仅用于编写测试计划和调试,正式性能测试时建议用命令行运行(减少界面资源占用,避免性能干扰):
1.打开CMD,进入JMeter的bin目录。
2.执行命令:jmeter -n -t 测试计划路径 -l 结果文件路径-n:以命令行模式运行。
3.-t:指定测试计划文件(.jmx)路径,如D:\JMeter\TestPlan\baidu_test.jmx。
4.-l:指定结果文件(.jtl)路径,如D:\JMeter\Result\baidu_result.jtl(运行后生成,可在图形化界面中通过监听器打开分析)。
5.运行完成后,在指定路径找到.jtl文件,在JMeter中右键监听器→“浏览”,选择该文件即可查看结果。

五、常见问题与解决方案
常见问题 解决方案
启动JMeter时提示“找不到JDK” 1. 检查JAVA_HOME环境变量是否配置正确;2. 确认JDK版本与JMeter兼容(JMeter 5.x需JDK 8+);3. 重启CMD或JMeter。
请求状态码200,但断言失败 1. 查看结果树的“响应数据”,确认断言关键词是否存在;2. 检查断言的“模式匹配规则”是否正确(如是否误选“等于”);3. 排除响应内容中的空格、换行干扰。
命令行运行报错“文件不存在” 1. 确认测试计划路径(-t参数)和结果文件路径(-l参数)是否正确;2. 路径中避免中文和空格;3. 若路径含空格,需用双引号包裹(如"-t D:\JMeter Test\test.jmx")。
吞吐量低、响应时间长 1. 检查服务器是否存在性能瓶颈(CPU、内存、带宽);2. 确认JMeter运行环境是否充足(避免与其他占用资源的程序同时运行);3. 检查测试计划是否添加了不必要的组件(如过多监听器)。
六、学习资源推荐
•官方文档:Apache JMeter官网“Documentation”板块(最权威,包含所有组件详细说明)。
•社区资源:JMeter中文网、CSDN、知乎等平台,可搜索“JMeter参数化”“JMeter关联”等进阶主题。
•插件扩展:JMeter Plugins(https://jmeter-plugins.org/),提供更多高级组件(如服务器监控、复杂报表)。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/970972.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

TalentsAI ——专家级大模型数据标注平台

TalentsAI 是一家由顶级基金投资、由头部大模型团队骨干与上市公司高管联合创立的专家级数据标注平台。 平台专注于利用全球专业人士的知识与深度经验,为新一代人工智能模型提供高质量、高可信度的专家数据,帮助 AI …

“省着用”,反而坏的越快?

一款在欧洲销量与口碑双丰收的家用搅拌机,决定进军全球市场。凭借过往的优秀数据,公司对这款“功勋产品”充满信心。 然而,销售不久,一盆冷水当头泼下:客户投诉率急剧上升,而绝大部分问题,都指向了电机烧毁。 初…

python requirements.txt

pip install pipreqs生成 requirements.txt 文件pipreqs ./ --encoding=utf8 --force安装依赖pip install -r requirements.txt

完整教程:Redis 特性/应用场景/通用命令

pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …

详解Dependency-Check中如何 使用suppression.xml 忽略某些已评估为低风险或不可利用的漏洞 - 指南

pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …

unbuntu ssh输入密码无效

ssh jzrobot@192.168.10.149 密码不显示而已,实际已经输入成功

Why does Africa have a much larger population than the UK, but the USA has more English men.

Americans treat Africans what carnivores do to herbivores. The Indians, on the other hand, were completely exterminated, because they even can not contribute English any nutritions.

2025年11月云南昆明心脑血管医院最新推荐,聚焦资质、疗效、服务的五家机构深度解读与选择指南!

心脑血管疾病诊疗需求持续增长,优质医疗机构的筛选成为患者关注核心。本次推荐基于国际心脑血管诊疗协会(ISCC)测评标准,结合多维度交叉验证体系,确保结果权威可靠。测评首先核查机构资质,包括医保定点资格、近 …

余氯水质分析仪厂家推荐:总氮/总磷/氨氮水质分析仪采购指南

在当今社会,随着环境保护意识的日益增强,水质安全问题成为了公众关注的焦点。为了确保水质的安全与卫生,对水中各种关键指标进行准确、及时的检测显得尤为重要。其中,余氯、总氮、总磷以及氨氮等参数不仅是衡量水质…

锁:lock、Monitor、SemaphoreSlim

锁:lock、Monitor、SemaphoreSlimPosted on 2025-11-20 13:26 懒得理 阅读(0) 评论(0) 收藏 举报一、lock关键字是C#提供的一个语法糖,底层基于System.Threading.Monitor。用于确保同一时间只有一个线程可以执行…

完整教程:ASP.NET MVC 前置基础:宿主环境 HttpRuntime 管道,从部署到流程拆透(附避坑指南)

完整教程:ASP.NET MVC 前置基础:宿主环境 & HttpRuntime 管道,从部署到流程拆透(附避坑指南)pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: blo…

08_TCP服务器:一请求一线程 epoll

一. TCP的服务器基础部门, 网络编程 并发服务器: 1)一请求一线程 2)IO多路复用, epoll TCP服务器百万连接:将在 09_百万并发服务器进行介绍。二. 服务器:前台迎宾 --> listen; 服务员 --> clientfd 多个客户…

真正的宝藏都藏在小众软件里,这 6 个强到怀疑人生!

你有没有这种感觉: 电脑明明配置不错,但每天用起来就是不顺手—— 找文件慢、窗口乱、操作重复、不够高效、工具不贴心…… 很多人会以为是电脑问题,其实不是。 往往是你没遇到那些“真正的宝藏软件”。 不是那些大…

【Spring Boot 报错已解除】别让端口配置卡壳!Spring Boot “Binding to target failed” 报错解决思路

pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …

水质COD测定仪品牌厂家推荐:便携式COD测定仪/快速COD测定仪详解

在当今社会,随着环境保护意识的日益增强,水质监测成为了关乎生态健康与人类福祉的重要议题。化学需氧量(COD)作为衡量水体污染程度的关键指标之一,其准确测定对于评估水质状况、指导污水处理及保护水环境具有不可…

2025年11月托福一对一机构哪家强?名师定制/精准提分/个性化辅导机构推荐

2025年11月托福一对一机构哪家强?名师定制/精准提分/个性化辅导机构推荐随着留学申请竞争的日趋激烈,托福成绩作为核心申请指标,其提分需求呈现精细化、个性化趋势。托福一对一课程因能精准匹配学员基础、针对性解决…

【第7章 I/O编程与异常】Python异常捕获终极指南:哪些能拦、哪些拦不住?(通俗+深度双解析)

Python异常捕获终极指南:哪些能拦、哪些拦不住?(通俗+深度双解析) 在Python编程中,try-except 是保障程序健壮性的核心机制,就像给程序装了“智能安全盾”——能精准拦截预期内的错误,却挡不住底层逻辑漏洞或系…

STM32学习(MCU控制)(USART) - 指南

STM32学习(MCU控制)(USART) - 指南2025-11-20 13:05 tlnshuju 阅读(0) 评论(0) 收藏 举报pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !…

DeepSeek-OCR本地部署教程:DeepSeek突破性开创上下文光学压缩,10倍效率重构文本处理范式 - 教程

pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …