jmeter 入门到精通

news2024/11/26 8:35:32

目录

一、jmeter 安装

二、jmeter 介绍

1、jmeter是什么?

2、jmeter 用来做什么?

3、优点

4、缺点

5、jmeter 目录介绍

①_bin 目录介绍

② docs 目录 — — 接口文档目录

③ extras目录 — — 扩展插件目录

④ lib 目录 — —  所用到的插件目录

⑤ licenses 目录 — — jmeter 证书目录

⑥ printable_docs目录

三、jmeter 基本使用&元件

1、jmeter 入门脚本

jmeter测试计划要素:

 2、测试计划元件

3、元件的作用域

(1)原则:

(2)执行顺序

4、jmeter 第一个案例

5、jmeter 运行原理

6、jmeter配置文件修改

(1)修改中文乱码问题

(2)修改默认语言

四、jmeter核心知识

1、发送http请求

1)相关配置元件

2)http请求配置

2、jmeter 参数化***

1)参数化的概念

3)用户参数

5)总结参数化

3、jmeter 断言

1)常用断言

2)响应断言

 3)Json 断言

​ 4)断言持续时间

 4、jmeter 关联

1)jmeter 常用的关联方法

 2)正则表达式提取器

 3)xpath 提取器

 4)JSON提取器

5)jmeter 的属性 -- 全局变量

5、 jmeter录制脚本

1)使用badboy录制

2)使用jmeter自身代理录制移动端

6、jmeter连接数据库 -- 以MySQL为例

1)使用数据库步骤

① 创建测试计划

② 创建线程组

③ 引入数据库驱动jar 包

④ 配置 JDBC Connectionn Configuration 

⑤ 连接测试(JDBC Request)

7、逻辑控制器

1)如果(if)控制器

2)循环控制器

3)ForEach 控制器

8、定时器

1)同步定时器

2)常数吞吐量定时器 constant throughput timer

3)固定定时器***最常用**


一、jmeter 安装

看文章:

jmeter 安装与配置_墨瑶_165的博客-CSDN博客

解释:不要使用GUI模式进行压力测试,GUI模式仅仅用于创建和调试压力测试脚本的。

二、jmeter 介绍

1、jmeter是什么?

jmeter:是Apche公司使用Java平台开发的一款测试工具。

2、jmeter 用来做什么?

  • 接口测试(http接口)
  • 性能测试
  • 压力测试(优势)
  • 数据库测试
  • Java程序测试 (因为本身就是Java语言编写的)

3、优点

  • 开源免费
  • 支持多协议 (http,tcp...)
  • 轻量级
  • 功能强大

4、缺点

无法验证JS程序,也无法验证页面UI,所以必须要和 selenium 配合来完成web2.0应用的测试

5、jmeter 目录介绍

①_bin 目录介绍

examples目录中有CSV样例
jmeter.batwindows 的启动文件
jmeter.shLinux 的启动文件
jmeter.logjmeter 运行日志文件
jmeter.properties系统配置文件
jmeter-server.batwindows 分布式测试要用到的服务器配置
jmeter-serrverLinux 分布式测试要用到的服务器配置

jmeter.properties

  • 打开:右击 -->
  • 修改后需要重启 jmeter 使用

https=http+ssl

② docs 目录 — — 接口文档目录

例如:docs\api\index.html 可打开网页查看

③ extras目录 — — 扩展插件目录

提供了对 ant 的支持,可以使用 ant 实现自动化测试。例如批量脚本执行,产生html格式的报表

测试运行时,可以把测试数据记录下来,jmeter会自动生成一个 .jtl 文件,将该文件放在extras目录下,运行“ant-Dtest=文件名 report”,就可以生成测试统计报表。

④ lib 目录 — —  所用到的插件目录

⑤ licenses 目录 — — jmeter 证书目录

⑥ printable_docs目录

(网页可以翻译看)

三、jmeter 基本使用&元件

1、jmeter 入门脚本

  • ①添加测试计划 (当打开jmeter默认有一个测试计划)
  • ②添加线程组 (右击测试计划-->添加-->线程-->线程组)
  • ③添加http请求 (右击线程组-->取样器-->http请求)
  • ④配置http请求

jmeter测试计划要素:

  • 测试计划(项目名称)
  • 测试计划中至少有一个线程组
  • 线程组中至少有一个取样器
  • 测试计划中必须有监听器

  • ⑤ 添加查看结果树(右击线程组-->监听器-->查看结果树)#查看结果树不做任何配置

编辑好脚本后,可以发送请求

 save后默认发送请求

 2、测试计划元件

 元件与组件的区别

  • 元件:多个类似功能组件的容器
  • 组件:容器中实现单独的某个功能

①线程组介绍(不属于元件哦!放在一起学习而已)

② 取样器(sample)

取样器是性能测试中向服务器发送请求,记录响应信息,记录响应时间的最小单位。

jmeter支持不同取样器(即支持不同协议的请求)

③ 逻辑控制器(logic controller)

包括两类元件:

  • 一类用于控制testplan中sampler节点发送请求的逻辑顺序的控制器,常用的有 if控制器,Switchcontroller、runtimecontroller、循环控制器等
  • 另一类是用来组织可控制sampler节点的,如事务控制器、吞吐量控制器

④ 配置元件(config element)

用来提供对静态数据的支持

⑤ 定时器(timer)

在操作之前设置等待时间(例如取样器与取样器之间,设置一个等待时间)

⑥ 前置处理器(per processors)

用于实际请求之前对即将发出的请求进行特殊处理

⑦ 后置处理器(post processors)

用于对sampler发出请求后得到的服务器响应进行处理

⑧ 断言(assertions)

用于检查测试中得到的响应数据等是否符合预期,assertions一般用来设置检查点,用以保证性能测试过程中的数据交互与预期是否一致

⑨ 监听器

对测试结果进行处理和可视化展示的一系列组件

3、元件的作用域

靠测试计划中元件树形结构的父子关系来确认

(1)原则:

取样器:以取样器为核心,取样器没有作用域

逻辑控制器:只对子节点的取样器和逻辑控制器起作用

其他元件

  • 如果父节点是取样器,则只对其父节点起作用
  • 如果父节点不是取样器,则该作用域是其父节点下的其他所有后代节点(子节点,子节点的子节点)

(2)执行顺序

同一作用域下不同元件执行顺序

  • 配置元件 -- 前置处理器 -- 定时器 -- 取样器 -- 后置处理器 -- 断言 -- 监听器

同一作用域下相同元件的执行顺序

  • 从上到下依次执行

案例:执行顺序案例

定时器1 -- 请求1 -- 定时器1 -- 定时器2 -- 请求2 -- 定时器1 -- 定时器3 -- 请求3

解析:定时器1 的父节点不是取样器,所以对父节点下的所有后代节点都起作用

4、jmeter 第一个案例

需求:使用 jmeter 访问百度接口,并查看请求和响应信息

步骤:

  • 添加线程组
  • 添加 HTTP 请求 并 配置
  • 添加查看结果树

5、jmeter 运行原理

1、在 jmeter 中是以线程的方式运行的

问:为什么以线程方式运行而不是进程?
        因为 jmeter 是运行在jvm虚拟机上的,每个进程的开销比较大,如果以进程的方式来运行的话,每台负载机上的进程数量就不会允许太多,当我们需要大量并发时就需要大量的负载机,这显然是不经济的,再者Java也是支持多线程的,所以 jmeter 选择了以线程的方式来运行。

2、jmeter通过线程组来驱动多个线程运行测试脚本,对被测服务器发起负载,每个负载机上都可以运行多个线程组。

jmeter运行场景:

  • GUI模式(界面模式)(主要用来编写和调试jmeter测试脚本)
  • 命令行模式(对负载机的资源消耗会更小)(用来实现高并发和压力测试)

在资源有限的情况下,都是用命令行模式来执行jmeter脚本的,而页面模式是用来前期创建脚本或者调试脚本的

负载机:执行jmeter脚本的电脑

6、jmeter配置文件修改

bin --> jmeter.properties -->右击打开

(1)修改中文乱码问题

找下面这句话(查找快捷键:ctrl+f)

sampleresult.default.encoding=ISO-8859-1 
#ISO-8859-1是默认值

将参数修改为

sampleresult.default.encoding =utf-8

去掉这行代码前面的#号

(2)修改默认语言

 修改保存完后,重启 jmeter 就生效了

四、jmeter核心知识

1、发送http请求

(学习 jmeter取样器 以 http请求 为例)

作用:向服务器发送http/https请求

1)相关配置元件

① HTTP管理器

 http请求 与 配置元件配套使用

② http消息头管理器(http请求头)

主要使用Content-Type参数(指请求参数的类型)

在jmeter中,发送HTTP的post请求时,需要添加http消息头管理器

 !汉字是??时,在内容编码中加 utf-8

③ http请求默认值

作用:将同一线程组下所有http请求的协议和服务器域名统一管理

(如果http请求中自己填写了http协议和服务器域名,当发送请求时使用本身的协议和域名)

2)http请求配置

  • http协议默认端口号:80
  • httpd默认端口号:443

请求地址:http://127.0.0.1:8000/api/departments/

练习:编写 jmeter 脚本,访问百度 (URL=http://www.baidu.com/S  参数:wd=test(form表单)

  • 案例1:GET请求,路径传递参数
  • 案例2:GET请求,参数列表传递参数
  • 案例3:POST请求,请求体数据传输参数
  • 案例4:POST请求,参数列表传输参数

2、jmeter 参数化***

1)参数化的概念

什么是参数化?

  • 根据需求动态获取数据并进行赋值的过程

jmeter中参数的定义?

  • jmeter中参数化的变量用 ${变量名} 表示

jmeter参数化常用方式?

  • CSV数据控件 (CSV Data Set Config)
  • 用户定义的变量(User Defined Variables)
  • 用户参数(User Variables)

2)CSV Data Set Config

一种从外部读取数据功能的组件

适用范围:需要大量测试数据

实现步骤

  • 创建测试计划
  • 创建线程组
  • 添加 CSV Data Set Config 组件并配置
  • 添加http请求并配置
  • 添加查看结果树

将表格xlsx格式转换为CSV --> CSV编码转为UTF-8(notepad)--> CSV数据文件设置 --> http请求设置 -->设置线程组线程数或循环次数

配置http请求(引用定义的变量名,格式:${变量名}

3)用户参数

适用于:参数取值范围很小

位置:前置处理器 --> 用户参数

使用方式

  • 针对那个http请求使用就在哪个http请求下添加(http --> 添加 --> 前置处理器 --> 用户参数)

配置用户参数

  • 添加变量 --> 添加变量名称
  • 添加用户 --> 添加用户名称(一个用户就是一个测试数据)

使用用户参数

  • 在http请求中引用变量(${变量名})
  • 在线程组中设置线程数;线程数的值和用户数一致

4)用户定义的变量

适用于:定义全局变量

位置:

  • 测试计划页面(一般情况下)
  • 配置元件 --> 用户定义的变量

步骤:

  • 添加线程组
  • 添加用户定义的变量
  • 添加http请求,引用变量${变量名}
  • 添加查看结果树

5)总结参数化

①csv数据文化配置(配置元件中)

  • 适用于大量的测试数据时的使用

②用户参数(前置处理器中)

  • 适用于少量测试数据

③用户定义的变量(测试计划 / 配置元件中)

  • 定义全局变量

3、jmeter 断言

(让 程序自动判断预期结果和实际结果是否一致)

1)常用断言

  • 响应断言
  • json断言
  • 持续时间断言

2)响应断言

作用:对HTTP请求的任意格式响应结果进行断言

位置:右击http请求 --> 添加 --> 断言 --> 响应断言

参数:

案例1:
        请求:https://www.baidu.com
        检查:响应数据中是否包含“百度一下,你就知道”

 案例2:校验多个测试数据

 3)Json 断言

适用于:HTTP响应结果是 json 格式时,可以使用 json断言

参数:

 案例:

4)断言持续时间

作用:检查http请求的响应数据是否超出要求范围

参数:

  • 响应时间(毫秒):http请求允许的最大响应时间(1s = 1000ms)。

案例:

 4、jmeter 关联

当请求之间有依赖关系,比如一个请求的入参是另一个请求的返回数据,这时候就需要用到关联。

1)jmeter 常用的关联方法

  • 正则表达式 提取法(针对任意格式)
  • Xpath 提取法(html格式)
  • JSON 提取法

 

正则表达式在线测试

 2)正则表达式提取器

位置:右击HTTP请求 --> 添加 --> 后置处理器 --> 正则表达式提取器

http请求配置中,用 ${变量名} 引用 正则表达式提取器的引用名称

案例1:获取传智播客首页的title,并作为参数传递

  • 请求:http://www.itcast.cn/,获取网页的title值
  • 请求:http://www.baidu.com/,把获取到的title作为请求参数

 案例2:获取传智播客首页的地址,把第5个校区地址作为参数传递(span为地址的校区)

方法1: (地址要先发送一次请求,在响应数据中查看)

 方法2:

 案例3:

获取传智播客首页的地址,把第5个校区地址作为参数传递(span为地址/后面带一、二、三)

 3)xpath 提取器

作用:根据HTML格式的响应结果数据进行提取

参数:

 案例1:获取传智播客首页的title,并作为参数传递

  • 请求:http://www.itcast.cn/,获取网页的title值
  • 请求:http://www.baidu.com/,把获取到的title作为请求参数

 

 4)JSON提取器

作用:针对JSON格式的响应结果数据进行提取

参数:

案例:提取天气接口中的城市信息,作为参数在访问百度首页时传递

5)jmeter 的属性 -- 全局变量

提问:当有关联关系的两个请求在不同线程组中,该如何进行消息传递呢?(定义全局变量)

① jmeter属性的配置函数:

  • _setProperty函数:将值保存成 jmeter属性
  • _Property函数:在其他线程组中读取 jmeter 属性

② jmeter属性的执行:

  • _setProperty函数 执行(保存jmeter属性):通过 BeanShell 取样器
  • _Property函数 执行(读取属性):在其他线程组中使用 property函数

③ 案例

 操作步骤:

  • 添加线程组1
  • 添加http请求-天气
  • 添加JSON提取器
  • 添加BeanShell取样器(将JSON提取的值保存成jmeter属性)
  • 添加线程组2
  • 添加http请求-百度(读取jmeter属性)
  • 添加查看结果树

 配置setproperty函数(选项--函数助手对话框--生成代码)

 

让线程组串行执行!

5、 jmeter录制脚本

1)使用badboy录制

安装badboy(提取码:drzb)

录制步骤:

  • 打开badboy,默认记录状态
  • 地址栏输入网址,回车 --> 页面操作 --> 停止记录
  • 导出脚本:file --> export jmeter --> 选择路径保存

在jmeter中打开已有的文件

  • jmeter脚本文件后缀 .jmx
  • 在jmeter中点击打开文件,选择文件路径,找到需要的文件打开就可以了

2)使用jmeter自身代理录制移动端

① 配置jmeter

  • 打开jmeter添加新的测试计划
  • 添加线程组
  • 添加HTTP代理服务器(右击测试计划 --> 非测试元件 --> HTTP代理服务)
  • 配置HTTP代理服务器(也可以在request filtering 上设置过滤条件)

② 配置手机

设置 --> wifi --> 配置代理(然后填电脑的IP地址,端口号)

然后就可以录制移动端操作了!

6、jmeter连接数据库 -- 以MySQL为例

需将mysql-connector-java-X.X.X-bin.jar放入到jmeter安装目录下的./lib目录,重启jmeter

1)使用数据库步骤

① 创建测试计划

② 创建线程组

  • 添加 JDBC Connectionn Configuration (建立数据库连接)
  • 添加 JDBC Request (发送数据库请求)
  • 添加查看结果树

③ 引入数据库驱动jar 包

④ 配置 JDBC Connectionn Configuration 

  • database url(数据库地址):如:jdbc:mysql://数据库IP地址:数据库端口/数据库名称

⑤ 连接测试(JDBC Request)

  • Variable name of pool...:数据库连接池的名字(与JDBC Connection Configuration 名字保持一致)
  • Querys:查询数据库语句的SQL语句(末尾不要加;)
  • parameter values:数据的参数值
  • parameter types:数据的参数类型
  • variable name:变量名称,用于保持SQL语句返回结果(eg. 变量名称)
  • result variable name:创建一个对象变量,保存所有返回结果
  • query timeout:查询超时时间
  • handle result set:定义如何处理由 callable statements语句返回的结果

jmeter测试数据库服务--JDBC Request_不进则退2020的博客-CSDN博客_jmeter连接数据库https://blog.csdn.net/qq_32706349/article/details/97539270?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522164955943716782094879408%2522%252C%2522scm%2522%253A%252220140713.130102334..%2522%257D&request_id=164955943716782094879408&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2~all~baidu_landing_v2~default-4-97539270.142%5Ev7%5Epc_search_result_control_group,157%5Ev4%5Econtrol&utm_term=jmeter%E8%BF%9E%E6%8E%A5%E6%95%B0%E6%8D%AE%E5%BA%93&spm=1018.2226.3001.4187

7、逻辑控制器

1)如果(if)控制器

作用:用来控制它下面测试元素是否运行

位置:右击线程组 --> 添加 --> 逻辑控制器 --> 如果(if)控制器

参数:

条件:

  • JS语法格式:"${name}"=="itcast" #当name取值等于itcast
  • 函数格式:${_jexl3("${name}"=="itcast")}  #需要勾选下面的复选框

案例:

两个if控制器的条件如下:(其下对应的HTTP请求分别对应www.baidu.com和www.itcast.cn)

"${name}"=="baidu";
"${name}"=="itcast";
#如果勾选了复选框,则需使用函数格式:
${_jexl3("${name}"=="baidu")}
${_jexl3("${name}"=="itcast")}

2)循环控制器

① 参数:

案例:循环访问百度10次

思考:线程组设置的循环次数和循环控制器循环次数有什么区别?

不同:

  • 线程组设置的循环次数对线程组下所有HTTP请求都起作用
  • 循环控制器循环次数只对该控制器下的HTTP请求起作用
当线程组循环次数为 M,循环控制器次数为N时:
  • 循环控制器下的HTTP请求循环次数:M*N次
  • 非循环控制器下的HTTP请求循环次数:M次

3)ForEach 控制器

作用:一般和用户自定义变量或正则表达式提取器一起使用,读取返回结果中一系列相关的变量

参数:

 案例:

  1.  有一组关键字 [hello,python,测试],使用用户定义的变量存储
  2.  要依次取出关键字,并在百度搜索,例如:https://www.baidu.com/s?wd=hello

操作步骤:

 案例2:

8、定时器

1)同步定时器

阻塞线程(累计一定的请求),在规定的时间内达到一定的线程数量,这些线程会在同一时间点一起释放,瞬间产生很大的压力。

参数:

案例1:模拟100个用户同时访问百度首页,统计各种高并发情况下运行情况

步骤:

  • 添加线程组
  • 添加http请求
  • 添加同步定时器(要设置时间且不能太小!)
  • 添加查看结果树
  • 添加监听器 --> 聚合报告

2)常数吞吐量定时器 constant throughput timer

稳定性测试时,需要模拟用户真实的业务场景。若真实业务场景QPS为20,如何精确模拟?

作用:让jmeter按指定的吞吐量(QPS)执行,以每分钟为单位。

参数:

案例:服务器的QPS要求:20QPS (20 /s)
  • 案例1 :一个用户访问百度首页,持续一段时间,统计运行情况
  • 案例2:两个用户访问百度首页,持续一段时间,统计运行情况。

3)固定定时器***最常用**

案例:IHRM系统登录错误3次后,锁定1分钟,1分钟后重新输入正确的用户名密码登录成功
 打开网页控制台,操作查看数据填写请求

 

 配置http请求

 在http请求4下面添加固定定时器,并配置等待时间

执行后为什么出现下面结果呢?

请求的格式是json ,json 格式请求的请求头类型是application/json

所以需要用信息头管理器修改头域

 成功!

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

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

相关文章

网络通信原理系统的认知(NEBASE第十四课)

1 物理层 第一层 物理层:建立、维护、断开物理连接,定义了接口及介质,实现了比特流的传输。 1.1传输层介质分类 有线介质:网线 (双绞线)光纤 无线: 无线电 1.2 双绞线 五类线 cat5 :适用 10…

[论文分享]ConvMAE:Masked Convolution Meets Masked Autoencoders

论文题目:ConvMAE: Masked Convolution Meets Masked Autoencoders 论文地址:https://arxiv.org/abs/2205.03892 代码地址:https://github.com/Alpha-VL/ConvMAE 摘要 视觉变压器(Vision transformer, ViT)已成为广泛应用于各种视觉任务的架…

如何使用 SVG 作为占位符和其他图像加载技术

从图像生成 SVG 可用于占位符。 一、说明 我们对图像性能优化和使图像在网络上快速加载充满热情。最有趣的探索领域之一是占位符:当图像尚未加载时要显示的内容。 在过去,我遇到了一些使用 SVG 的加载技术,我想在这篇文章中描述它们。 在这…

代码随想录算法训练营第52天 | 动态规划 part13 ● 300.最长递增子序列 ● 674. 最长连续递增序列 ● 718. 最长重复子数组

#300.最长递增子序列 自己想了20min没想出来。但没关系因为没接触过该题型。我想不出来的点就是,如果i-1的最后一个不要的话,我怎么找到上一个结束点。解决方案是:再搞一个循环,一个个找(下面的 j ) 下面…

性能测试 Linux 环境下模拟延时和丢包实现

在性能测试过程中,我们还需要模拟网络异常的情况下,是否会出现一些异常数据。最常见的就是写库操作,比如说我们下单的场景,如果出现网络异常的时候是否会出现数据对不上这种情况。 如我们JMeter发送成功的请求数量和最终数据库表…

龙蜥白皮书精选:面向 HTTP 3.0 时代的高性能网络协议栈

文/高性能网络 SIG 01 背景概述 随着互联网特别是移动互联网的快速发展,对互联网通信协议提出了新的诉求。经过多年的发展,QUIC 协议在 2021 年正式被 IEFT 标准化,成为 HTTP 3 的标准传输层协议。QUIC 是基于 UDP 实现的面向连接可靠有序…

基于虚拟同步发电机控制的双机并联MATLAB仿真模型

使用MATLAB2021b打开 主要内容: 功率计算模块、虚拟同步发电机控制模块、电压合成模块、电压电流双环控制模块! 1.两台VSG并联,开始各自带负载10KW,在0.3秒的时候加入公共负载10KW,稳定后两台VSG可以均分公共负载的…

大模型时代Embedding技术简介

Embeddings技术简介及其历史概要 在机器学习和自然语言处理中,embedding是指将高维度的数据(例如文字、图片、音频)映射到低维度空间的过程。embedding向量通常是一个由实数构成的向量,它将输入的数据表示成一个连续的数值空间中…

SciencePub学术 | 区块链类重点SCIEEI征稿中

SciencePub学术 刊源推荐: 区块链类重点SCIE&EI征稿中!信息如下,录满为止: 一、期刊概况: SCI-01 【期刊简介】IF:4.0-4.5,JCR2区,中科院3区; 【检索情况】SCIE&EI双检&…

另一个流行漏洞。

Microsoft Office 和 Windows HTML 中的 CVE-2023-36884 漏洞。该漏洞由供应商公开披露,但尚未修补。Microsoft 意识到利用该漏洞的针对性攻击。据了解,RomCom 组织曾在此类攻击中使用勒索软件 Industrial Spy 和 Cuba。 可能导致什么后果? …

奇迹MU架设教程:SQL Server 2008数据库的安装教程

不管是搭建什么游戏,都是有数据库的,奇迹MU用的是SQL 数据库,根据服务器系统选择SQL server版本,我比较喜欢用Windows server 2008R2系统,所以我安装的是SQL server 2008。作为架设奇迹很重要的数据库程序,…

python中文版下载安装教程,python中文版下载官网

大家好,本文将围绕python中文版软件下载百度网盘展开说明,python中文版下载安装教程是一个很多人都想弄明白的事情,想搞清楚python中文最新版下载需要先了解以下几个事情。 1、python下载安装教程_百度知道 python下载安装教程:自…

Linux中ssh登陆慢的两种原因

useDNS配置导致登陆慢 如果ssh server的配置文件(通常是 /etc/ssh/sshd_config )中设置 useDNS yes ,可能会导致 ssh 登陆卡住几十秒。将该配置项设为 no,然后重启 ssh 服务,再次登陆就恢复正常。将useDND配置为yes会…

Effective Java笔记(7)消除过期的对象引用

当你从手工管理内存的语言(比如 C 或 C++)转换到具有垃圾回收功能的比如 Java 语言时,程序员的工作会变得更加容易,因为当你用完了对象之后,它们会被自动回收 。 当你第一次经历对象回收功能的时…

中国人民大学与加拿大女王大学金融硕士——引领你走在金融行业前沿

金融是现代经济的血脉,而金融行业高质量发展取决于金融人才。新常态下,中国经济进入新的阶段,同时也对金融人才培养提出了新的要求。针对在金融行业沉淀多年的在职人士而言,是否需要更加系统化的学习金融知识呢,中国人…

Python自动化之win32利器pywin32

文章目录 前言一、GUI1.1 获取、关闭窗口1.2 窗口截图1.3 创建窗口 二、文件、目录2.1 查找2.2 创建2.3 复制/移动2.4 删除2.5 读取/写入 三、服务3.1 查找3.2 安装 四、案例4.1 自动发送微信消息4.2 Excel 操作4.3 监控文件夹 参考 前言 PyWin32 是一个Python库,用…

【vue】路由的搭建以及嵌套路由

目的:学习搭建vue2项目基础的vue路由和嵌套路由 1.npm 安装 router npm install vue-router3.6.52.src下新建文件夹router文件夹以及文件index.js index.js import Vue from vue import VueRouter from "vue-router" import Home from ../views/Home.…

【Linux】- 组管理和权限管理

组管理和权限管理 1.1 Linux 组基本介绍1.2 权限的基本介绍 1.1 Linux 组基本介绍 在 linux 中的每个用户必须属于一个组,不能独立于组外。在 linux 中每个文件 有所有者、所在组、其它组的概念。 所有者所在组其它组改变用户所在的组 文件/目录 所有者 一般为文…

关于Windows 11 docker desktop 运行doris 容器时vm.max_map_count=2000000的设置问题

需要一个简单的测试环境,于是准备用docker启动一个1fe 1be的简单玩一下 如果be容器启动后再去修改 /etc/sysctl.conf sysctl -w vm.max_map_count2000000 这个参数是没用的,be仍然会启动失败 这时可以打开cmd wsl --list C:\Users\pc>wsl --list …

Docker基础——初识Docker

Docker架构 Docker 使用客户端-服务器 (C/S) 架构模式,使用远程API来管理和创建Docker容器。 Docker 客户端(Client) : Docker 客户端通过命令行或者其他工具使用 Docker SDK (https://docs.docker.com/develop/sdk/) 与 Docker 的守护进程通信。Docker 主机(Host…