当前位置: 首页 > news >正文

Jmeter使用介绍

文章目录

  • 前言
  • Jmeter简介
    • 安装与配置
      • JDK安装与配置
      • JMeter安装与配置
    • 打开JMeter
      • 方式一
      • 方式二
    • 设置Jmeter语言为中文
      • 方法一(仅一次性)
      • 方法二(永久设置成中文)
    • Jmeter文件常用目录
  • 元件与组件
    • 元件
    • 组件
    • 元件的作用域
    • 元件的执行顺序
    • 第一个案例
      • 添加线程组
      • 添加 HTTP 请求
      • 添加查看结果树
      • 响应结果乱码问题
    • 线程组
      • 并行与串行
      • 线程组的分类
      • 线程组参数详解
    • HTTP请求
      • HTTP请求参数详解
    • 查看结果树
    • HTTP信息头管理器
    • HTTP请求默认值
    • HTTP Cookie管理器(HTTP Cookie Manager)
    • 参数化
      • 用户定义变量(全局变量)
      • 用户参数
      • CSV数据文件方式
        • CSV数据文件设置参数详解
    • 函数
      • 计数器${__counter(,)}
    • 断言
      • 响应断言
      • JSON断言
      • 断言持续时间
    • Jmeter关联
      • 正则表达式提取器
      • XPath提取器
      • JSON提取器
      • Jmeter属性
    • Jmeter录制脚本(仅作介绍)
    • Jmeter直连数据库
    • 逻辑控制器
      • 如果(if)控制器
      • 循环控制器
      • Foreach控制器
    • 定时器
      • 同步定时器
      • 常数吞吐量定时器
      • 固定定时器
  • 参考目录


前言

阅读本文前请注意最后编辑时间,文章内容可能与目前最新的技术发展情况相去甚远。欢迎各位评论与私信,指出错误或是进行交流等。


Jmeter简介

JMeter是一个纯Java编写的开源软件,主要用于进行接口测试和性能测试。它支持测试的应用/服务/协议包括Web (HTTP, HTTPS)、SOAP/REST Webservices、FTP、Database via JDBC等。我们最常使用的是HTTP和HTTPS协议。

安装与配置

JDK安装与配置

因为jmeter是java开发的,所以运行的时候必须先要安装jdk才可以。请注意,Jmeter对于JDK的版本有一定的要求,可以在下文Jmeter下载地址中查看,一般要求Java 8+。关于JDK的安装与配置请各位自行资料,网上已有图片配合的详细安装教程。

JMeter安装与配置

下载地址:Apache JMeter - Download Apache JMeter

在这里插入图片描述

打开JMeter

注意:不管用使用哪一种方式打开,都会打开一个cmd窗口。如果关闭这个cmd窗口,打开的jmeter也会被关闭。

方式一

Jmeter下载后无需安装,解压后即可使用。解压后到其apache-jmeter/bin目录如下,双击jmeter.bat 即可以运行。
在这里插入图片描述

方式二

配置环境变量,利用cmd控制台打开Jmeter。有需求的朋友请自行上网查阅资料进行配置。

设置Jmeter语言为中文

虽然Jmeter自带的翻译并不准确,但由于网上大部分的博客以及学习资料都是中文语言的Jmeter。因此,建议将Jmeter设置为中文。

方法一(仅一次性)

在这里插入图片描述

方法二(永久设置成中文)

找到jmeter下的bin目录,打开jmeter.properties 文件
在这里插入图片描述
第三十七行,修改为language=zh_CN,并去掉前面的#。重新启动Jmeter即可
在这里插入图片描述

Jmeter文件常用目录

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

元件与组件

Jmeter进行接口测试和性能测试,并不是使用代码来实现。而是使用已经封装好的元件和组件进行操作。

元件

元件:多个具有类似功能的组件的容器(集合,类似于面向对象中的类)
在这里插入图片描述
Jmeter中的元件按功能分为这么多类,如上图所见。例如 取样器元件,其中的组件主要功能都是发送请求。

组件

组件:实现独立的某个功能(类似于方法)
在这里插入图片描述
例如,取样器中的组件都是用于发送请求的。但HTTP请求是用于发送HTTP请求的,JDBC Request组件是用于连接数据库 并进行发送请求的。

元件的作用域

在这里插入图片描述
图中,如果(if)控制器与线程组3是父子关系。该如果(if)控制器只会对其父节点
如图,如果(if)控制器是HTTP请求2的父节点会对其起作用。注:如果(if)控制器属于逻辑控制器元件,HTTP请求属于取样器元件。

固定定时器是HTTP请求3的子节点,该定时器只对HTTP请求3起作用。
固定定时器1的父节点是线程组(并不是取样器),那么其作用域就是该线程组下的所有节点。

图中的例子仅供理解与学习,现实的脚本设计不会如此混乱。

元件的执行顺序

在这里插入图片描述

第一个案例

在这里插入图片描述

添加线程组

右键点击“测试计划” -> 添加 -> 线程(用户) -> 线程组,添加测试需要的线程组
在这里插入图片描述

添加 HTTP 请求

JMeter的HTTP请求是测试中常用的功能,用于模拟用户向服务器发送HTTP请求并获取响应。

右键点击线程组 -> 添加 -> 取样器 -> HTTP请求,添加一个HTTP请求
在这里插入图片描述
点击HTTP请求,输入请求所需信息 http://www.baidu.com/s?ie=utf-8&wd=jmeter 参考下图
在这里插入图片描述

添加查看结果树

JMeter 的结果查看树用于查看和分析HTTP请求的响应结果。

右键点击线程组 -> 添加 -> 监听器 -> 查看结果树,添加一个查看结果树
在这里插入图片描述
将查找下方的响应数据格式改为 HTML Source Formatted(自行指定响应数据的展现格式),点击上方的绿色三角按钮,运行http请求

运行结果如下

取样器结果
在这里插入图片描述
HTTP响应体内容为,搜索返回结果页面标题为“JMeter性能测试_百度搜索”,与之前设置的查询参数相吻合。
在这里插入图片描述

响应结果乱码问题

在这里插入图片描述

注:从此处开始介绍一些常用的元件和组件,其余没有提到的元件和组件可自行查阅资料和查看Jmeter自带文档学习

线程组

作用:控制JMeter将用于执行测试的线程数,也可以把一个线程理解为一个测试用户。
在这里插入图片描述

并行与串行

在这里插入图片描述
如上图可知,我们设置了三个线程组。且内部有不同的HTTP请求,从执行结果来看。HTTP请求发送顺序是随机的,并不是按照从上到下的顺序。因此,多个线程组默认是并行的。

在这里插入图片描述
点击测试计划,勾选独立运行每个线程组(例如在一个组运行结束后启动下一个),即可实现串行。

线程组的分类

在这里插入图片描述
即,Setup线程组会在其他所有线程组之前执行,Teardowm会在其他所有线程组之后执行。

线程组参数详解

在这里插入图片描述

HTTP请求

作用:向服务器发送HTTP和HTTPS请求
位置:选中线程组->右键->添加->取样器->HTTP请求

HTTP请求参数详解

在这里插入图片描述
在这里插入图片描述
注:如果要一次性添加多个参数,可以将参数的键值对复制到剪切板,点击窗口最下方的从剪切板添加按钮即可批量添加参数。

查看结果树

作用:查看HTTP请求的请求和响应结果
位置:选中测试计划/线程组->右键->添加->监听器->查看结果树
注:对于取样结果 尤其是响应数据 我们可以通过切换数据展现方式进行查看,例如图中默认的是Text方式,可以点击切换成想要的方式 例如HTML Json等格式
在这里插入图片描述

HTTP信息头管理器

作用:给HTTP请求添加请求头信息,信息头即请求头。
位置:点击HTTP请求->右键->添加->配置元件->HTTP信息头管理器

添加方式与HTTP请求的查询参数方式相同, 也是用键值对的方式表示。

HTTP请求默认值

作用:针对HTTP请求中的相同部分(例如:协议、IP地址、端口、编码格式)进行统一设置
位置:测试计划->右键->添加->配置元件->HTTP请求默认值
在这里插入图片描述

HTTP Cookie管理器(HTTP Cookie Manager)

作用:如果你有一个 HTTP 请求,其返回结果里包含一个 cookie,那么 Cookie 管理器会自动将该 cookie 保存起来,而且以后所有的对该网站的请求都使用同一个 cookie
位置:右键 -> 添加 -> 配置元件 -> HTTP Cookie管理器
在这里插入图片描述

选项(Options)

(1)每次反复清除Cookies?:每次迭代时,都将 Cookies 清空

(2)Use Thread Group configuration to control cookie clearing:用户线程组去配置清空 Cookie

(3)Cookie 格式

standard:标准格式

standard-strict:严格格式

ignoreCookies:此规格忽略所有 Cookie。被用来防止 HttpClient 接受和发送的 Cookie

netscape:是最原始的 Cookies 规范,同时也是 RFC2109 的基础。尽管如此,还是在很多重要的方面与 RFC2109 不同,可能需要特定服务器才可以兼容

default:默认

rfc2109:是 HttpClient 使用的默认 Cookies 协议

rfc2965:定义了版本2并且尝试去弥补在版本1中 Cookie 的 rfc2109 标准的缺点。规定 rfc2965 最终取代 rfc2109 发送 rfc2965 标准 Cookies 的服务端,将会使用 Set-Cookie2 header 添加到 Set-Cookie Header 信心中,rfc2965 Cookies 是区分端口的

compatibility:推荐选择此种策略。这种兼容性设计要求是适应尽可能多的不同的服务器,尽管不是完全按照标准来实现的。如果你遇到了解析 Cookies 的问题,你就可能要用到这一个规范。有太多的 web 站点是用 CGI 脚本去实现的,而导致只有将所有的 Cookies 都放入 Request header 才可以正常的工作。这种情况下最好设置 http.protocol.single-cookie-header 参数为 true

存储在Cookie管理器中的Cookie:表示已经存储的Cookie,用户也可以手动添加

参数化

参数化测试:把测试数据组织起来,用不同的测试数据调用相同的测试方法,实现测试数据与测试方法的分离。

用户定义变量(全局变量)

作用:定义全局变量
位置:测试计划/线程组–>配置元件–>用户定义的变量

变量声明也是用键值对的方式表示。
在这里插入图片描述

使用方法:在需要变量处,使用${变量名}引用。
在这里插入图片描述

用户参数

假设有多个用户同时请求, 每个用户在登录请求时需要不同的用户名和密码进行登录,可以使用用户参数。

作用:针对同一种方法,当不同的用户来访问时,可以获取到不同的值。
位置:线程组–>前置处理器–>用户参数

在这里插入图片描述
添加变量(变量可多个),用户即是变量的值。
在这里插入图片描述
由于有两个用户,我们将线程组的线程数改为2,模拟两个用户。
在这里插入图片描述
随后建立HTTP请求,访问百度。并在参数中引用用户参数,使用方法也是${变量名}。
创建查看结果数后运行。
在这里插入图片描述
在这里插入图片描述
从结果看,一共发送了两次请求,两次请求引用的参数分别就是设置好的两个用户参数。

CSV数据文件方式

作用:在多次循环中,取到不同的值。
位置:线程组—>配置元件—>CSV数据文件设置(CSV Data Set Config)

CSV数据文件设置参数详解

在这里插入图片描述
使用步骤:

  1. 定义csv文件
    在这里插入图片描述

  2. 添加线程组,设置循环次数为3(根据CSV文件的行数来确定,该例子为3)
    在这里插入图片描述

  3. 添加CSV数据文件设置,文件名选择CSV文件路径即可。变量名称用于Jmeter中引用,可自行指定,并不要求与CSV文件中的严格相同。由于我们定义的CSV首行是数据,所以不忽略首行。分隔符CSV文件中使用的是逗号
    在这里插入图片描述

  4. 添加HTTP请求并引用参数,引用参数的方法同样是${变量名}
    在这里插入图片描述

  5. 添加查看结果数并执行

函数

Jmeter内部已定义好了一些函数供用户使用,函数格式为双下划线开头,后面跟着函数名称,且函数名称严格区分大小写。

位置:Jmeter菜单栏->工具->函数助手对话框

以下为一些常用的函数
${__counter(,)} 计数器
${__dateTimeConvert(,)} 时间格式转换
${__digest(,)} 加密 简单加密 *****
${__intSum(,)} 整数相加函数
${__P(,)} 获取属性函数 *****
${__property(,)} 获取属性函数 *****
${__setProperty(,)} 设置属性函数 *****
${__Random(,)} 随机数
${__RandomString(,)} 随机字符串
${__threadNum} 获取线程号函数
${__time(,)} 获取当前时间戳函数 *****
${__timeShift(,)} 数据格式化
${__V(,)} 拼接函数 *****

本文以计数器函数为例进行介绍,其他函数以及具体用法可以参考网络资料以及Jmeter自带的文档。

计数器${__counter(,)}

在函数助手对话框中选择counter函数,点击生成,即可获得计数器函数表达式${__counter(,)}。且生成了一个从1开始的计数器函数,初始值从1开始
在这里插入图片描述
添加一个访问百度的HTTP请求,且引用计数器函数。使用方法在参数中直接引用
${__counter(,)},并将线程组循环次数进行调整。此处例子将循环次数设置为10
在这里插入图片描述
点击执行并查看结果,从结果树中我们可以看到。进行了10次请求,且每次引用的参数即计数器函数每次递增。
在这里插入图片描述

注意:计数器函数每次递增只能加1,若想用递增加2或递增更多的时候,需要使用配置原件中的 “计数器”;

断言

断言:让程序自动判断实际结果是否与预期结果一致

响应断言

作用:对HTTP请求的任意格式的响应结果进行断言
位置:测试计划->线程组->HTTP请求->右键->添加->断言->响应断言

在这里插入图片描述
在这里插入图片描述
忽略状态是复选框,由于Jmeter会自动判断状态码,并将例如400等状态码判为错误。假如我们就是要模拟错误,就选择忽略状态。
在这里插入图片描述
在这里插入图片描述
如果填写了多个预期结果,他们是逻辑与的关系。

JSON断言

作用:对HTTP请求的JSON格式的响应结果进行断言
位置:测试计划->线程组->HTTP请求->右键->添加->断言->JSON断言
在这里插入图片描述
在这里插入图片描述
Assert JSON Path exists:填写JSON元素所在的路径,$为根节点。例 $.weatherinfo.city,断言根节点下的weatherinfo节点,weatherinfo节点下的city节点值。

Additionally assert value:勾选之后,才能填写Expected Value(期望值)。即JSON节点的值与期望值进行对比是否相等,如果此外还勾选了Match as regular expression,则在期望值框里输入正则表达式,进行对比结果。

断言持续时间

作用:测试HTTP请求的响应时间是否满足需求
位置:测试计划->线程组->HTTP请求->右键->添加->断言->断言持续时间
在这里插入图片描述

Jmeter关联

当请求之间有关联, 比如一个请求的参数是另一个请求的响应数据,这时候就需要用到关联处理来进行提取响应数据中的值。

正则表达式提取器

作用:针对任意格式的响应结果进行提取
位置:测试计划->线程组->HTTP请求->右键->添加->后置处理器->正则表达式提取器

关于正则表达式如何书写,有需要的朋友请自行上网查阅。此外,可以用网页版的正则表达式测试器来判断自己所书写的正则表达式是否正确。

在这里插入图片描述
在这里插入图片描述
模板中提到的正则表达式中的多个提取值,指的是 如果正则表达式中有多个(),也就是一次匹配中提取多个值,要取第一个()中的值,就填写数字几 且前后用$符号。

匹配数字指的是,正则表达式匹配到多组数值,取多组数值中的哪一个。
假如有多组数据,匹配数字为-1,那就是全部取值,那么引用参数中存储的是一个列表形式,
在引用列表中其中一个参数,格式是${变量名_索引}

XPath提取器

作用:针对HTML格式的响应数据进行提取
位置:测试计划->线程组->HTTP请求->右键->添加->后置处理器->XPath提取器
在这里插入图片描述
在这里插入图片描述

JSON提取器

作用:针对JSON格式的响应数据进行提取
位置:测试计划->线程组->HTTP请求->右键->添加->后置处理器->JSON提取器
在这里插入图片描述
在这里插入图片描述

Jmeter属性

作用:当有关联的两个请求不在同一个线程组中时,可以使用Jmeter属性进行数据传递。
位置:测试计划->线程组->右键->添加->取样器->BeanShell取样器

要使用BeanShell取样器进行属性设置, 要搭配其他的提取器和函数助手进行使用。
工作流程:提取器将数据提取后保存到变量中,通过_setProperty函数将提取器提取的变量值保存到Jmeter属性中,在要使用该Jmeter属性的地方通过_property函数引用。
在这里插入图片描述
设置函数_setProperty,这里表示Jmeter属性的变量名称为pro_city,其值为${city}(该值一般由提取器提取),点击生成函数。
在这里插入图片描述
使用函数_property,在属性名称中输入要使用的Jmeter属性,点击生成即可。The result of the function is 表示pro_city中值是什么。

操作步骤

  1. 添加线程组1
  2. 在线程组1下添加HTTP请求
  3. 添加JSON提取器(仅作演示)将HTTP请求响应结果 提取存为变量city
  4. 添加BeanShell取样器 利用函数_setProperty,将JSON提取器变量city 设置为Jmeter属性
    在这里插入图片描述
  5. 添加线程组2
  6. 在线程组2下添加HTTP请求(并读取Jmeter属性)

在这里插入图片描述

Jmeter录制脚本(仅作介绍)

用于在没有API文档时,编写HTTP请求。Jmeter作为代理服务器,拦截和转发请求与响应数据。(功能与抓包工具一样)

在这里插入图片描述
在这里插入图片描述

Jmeter直连数据库

使用场景

  1. 请求需要的参数, 从数据库中获取
  2. 断言的预期结果从数据库中获取
  3. 清理接口测试后所留下的测试数据
  4. 通过数据库获取大量的测试数据

操作步骤,以mysql数据库为例
在这里插入图片描述
位置:测试计划->线程组->右键->添加->配置元件->JDBC Connection Configuration
在这里插入图片描述
在这里插入图片描述
Password:连接数据库密码,如实填写
配置完成后,相当于连接数据库成功,接下来就要执行SQL语句。

添加JDBC请求
位置:测试计划->线程组->右键->添加->取样器->JDBC Request
在这里插入图片描述
在这里插入图片描述
通过JDBC Request的SQL语句将返回结果存在变量里,在要使用的地方通过${变量名_索引}的方式进行引用

逻辑控制器

如果(if)控制器

作用:控制它下面的Jmeter组件是否运行
位置:测试计划->线程组->右键->添加->逻辑控制器->if控制器
在这里插入图片描述
利用JS语法的方式书写,表示判断 变量name是否等于itcast 且注意要加双引号 并不勾选下面的Interpret Condition as Variable Expression

在这里插入图片描述

循环控制器

作用:通过设置循环次数,实现循环发送请求
位置:测试计划->线程组->右键->添加->逻辑控制器->循环控制器
在这里插入图片描述
思考:线程组也可以设置循环次数,为什么还要使用循环控制器?
答:线程组会使其下的所有HTTP请求循环一定次数,循环控制器会使其下的HTTP请求循环一定次数。他们两的作用范围不同,循环控制器可实现更精准的范围控制。
此外,假设线程组设置了循环M次, 其下循环控制器又设置了循环N次, 那么循环控制器下的HTTP请求会循环执行 M*N 次

Foreach控制器

作用:遍历变量中的值(值以列表的方式存在),搭配正则表达式提取器等进行使用。
位置:测试计划->线程组->右键->添加->逻辑控制器->Foreach控制器
在这里插入图片描述
由上文的正则表达式提取器内容可知,如果变量值是列表形式,那么使用其中的某个值则是${变量名_索引}。所以 变量名即是输入变量前缀,且在提取的时候要添加下划线。因此需要勾选Add’_’ before number ?

如果列表是用户自定义的数据,没有下划线 而是${变量名索引}的方式 那就取消勾选。

要循环使用Foreach控制器提取的变量 通过${输出变量名称}引用

定时器

同步定时器

作用:先阻塞线程,当在规定时间内达到一定的线程数量后,这些线程会在同一时间点一起释放,瞬间产生很大的压力,用于模拟高并发场景。
位置:测试计划->线程组->右键->添加->定时器->Synchronizing Timer
在这里插入图片描述
在这里插入图片描述
此处,设置的并发线程数应该为小于等于线程数n,如果大于的话 则取n。

常数吞吐量定时器

作用:让Jmeter按照指定的吞吐量执行, 以每分钟为单位,大多用于模拟系统稳定运行下的吞吐量,进行稳定测试。
位置:测试计划->线程组->右键->添加->定时器->Constant Throughout Timer
在这里插入图片描述

固定定时器

作用:让其父节点等待设定的时间后运行。
位置:测试计划->线程组->右键->添加->定时器->固定定时器
在这里插入图片描述

本文关于Jmeter的部分使用介绍就到此为此了, 关于更多的Jmeter使用方法请各位自行查阅资料,或者参考Jmeter自带文档。


参考目录

https://blog.csdn.net/u014045237/article/details/143368211
https://blog.csdn.net/cool_tao6/article/details/142441207
https://blog.csdn.net/qq_45138120/article/details/130478599
https://www.bilibili.com/video/BV12Q4y1C7Wf
https://www.bilibili.com/video/BV19Q4y167Qo
https://www.bilibili.com/video/BV1Ne411M7Gb

相关文章:

Jmeter使用介绍

文章目录 前言Jmeter简介安装与配置JDK安装与配置JMeter安装与配置 打开JMeter方式一方式二 设置Jmeter语言为中文方法一(仅一次性)方法二(永久设置成中文) Jmeter文件常用目录 元件与组件元件组件元件的作用域元件的执行顺序第一个案例添加线程组添加 H…...

【商城实战(13)】购物车价格与数量的奥秘

【商城实战】专栏重磅来袭!这是一份专为开发者与电商从业者打造的超详细指南。从项目基础搭建,运用 uniapp、Element Plus、SpringBoot 搭建商城框架,到用户、商品、订单等核心模块开发,再到性能优化、安全加固、多端适配&#xf…...

Spring使用@Scheduled注解的参数详解

在现代Java开发中,定时任务是一个常见的需求。Spring框架提供了Scheduled注解,让我们能够以简单、直观的方式定义和管理这些定时任务。接下来,我们来深入探讨这个注解的使用,以及它的参数都有哪些含义和作用。 Scheduled注解可以…...

【网络】HTTP协议、HTTPS协议

HTTP与HTTPS HTTP协议概述 HTTP(超文本传输协议):工作在OSI顶层应用层,用于客户端(浏览器)与服务器之间的通信,B/S模式 无状态:每次请求独立,服务器不保存客户端状态(通过Cookie/Session扩展状态管理)。基于TCP:默认端口80(HTTP)、443(HTTPS),保证可靠传输。请…...

【Windows下Gitbook快速入门使用】

Windows下Gitbook快速入门使用 1 工具安装1.1 Node.js下载安装1.1 环境变量1.2 npm配置1.3 安装gitbook 2 gitbook使用2.1 gitbook 无法执行2.2 gitbook常用命令 Gitbook是一个软件,使用Git和Markdown来编排书本; GitBook helps you pushlish beautiful …...

创建Electron35 + vue3 + electron-builder项目,有很过坑,记录过程

环境: node v20.18.0 npm 11.1.0 用到的所有依赖: "dependencies": {"core-js": "^3.8.3","vue": "^3.2.13","vue-router": "^4.5.0"},"devDependencies": {"ba…...

FPGA 实验报告:四位全加器与三八译码器仿真实现

目录 安装Quartus软件 四位全加器 全加器、半加器 半加器: 全加器: 四位全加器电路图 创建项目 半加器 全加器 四位全加器 代码实现 半加器 全加器 四位全加器 三八译码器 创建项目 代码展示 modelsim仿真波形图 四位全加器 三八译码…...

动态规划详解(二):从暴力递归到动态规划的完整优化之路

目录 一、什么是动态规划?—— 从人类直觉到算法思维 二、暴力递归:最直观的问题分解方式 1. 示例:斐波那契数列 2. 递归树分析(以n5为例) 3. 问题暴露 三、第一次优化:记忆化搜索(Memoiza…...

前端学习——HTML

HTML VSCode常用快捷键HTML标签文本标签列表标签表格Form表单表单元素 块元素与行内元素新增标签 VSCode常用快捷键 代码格式化:ShiftAltF 向上或向下移动一行:AltUp或AltDown 快速复制一行代码:ShiftAltUp或者ShiftAltDown 快速替换&#x…...

12.【线性代数】——图和网络

十二 图和网络(线性代数的应用) 图 g r a p h { n o d e s , e d g e s } graph\{nodes, edges\} graph{nodes,edges}1.关联矩阵2. A A A矩阵的零空间,求解 A x 0 Ax0 Ax0 电势3. A T A^T AT矩阵的零空间,电流总结电流图结论 …...

[环境搭建篇] Windows 环境下如何安装repo工具

Windows 环境下如何安装repo工具 1. 安装前置依赖2. 配置Repo引导脚本方法一:通过Gitee镜像安装(推荐)方法二:通过清华镜像安装 3. 解决依赖问题4. 初始化Repo仓库5. 常见问题解决 前言: 在Windows环境下安装Repo工具需…...

LeetCode 热题 100_字符串解码(71_394_中等_C++)(栈)

LeetCode 热题 100_字符串解码(71_394) 题目描述:输入输出样例:题解:解题思路:思路一(栈): 代码实现代码实现(栈):以思路一为例进行调…...

「DataX」数据迁移-IDEA运行DataX方法总结

背景 业务需求希望把Oracle数据库中的数据,迁移至MySql数据库中,因为需要迁移全量和增量的数据,所以希望想用数据迁移工具进行操作。 经过一些调研查询,最终打算使用DataX进行数据的迁移。 DataX简单介绍 DataX 是阿里云 DataW…...

【 <一> 炼丹初探:JavaWeb 的起源与基础】之 Servlet 过滤器:实现请求的预处理与后处理

<前文回顾> 点击此处查看 合集 https://blog.csdn.net/foyodesigner/category_12907601.html?fromshareblogcolumn&sharetypeblogcolumn&sharerId12907601&sharereferPC&sharesourceFoyoDesigner&sharefromfrom_link <今日更新> 一、过滤器&…...

DeepSeek与浏览器自动化AI Agent构建指南

文章使用到的模型可以用硅基流动中的&#xff1a; 注册链接&#xff1a;硅基流动统一登录 邀请码&#xff1a;FytHp9Xa 一、技术选型阶段 1. 基础组件选择 AI模型&#xff1a;DeepSeek-R1开放API&#xff08;对话/推理&#xff09;或DeepSeek-Coder&#xff08;代码生成&#…...

面试中常问的mysql数据库指令【杭州多测师_王sir】

数据库中的修改表结构、增删改查、用户权限操作DDL 》数据库定义语言 create database&#xff0c;create table drop tableDML 》数据库操作语言 insert into&#xff0c;delete from&#xff0c;update set&#xff0c;DQL 》数据库查询语言 select .... from....crea…...

深度学习驱动的智能化革命:从技术突破到行业实践

第一章 深度学习的技术演进与核心架构 1.1 从浅层网络到深度学习的范式转变 深度学习的核心在于通过多层次非线性变换自动提取数据特征,其发展历程可划分为三个阶段:符号主义时代的规则驱动(1950s-1980s)、连接主义时代的浅层网络(1990s-2000s)以及深度学习时代的端到端…...

基于编译器特性浅析C++程序性能优化

最近在恶补计算机基础知识&#xff0c;学到CSAPP第五章的内容&#xff0c;在这里总结并且展开一下C程序性能优化相关的内容。 衡量程序性能的方式 一般而言&#xff0c;程序的性能可以用CPE&#xff08;Cycles Per Element&#xff09;来衡量&#xff0c;其指的是处理每个元素…...

服务器上通过ollama部署deepseek

2025年1月下旬&#xff0c;DeepSeek的R1模型发布后的一周内就火了&#xff0c;性能比肩OpenAI的o1模型&#xff0c;且训练成本仅为560万美元&#xff0c;成本远低于openAI&#xff0c;使得英伟达股票大跌。 下面我们来看下如何个人如何部署deepseek-r1模型。 我是用的仙宫云的…...

Android Coil总结

文章目录 Android Coil总结概述添加依赖用法基本用法占位图变形自定义ImageLoader取消加载协程支持缓存清除缓存监听 简单封装 Android Coil总结 概述 Coil 是一个用于 Android 的 Kotlin 图像加载库&#xff0c;旨在简化图像加载和显示的过程。它基于 Kotlin 协程&#xff0…...

SpringBoot-17-MyBatis动态SQL标签之常用标签

文章目录 1 代码1.1 实体User.java1.2 接口UserMapper.java1.3 映射UserMapper.xml1.3.1 标签if1.3.2 标签if和where1.3.3 标签choose和when和otherwise1.4 UserController.java2 常用动态SQL标签2.1 标签set2.1.1 UserMapper.java2.1.2 UserMapper.xml2.1.3 UserController.ja…...

LBE-LEX系列工业语音播放器|预警播报器|喇叭蜂鸣器的上位机配置操作说明

LBE-LEX系列工业语音播放器|预警播报器|喇叭蜂鸣器专为工业环境精心打造&#xff0c;完美适配AGV和无人叉车。同时&#xff0c;集成以太网与语音合成技术&#xff0c;为各类高级系统&#xff08;如MES、调度系统、库位管理、立库等&#xff09;提供高效便捷的语音交互体验。 L…...

conda相比python好处

Conda 作为 Python 的环境和包管理工具&#xff0c;相比原生 Python 生态&#xff08;如 pip 虚拟环境&#xff09;有许多独特优势&#xff0c;尤其在多项目管理、依赖处理和跨平台兼容性等方面表现更优。以下是 Conda 的核心好处&#xff1a; 一、一站式环境管理&#xff1a…...

.Net框架,除了EF还有很多很多......

文章目录 1. 引言2. Dapper2.1 概述与设计原理2.2 核心功能与代码示例基本查询多映射查询存储过程调用 2.3 性能优化原理2.4 适用场景 3. NHibernate3.1 概述与架构设计3.2 映射配置示例Fluent映射XML映射 3.3 查询示例HQL查询Criteria APILINQ提供程序 3.4 高级特性3.5 适用场…...

【解密LSTM、GRU如何解决传统RNN梯度消失问题】

解密LSTM与GRU&#xff1a;如何让RNN变得更聪明&#xff1f; 在深度学习的世界里&#xff0c;循环神经网络&#xff08;RNN&#xff09;以其卓越的序列数据处理能力广泛应用于自然语言处理、时间序列预测等领域。然而&#xff0c;传统RNN存在的一个严重问题——梯度消失&#…...

linux arm系统烧录

1、打开瑞芯微程序 2、按住linux arm 的 recover按键 插入电源 3、当瑞芯微检测到有设备 4、松开recover按键 5、选择升级固件 6、点击固件选择本地刷机的linux arm 镜像 7、点击升级 &#xff08;忘了有没有这步了 估计有&#xff09; 刷机程序 和 镜像 就不提供了。要刷的时…...

Module Federation 和 Native Federation 的比较

前言 Module Federation 是 Webpack 5 引入的微前端架构方案&#xff0c;允许不同独立构建的应用在运行时动态共享模块。 Native Federation 是 Angular 官方基于 Module Federation 理念实现的专为 Angular 优化的微前端方案。 概念解析 Module Federation (模块联邦) Modul…...

论文解读:交大港大上海AI Lab开源论文 | 宇树机器人多姿态起立控制强化学习框架(一)

宇树机器人多姿态起立控制强化学习框架论文解析 论文解读&#xff1a;交大&港大&上海AI Lab开源论文 | 宇树机器人多姿态起立控制强化学习框架&#xff08;一&#xff09; 论文解读&#xff1a;交大&港大&上海AI Lab开源论文 | 宇树机器人多姿态起立控制强化…...

莫兰迪高级灰总结计划简约商务通用PPT模版

莫兰迪高级灰总结计划简约商务通用PPT模版&#xff0c;莫兰迪调色板清新简约工作汇报PPT模版&#xff0c;莫兰迪时尚风极简设计PPT模版&#xff0c;大学生毕业论文答辩PPT模版&#xff0c;莫兰迪配色总结计划简约商务通用PPT模版&#xff0c;莫兰迪商务汇报PPT模版&#xff0c;…...

计算机基础知识解析:从应用到架构的全面拆解

目录 前言 1、 计算机的应用领域&#xff1a;无处不在的数字助手 2、 计算机的进化史&#xff1a;从算盘到量子计算 3、计算机的分类&#xff1a;不止 “台式机和笔记本” 4、计算机的组件&#xff1a;硬件与软件的协同 4.1 硬件&#xff1a;五大核心部件 4.2 软件&#…...