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)控制器是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数据文件设置参数详解
使用步骤:
-
定义csv文件
-
添加线程组,设置循环次数为3(根据CSV文件的行数来确定,该例子为3)
-
添加CSV数据文件设置,文件名选择CSV文件路径即可。变量名称用于Jmeter中引用,可自行指定,并不要求与CSV文件中的严格相同。由于我们定义的CSV首行是数据,所以不忽略首行。分隔符CSV文件中使用的是逗号
-
添加HTTP请求并引用参数,引用参数的方法同样是${变量名}
-
添加查看结果数并执行
函数
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下添加HTTP请求
- 添加JSON提取器(仅作演示)将HTTP请求响应结果 提取存为变量city
- 添加BeanShell取样器 利用函数_setProperty,将JSON提取器变量city 设置为Jmeter属性
- 添加线程组2
- 在线程组2下添加HTTP请求(并读取Jmeter属性)
Jmeter录制脚本(仅作介绍)
用于在没有API文档时,编写HTTP请求。Jmeter作为代理服务器,拦截和转发请求与响应数据。(功能与抓包工具一样)
Jmeter直连数据库
使用场景
- 请求需要的参数, 从数据库中获取
- 断言的预期结果从数据库中获取
- 清理接口测试后所留下的测试数据
- 通过数据库获取大量的测试数据
操作步骤,以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…...
MES机联网4:文档资料
目录信息 MES机联网1:技术方案MES机联网2:采集网关MES机联网3:管理后台MES机联网4:文档资料 MQ接入文档 1、建立连接 mqtt连接地址: 192.168.0.138 mqtt端口: 1883 mqtt用户名:admin mqtt密码:123456 …...
豆包大模型 MarsCode AI 刷题专栏 001
001.找单独的数 难度:易 问题描述 在一个班级中,每位同学都拿到了一张卡片,上面有一个整数。有趣的是,除了一个数字之外,所有的数字都恰好出现了两次。现在需要你帮助班长小C快速找到那个拿了独特数字卡片的同学手上…...
常用无功功率算法的C语言实现(二)
0 前言 尽管数字延迟法和积分移相法在不间断采样的无功功率计算中得到了广泛应用,但它们仍存在一些固有缺陷。 对于数字延迟法而言,其需要额外存储至少1/4周期的采样点,在高采样频率的场景下,这对存储资源的需求不可忽视。而积分移相法虽然避免了额外的存储开销,但为了抑制…...
23种设计模式简介
一、创建型(5种) 1.工厂方法 总店定义制作流程,分店各自实现特色披萨(北京店-烤鸭披萨,上海店-蟹粉披萨) 2.抽象工厂 套餐工厂(家庭装含大披萨薯条,情侣装含双拼披萨红酒&#…...
开发vue小游戏:数字华龙道
一、游戏介绍 1、历史背景 数字华容道脱胎于传统华容道,后者源自三国时期“曹操败走华容道”的故事。传统玩法是通过移动不同形状的木块,帮助“曹操”从出口逃脱。而数字华容道将棋子替换为数字,目标是通过滑动方块,将乱…...
electron的通信方式(三种)
文章目录 一、渲染进程向主进程发送消息二、渲染进程向主进程发送消息并异步获取结果三、主进程向渲染进程发送消息 electron的主要是主线程和渲染线程之间的通信,简单记录一下三种通信方式 一、渲染进程向主进程发送消息 利用ipcRenderer.send()和ipcMain.on()方法…...
MapReduce技术概述**
** MapReduce是一种并行计算框架,最初由Google开发,后来被Apache开源。它是一种分布式计算模型,能够处理大规模数据集,解决复杂的计算问题。MapReduce技术在数据处理和分析领域广泛应用,尤其是在大数据处理中。 MapR…...
ubuntu挂载固态硬盘
Ubuntu 中挂载位于 /dev/sdc1 的固态硬盘,可以按照以下步骤操作: 步骤 1:确认分区信息 首先,确保设备 /dev/sdc1 存在且已正确分区: sudo fdisk -l /dev/sdc # 查看分区表 lsblk # 确认分区路…...
同为科技智能PDU在数据中心场景的应用与解决方案
数据中心当前处于一个快速发展和技术变革的特殊时期,全新的人工智能应用正在重塑整个世界,为社会带来便捷的同时,也为数据中心的发展带来了新的机遇和挑战。智能算例的爆发式增长,对数据中心提出了大算力、高性能的新需求…...
golang学习笔记——go语言安装及系统环境变量设置
文章目录 go语言安装go envgo getgoproxy测试安装 Go 插件安装 Go 插件依赖工具参考资料用户环境变量和系统环境变量用户环境变量系统环境变量示例设置环境变量的步骤设置用户环境变量设置系统环境变量 验证环境变量总结 2024年最火的5大Go框架1. Gin:高并发接口的“…...
云服务器Linux安装Docker
系统要求 Docker 官方建议将 Docker 运行在 Linux系统上,当然也可以在其他平台运行,本篇博客只介绍在 Linux 系统上的安装方法。 Docker 运行在 CentOS7.X 版本以上,本文使用阿里云 ECS 云服务器 CentOS 7.4 版本。 Docker 需要安装在 64 …...
2025DNS二级域名分发PHP网站源码
安装教程 1.程序必须使用PHP8.1 2.将扩展ixed.8.1.lin放入/www/server/php/81/lib/php/extensions/no-debug-non-zts-20210902 3.打开宝塔→软件商店→PHP8.1→配置文件 4.放入:extensionixed.8.1.lin 5.重启PHP8.1 6.新建站点(mysql5.6-5.7andPHP8.1&a…...
审批流AntV框架蚂蚁数据可视化X6饼图(附注释)
大家好,这次使用的是AntV的蚂蚁数据可视化X6框架,类似于审批流的场景等,代码如下: X6框架参考网址:https://x6.antv.vision/zh/examples/showcase/practices#bpmn 可以进入该网址,直接复制下方代码进行调试…...
git 添加额外的远程仓库 URL
要使用 git branch -a 查看 net-next 远程仓库中的所有分支,请按照以下步骤操作: 步骤 1: 确保已添加 net-next 远程仓库 如果尚未添加 net-next 远程仓库,请运行以下命令: git remote add net-next git://git.kernel.org/pub/s…...
Qt中实现多个QMainWindow同时显示
在Qt中实现多个QMainWindow同时显示,可通过以下方法实现: 一、直接显示多个实例 必须使用new创建堆对象,避免栈对象因作用域结束被销毁。 int main(int argc, char *argv[]) {QApplication a(argc, argv);// 创建两个独立的主窗口QMainW…...
在ArcMap中通过Python编写自定义工具(Python Toolbox)实现点转线工具
文章目录 一、需求二、实现过程2.1、创建Python工具箱(.pyt)2.2、使用catalog测试代码2.3、在ArcMap中使用工具 三、测试 一、需求 通过插件的形式将点转线功能嵌入ArcMap界面,如何从零开始创建一个插件,包括按钮的添加、工具的实…...
关于AI数据分析可行性的初步评估
一、结论:可在部分环节嵌入,无法直接处理大量数据 1.非本地部署的AI应用处理非机密文件没问题,内部文件要注意数据安全风险。 2.AI(指高规格大模型)十分适合探索性研究分析,对复杂报告无法全流程执行&…...
cdn取消接口缓存
添加cdn后,使用cdn加速域名访问接口 是缓存,不是最新的数据,如果使用局域网则是最新的数据,如果修改配置,确保使用cdn域名请求的接口返回不是缓存 要确保通过CDN加速域名访问接口时返回的是最新的数据,而不…...
Android 屏幕适配 Tips
概念 屏幕尺寸:屏幕的对角线的长度屏幕分辨率:屏幕分辨率是指在横纵向上的像素点数,单位是px,1px1个像素点。一般以纵向像素x横向像素,如1960x1080屏幕像素密度:每英寸上的像素点数,单位是dpi …...
【Academy】HTTP Host 标头攻击 ------ HTTP Host header attacks
HTTP Host 标头攻击 ------ HTTP Host header attacks 1. 什么是 HTTP Host 标头?2. 什么是 HTTP Host 标头攻击?3. HTTP Host 标头漏洞是如何产生的?4. 如何测试 HTTP Host 标头漏洞4.1 提供任意 Host 标头4.2 检查有缺陷的验证4.3 发送不明…...
大模型架构记录2
一 应用场景 1.1 prompt 示例 1.2 自己搭建一个UI界面,调用接口 可以选用不同的模型,需要对应的API KEY 二 Agent 使用 2.1 构建GPT...
在Windows 11的WSL中安装Kali Linux
Kali Linux 是网络安全从业者和爱好者的首选工具集,但直接在物理机或虚拟机上运行可能占用较多资源。借助 Windows Subsystem for Linux (WSL),我们可以在Windows 11中原生运行Kali Linux,轻量且高效。本教程将手把手教你如何在WSL2中安装并配…...
Qt调试功能使用方法
QT编程环境 QT在Windows操作系统下的三种编程环境搭建。 方案编程环境编译器调试器1Qt CreatorMinGW GCCGDB2Qt CreatorMicrosoft Visual C CompilerDebugging Tools for Widows3Microsoft Visual Studio VS自带VS自带 方案提及的QT安装程序及压缩包均能在官网Index of /off…...
一篇文章讲解清楚ARM9芯片启动流程
SAM9X60 ARM9 boot启动流程关键词介绍: 第一级bootloader - 也叫boot ROM,是集成在MPU内部的ROM里面 它的主要功能是执行对MPU的基本初始化和配置,查找并将第二级bootloader从外部NVM中读取出来并放到MPU内部的SRAM. 可以让MPU强制停留在第一…...
DeepSeek未来发展趋势:开创智能时代的新风口
DeepSeek未来发展趋势:开创智能时代的新风口 随着人工智能(AI)、深度学习(DL)和大数据的飞速发展,众多创新型技术已经逐渐走向成熟,而DeepSeek作为这一领域的新兴力量,正逐步吸引越…...
Spring Boot与Axon Framework整合教程
精心整理了最新的面试资料和简历模板,有需要的可以自行获取 点击前往百度网盘获取 点击前往夸克网盘获取 简介 Axon Framework是一个用于构建CQRS(命令查询职责分离)和事件溯源(Event Sourcing)应用的框架࿰…...
从技术角度看大语言模型进化技术路线与落地应用详解:未来的最佳实践方向是什么?
文章大纲 **一、模型架构创新:从Transformer到下一代架构****二、训练与优化技术:从暴力Scaling到精细调控****三、数据与知识工程:从粗放喂养到智能增强****四、应用层进化:从通用能力到垂直场景突破****五、伦理与可持续性技术**未来技术路线图参考文献**一、大模型架构创…...
LSM-Tree (日志结构合并树)
LSM-Tree(日志结构合并树)是一种高效处理写操作的存储结构,广泛应用于NoSQL数据库如LevelDB和RocksDB。其核心思想是将随机写入转换为顺序写入,提升吞吐量。以下是其原理及Java实现示例: ### **LSM-Tree 原理** 1. **…...
自动驾驶---不依赖地图的大模型轨迹预测
1 前言 早期传统自动驾驶方案通常依赖高精地图(HD Map)提供道路结构、车道线、交通规则等信息,可参考博客《自动驾驶---方案从有图迈进无图》,本质上还是存在问题: 数据依赖性高:地图构建成本昂贵,且跨区域泛化能力受限。动态场景局限性:地图无法实时反映临时障碍物或施…...
记录一次mysql全文索引不生效
先是创建全文索引: alter table sms_img_library add fulltext index sms_img_library_title_idx(title) 但是执行下面sql,没有数据出来 select * from sms_img_library where match (title) against(壮丽);排查了最小分词,设置为2 SHOW…...
蓝桥杯题型
蓝桥杯 蓝桥杯题型分类语法基础艺术与篮球(日期问题)时间显示(时间问题)跑步计划(日期问题)偶串(字符)最长子序列(字符)字母数(进制转换)6个0&…...
用Python分割并高效处理PDF大文件
在处理大型PDF文件时,将它们分解成更小、更易于管理的块通常是有益的。这个过程称为分区,它可以提高处理效率,并使分析或操作文档变得更容易。在本文中,我们将讨论如何使用Python和为Unstructured.io库将PDF文件划分为更小的部分。…...
DeepSeek×博云AIOS:突破算力桎梏,开启AI普惠新纪元
背景 在全球人工智能技术高速迭代的背景下,算力成本高企、异构资源适配复杂、模型部署效率低下等问题,始终是制约企业AI规模化应用的关键。 DeepSeek以创新技术直击产业痛点,而博云先进算力管理平台AIOS的全面适配,则为这一技术…...
顶点着色器和片段着色器
在Unity渲染中,**顶点着色器(Vertex Shader)和片段着色器(Fragment Shader)**是图形渲染管线中的两个核心阶段。我们可以通过一个比喻来理解它们的分工:想象你要画一幅由三角形组成的3D模型,顶点…...
Uniapp打包H5端弱网络环境下存在页面UI渲染错乱问题方案实现
一.需求 uniapp打包的H5项目,首页模块的业务逻辑偏多,调用的接口数量庞大,在弱网络的情况下切换了页面或者网络较好但是页面的UI未渲染完成的情况下快速地切换了页面会出现UI渲染错乱的问题,针对该问题个人从两个方面来进行处理&…...
Dify+DeepSeek | Excel数据一键可视化(创建步骤案例)(echarts助手.yml)(文档表格转图表、根据表格绘制图表、Excel绘制图表)
Dify部署参考:Dify Rag部署并集成在线Deepseek教程(Windows、部署Rag、安装Ragan安装、安装Dify安装、安装ollama安装) DifyDeepSeek - Excel数据一键可视化(创建步骤案例)-DSL工程文件(可直接导入&#x…...
## DeepSeek写水果记忆配对手机小游戏
DeepSeek写水果记忆配对手机小游戏 提问 根据提的要求,让DeepSeek整理的需求,进行提问,内容如下: 请生成一个包含以下功能的可运行移动端水果记忆配对小游戏H5文件: 要求 可以重新开始游戏 可以暂停游戏 卡片里的水果…...
Windows系统编程(八)线程同步
线程安全问题 每个线程都有自己独立的堆栈,局部变量是存储在栈中的,这就意味着每个线程都会有一份自己的局部变量,当线程仅仅访问自己的局部变量时就不存在线程安全问题。但是全局变量是存储在全局区的,多线程共享全局变量&#…...
create_react_agent 函数,根据创建的 chat 模型实例和工具列表 tools 构造一个“反应式代理”(react agent)
graph create_react_agent(chat, tools)1. create_react_agent 函数的作用 create_react_agent 是一个工厂函数,它接收两个参数: chat 模型实例(这里是 ChatOpenAI 的对象):它负责生成语言模型的回复,也…...
Unity ECS与MonoBehaviour混合架构开发实践指南
一、混合架构设计背景 1. 技术定位差异 ECS(Entity Component System):面向数据设计(DOD),适用于大规模实体计算(如10万单位战斗) MonoBehaviour:面向对象设计&#x…...
在Linux中开发OpenGL——检查开发环境对OpenGL ES的支持
由于移动端GPU规模有限,厂商并没有实现完整的OpenGL特性,而是实现了它的子集——OpenGL ES。因此如果需要开发的程序要支持移动端平台,最好使用OpenGL ES开发。 1、 下载支持库、OpenGL ES Demo 1.1、下载PowerVRSDK支持库作为准备ÿ…...
「DataX」数据迁移-IDEA运行DataX方法总结
背景 业务需求希望把Oracle数据库中的数据,迁移至MySql数据库中,因为需要迁移全量和增量的数据,所以希望想用数据迁移工具进行操作。 经过一些调研查询,最终打算使用DataX进行数据的迁移。 DataX简单介绍 DataX 是阿里云 DataW…...
python从入门到精通(二十六):python文件操作之Word全攻略(基于python-docx)
python文件操作之word技巧大全 word技巧基础到高级操作大全A.准备工作1. 安装python-docx库2. 导入库 B.基础操作1. 创建Word文档1.1 创建文档对象1.2 添加word标题1.3 添加word段落1.4 设置段落样式1.5 创建有序列表1.6 创建无序列表1.7添加word分页1.8 添加word图片1.9 添加w…...
STM32 ST-LINK Utility 切换 NRST_MODE 后下载失败问题
在使用 STM32 ST-LINK Utility 烧录时,有需要改变芯片选择复位的时候需要修改 Option Bytes 中的 NRST_MODE 选项,可能会遇见 “Programming error 0x8000200!” 的错误,后面不管是取消读写加密还是复位都不能下载,包括再用 keil …...
【算法】010、合并两个有序链表
【算法】010、合并两个有序链表 文章目录 一、合并两个有序链表1.1 思路1.2 多语言解法 一、合并两个有序链表 1.1 思路 // go package mainimport ("fmt""strconv" )type ListNode struct {Val intNext *ListNode }func (n *ListNode) String() (ans s…...
FreeRTOS任务状态查询
一.任务相关API vTaskList(),创建一个表格描述每个任务的详细信息 char biaoge[1000]; //定义一个缓存 vTaskList(biaoge); //将表格存到这缓存中 printf("%s /r/n",biaoge); 1.uxTaskPriorityGet(…...
Django小白级开发入门
1、Django概述 Django是一个开放源代码的Web应用框架,由Python写成。采用了MTV的框架模式,即模型M,视图V和模版T。 Django 框架的核心组件有: 用于创建模型的对象关系映射为最终用户设计较好的管理界面URL 设计设计者友好的模板…...
R语言的基础命令及实例操作
> T & F [1] FALSE > T & T [1] TRUE > T | F [1] TRUE > F | F [1] FALSE > a <- c(T,F,T) > b <- c(F,F,T) > a & b [1] FALSE FALSE TRUE > a | b [1] TRUE FALSE TRUE 在 R 中,大小写是敏感的,也就是说…...
通用信息抽取大模型PP-UIE开源发布,强化零样本学习与长文本抽取能力,全面适配多场景任务
背景与简介 信息抽取(information extraction)是指,从非结构化或半结构化数据(如自然语言文本)中自动识别、提取并组织出结构化信息。通常包含多个子任务,例如:命名实体识别(NER&am…...