Jmeter的使用
Jmeter的使用
1.Jmeter简介
以下内容来自Jmeter中文网http://www.jmeter.com.cn/jieshao,很好的解释了Jmeter的作用:
Apache JMeter是Apache组织开发的基于Java的压力测试工具。用于对软件做压力测试,它最初被设计用于Web应用测试,但后来扩展到其他测试领域。 它可以用于测试静态和动态资源,例如静态文件、Java 小服务程序、CGI 脚本、Java 对象、数据库、FTP 服务器, 等等。JMeter 可以用于对服务器、网络或对象模拟巨大的负载,来自不同压力类别下测试它们的强度和分析整体性能。另外,JMeter能够对应用程序做功能/回归测试,通过创建带有断言的脚本来验证你的程序返回了你期望的结果。为了最大限度的灵活性,JMeter允许使用正则表达式创建断言。
Apache jmeter 可以用于对静态的和动态的资源(文件,Servlet,Perl脚本,java 对象,数据库和查询,FTP服务器等等)的性能进行测试。它可以用于对服务器、网络或对象模拟繁重的负载来测试它们的强度或分析不同压力类型下的整体性能。你可以使用它做性能的图形分析或在大并发负载测试你的服务器/脚本/对象。
JMeter的作用
1.能够对HTTP和FTP服务器进行压力和性能测试, 也可以对任何数据库进行同样的测试(通过JDBC)。
2.完全的可移植性和100% 纯java。
3.完全 Swing 和轻量组件支持(预编译的JAR使用 javax.swing.*)包。
4.完全多线程 框架允许通过多个线程并发取样和 通过单独的线程组对不同的功能同时取样。
5.精心的GUI设计允许快速操作和更精确的计时。
6.缓存和离线分析/回放测试结果。
JMeter的高可扩展性
1.可链接的取样器允许无限制的测试能力。
2.各种负载统计表和可链接的计时器可供选择。
3.数据分析和可视化插件提供了很好的可扩展性以及个性化。
4.具有提供动态输入到测试的功能(包括Javascript)。
5.支持脚本编程的取样器(在1.9.2及以上版本支持BeanShell)。
在设计阶段,JMeter能够充当HTTP PROXY(代理)来记录IE/NETSCAPE的HTTP请求,也可以记录apache等WebServer的log文件来重现HTTP流量。当这些HTTP客户端请求被记录以后,测试运行时可以方便的设置重复次数和并发度(线程数)来产生巨大的流量。JMeter还提供可视化组件以及报表工具把量服务器在不同压力下的性能展现出来。
相比其他HTTP测试工具,JMeter最主要的特点在于扩展性强。JMeter能够自动扫描其lib/ext子目录下.jar文件中的插件,并且将其装载到内存,让用户通过不同的菜单调用。

2.Jmeter的安装
进入官网https://jmeter.apache.org/,找到下载入口,下载对应的版本:

下载安装好后点击jmeter安装目录下的bin/jmeter.bat就可以运行了,运行界面如下:

按如下方式可以设置中文:

如上方式设置重启后还是变成英文,如果想要设置永久有效,可以找到安装目录下的/bin/jmeter.propertise文件做如下设置:
language=zh-CN

3.创建Jmeter测试计划
测试计划定义如何测试,并定义一个布局。例如,web应用程序以及客户端服务器应用程序,它可以被看作容器运行测试,一个完整的测试包括一个或多个元素,如线程组、逻辑控制器、样品产生控制器、监听器、定时器、断言和配置元素。测试计划必须至少有一个线程组。
3.1.添加和删除元素
通过鼠标右键点击测试计划Test Plan节点,并从"add"列表中选择一个新的元素就可以添加一个测试计划。另外,元素可以从文件中加载,并通过选择"merge"或"open"选项添加。例如:添加一个线程组原件测试计划:

要删除一个元素,确保元素被选中,右键单击该元素,然后选择"remove"删除选项:

3.2.加载和保存元素
从文件加载一个元素,右键单击您要添加的加载元件对现有树元素,并选择“merge”合并选项。选择文件保存元素。 JMeter会合并的元素,放到树上。

为了保存树元素,元素上点击右键并选择选择另存为…选项。 JMeter会保存选定的元素,再加上它下面的所有子元素。默认情况下,不保存JMeter 的元素,需要明确地保存它,如前面提到的。
3.3.保存测试计划
可以保存整个测试计划到本地,方便随时使用。点击菜单栏"File"文件选项,选择保存"Save"或"Save Test Plan as":

3.4.运行/停止测试计划
从Run菜单项中选择运行-启动“Start ”(控制+ R)。当运行JMeter是,它显示了一个绿色的小盒子,右手端的部分,只是在菜单栏下。

停止测试方法有两种:
- 使用stop(Control + ‘.’)。这立即停止线程如果可能的话。
- 使用shutdown(Control + ‘,’)。这就要求线程停止在任何当前工作的结束。
4.Jmeter的主要元素
4.1.主要元件
通过上面的创建,可能你还不了解什么是测试计划,什么是线程组,那么我们就来了解下Jmeter的元素组件吧:
- 测试计划: 是使用Jmeter测试的起点,为其他测试元件提供一个容器,影响其作用范围内的所有组件;
- **线程组:**代表一定数量的用户,它可以用来模拟用户并发送请求,实际的请求内容在Sampler中定义,它被线程组包含;
- **配置原件:**维护Sampler需要的配置信息,并根据实际的需要修改请求的内容;
- **前置处理器:**负责在请求之前工作,常用来修改请求设置,在其作用范围内的每一个sampler元件之前执行;
- **定时器:**负责定义请求之间的延迟间隔,在其作用范围内的每一个sampler有效;
- **取样器(Sampler):**是性能测试中向服务器发送请求,记录响应信息、响应时间的最小单元,如:HTTP Request、Sampler、FTP Request Sampler、TCP Request Sampler、JDBC Request Sampler等。每一种不同类型的Sampler可以根据设置的参数向服务器发送不同类型的请求;
- **后置处理器:**负责请求之后的工作,常用获取返回的值,在其作用范围内的每一个sampler元件之后执行;
- **断言:**用来判断请求响应的结果是否如用户所期望的,在其作用范围内的对每一个sampler元件执行后的结果进行校验;
- **监听器:**负责收集测试结果,同时确定结果显示的方式,在其作用范围内对每一个sampler元件的信息收集并呈现;
- **逻辑控制器:**可以定义Jmeter发送请求的行为逻辑,它与Sampler结合使用可以模拟复杂的请求序列。
4.2.执行顺序和接口测试流程
它们的执行顺序为:
配置元件->前置处理器->定时器->取样器->后置处理程序->断言->监听器。
注意事项:
1.前置处理器、后置处理器和断言等组件只能对取样器起作用,因此,如果在它们的作用域内没有任何取样器,则不会被执行。
2.如果在同一作用域内有多个同一类型的元件,则这些元件按照它们在测试计划中的上下顺序依次执行。
使用Jmeter进行接口测试的基本步骤如下:
- 测试计划
- 线程组
- HTTP Cookie管理器
- HTTP请求默认值
- HTTP请求(Sampler)
- 断言
- 监听(查看结果树,图形结果,聚合报告等。
5.测试流程详解
5.1.测试计划
打开Jmeter,在菜单左侧出现"测试计划Test Plan"在这里测试计划我们可以把它理解成新建的空白项目,在这个空白项目下可以添加一系列的接口。

5.2.线程组
添加方法:右键单击Test Plan,找到添加,添加线程–线程组。一个线程组可以看作一个虚拟用户,线程组中的每个线程都可以理解为一个虚拟用户。
- **线程数:**即虚拟用户数,设置多少个线程数也就是设置多少虚拟用户;
- **Ramp-Up时间(秒):**设置虚拟用户数全部启动的时长,如果线程数为20秒,准备时长为10秒,那么需要10秒启动20个线程;
- **循环次数:**每个线程发动请求的个数,如果线程数为20,循环次数为10,那么每个线程发送10次请求。总请求数为10*20=200。如果勾选了“永远”,那么所有的线程会一直发送请求,直到手动点击菜单栏的停止按钮,或者设置线程时间结束。
5.3.HTTP Cookie管理器
添加方法:右键线程组–添加–配置元件–HTTP Cookie管理器。
HTTP Cookie管理器可以像浏览器一样存储和发送Cookie,如果你要发送一个带Cookie的HTTP请求,Cookie Manager会自动存储该请求的Cookies,并且发送同源站点的HTTP请时都可以使用该Cookie。
5.4.HTTP请求默认值
添加方法:右键线程组–添加–配置元件–HTTP请求默认值。
HTTP请求默认值是为了方便填写后续内容而设置,主要填写IP和端口,后续的HTTP请求就不用每次都填写IP地址和端口号了。
5.5.HTTP请求
添加方法:右键线程组–添加–取样器–HTTP请求。
HTTP请求包括接口请求方法、请求路径、请求参数等。
HTTP请求各填写位置详解:
- 名称:用于标识一个取样器,争取见名知义;
- 注释:无作用,仅用户记录可读的注释信息;
- 协议:发送的HTTP请求协议,默认是HTTP,也可以选用HTTPS;
- 服务器名称或IP:请求的服务名称或IP地址;
- 端口号:默认值80;
- 方法:请求所采用的方法,默认是GET,还可选择POST,DELETE等;
- 路径:目标URL路径;
- 内容编码:内容的编码方式,默认为iso8859;
- 自动重定向:如选中该选项,当发送HTTP请求后得到的响应是301/302时,Jmeter会自动重定向到新页面;
- 使用keepAlive:保持Jmeter和目标服务器的活跃状态,默认选中;
- 对POST请求使用multipart/from-data:当发送POST请求时,使用multipart/from-data方法发送,默认不选中;
- 同请求一起发送参数:带参数的URL请求,Jmeter提供了一个简单的对参数化的方法。用户可以将URL中所有参数设置在本表中,表中的一行是参数的键值对信息。
5.6.响应断言
添加方法:右键HTTP响应–添加–断言–响应断言。
检查接口是否访问成功,如果检查失败会提示找不到断言内容,没提示表示成功。
-
**Apply to:**指断言的作用范围,通常发送一个请求只触发一个请求,所以勾选Main sample only就可以了;若发送一个请求可以触发多个服务器请求,就有main sample and sub-samples了。
- Main sample and sub-samples:作用于主请求和子请求;
- Main sample only:仅作用于主请求;
- Sub-samples only:仅作用于子请求;
- Jmeter Variable Name to use:作用Jmeter变量(输入Jmeter变量名称)。
-
测试字段:
- 响应文本:匹配返回json数据;
- 响应代码:返回200,404,500等状态码;
- 响应信息:返回成功或失败的字样;
- 响应头:匹配响应头;
- 请求头:匹配请求头;
- URL样本:匹配请求的URL连接,如果有重定向则则包含请求URL和 重定向URL;
- 文档(文本):匹配响应数据的文本形式;
- 忽略状态:一个请求有多个响应断言,第一个响应断言选中此项,当第一个响应断言失败时可以忽略此响应结果,继续进行下一个断言,如果下一个断言成功则判定断言是成功的;
- 请求数据:匹配请求数据。
-
模式匹配规则:
- 包括:响应内容包含需要匹配的内容即代表响应成功,支持正则表达式;
- 匹配:响应内容要完全匹配需要匹配的内容即代表响应成功,大小写不敏感,支持正则表达式;
- 相等:响应内容要完全等于需要匹配的内容才代表成功,大小写敏感,不支持正则表达式;
- 字符串:响应内容包含响应的内容才代表成功,大小写不敏感,不支持正则表达式;
- 否:相当于取反,结果为True,勾上就是False;
- 或者:如果不想用AND连接,用OR选项可以用于将多个断言模式进行OR连接(只要一个模式匹配,断言就是成功)。
-
**测试模式:**断言的数据,点击“添加”就可以添加断言的数据。
5.7.添加监听器
添加方法:线程组–右键添加–监听器–查看结果树,一般还须添加图形报告、聚合报告。
树状形式显示接口的访问结果,包括请求结果、请求内容、服务器的响应内容。
相关参考:https://blog.csdn.net/pengjiangchun/article/details/105707405?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522165414737616781432979561%2522%252C%2522scm%2522%253A%252220140713.130102334…%2522%257D&request_id=165414737616781432979561&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2alltop_positive~default-1-105707405-null-null.142v11control,157v12control&utm_term=jmeter&spm=1018.2226.3001.4187
http://www.jmeter.com.cn/2754.html
6.测试实例
6.1.Jmeter发送get请求
步骤:测试计划—添加线程组—添加取样器—HTTP请求
接口参考网站:https://www.juhe.cn/docs/api/id/65,添加信息如下:
key:21f3d56edc75e82afaede5d8bbc2f6b1
在线程组中:添加监听器—察看结果树
6.2.Jmeter发送post请求
步骤:线程组—添加取样器—HTTP请求,将请求方式设置为post请求。
6.3.HTTP请求默认值
目的:有时候,请求的数据有很多个,且大部分的请求路径、参数、端口等数据相同,所以不必要每个请求都添加这些数据,我们可以添加HTTP请求默认值。
步骤:选择线程组—添加配置元件—HTTP请求默认值。配置请求的默认值即可,这样该线程组的数据都能共享到该默认值。
如上面的get和post请求的服务器名称、路径、参数key都相同,我们就可以创建HTTP请求默认值,把这些数据提取出来,然后请求也是可达的。
6.4.响应断言
Jmeter中有个元件叫做断言(Assertion),它的作用和loadrunner中检查点类似:用于检查测试中得到的响应数据等是否符合预期,用以保证性能测试过程中数据交互与预期一致。
使用断言的目的是:在request返回层面增加一层判断机制,因为request成功了,并不代表结果一定正确。所以通过断言,我们不再会被200所迷惑,而是可以通过断言,看到我们请求是否真正成功。
- 我们添加一个http请求,请求url为
abc.oracleoaec.com
。并在这个请求中添加响应断言
。添加方式为:HTTP请求—断言—响应断言

- 如需查看到响应断言的结果,需要添加断言结果,步骤为:HTTP请求—监听器—断言结果。点击HTTP请求运行,在断言结果中查看断言结果:

6.5.用户自定义变量
之前我们在做“老黄历”的HTTP请求时,只有添加的日期是不固定的,每次都需要修改的。我们可以添加一组用户自定义变量,以方便测试。添加步骤为:线程组—添加配置元件—用户自定义变量。点击下面的添加,添加需要测试的自定义变量,变量以k-v形式存在:

添加完自定义变量后,在"HTTP请求"中,添加的请求变量名仍然使用原有的名字,值用**$(自定义变量名)**引入:
6.6.参数化txt
请求登录地址:https://abc.oracleoaec.com/,传递两个参数:mobilephone和pwd。
我们针对这个登录接口设计5条测试用例:
- 正常登录
- 正确的用户名和错误的密码
- 不输入用户名
- 不输入密码
- 输入错误的用户名
测试步骤:
- 添加一个新的线程,取名“登录接口”,添加一个HTTP请求,取名“正常登录”。选择**“登录接口”的请求—添加配置元件—HTTP请求默认值**:
- 在“正确登录”窗口,添加两个参数mobilephone和pwd:
- 添加察看结果树:登录接口—添加监听器—察看结果树,后点击运行,查看到结果:
- 选中“正常登录”,按下Ctrl+Shift+C复制5条测试用例,并修改名字为我们需要的测试用例:
- 根据测试用例的需求,修改参数的值,如不输入用户名,就把用户名清空。点击察看结果树,再点击上方导航栏的清除(扫把按钮),清除之前的结果,再点击运行:
此时我们发现,随着测试用例的增多,我们测试人员的工作也会陡然增加,那么这时我们就可以引入text元件来管理测试用例,它可以用来存储测试用例。添加步骤如下:
- 点击登录接口–添加配置元件—CSV数据文件设置,禁用其他用例,只保留一个,并修改名为测试用例:
- CSV数据文件设置需要引入一个文件作为测试用例的数据,我们起名为
jmeter_csv.txt
,数据为k-v结构,文件内容如下:
- 在“CSV数据文件设置”中引入文件:
- 在“登录接口”的页面,将循环次数改为5次(匹配jmeter_csv.txt数据个数):
- 在“测试用例”页面用**$(变量名)**(该变量名为csv数据文件设置中的变量名称)的方式引入变量:
- 点击运行,察看结果树得到想要的结果(对应之前的数据):
**这种方法适合批量数据的测试。**但还有一种方式更加简便,那就是在本地创建一个表格,将数据保存到表格中,然后将数据另存为csv格式,引入方式和txt方式一样。
6.7.压测百度实例
接口地址:http://www.baidu.com/s?ie=utf-8&wd=jmeter性能测试-百度搜索测试实例
请求参数
ie:编码方式,默认为utf-8
wd: 搜索词
- 添加一个线程组:

- 添加一个HTTP取样器,并添加如下数据:

- 添加察看结果树,并修改相应格式为HTML Source Formatted:
- 添加聚合报告,将线程组线程数改为10:
运行分析结果:
聚合报告参数详解:
- Label:每个 JMeter 的 element(例如 HTTP Request)都有一个 Name 属性,这里显示的就是 Name 属性的值
- Samples:请求数——表示这次测试中一共发出了多少个请求,如果模拟10个用户,每个用户迭代10次,那么这里显示100
- Average:平均响应时间——默认情况下是单个 Request 的平均响应时间,当使用了 Transaction Controller 时,以Transaction 为单位显示平均响应时间
- Median:中位数,也就是 50% 用户的响应时间
- 90% Line:90% 用户的响应时间
- Min:最小响应时间
- Max:最大响应时间
- Error%:错误率——错误请求数/请求总数
- Throughput:吞吐量——默认情况下表示每秒完成的请求数(Request per Second),当使用了 Transaction Controller 时,也可以表示类似 LoadRunner 的 Transaction per Second 数
- KB/Sec:每秒从服务器端接收到的数据量,相当于LoadRunner中的Throughput/Sec
一般而言,性能测试中我们需要重点关注的数据有: #Samples 请求数,Average 平均响应时间,Min 最小响应时间,Max 最大响应时间,Error% 错误率及Throughput 吞吐量。
7.Jmeter录制web脚本
想要完成脚本录制,我们需要完成如下两步:
-
设置Jmeter相关参数
- 创建一个线程:测试计划—添加线程组
- 测试计划—添加非测试单元—HTTP代理服务器。要注意设置好端口和对应分组,方便后期收集脚本。
- 此处的分组我们要匹配上面添加的线程组,端口要是本地没有被占用的线程组。
-
设置浏览器
- 打开控制面板—点击Internet选项—连接—局域网设置—点击高级—HTTP地址设置为
127.0.0.1
,端口设置为8888
.(也可在浏览器设置–系统–打开代理设置设置)
- 打开控制面板—点击Internet选项—连接—局域网设置—点击高级—HTTP地址设置为
- 点击HTTP代理服务器的
运行
按钮,再点击整数确定按钮
7.1.登录脚本录制实战
登录网站:http://cfgjt.cn:8981/devt-web
账号:admin
密码:11111111
- 创建代理:测试计划—线程组—添加非测试元件—HTTP代理服务器,设置如下:

- 打开浏览器,设置代理服务器为
127.0.0.1
,端口为8888
:

- 开启录制脚本,并在浏览器请求网站http://cfgjt.cn:8981/devt-web进行登录:

- 停止录制,生成录制结果
测试元件—HTTP代理服务器**,设置如下:

- 打开浏览器,设置代理服务器为
127.0.0.1
,端口为8888
:

- 开启录制脚本,并在浏览器请求网站http://cfgjt.cn:8981/devt-web进行登录:

- 停止录制,生成录制结果
相关文章:

Jmeter的使用
Jmeter的使用 1.Jmeter简介 以下内容来自Jmeter中文网http://www.jmeter.com.cn/jieshao,很好的解释了Jmeter的作用: Apache JMeter是Apache组织开发的基于Java的压力测试工具。用于对软件做压力测试,它最初被设计用于Web应用测试…...

【蓝桥杯第十届省赛B】(部分详解)
特别数的和 #include <iostream> #include <string> using LLlong long; using namespace std;int main() {LL n;cin >> n;LL cnt 0;for (LL i 1; i < n; i) {string s to_string(i);for (LL j 0; j < s.size(); j) {if (s[j] 2 || s[j] 0 || s…...

计算机研究生规划
一、计算机研究生技术栈 两条腿走路: 左侧工程实践能力:要掌握python编程语言,它和机器学习、神经网络(这两门几乎是必须掌握的技能)的学习有很大关系 右侧学术创新能力 二、编程语言能力提升 左边基础,右边教你写…...

针孔相机、鱼眼相机、全景相机
先进性简述,后续慢慢会补充1. 针孔相机: 针孔相机是一种基于针孔成像原理的传统相机,它使用一个非常小的孔径(即“针孔”)来限制光线进入相机的方式。 这种相机通常具有简单的结构,由一个孔径较小的光学元…...

HTML5+CSS3+JS小实例:圣诞按钮
实例:圣诞按钮 技术栈:HTML+CSS+JS 效果: 源码: 【HTML】 <!DOCTYPE html> <html lang="zh-CN"><head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0&…...

【深度学习基础】
打基础日常记录 CNN基础知识1. 感知机2. DNN 深度神经网络(全连接神经网络)DNN 与感知机的区别DNN特点,全连接神经网络DNN前向传播和反向传播 3. CNN结构【提取特征分类】4. CNN应用于文本 RNN基础1. RNN的本质 词向量模型word2Vec1. 自然语言…...

银行业架构网络BIAN (Banking IndustryArchitecture Network)详细介绍
BIAN ( The Banking Industry Architecture Network) 是一个业界多方协作的非营利性组织,由全球领先银行、技术提供商、顾问和学者组成,定义了一个用以简化和标准化核心银行体系结构的银行技术框架。这一框架基于面向服务的架构 (SOA) 原则,银…...

[尚硅谷 flink] 基于时间的合流——双流联结(Join)
文章目录 8.1 窗口联结(Window Join)8.2 **间隔联结(Interval Join)** 8.1 窗口联结(Window Join) Flink为基于一段时间的双流合并专门提供了一个窗口联结算子,可以定义时间窗口,并…...

怎样恢复已删除的照片?教你3个方法,一键恢复!
很多人喜欢以拍照的形式记录生活,手机里的照片就很容易堆积成山,但当内存不够用时就不得不选择删除。可是这些美好的照片始终是很多人心中抹不去的记忆,那么该怎样恢复已删除的照片呢?下面几招,教你一键恢复࿰…...

植物糖基转移酶数据库-23年-地表最强系列-文献精读-6
pUGTdb: A comprehensive database of plant UDP-dependent glycosyltransferases pUGTdb:植物UDP依赖糖基转移酶的全面数据库 一篇关于植物糖基转移数据库的综述,地表最强,总结的最全面的版本之一,各位看官有推荐请留言评论区~…...

虚拟机打不开
问题 另一个程序已锁定文件的一部分,进程无法访问 打不开磁盘“G:\centeros\hadoop104kl\hadoop100-cl2.vmdk”或它所依赖的某个快照磁盘。 模块“Disk”启动失败。 未能启动虚拟机。 原因 前一次非正常关闭虚拟机导致.lck 文件是VMWare软件的一种磁盘锁文件&…...

MySQL数据库版本为5.5.62,时间戳超出2038年1月19日的解决方案
MySQL数据库版本是 5.5.62,已设置字段的类型为BIGINT,使用FROM_UNIXTIME()函数来转换时间戳,返回NULL。 SELECT FROM_UNIXTIME(1617970800)SELECT FROM_UNIXTIME(2185743121)MySQL数据库版本为5.5.62,已设置字段的类型为BIGINT&a…...

C++20 semaphore(信号量) 详解
头文件在C20中是并发库技术规范(Technical Specification, TS)的一部分。信号量是同步原语,帮助控制多线程程序中对共享资源的访问。头文件提供了标准C方式来使用信号量。 使用环境 Windows:VS中打开项目属性,修改C语…...

【简单讲解下Lisp的学习历程】
🎥博主:程序员不想YY啊 💫CSDN优质创作者,CSDN实力新星,CSDN博客专家 🤗点赞🎈收藏⭐再看💫养成习惯 ✨希望本文对您有所裨益,如有不足之处,欢迎在评论区提出…...

构建高效网络:深入理解正向与反向代理的作用与配置
正向代理 如果把局域网外的互联网环境想象成一个巨大的资源库,则局域网中的客户端要访问互联网则需要通过代理服务器来访问,这种代理成为正向代理。 示例: 用户想要访问 https://chensir.ink (目标服务器)࿰…...

Linux:make/makefile的使用
一、什么是makefile/make 会不会写makefile,从一个侧面说明了一个人是否具备完成大型工程的能力 一个工程中的源文件不计数,其按类型、功能、模块分别放在若干个目录中,makefile定义了一系列的 规则来指定,哪些文件需要先编译&am…...

Java设计模式—策略模式(商场打折)
策略这个词应该怎么理解,打个比方说,我们出门的时候会选择不同的出行方式,比如骑自行车、坐公交、坐火车、坐飞机、坐火箭等等,这些出行方式,每一种都是一个策略。 再比如我们去逛商场,商场现在正在搞活动&…...

FOR循环
oracle从入门到总裁:https://blog.csdn.net/weixin_67859959/article/details/135209645 前面两种循环都要根据条件是否成立而确定循环体的执行,具体循环体执行多少次事先并不知道。 FOR 循环可以控制循环执行的次数,由循环变量控制循环体的…...

C++: 命名空间/C++输入输出/缺省参数/函数重载/引用/内联函数
进入C以后,就翻开了新的篇章。C支持C语言的使用。事实上,C是创建者在发现C语言中有很多不好用的地方(在后续学习中会明显看到)后,在C语言基础上又加入了许多语法,于是就成了C。 1.命名空间 来源ÿ…...

Java | Leetcode Java题解之第13题罗马数字转整数
题目: 题解: class Solution {Map<Character, Integer> symbolValues new HashMap<Character, Integer>() {{put(I, 1);put(V, 5);put(X, 10);put(L, 50);put(C, 100);put(D, 500);put(M, 1000);}};public int romanToInt(String s) {int …...

题目:学习使用register定义变量的方法。
题目:学习使用register定义变量的方法。 There is no nutrition in the blog content. After reading it, you will not only suffer from malnutrition, but also impotence. The blog content is all parallel goods. Those who are worried about being cheated …...

IO_DAY7
1:实现2个终端之间的互相聊天 要求:千万不要做出来2个终端之间的消息发送是读一写的,一定要能够做到,一个终端发送n条消息,另一个终端一条消息都不回复都是没有问题的 终端A: #include<myhead.h> int main(int argc, char…...

大模型学习笔记八:手撕AutoGPT
文章目录 一、功能需求二、演示用例三、核心模块流程图四、代码分析1)Agent类目录创建智能体对象2)开始主流程3)在prompt的main目录输入主prompt和最后prompt4)增加实际的工具集tools(也就是函数)5…...

Java常用API_System——常用方法及代码演示
1.System.exit(int status) 方法的形参int status为状态码,如果是0,说明虚拟机正常停止,如果非0,说明虚拟机非正常停止。需要将程序结束时可以调用这个方法 代码演示: public class Test {public static void main(S…...

neo4j图数据库下载安装配置
neo4j下载地址Index of /doc/neo4j/3.5.8/ 1.说明:jdk 1.8 版本对应的 neo4j 数据库版本 推荐安装3.X版本 2.配置系统环境变量 3.启动 neo4j.bat console 4.访问...

结构化面试-有矛盾的人际沟通题
例题一: 你和小张一起值班,但是小张没来,刚好领导检查发现后批评了他,事后小张埋怨你, 认为你在领导面前表现,并在同事中传播,同事也觉得你不通人情,你怎么处理? 回答&a…...

AI技术创业机会之金融科技
金融科技服务(FinTech)领域正经历着一场由人工智能(AI)技术引领的深刻变革,为创业者提供了无数创新与颠覆传统金融服务模式的机会。以下详述了金融科技服务中AI技术的具体创业机会及其细节与内容,以期为有志于涉足此领域的创业者提供全面的洞察与参考。 一、智能投顾与财…...

LC低通滤波
LC滤波器,是指将电感L与电容器 C进行组合设计构成的滤波电路,可去除或通过特定频率的无源器件。电容器具有隔直流通交流,且交流频率越高越容易通过的特性。而电感则具有隔交流通直流,且交流频率越高越不易通过的特性。因此&#x…...

CS162 Operating System笔记
What is an Operating System? it’s typically a special layer of software that provides the application access to hardware resources.So.it’s convenient abs fractions of complex hardware devices....

mysql慢sql排查与分析
当MySQL遇到慢查询(慢SQL)时,我们可以通过以下步骤进行排查和优化: 标题开启慢查询日志: 确保MySQL的慢查询日志已经开启。通过查看slow_query_log和slow_query_log_file变量来确认。 如果没有开启,可以…...