Jmeter中的定时器
4)定时器
1--固定定时器
功能特点
- 固定延迟:在每个请求之间添加固定的延迟时间。
- 精确控制:可以精确控制请求的发送频率。
- 简单易用:配置简单,易于理解和使用。
配置步骤
-
添加固定定时器
- 右键点击需要添加定时器的请求或线程组。
- 选择“添加” -> “定时器” -> “固定定时器”(Constant Timer)。
-
配置固定定时器
- 名称:给固定定时器一个有意义的名称。
- 线程延迟(毫秒):设置每个请求之间的固定延迟时间(单位为毫秒)。
示例配置
假设我们需要测试一个Web应用,并在每个请求之间添加2秒(2000毫秒)的固定延迟。
-
创建测试计划:
- 右键点击“测试计划” -> 新建 -> 输入测试计划名称(例如“Web应用性能测试”)。
-
添加线程组:
- 右键点击测试计划 -> 添加 -> 线程组 -> 输入线程组名称(例如“用户模拟”)。
-
添加HTTP请求:
- 右键点击线程组 -> 添加 -> 取样器 -> HTTP请求。
- 配置HTTP请求:
- 名称:请求名称(例如“获取用户列表”)。
- 服务器名称或IP:目标服务器的地址(例如
example.com
)。 - 端口号:目标服务器的端口(例如
80
)。 - 协议:HTTP或HTTPS(例如
HTTP
)。 - 方法:请求的方法(例如
GET
)。 - 路径:请求的路径(例如
/api/users
)。
-
添加固定定时器:
- 右键点击HTTP请求 -> 添加 -> 定时器 -> 固定定时器。
- 配置固定定时器:
- 名称:固定定时器
- 线程延迟(毫秒):2000(表示每个请求之间延迟2秒)
-
运行测试:
- 点击工具栏上的“启动”按钮,运行测试。
优化建议
-
延迟时间:
- 根据实际需求设置合适的延迟时间。过短的延迟可能导致服务器过载,过长的延迟可能无法充分测试系统的性能。
-
放置位置:
- 固定定时器可以放在线程组级别或特定请求级别。放在线程组级别会影响该线程组中的所有请求,放在特定请求级别只影响该请求。
-
多请求场景:
- 如果有多个请求需要添加固定延迟,可以为每个请求单独添加固定定时器,或者将多个请求放在一个线程组中,然后在该线程组中添加固定定时器。
-
性能影响:
- 固定定时器不会显著影响测试性能,但在大规模性能测试中,仍需注意总体的测试设计,确保延迟时间合理。
-
组合使用:
- 固定定时器可以与其他定时器(如高斯随机定时器、统一随机定时器等)组合使用,以实现更复杂的延迟策略。
示例配置详细说明
假设我们有一个简单的测试计划,包含一个线程组和一个HTTP请求,并希望在每个请求之间添加2秒的固定延迟。
-
创建测试计划:
- 右键点击“测试计划” -> 新建 -> 输入测试计划名称(例如“Web应用性能测试”)。
-
添加线程组:
- 右键点击测试计划 -> 添加 -> 线程组 -> 输入线程组名称(例如“用户模拟”)。
- 配置线程组:
- 线程数:10(模拟10个用户)
- 循环次数:10(每个用户发送10次请求)
- 启动延迟:0(立即启动)
-
添加HTTP请求:
- 右键点击线程组 -> 添加 -> 取样器 -> HTTP请求。
- 配置HTTP请求:
- 名称:获取用户列表
- 服务器名称或IP:example.com
- 端口号:80
- 协议:HTTP
- 方法:GET
- 路径:/api/users
-
添加固定定时器:
- 右键点击HTTP请求 -> 添加 -> 定时器 -> 固定定时器。
- 配置固定定时器:
- 名称:固定定时器
- 线程延迟(毫秒):2000
-
运行测试:
- 点击工具栏上的“启动”按钮,运行测试。
2--统一随机定时器
功能特点
- 随机延迟:在每个请求之间添加随机的延迟时间。
- 均匀分布:延迟时间在指定的范围内均匀分布。
- 灵活控制:可以精确控制请求的发送频率,同时引入随机性。
配置步骤
-
添加统一随机定时器
- 右键点击需要添加定时器的请求或线程组。
- 选择“添加” -> “定时器” -> “统一随机定时器”(Uniform Random Timer)。
-
配置统一随机定时器
- 名称:给统一随机定时器一个有意义的名称。
- 偏移(毫秒):设置延迟时间的上下限范围。
- 延迟(毫秒):设置基础延迟时间。
参数说明
- 偏移(毫秒):设置随机延迟时间的范围。例如,如果设置为1000毫秒,则延迟时间将在基础延迟时间的基础上随机增加或减少最多1000毫秒。
- 延迟(毫秒):设置基础延迟时间。例如,如果设置为2000毫秒,则每个请求的基础延迟时间为2000毫秒。
示例配置
假设我们需要测试一个Web应用,并在每个请求之间添加2秒(2000毫秒)的基础延迟,同时在±1秒(1000毫秒)的范围内随机波动。
-
创建测试计划:
- 右键点击“测试计划” -> 新建 -> 输入测试计划名称(例如“Web应用性能测试”)。
-
添加线程组:
- 右键点击测试计划 -> 添加 -> 线程组 -> 输入线程组名称(例如“用户模拟”)。
-
添加HTTP请求:
- 右键点击线程组 -> 添加 -> 取样器 -> HTTP请求。
- 配置HTTP请求:
- 名称:请求名称(例如“获取用户列表”)。
- 服务器名称或IP:目标服务器的地址(例如
example.com
)。 - 端口号:目标服务器的端口(例如
80
)。 - 协议:HTTP或HTTPS(例如
HTTP
)。 - 方法:请求的方法(例如
GET
)。 - 路径:请求的路径(例如
/api/users
)。
-
添加统一随机定时器:
- 右键点击HTTP请求 -> 添加 -> 定时器 -> 统一随机定时器。
- 配置统一随机定时器:
- 名称:统一随机定时器
- 偏移(毫秒):1000
- 延迟(毫秒):2000
-
运行测试:
- 点击工具栏上的“启动”按钮,运行测试。
优化建议
-
延迟时间:
- 根据实际需求设置合适的基础延迟时间和偏移时间。过短的延迟可能导致服务器过载,过长的延迟可能无法充分测试系统的性能。
-
放置位置:
- 统一随机定时器可以放在线程组级别或特定请求级别。放在线程组级别会影响该线程组中的所有请求,放在特定请求级别只影响该请求。
-
多请求场景:
- 如果有多个请求需要添加随机延迟,可以为每个请求单独添加统一随机定时器,或者将多个请求放在一个线程组中,然后在该线程组中添加统一随机定时器。
-
性能影响:
- 统一随机定时器不会显著影响测试性能,但在大规模性能测试中,仍需注意总体的测试设计,确保延迟时间合理。
-
组合使用:
- 统一随机定时器可以与其他定时器(如固定定时器、高斯随机定时器等)组合使用,以实现更复杂的延迟策略。
示例配置详细说明
假设我们有一个简单的测试计划,包含一个线程组和一个HTTP请求,并希望在每个请求之间添加2秒的基础延迟,同时在±1秒的范围内随机波动。
-
创建测试计划:
- 右键点击“测试计划” -> 新建 -> 输入测试计划名称(例如“Web应用性能测试”)。
-
添加线程组:
- 右键点击测试计划 -> 添加 -> 线程组 -> 输入线程组名称(例如“用户模拟”)。
- 配置线程组:
- 线程数:10(模拟10个用户)
- 循环次数:10(每个用户发送10次请求)
- 启动延迟:0(立即启动)
-
添加HTTP请求:
- 右键点击线程组 -> 添加 -> 取样器 -> HTTP请求。
- 配置HTTP请求:
- 名称:获取用户列表
- 服务器名称或IP:example.com
- 端口号:80
- 协议:HTTP
- 方法:GET
- 路径:/api/users
-
添加统一随机定时器:
- 右键点击HTTP请求 -> 添加 -> 定时器 -> 统一随机定时器。
- 配置统一随机定时器:
- 名称:统一随机定时器
- 偏移(毫秒):1000
- 延迟(毫秒):2000
-
运行测试:
- 点击工具栏上的“启动”按钮,运行测试。
3--Precise Throughpupt Timer
功能特点
- 精确控制请求速率:确保在指定的时间段内发送指定数量的请求。
- 灵活配置:可以设置每分钟发送的请求数量或每个线程组的吞吐量。
- 适用于高精度测试:特别适合需要精确控制请求频率的性能测试。
配置步骤
-
添加精确吞吐量定时器
- 右键点击需要添加定时器的请求或线程组。
- 选择“添加” -> “定时器” -> “精确吞吐量定时器”(Precise Throughput Timer)。
-
配置精确吞吐量定时器
- 名称:给精确吞吐量定时器一个有意义的名称。
- 吞吐量:设置每分钟发送的请求数量。
- 持续时间(毫秒):(可选)设置定时器的持续时间,超过该时间后定时器将停止工作。
参数说明
- 吞吐量:设置每分钟发送的请求数量。例如,如果设置为60,则每分钟发送60个请求。
- 持续时间(毫秒):设置定时器的持续时间,超过该时间后定时器将停止工作。如果不设置,定时器将一直工作直到测试结束。
示例配置
假设我们需要测试一个Web应用,并确保每分钟发送60个请求。
-
创建测试计划:
- 右键点击“测试计划” -> 新建 -> 输入测试计划名称(例如“Web应用性能测试”)。
-
添加线程组:
- 右键点击测试计划 -> 添加 -> 线程组 -> 输入线程组名称(例如“用户模拟”)。
- 配置线程组:
- 线程数:10(模拟10个用户)
- 循环次数:10(每个用户发送10次请求)
- 启动延迟:0(立即启动)
-
添加HTTP请求:
- 右键点击线程组 -> 添加 -> 取样器 -> HTTP请求。
- 配置HTTP请求:
- 名称:请求名称(例如“获取用户列表”)。
- 服务器名称或IP:目标服务器的地址(例如
example.com
)。 - 端口号:目标服务器的端口(例如
80
)。 - 协议:HTTP或HTTPS(例如
HTTP
)。 - 方法:请求的方法(例如
GET
)。 - 路径:请求的路径(例如
/api/users
)。
-
添加精确吞吐量定时器:
- 右键点击HTTP请求 -> 添加 -> 定时器 -> 精确吞吐量定时器。
- 配置精确吞吐量定时器:
- 名称:精确吞吐量定时器
- 吞吐量:60(每分钟发送60个请求)
- 持续时间(毫秒):(可选)如果不设置,定时器将一直工作直到测试结束
-
运行测试:
- 点击工具栏上的“启动”按钮,运行测试。
优化建议
-
吞吐量设置:
- 根据实际需求设置合适的吞吐量。过高的吞吐量可能导致服务器过载,过低的吞吐量可能无法充分测试系统的性能。
-
持续时间设置:
- 如果需要在特定时间段内控制请求速率,可以设置持续时间。否则,定时器将一直工作直到测试结束。
-
放置位置:
- 精确吞吐量定时器可以放在线程组级别或特定请求级别。放在线程组级别会影响该线程组中的所有请求,放在特定请求级别只影响该请求。
-
多请求场景:
- 如果有多个请求需要控制请求速率,可以为每个请求单独添加精确吞吐量定时器,或者将多个请求放在一个线程组中,然后在该线程组中添加精确吞吐量定时器。
-
性能影响:
- 精确吞吐量定时器可能会对测试性能产生一定影响,特别是在大规模性能测试中。可以通过调整吞吐量和持续时间来优化性能。
-
组合使用:
- 精确吞吐量定时器可以与其他定时器(如固定定时器、统一随机定时器等)组合使用,以实现更复杂的延迟策略。
示例配置详细说明
假设我们有一个简单的测试计划,包含一个线程组和一个HTTP请求,并希望每分钟发送60个请求。
-
创建测试计划:
- 右键点击“测试计划” -> 新建 -> 输入测试计划名称(例如“Web应用性能测试”)。
-
添加线程组:
- 右键点击测试计划 -> 添加 -> 线程组 -> 输入线程组名称(例如“用户模拟”)。
- 配置线程组:
- 线程数:10(模拟10个用户)
- 循环次数:10(每个用户发送10次请求)
- 启动延迟:0(立即启动)
-
添加HTTP请求:
- 右键点击线程组 -> 添加 -> 取样器 -> HTTP请求。
- 配置HTTP请求:
- 名称:获取用户列表
- 服务器名称或IP:example.com
- 端口号:80
- 协议:HTTP
- 方法:GET
- 路径:/api/users
-
添加精确吞吐量定时器:
- 右键点击HTTP请求 -> 添加 -> 定时器 -> 精确吞吐量定时器。
- 配置精确吞吐量定时器:
- 名称:精确吞吐量定时器
- 吞吐量:60(每分钟发送60个请求)
- 持续时间(毫秒):(可选)如果不设置,定时器将一直工作直到测试结束
-
运行测试:
- 点击工具栏上的“启动”按钮,运行测试。
4--Constant Throughpupt Timer
功能特点
- 恒定请求速率:确保在指定的时间段内保持恒定的吞吐量。
- 灵活配置:可以设置每分钟发送的请求数量或每个线程组的吞吐量。
- 适用于稳定负载测试:特别适合需要稳定控制请求频率的性能测试。
配置步骤
-
添加恒定吞吐量定时器
- 右键点击需要添加定时器的请求或线程组。
- 选择“添加” -> “定时器” -> “恒定吞吐量定时器”(Constant Throughput Timer)。
-
配置恒定吞吐量定时器
- 名称:给恒定吞吐量定时器一个有意义的名称。
- 目标吞吐量(每分钟):设置每分钟发送的请求数量。
- 计算所有子采样器:选择是否将定时器应用于当前线程组中的所有子采样器。
参数说明
- 目标吞吐量(每分钟):设置每分钟发送的请求数量。例如,如果设置为60,则每分钟发送60个请求。
- 计算所有子采样器:选择是否将定时器应用于当前线程组中的所有子采样器。如果选择“是”,则定时器将影响整个线程组中的所有请求;如果选择“否”,则定时器仅影响当前请求。
示例配置
假设我们需要测试一个Web应用,并确保每分钟发送60个请求。
-
创建测试计划:
- 右键点击“测试计划” -> 新建 -> 输入测试计划名称(例如“Web应用性能测试”)。
-
添加线程组:
- 右键点击测试计划 -> 添加 -> 线程组 -> 输入线程组名称(例如“用户模拟”)。
- 配置线程组:
- 线程数:10(模拟10个用户)
- 循环次数:10(每个用户发送10次请求)
- 启动延迟:0(立即启动)
-
添加HTTP请求:
- 右键点击线程组 -> 添加 -> 取样器 -> HTTP请求。
- 配置HTTP请求:
- 名称:请求名称(例如“获取用户列表”)。
- 服务器名称或IP:目标服务器的地址(例如
example.com
)。 - 端口号:目标服务器的端口(例如
80
)。 - 协议:HTTP或HTTPS(例如
HTTP
)。 - 方法:请求的方法(例如
GET
)。 - 路径:请求的路径(例如
/api/users
)。
-
添加恒定吞吐量定时器:
- 右键点击线程组 -> 添加 -> 定时器 -> 恒定吞吐量定时器。
- 配置恒定吞吐量定时器:
- 名称:恒定吞吐量定时器
- 目标吞吐量(每分钟):60(每分钟发送60个请求)
- 计算所有子采样器:是(将定时器应用于整个线程组中的所有请求)
-
运行测试:
- 点击工具栏上的“启动”按钮,运行测试。
优化建议
-
吞吐量设置:
- 根据实际需求设置合适的吞吐量。过高的吞吐量可能导致服务器过载,过低的吞吐量可能无法充分测试系统的性能。
-
计算所有子采样器:
- 如果需要控制整个线程组中的所有请求,选择“计算所有子采样器”。否则,选择“否”以仅影响当前请求。
-
放置位置:
- 恒定吞吐量定时器可以放在线程组级别或特定请求级别。放在线程组级别会影响该线程组中的所有请求,放在特定请求级别只影响该请求。
-
多请求场景:
- 如果有多个请求需要控制请求速率,可以为每个请求单独添加恒定吞吐量定时器,或者将多个请求放在一个线程组中,然后在该线程组中添加恒定吞吐量定时器。
-
性能影响:
- 恒定吞吐量定时器可能会对测试性能产生一定影响,特别是在大规模性能测试中。可以通过调整吞吐量来优化性能。
-
组合使用:
- 恒定吞吐量定时器可以与其他定时器(如固定定时器、统一随机定时器等)组合使用,以实现更复杂的延迟策略。
示例配置详细说明
假设我们有一个简单的测试计划,包含一个线程组和一个HTTP请求,并希望每分钟发送60个请求。
-
创建测试计划:
- 右键点击“测试计划” -> 新建 -> 输入测试计划名称(例如“Web应用性能测试”)。
-
添加线程组:
- 右键点击测试计划 -> 添加 -> 线程组 -> 输入线程组名称(例如“用户模拟”)。
- 配置线程组:
- 线程数:10(模拟10个用户)
- 循环次数:10(每个用户发送10次请求)
- 启动延迟:0(立即启动)
-
添加HTTP请求:
- 右键点击线程组 -> 添加 -> 取样器 -> HTTP请求。
- 配置HTTP请求:
- 名称:获取用户列表
- 服务器名称或IP:example.com
- 端口号:80
- 协议:HTTP
- 方法:GET
- 路径:/api/users
-
添加恒定吞吐量定时器:
- 右键点击线程组 -> 添加 -> 定时器 -> 恒定吞吐量定时器。
- 配置恒定吞吐量定时器:
- 名称:恒定吞吐量定时器
- 目标吞吐量(每分钟):60(每分钟发送60个请求)
- 计算所有子采样器:是(将定时器应用于整个线程组中的所有请求)
-
运行测试:
- 点击工具栏上的“启动”按钮,运行测试。
5--JSR223 Timmer
功能特点
- 自定义延迟逻辑:使用脚本语言动态计算请求之间的延迟时间。
- 灵活控制:可以根据测试数据和条件动态调整延迟时间。
- 支持多种脚本语言:支持 Groovy、JavaScript、BeanShell 等多种脚本语言。
支持的脚本语言
- Groovy:推荐使用,性能优越且功能强大。
- JavaScript:支持 ECMAScript 标准。
- BeanShell:支持 Java 语法。
- 其他语言:支持任何符合 JSR223 规范的脚本语言。
配置步骤
-
添加 JSR223 定时器
- 右键点击需要添加定时器的请求或线程组。
- 选择“添加” -> “定时器” -> “JSR223 定时器”。
-
配置 JSR223 定时器
- 名称:给 JSR223 定时器一个有意义的名称。
- 脚本语言:选择使用的脚本语言(例如 Groovy)。
- 脚本文件:选择脚本文件路径(可选,如果脚本较长或需要版本控制)。
- 脚本:直接在脚本编辑框中编写脚本。
- 参数:定义脚本中使用的参数(可选)。
示例配置
假设我们需要测试一个Web应用,并在每个请求之间添加一个动态计算的延迟时间,延迟时间基于当前请求的响应时间。
-
创建测试计划:
- 右键点击“测试计划” -> 新建 -> 输入测试计划名称(例如“Web应用性能测试”)。
-
添加线程组:
- 右键点击测试计划 -> 添加 -> 线程组 -> 输入线程组名称(例如“用户模拟”)。
- 配置线程组:
- 线程数:10(模拟10个用户)
- 循环次数:10(每个用户发送10次请求)
- 启动延迟:0(立即启动)
-
添加HTTP请求:
- 右键点击线程组 -> 添加 -> 取样器 -> HTTP请求。
- 配置HTTP请求:
- 名称:请求名称(例如“获取用户列表”)。
- 服务器名称或IP:目标服务器的地址(例如
example.com
)。 - 端口号:目标服务器的端口(例如
80
)。 - 协议:HTTP或HTTPS(例如
HTTP
)。 - 方法:请求的方法(例如
GET
)。 - 路径:请求的路径(例如
/api/users
)。
-
添加 JSR223 定时器:
- 右键点击HTTP请求 -> 添加 -> 定时器 -> JSR223 定时器。
- 配置 JSR223 定时器:
- 名称:JSR223 定时器
- 脚本语言:Groovy
- 脚本:在脚本编辑框中编写以下 Groovy 脚本:
// 获取上一个请求的响应时间 int responseTime = prev.getTime()// 计算延迟时间,例如延迟时间为响应时间的一半 int delay = responseTime / 2// 返回延迟时间(单位为毫秒) return delay
-
运行测试:
- 点击工具栏上的“启动”按钮,运行测试。
优化建议
-
脚本语言选择:
- 推荐使用 Groovy,因为它性能优越且功能强大,是 JMeter 官方推荐的脚本语言。
-
脚本文件:
- 如果脚本较长或需要版本控制,可以将脚本保存到文件中,并在 JSR223 定时器中选择脚本文件路径。
-
参数:
- 如果脚本需要使用外部参数,可以在“参数”部分定义参数,并在脚本中引用这些参数。
-
性能影响:
- 注意复杂脚本可能会对测试性能产生影响,特别是在大规模性能测试中。可以通过优化脚本和减少不必要的操作来提高性能。
-
错误处理:
- 在脚本中添加适当的错误处理逻辑,确保脚本在遇到异常时能够优雅地处理。
-
日志记录:
- 使用日志记录功能可以帮助调试和分析脚本执行情况,确保日志文件路径有效且有足够的写权限。
示例配置详细说明
假设我们有一个简单的测试计划,包含一个线程组和一个HTTP请求,并希望在每个请求之间添加一个动态计算的延迟时间,延迟时间基于当前请求的响应时间。
-
创建测试计划:
- 右键点击“测试计划” -> 新建 -> 输入测试计划名称(例如“Web应用性能测试”)。
-
添加线程组:
- 右键点击测试计划 -> 添加 -> 线程组 -> 输入线程组名称(例如“用户模拟”)。
- 配置线程组:
- 线程数:10(模拟10个用户)
- 循环次数:10(每个用户发送10次请求)
- 启动延迟:0(立即启动)
-
添加HTTP请求:
- 右键点击线程组 -> 添加 -> 取样器 -> HTTP请求。
- 配置HTTP请求:
- 名称:获取用户列表
- 服务器名称或IP:example.com
- 端口号:80
- 协议:HTTP
- 方法:GET
- 路径:/api/users
-
添加 JSR223 定时器:
- 右键点击HTTP请求 -> 添加 -> 定时器 -> JSR223 定时器。
- 配置 JSR223 定时器:
- 名称:JSR223 定时器
- 脚本语言:Groovy
- 脚本:在脚本编辑框中编写以下 Groovy 脚本:
// 获取上一个请求的响应时间 int responseTime = prev.getTime()// 计算延迟时间,例如延迟时间为响应时间的一半 int delay = responseTime / 2// 返回延迟时间(单位为毫秒) return delay
-
运行测试:
- 点击工具栏上的“启动”按钮,运行测试。
6--Synchronizing Timer
功能特点
- 并发控制:确保一组线程在同一时间点执行某个请求。
- 灵活配置:可以设置等待的线程数和超时时间。
- 适用于压力测试:特别适合需要模拟大量并发用户的场景。
配置步骤
-
添加同步定时器
- 右键点击需要添加定时器的请求或线程组。
- 选择“添加” -> “定时器” -> “同步定时器”(Synchronizing Timer)。
-
配置同步定时器
- 名称:给同步定时器一个有意义的名称。
- 数量的线程(用户):设置需要等待的线程数。
- 超时(毫秒):设置等待的最大时间(可选)。
参数说明
- 数量的线程(用户):设置需要等待的线程数。例如,如果设置为10,则需要等待10个线程都到达同步点后才会继续执行。
- 超时(毫秒):设置等待的最大时间。如果在指定时间内没有达到设定的线程数,定时器将释放已等待的线程。如果不设置,定时器将无限期等待。
示例配置
假设我们需要测试一个Web应用,并确保每次有10个用户同时执行某个请求。
-
创建测试计划:
- 右键点击“测试计划” -> 新建 -> 输入测试计划名称(例如“Web应用性能测试”)。
-
添加线程组:
- 右键点击测试计划 -> 添加 -> 线程组 -> 输入线程组名称(例如“用户模拟”)。
- 配置线程组:
- 线程数:20(模拟20个用户)
- 循环次数:1(每个用户发送1次请求)
- 启动延迟:0(立即启动)
-
添加HTTP请求:
- 右键点击线程组 -> 添加 -> 取样器 -> HTTP请求。
- 配置HTTP请求:
- 名称:请求名称(例如“获取用户列表”)。
- 服务器名称或IP:目标服务器的地址(例如
example.com
)。 - 端口号:目标服务器的端口(例如
80
)。 - 协议:HTTP或HTTPS(例如
HTTP
)。 - 方法:请求的方法(例如
GET
)。 - 路径:请求的路径(例如
/api/users
)。
-
添加同步定时器:
- 右键点击HTTP请求 -> 添加 -> 定时器 -> 同步定时器。
- 配置同步定时器:
- 名称:同步定时器
- 数量的线程(用户):10(每次等待10个线程)
- 超时(毫秒):(可选)如果不设置,定时器将无限期等待
-
运行测试:
- 点击工具栏上的“启动”按钮,运行测试。
优化建议
-
线程数设置:
- 根据实际需求设置合适的线程数。确保线程数足够大,以便能够达到所需的并发效果。
-
超时设置:
- 如果需要确保测试在一定时间内完成,可以设置超时时间。超时时间应根据系统响应时间和测试需求来设置。
-
放置位置:
- 同步定时器可以放在线程组级别或特定请求级别。放在线程组级别会影响该线程组中的所有请求,放在特定请求级别只影响该请求。
-
多请求场景:
- 如果有多个请求需要同步执行,可以为每个请求单独添加同步定时器,或者将多个请求放在一个线程组中,然后在该线程组中添加同步定时器。
-
性能影响:
- 同步定时器可能会对测试性能产生一定影响,特别是在大规模性能测试中。可以通过调整线程数和超时时间来优化性能。
-
组合使用:
- 同步定时器可以与其他定时器(如固定定时器、统一随机定时器等)组合使用,以实现更复杂的延迟策略。
示例配置详细说明
假设我们有一个简单的测试计划,包含一个线程组和一个HTTP请求,并希望每次有10个用户同时执行某个请求。
-
创建测试计划:
- 右键点击“测试计划” -> 新建 -> 输入测试计划名称(例如“Web应用性能测试”)。
-
添加线程组:
- 右键点击测试计划 -> 添加 -> 线程组 -> 输入线程组名称(例如“用户模拟”)。
- 配置线程组:
- 线程数:20(模拟20个用户)
- 循环次数:1(每个用户发送1次请求)
- 启动延迟:0(立即启动)
-
添加HTTP请求:
- 右键点击线程组 -> 添加 -> 取样器 -> HTTP请求。
- 配置HTTP请求:
- 名称:获取用户列表
- 服务器名称或IP:example.com
- 端口号:80
- 协议:HTTP
- 方法:GET
- 路径:/api/users
-
添加同步定时器:
- 右键点击HTTP请求 -> 添加 -> 定时器 -> 同步定时器。
- 配置同步定时器:
- 名称:同步定时器
- 数量的线程(用户):10(每次等待10个线程)
- 超时(毫秒):(可选)如果不设置,定时器将无限期等待
-
运行测试:
- 点击工具栏上的“启动”按钮,运行测试。
7--泊松随机定时器
功能特点
- 泊松分布:使用泊松分布生成随机延迟时间,使延迟时间更加自然和随机。
- 灵活配置:可以设置平均延迟时间和偏差系数。
- 适用于模拟真实用户行为:特别适合需要模拟真实用户行为的性能测试。
配置步骤
-
添加泊松随机定时器
- 右键点击需要添加定时器的请求或线程组。
- 选择“添加” -> “定时器” -> “泊松随机定时器”(Poisson Random Timer)。
-
配置泊松随机定时器
- 名称:给泊松随机定时器一个有意义的名称。
- 常量延迟偏移(毫秒):设置平均延迟时间。
- 泊松分布的lambda值:设置泊松分布的λ值(Lambda值),控制随机延迟的分布。
参数说明
- 常量延迟偏移(毫秒):设置平均延迟时间。这是泊松分布的期望值(平均值)。
- 泊松分布的lambda值:设置泊松分布的λ值。λ值越大,随机延迟的波动范围越大。
示例配置
假设我们需要测试一个Web应用,并在每个请求之间添加基于泊松分布的随机延迟时间,平均延迟时间为2000毫秒(2秒)。
-
创建测试计划:
- 右键点击“测试计划” -> 新建 -> 输入测试计划名称(例如“Web应用性能测试”)。
-
添加线程组:
- 右键点击测试计划 -> 添加 -> 线程组 -> 输入线程组名称(例如“用户模拟”)。
- 配置线程组:
- 线程数:10(模拟10个用户)
- 循环次数:10(每个用户发送10次请求)
- 启动延迟:0(立即启动)
-
添加HTTP请求:
- 右键点击线程组 -> 添加 -> 取样器 -> HTTP请求。
- 配置HTTP请求:
- 名称:请求名称(例如“获取用户列表”)。
- 服务器名称或IP:目标服务器的地址(例如
example.com
)。 - 端口号:目标服务器的端口(例如
80
)。 - 协议:HTTP或HTTPS(例如
HTTP
)。 - 方法:请求的方法(例如
GET
)。 - 路径:请求的路径(例如
/api/users
)。
-
添加泊松随机定时器:
- 右键点击HTTP请求 -> 添加 -> 定时器 -> 泊松随机定时器。
- 配置泊松随机定时器:
- 名称:泊松随机定时器
- 常量延迟偏移(毫秒):2000(平均延迟时间为2000毫秒)
- 泊松分布的lambda值:1.0(λ值为1.0,表示标准泊松分布)
-
运行测试:
- 点击工具栏上的“启动”按钮,运行测试。
优化建议
-
平均延迟时间:
- 根据实际需求设置合适的平均延迟时间。过短的延迟可能导致服务器过载,过长的延迟可能无法充分测试系统的性能。
-
λ值设置:
- λ值控制随机延迟的分布。较大的λ值会导致更大的随机波动,较小的λ值会使延迟时间更集中于平均值。根据测试需求选择合适的λ值。
-
放置位置:
- 泊松随机定时器可以放在线程组级别或特定请求级别。放在线程组级别会影响该线程组中的所有请求,放在特定请求级别只影响该请求。
-
多请求场景:
- 如果有多个请求需要添加随机延迟,可以为每个请求单独添加泊松随机定时器,或者将多个请求放在一个线程组中,然后在该线程组中添加泊松随机定时器。
-
性能影响:
- 泊松随机定时器可能会对测试性能产生一定影响,特别是在大规模性能测试中。可以通过调整平均延迟时间和λ值来优化性能。
-
组合使用:
- 泊松随机定时器可以与其他定时器(如固定定时器、统一随机定时器等)组合使用,以实现更复杂的延迟策略。
示例配置详细说明
假设我们有一个简单的测试计划,包含一个线程组和一个HTTP请求,并希望在每个请求之间添加基于泊松分布的随机延迟时间,平均延迟时间为2000毫秒。
-
创建测试计划:
- 右键点击“测试计划” -> 新建 -> 输入测试计划名称(例如“Web应用性能测试”)。
-
添加线程组:
- 右键点击测试计划 -> 添加 -> 线程组 -> 输入线程组名称(例如“用户模拟”)。
- 配置线程组:
- 线程数:10(模拟10个用户)
- 循环次数:10(每个用户发送10次请求)
- 启动延迟:0(立即启动)
-
添加HTTP请求:
- 右键点击线程组 -> 添加 -> 取样器 -> HTTP请求。
- 配置HTTP请求:
- 名称:获取用户列表
- 服务器名称或IP:example.com
- 端口号:80
- 协议:HTTP
- 方法:GET
- 路径:/api/users
-
添加泊松随机定时器:
- 右键点击HTTP请求 -> 添加 -> 定时器 -> 泊松随机定时器。
- 配置泊松随机定时器:
- 名称:泊松随机定时器
- 常量延迟偏移(毫秒):2000(平均延迟时间为2000毫秒)
- 泊松分布的lambda值:1.0(λ值为1.0,表示标准泊松分布)
-
运行测试:
- 点击工具栏上的“启动”按钮,运行测试。
8--高斯随机定时器
功能特点
- 高斯分布:使用高斯分布生成随机延迟时间,使延迟时间更加自然和随机。
- 灵活配置:可以设置平均延迟时间和标准差。
- 适用于模拟真实用户行为:特别适合需要模拟真实用户行为的性能测试。
配置步骤
-
添加高斯随机定时器
- 右键点击需要添加定时器的请求或线程组。
- 选择“添加” -> “定时器” -> “高斯随机定时器”(Gaussian Random Timer)。
-
配置高斯随机定时器
- 名称:给高斯随机定时器一个有意义的名称。
- 常量延迟偏移(毫秒):设置平均延迟时间。
- 高斯随机偏移(毫秒):设置标准差,控制随机延迟的分布范围。
参数说明
- 常量延迟偏移(毫秒):设置平均延迟时间。这是高斯分布的均值(μ)。
- 高斯随机偏移(毫秒):设置标准差(σ),控制随机延迟的分布范围。标准差越大,随机延迟的波动范围越大。
示例配置
假设我们需要测试一个Web应用,并在每个请求之间添加基于高斯分布的随机延迟时间,平均延迟时间为2000毫秒(2秒),标准差为500毫秒。
-
创建测试计划:
- 右键点击“测试计划” -> 新建 -> 输入测试计划名称(例如“Web应用性能测试”)。
-
添加线程组:
- 右键点击测试计划 -> 添加 -> 线程组 -> 输入线程组名称(例如“用户模拟”)。
- 配置线程组:
- 线程数:10(模拟10个用户)
- 循环次数:10(每个用户发送10次请求)
- 启动延迟:0(立即启动)
-
添加HTTP请求:
- 右键点击线程组 -> 添加 -> 取样器 -> HTTP请求。
- 配置HTTP请求:
- 名称:请求名称(例如“获取用户列表”)。
- 服务器名称或IP:目标服务器的地址(例如
example.com
)。 - 端口号:目标服务器的端口(例如
80
)。 - 协议:HTTP或HTTPS(例如
HTTP
)。 - 方法:请求的方法(例如
GET
)。 - 路径:请求的路径(例如
/api/users
)。
-
添加高斯随机定时器:
- 右键点击HTTP请求 -> 添加 -> 定时器 -> 高斯随机定时器。
- 配置高斯随机定时器:
- 名称:高斯随机定时器
- 常量延迟偏移(毫秒):2000(平均延迟时间为2000毫秒)
- 高斯随机偏移(毫秒):500(标准差为500毫秒)
-
运行测试:
- 点击工具栏上的“启动”按钮,运行测试。
优化建议
-
平均延迟时间:
- 根据实际需求设置合适的平均延迟时间。过短的延迟可能导致服务器过载,过长的延迟可能无法充分测试系统的性能。
-
标准差设置:
- 标准差控制随机延迟的分布范围。较大的标准差会导致更大的随机波动,较小的标准差会使延迟时间更集中于平均值。根据测试需求选择合适的标准差。
-
放置位置:
- 高斯随机定时器可以放在线程组级别或特定请求级别。放在线程组级别会影响该线程组中的所有请求,放在特定请求级别只影响该请求。
-
多请求场景:
- 如果有多个请求需要添加随机延迟,可以为每个请求单独添加高斯随机定时器,或者将多个请求放在一个线程组中,然后在该线程组中添加高斯随机定时器。
-
性能影响:
- 高斯随机定时器可能会对测试性能产生一定影响,特别是在大规模性能测试中。可以通过调整平均延迟时间和标准差来优化性能。
-
组合使用:
- 高斯随机定时器可以与其他定时器(如固定定时器、统一随机定时器等)组合使用,以实现更复杂的延迟策略。
示例配置详细说明
假设我们有一个简单的测试计划,包含一个线程组和一个HTTP请求,并希望在每个请求之间添加基于高斯分布的随机延迟时间,平均延迟时间为2000毫秒,标准差为500毫秒。
-
创建测试计划:
- 右键点击“测试计划” -> 新建 -> 输入测试计划名称(例如“Web应用性能测试”)。
-
添加线程组:
- 右键点击测试计划 -> 添加 -> 线程组 -> 输入线程组名称(例如“用户模拟”)。
- 配置线程组:
- 线程数:10(模拟10个用户)
- 循环次数:10(每个用户发送10次请求)
- 启动延迟:0(立即启动)
-
添加HTTP请求:
- 右键点击线程组 -> 添加 -> 取样器 -> HTTP请求。
- 配置HTTP请求:
- 名称:获取用户列表
- 服务器名称或IP:example.com
- 端口号:80
- 协议:HTTP
- 方法:GET
- 路径:/api/users
-
添加高斯随机定时器:
- 右键点击HTTP请求 -> 添加 -> 定时器 -> 高斯随机定时器。
- 配置高斯随机定时器:
- 名称:高斯随机定时器
- 常量延迟偏移(毫秒):2000(平均延迟时间为2000毫秒)
- 高斯随机偏移(毫秒):500(标准差为500毫秒)
-
运行测试:
- 点击工具栏上的“启动”按钮,运行测试。
9--BeanShell Timer
功能特点
- 自定义延迟逻辑:使用 BeanShell 脚本动态计算请求之间的延迟时间。
- 灵活控制:可以根据测试数据和条件动态调整延迟时间。
- 支持 BeanShell 脚本:支持使用 BeanShell 脚本语言编写延迟逻辑。
配置步骤
-
添加 BeanShell 定时器
- 右键点击需要添加定时器的请求或线程组。
- 选择“添加” -> “定时器” -> “BeanShell 定时器”。
-
配置 BeanShell 定时器
- 名称:给 BeanShell 定时器一个有意义的名称。
- 文件:选择脚本文件路径(可选,如果脚本较长或需要版本控制)。
- 脚本:直接在脚本编辑框中编写脚本。
- 参数:定义脚本中使用的参数(可选)。
示例配置
假设我们需要测试一个Web应用,并在每个请求之间添加一个动态计算的延迟时间,延迟时间基于当前请求的响应时间。
-
创建测试计划:
- 右键点击“测试计划” -> 新建 -> 输入测试计划名称(例如“Web应用性能测试”)。
-
添加线程组:
- 右键点击测试计划 -> 添加 -> 线程组 -> 输入线程组名称(例如“用户模拟”)。
- 配置线程组:
- 线程数:10(模拟10个用户)
- 循环次数:10(每个用户发送10次请求)
- 启动延迟:0(立即启动)
-
添加HTTP请求:
- 右键点击线程组 -> 添加 -> 取样器 -> HTTP请求。
- 配置HTTP请求:
- 名称:请求名称(例如“获取用户列表”)。
- 服务器名称或IP:目标服务器的地址(例如
example.com
)。 - 端口号:目标服务器的端口(例如
80
)。 - 协议:HTTP或HTTPS(例如
HTTP
)。 - 方法:请求的方法(例如
GET
)。 - 路径:请求的路径(例如
/api/users
)。
-
添加 BeanShell 定时器:
- 右键点击HTTP请求 -> 添加 -> 定时器 -> BeanShell 定时器。
- 配置 BeanShell 定时器:
- 名称:BeanShell 定时器
- 脚本:在脚本编辑框中编写以下 BeanShell 脚本:
// 获取上一个请求的响应时间 int responseTime = prev.getTime();// 计算延迟时间,例如延迟时间为响应时间的一半 int delay = responseTime / 2;// 返回延迟时间(单位为毫秒) return delay;
-
运行测试:
- 点击工具栏上的“启动”按钮,运行测试。
优化建议
-
脚本语言选择:
- 虽然 BeanShell 是一个强大的脚本语言,但 Groovy 通常性能更好且功能更强大。如果可能,建议使用 Groovy 脚本。
-
脚本文件:
- 如果脚本较长或需要版本控制,可以将脚本保存到文件中,并在 BeanShell 定时器中选择脚本文件路径。
-
参数:
- 如果脚本需要使用外部参数,可以在“参数”部分定义参数,并在脚本中引用这些参数。
-
性能影响:
- 注意复杂脚本可能会对测试性能产生影响,特别是在大规模性能测试中。可以通过优化脚本和减少不必要的操作来提高性能。
-
错误处理:
- 在脚本中添加适当的错误处理逻辑,确保脚本在遇到异常时能够优雅地处理。
-
日志记录:
- 使用日志记录功能可以帮助调试和分析脚本执行情况,确保日志文件路径有效且有足够的写权限。
示例配置详细说明
假设我们有一个简单的测试计划,包含一个线程组和一个HTTP请求,并希望在每个请求之间添加一个动态计算的延迟时间,延迟时间基于当前请求的响应时间。
-
创建测试计划:
- 右键点击“测试计划” -> 新建 -> 输入测试计划名称(例如“Web应用性能测试”)。
-
添加线程组:
- 右键点击测试计划 -> 添加 -> 线程组 -> 输入线程组名称(例如“用户模拟”)。
- 配置线程组:
- 线程数:10(模拟10个用户)
- 循环次数:10(每个用户发送10次请求)
- 启动延迟:0(立即启动)
-
添加HTTP请求:
- 右键点击线程组 -> 添加 -> 取样器 -> HTTP请求。
- 配置HTTP请求:
- 名称:获取用户列表
- 服务器名称或IP:example.com
- 端口号:80
- 协议:HTTP
- 方法:GET
- 路径:/api/users
-
添加 BeanShell 定时器:
- 右键点击HTTP请求 -> 添加 -> 定时器 -> BeanShell 定时器。
- 配置 BeanShell 定时器:
- 名称:BeanShell 定时器
- 脚本:在脚本编辑框中编写以下 BeanShell 脚本:
// 获取上一个请求的响应时间 int responseTime = prev.getTime();// 计算延迟时间,例如延迟时间为响应时间的一半 int delay = responseTime / 2;// 返回延迟时间(单位为毫秒) return delay;
-
运行测试:
- 点击工具栏上的“启动”按钮,运行测试。
相关文章:

Jmeter中的定时器
4)定时器 1--固定定时器 功能特点 固定延迟:在每个请求之间添加固定的延迟时间。精确控制:可以精确控制请求的发送频率。简单易用:配置简单,易于理解和使用。 配置步骤 添加固定定时器 右键点击需要添加定时器的请求…...

C++自动化测试:GTest 与 GitLab CI/CD 的完美融合
在现代软件开发中,自动化测试是保证代码质量和稳定性的关键手段。对于C项目而言,自动化测试尤为重要,它能有效捕捉代码中的潜在缺陷,提高代码的可维护性和可靠性。本文将重点介绍如何在C项目中结合使用Google Test(GTe…...
vscode连接远程开发机报错
远程开发机更新,vscode连接失败 报错信息 "install" terminal command done Install terminal quit with output: Host key verification failed. Received install output: Host key verification failed. Failed to parse remote port from server ou…...
神经网络12-Time-Series Transformer (TST)模型
Time-Series Transformer (TST) 是一种基于 Transformer 架构的深度学习模型,专门用于时序数据的建模和预测。TST 是 Transformer 模型的一个变种,针对传统时序模型(如 RNN、LSTM)在处理长时间依赖、复杂数据关系时的限制而提出的…...

IDEA 2024安装指南(含安装包以及使用说明 cannot collect jvm options 问题 四)
汉化 setting 中选择插件 完成 安装出现问题 1.可能是因为之前下载过的idea,找到连接中 文件,卸载即可。...

Fakelocation Server服务器/专业版 Centos7
前言:需要Centos7系统 Fakelocation开源文件系统需求 Centos7 | Fakelocation | 任务一 更新Centos7 (安装下载不再赘述) sudo yum makecache fastsudo yum update -ysudo yum install -y kernelsudo reboot//如果遇到错误提示为 Another app is curre…...

oracle的静态注册和动态注册
oracle的静态注册和动态注册 静态注册: 静态注册 : 指将实例的相关信息手动告知 listener 侦 听 器 , 可以使用netmgr,netca,oem 以及直接 vi listener.ora 文件来实现静态注册,在动态注册不稳定时使用,特点是:稳定&…...

机器翻译基础与模型 之四:模型训练
1、开放词表 1.1 大词表和未登陆词问题 理想情况下,机器翻译应该是一个开放词表(Open Vocabulary)的翻译任务。也就是,无论测试数据中包含什么样的词,机器翻译系统都应该能够正常翻译。 现实的情况是即使不断扩充词…...

Vue——响应式数据,v-on,v-bind,v-if,v-for(内含项目实战)
目录 响应式数据 ref reactive 事件绑定指令 v-on v-on 鼠标监听事件 v-on 键盘监听事件 v-on 简写形式 属性动态化指令 v-bind iuput标签动态属性绑定 img标签动态属性绑定 b标签动态属性绑定 v-bind 简写形式 条件渲染指令 v-if 遍历指令 v-for 遍历对象的值 遍历…...
ceph 18.2.4二次开发,docker镜像制作
编译环境要求 #需要ubuntu 22.04版本 参考https://docs.ceph.com/en/reef/start/os-recommendations/ #磁盘空间最好大于200GB #内存如果小于100GB 会有OOM的情况发生,需要重跑 目前遇到内存占用最高为92GB替换阿里云ubuntu 22.04源 将下面内容写入/etc/apt/sources.list 文件…...
产品经理的项目管理课
各位产品经理,大家下午好,今天我给大家分享的主题是“产品经理如何做好项目管理”。 其实,我是不想分享这个主题的,是因为在周会中大家投票对这个议题最感兴趣,11个同学中有7个投了这个主题,所以才有了这次…...
Linux 下的 AWK 命令详细指南与示例
目录 简介AWK 的主要特性基本语法示例1. 打印文件的所有行2. 打印特定字段3. 打印匹配模式的行4. 基于条件过滤并打印5. 使用内置变量6. 执行算术运算7. 字符串操作8. 使用 BEGIN 和 END 块9. 处理分隔符文件 高级功能自定义脚本使用外部变量 总结 简介 AWK 是 Linux 中功能强…...
FPGA经验谈系列文章——8、复位的设计
前言 剑法往往有着固定的招式套路,而写代码似乎也存在类似的情况。不知从何时起,众多 FPGA 工程师们在编写代码时开启了一种关于 always 语句块的流行写法,那就是: always @(posedge i_clk or negedge i_rstn) 就笔者所经历的诸多项目以及所接触到的不少工程师而言,大家在…...
C#里怎么样实现操作符重载?
C#里怎么样实现操作符重载? 一般情况,都是表示某种类型的类时,才会使用到操作符重载。 比如实现一个复数类。 在C#中,重载运算符是通过在类或结构中定义特殊的方法来实现的,这些方法的名称是operator关键字后跟要重载的运算符。例如,要重载+运算符,可以定义一个名为op…...

项目实战:Vue3开发一个购物车
这段HTML代码实现了一个简单的购物车实战小项目的前端页面,结合了Vue.js框架来实现数据响应式和交互逻辑。页面展示了购物车中的商品项,每个商品项有增减数量的按钮,并且能显示商品总数以及目前固定为0元的商品总价和总价计算。 【运用响应式…...

Oracle SQL*Plus中的SET VERIFY
在 Oracle SQL*Plus 中,SET VERIFY ON 和 SET VERIFY OFF 是两个用于控制命令执行前后显示变量值的命令。这些命令主要用于调试和验证 SQL 脚本中的变量替换情况。 一、参数说明 1.1 SET VERIFY ON 作用:启用变量替换的验证功能。当启用时,S…...

Spring AI 框架使用的核心概念
一、模型(Model) AI 模型是旨在处理和生成信息的算法,通常模仿人类的认知功能。通过从大型数据集中学习模式和见解,这些模型可以做出预测、文本、图像或其他输出,从而增强各个行业的各种应用。 AI 模型有很多种&…...

二叉树路径相关算法题|带权路径长度WPL|最长路径长度|直径长度|到叶节点路径|深度|到某节点的路径非递归(C)
带权路径长度WPL 二叉树的带权路径长度(WPL)是二叉树所有叶节点的带权路径长度之和,给定一棵二叉树T,采用二叉链表存储,节点结构为 其中叶节点的weight域保存该节点的非负权值,设root为指向T的根节点的指针,设计求W…...

前端:JavaScript (学习笔记)【2】
目录 一,数组的使用 1,数组的创建 [ ] 2,数组的元素和长度 3,数组的遍历方式 4,数组的常用方法 二,JavaScript中的对象 1,常用对象 (1)String和java中的Stri…...

[面试]-golang基础面试题总结
文章目录 panic 和 recover**注意事项**使用 pprof、trace 和 race 进行性能调试。**Go Module**:Go中new和make的区别 Channel什么是 Channel 的方向性?如何对 Channel 进行方向限制?Channel 的缓冲区大小对于 Channel 和 Goroutine 的通信有…...

突破不可导策略的训练难题:零阶优化与强化学习的深度嵌合
强化学习(Reinforcement Learning, RL)是工业领域智能控制的重要方法。它的基本原理是将最优控制问题建模为马尔可夫决策过程,然后使用强化学习的Actor-Critic机制(中文译作“知行互动”机制),逐步迭代求解…...

对WWDC 2025 Keynote 内容的预测
借助我们以往对苹果公司发展路径的深入研究经验,以及大语言模型的分析能力,我们系统梳理了多年来苹果 WWDC 主题演讲的规律。在 WWDC 2025 即将揭幕之际,我们让 ChatGPT 对今年的 Keynote 内容进行了一个初步预测,聊作存档。等到明…...
sqlserver 根据指定字符 解析拼接字符串
DECLARE LotNo NVARCHAR(50)A,B,C DECLARE xml XML ( SELECT <x> REPLACE(LotNo, ,, </x><x>) </x> ) DECLARE ErrorCode NVARCHAR(50) -- 提取 XML 中的值 SELECT value x.value(., VARCHAR(MAX))…...
unix/linux,sudo,其发展历程详细时间线、由来、历史背景
sudo 的诞生和演化,本身就是一部 Unix/Linux 系统管理哲学变迁的微缩史。来,让我们拨开时间的迷雾,一同探寻 sudo 那波澜壮阔(也颇为实用主义)的发展历程。 历史背景:su的时代与困境 ( 20 世纪 70 年代 - 80 年代初) 在 sudo 出现之前,Unix 系统管理员和需要特权操作的…...

【开发技术】.Net使用FFmpeg视频特定帧上绘制内容
目录 一、目的 二、解决方案 2.1 什么是FFmpeg 2.2 FFmpeg主要功能 2.3 使用Xabe.FFmpeg调用FFmpeg功能 2.4 使用 FFmpeg 的 drawbox 滤镜来绘制 ROI 三、总结 一、目的 当前市场上有很多目标检测智能识别的相关算法,当前调用一个医疗行业的AI识别算法后返回…...
基于matlab策略迭代和值迭代法的动态规划
经典的基于策略迭代和值迭代法的动态规划matlab代码,实现机器人的最优运输 Dynamic-Programming-master/Environment.pdf , 104724 Dynamic-Programming-master/README.md , 506 Dynamic-Programming-master/generalizedPolicyIteration.m , 1970 Dynamic-Programm…...

Git 3天2K星标:Datawhale 的 Happy-LLM 项目介绍(附教程)
引言 在人工智能飞速发展的今天,大语言模型(Large Language Models, LLMs)已成为技术领域的焦点。从智能写作到代码生成,LLM 的应用场景不断扩展,深刻改变了我们的工作和生活方式。然而,理解这些模型的内部…...

GO协程(Goroutine)问题总结
在使用Go语言来编写代码时,遇到的一些问题总结一下 [参考文档]:https://www.topgoer.com/%E5%B9%B6%E5%8F%91%E7%BC%96%E7%A8%8B/goroutine.html 1. main()函数默认的Goroutine 场景再现: 今天在看到这个教程的时候,在自己的电…...

[ACTF2020 新生赛]Include 1(php://filter伪协议)
题目 做法 启动靶机,点进去 点进去 查看URL,有 ?fileflag.php说明存在文件包含,原理是php://filter 协议 当它与包含函数结合时,php://filter流会被当作php文件执行。 用php://filter加编码,能让PHP把文件内容…...
苹果AI眼镜:从“工具”到“社交姿态”的范式革命——重新定义AI交互入口的未来机会
在2025年的AI硬件浪潮中,苹果AI眼镜(Apple Glasses)正在引发一场关于“人机交互形态”的深度思考。它并非简单地替代AirPods或Apple Watch,而是开辟了一个全新的、日常可接受的AI入口。其核心价值不在于功能的堆叠,而在于如何通过形态设计打破社交壁垒,成为用户“全天佩戴…...