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

Jmeter中的定时器

 4)定时器

1780e27559974fc3ab94d6de5105458b.png

1--固定定时器

功能特点

  • 固定延迟:在每个请求之间添加固定的延迟时间。
  • 精确控制:可以精确控制请求的发送频率。
  • 简单易用:配置简单,易于理解和使用。

配置步骤

  1. 添加固定定时器

    • 右键点击需要添加定时器的请求或线程组。
    • 选择“添加” -> “定时器” -> “固定定时器”(Constant Timer)。
  2. 配置固定定时器

    • 名称:给固定定时器一个有意义的名称。
    • 线程延迟(毫秒):设置每个请求之间的固定延迟时间(单位为毫秒)。

示例配置

假设我们需要测试一个Web应用,并在每个请求之间添加2秒(2000毫秒)的固定延迟。

  1. 创建测试计划

    • 右键点击“测试计划” -> 新建 -> 输入测试计划名称(例如“Web应用性能测试”)。
  2. 添加线程组

    • 右键点击测试计划 -> 添加 -> 线程组 -> 输入线程组名称(例如“用户模拟”)。
  3. 添加HTTP请求

    • 右键点击线程组 -> 添加 -> 取样器 -> HTTP请求。
    • 配置HTTP请求:
      • 名称:请求名称(例如“获取用户列表”)。
      • 服务器名称或IP:目标服务器的地址(例如example.com)。
      • 端口号:目标服务器的端口(例如80)。
      • 协议:HTTP或HTTPS(例如HTTP)。
      • 方法:请求的方法(例如GET)。
      • 路径:请求的路径(例如/api/users)。
  4. 添加固定定时器

    • 右键点击HTTP请求 -> 添加 -> 定时器 -> 固定定时器。
    • 配置固定定时器:
      • 名称:固定定时器
      • 线程延迟(毫秒):2000(表示每个请求之间延迟2秒)
  5. 运行测试

    • 点击工具栏上的“启动”按钮,运行测试。

优化建议

  1. 延迟时间

    • 根据实际需求设置合适的延迟时间。过短的延迟可能导致服务器过载,过长的延迟可能无法充分测试系统的性能。
  2. 放置位置

    • 固定定时器可以放在线程组级别或特定请求级别。放在线程组级别会影响该线程组中的所有请求,放在特定请求级别只影响该请求。
  3. 多请求场景

    • 如果有多个请求需要添加固定延迟,可以为每个请求单独添加固定定时器,或者将多个请求放在一个线程组中,然后在该线程组中添加固定定时器。
  4. 性能影响

    • 固定定时器不会显著影响测试性能,但在大规模性能测试中,仍需注意总体的测试设计,确保延迟时间合理。
  5. 组合使用

    • 固定定时器可以与其他定时器(如高斯随机定时器、统一随机定时器等)组合使用,以实现更复杂的延迟策略。

示例配置详细说明

假设我们有一个简单的测试计划,包含一个线程组和一个HTTP请求,并希望在每个请求之间添加2秒的固定延迟。

  1. 创建测试计划

    • 右键点击“测试计划” -> 新建 -> 输入测试计划名称(例如“Web应用性能测试”)。
  2. 添加线程组

    • 右键点击测试计划 -> 添加 -> 线程组 -> 输入线程组名称(例如“用户模拟”)。
    • 配置线程组:
      • 线程数:10(模拟10个用户)
      • 循环次数:10(每个用户发送10次请求)
      • 启动延迟:0(立即启动)
  3. 添加HTTP请求

    • 右键点击线程组 -> 添加 -> 取样器 -> HTTP请求。
    • 配置HTTP请求:
      • 名称:获取用户列表
      • 服务器名称或IP:example.com
      • 端口号:80
      • 协议:HTTP
      • 方法:GET
      • 路径:/api/users
  4. 添加固定定时器

    • 右键点击HTTP请求 -> 添加 -> 定时器 -> 固定定时器。
    • 配置固定定时器:
      • 名称:固定定时器
      • 线程延迟(毫秒):2000
  5. 运行测试

    • 点击工具栏上的“启动”按钮,运行测试。

 

6f46fec9704c415b9de29973359a31a2.png


2--统一随机定时器

功能特点

  • 随机延迟:在每个请求之间添加随机的延迟时间。
  • 均匀分布:延迟时间在指定的范围内均匀分布。
  • 灵活控制:可以精确控制请求的发送频率,同时引入随机性。

配置步骤

  1. 添加统一随机定时器

    • 右键点击需要添加定时器的请求或线程组。
    • 选择“添加” -> “定时器” -> “统一随机定时器”(Uniform Random Timer)。
  2. 配置统一随机定时器

    • 名称:给统一随机定时器一个有意义的名称。
    • 偏移(毫秒):设置延迟时间的上下限范围。
    • 延迟(毫秒):设置基础延迟时间。

参数说明

  • 偏移(毫秒):设置随机延迟时间的范围。例如,如果设置为1000毫秒,则延迟时间将在基础延迟时间的基础上随机增加或减少最多1000毫秒。
  • 延迟(毫秒):设置基础延迟时间。例如,如果设置为2000毫秒,则每个请求的基础延迟时间为2000毫秒。

示例配置

假设我们需要测试一个Web应用,并在每个请求之间添加2秒(2000毫秒)的基础延迟,同时在±1秒(1000毫秒)的范围内随机波动。

  1. 创建测试计划

    • 右键点击“测试计划” -> 新建 -> 输入测试计划名称(例如“Web应用性能测试”)。
  2. 添加线程组

    • 右键点击测试计划 -> 添加 -> 线程组 -> 输入线程组名称(例如“用户模拟”)。
  3. 添加HTTP请求

    • 右键点击线程组 -> 添加 -> 取样器 -> HTTP请求。
    • 配置HTTP请求:
      • 名称:请求名称(例如“获取用户列表”)。
      • 服务器名称或IP:目标服务器的地址(例如example.com)。
      • 端口号:目标服务器的端口(例如80)。
      • 协议:HTTP或HTTPS(例如HTTP)。
      • 方法:请求的方法(例如GET)。
      • 路径:请求的路径(例如/api/users)。
  4. 添加统一随机定时器

    • 右键点击HTTP请求 -> 添加 -> 定时器 -> 统一随机定时器。
    • 配置统一随机定时器:
      • 名称:统一随机定时器
      • 偏移(毫秒):1000
      • 延迟(毫秒):2000
  5. 运行测试

    • 点击工具栏上的“启动”按钮,运行测试。

优化建议

  1. 延迟时间

    • 根据实际需求设置合适的基础延迟时间和偏移时间。过短的延迟可能导致服务器过载,过长的延迟可能无法充分测试系统的性能。
  2. 放置位置

    • 统一随机定时器可以放在线程组级别或特定请求级别。放在线程组级别会影响该线程组中的所有请求,放在特定请求级别只影响该请求。
  3. 多请求场景

    • 如果有多个请求需要添加随机延迟,可以为每个请求单独添加统一随机定时器,或者将多个请求放在一个线程组中,然后在该线程组中添加统一随机定时器。
  4. 性能影响

    • 统一随机定时器不会显著影响测试性能,但在大规模性能测试中,仍需注意总体的测试设计,确保延迟时间合理。
  5. 组合使用

    • 统一随机定时器可以与其他定时器(如固定定时器、高斯随机定时器等)组合使用,以实现更复杂的延迟策略。

示例配置详细说明

假设我们有一个简单的测试计划,包含一个线程组和一个HTTP请求,并希望在每个请求之间添加2秒的基础延迟,同时在±1秒的范围内随机波动。

  1. 创建测试计划

    • 右键点击“测试计划” -> 新建 -> 输入测试计划名称(例如“Web应用性能测试”)。
  2. 添加线程组

    • 右键点击测试计划 -> 添加 -> 线程组 -> 输入线程组名称(例如“用户模拟”)。
    • 配置线程组:
      • 线程数:10(模拟10个用户)
      • 循环次数:10(每个用户发送10次请求)
      • 启动延迟:0(立即启动)
  3. 添加HTTP请求

    • 右键点击线程组 -> 添加 -> 取样器 -> HTTP请求。
    • 配置HTTP请求:
      • 名称:获取用户列表
      • 服务器名称或IP:example.com
      • 端口号:80
      • 协议:HTTP
      • 方法:GET
      • 路径:/api/users
  4. 添加统一随机定时器

    • 右键点击HTTP请求 -> 添加 -> 定时器 -> 统一随机定时器。
    • 配置统一随机定时器:
      • 名称:统一随机定时器
      • 偏移(毫秒):1000
      • 延迟(毫秒):2000
  5. 运行测试

    • 点击工具栏上的“启动”按钮,运行测试。

 

 

8cb6323058e5455abd549dac0a55b158.png


3--Precise Throughpupt Timer

功能特点

  • 精确控制请求速率:确保在指定的时间段内发送指定数量的请求。
  • 灵活配置:可以设置每分钟发送的请求数量或每个线程组的吞吐量。
  • 适用于高精度测试:特别适合需要精确控制请求频率的性能测试。

配置步骤

  1. 添加精确吞吐量定时器

    • 右键点击需要添加定时器的请求或线程组。
    • 选择“添加” -> “定时器” -> “精确吞吐量定时器”(Precise Throughput Timer)。
  2. 配置精确吞吐量定时器

    • 名称:给精确吞吐量定时器一个有意义的名称。
    • 吞吐量:设置每分钟发送的请求数量。
    • 持续时间(毫秒):(可选)设置定时器的持续时间,超过该时间后定时器将停止工作。

参数说明

  • 吞吐量:设置每分钟发送的请求数量。例如,如果设置为60,则每分钟发送60个请求。
  • 持续时间(毫秒):设置定时器的持续时间,超过该时间后定时器将停止工作。如果不设置,定时器将一直工作直到测试结束。

示例配置

假设我们需要测试一个Web应用,并确保每分钟发送60个请求。

  1. 创建测试计划

    • 右键点击“测试计划” -> 新建 -> 输入测试计划名称(例如“Web应用性能测试”)。
  2. 添加线程组

    • 右键点击测试计划 -> 添加 -> 线程组 -> 输入线程组名称(例如“用户模拟”)。
    • 配置线程组:
      • 线程数:10(模拟10个用户)
      • 循环次数:10(每个用户发送10次请求)
      • 启动延迟:0(立即启动)
  3. 添加HTTP请求

    • 右键点击线程组 -> 添加 -> 取样器 -> HTTP请求。
    • 配置HTTP请求:
      • 名称:请求名称(例如“获取用户列表”)。
      • 服务器名称或IP:目标服务器的地址(例如example.com)。
      • 端口号:目标服务器的端口(例如80)。
      • 协议:HTTP或HTTPS(例如HTTP)。
      • 方法:请求的方法(例如GET)。
      • 路径:请求的路径(例如/api/users)。
  4. 添加精确吞吐量定时器

    • 右键点击HTTP请求 -> 添加 -> 定时器 -> 精确吞吐量定时器。
    • 配置精确吞吐量定时器:
      • 名称:精确吞吐量定时器
      • 吞吐量:60(每分钟发送60个请求)
      • 持续时间(毫秒):(可选)如果不设置,定时器将一直工作直到测试结束
  5. 运行测试

    • 点击工具栏上的“启动”按钮,运行测试。

优化建议

  1. 吞吐量设置

    • 根据实际需求设置合适的吞吐量。过高的吞吐量可能导致服务器过载,过低的吞吐量可能无法充分测试系统的性能。
  2. 持续时间设置

    • 如果需要在特定时间段内控制请求速率,可以设置持续时间。否则,定时器将一直工作直到测试结束。
  3. 放置位置

    • 精确吞吐量定时器可以放在线程组级别或特定请求级别。放在线程组级别会影响该线程组中的所有请求,放在特定请求级别只影响该请求。
  4. 多请求场景

    • 如果有多个请求需要控制请求速率,可以为每个请求单独添加精确吞吐量定时器,或者将多个请求放在一个线程组中,然后在该线程组中添加精确吞吐量定时器。
  5. 性能影响

    • 精确吞吐量定时器可能会对测试性能产生一定影响,特别是在大规模性能测试中。可以通过调整吞吐量和持续时间来优化性能。
  6. 组合使用

    • 精确吞吐量定时器可以与其他定时器(如固定定时器、统一随机定时器等)组合使用,以实现更复杂的延迟策略。

示例配置详细说明

假设我们有一个简单的测试计划,包含一个线程组和一个HTTP请求,并希望每分钟发送60个请求。

  1. 创建测试计划

    • 右键点击“测试计划” -> 新建 -> 输入测试计划名称(例如“Web应用性能测试”)。
  2. 添加线程组

    • 右键点击测试计划 -> 添加 -> 线程组 -> 输入线程组名称(例如“用户模拟”)。
    • 配置线程组:
      • 线程数:10(模拟10个用户)
      • 循环次数:10(每个用户发送10次请求)
      • 启动延迟:0(立即启动)
  3. 添加HTTP请求

    • 右键点击线程组 -> 添加 -> 取样器 -> HTTP请求。
    • 配置HTTP请求:
      • 名称:获取用户列表
      • 服务器名称或IP:example.com
      • 端口号:80
      • 协议:HTTP
      • 方法:GET
      • 路径:/api/users
  4. 添加精确吞吐量定时器

    • 右键点击HTTP请求 -> 添加 -> 定时器 -> 精确吞吐量定时器。
    • 配置精确吞吐量定时器:
      • 名称:精确吞吐量定时器
      • 吞吐量:60(每分钟发送60个请求)
      • 持续时间(毫秒):(可选)如果不设置,定时器将一直工作直到测试结束
  5. 运行测试

    • 点击工具栏上的“启动”按钮,运行测试。

 

c3d4963fde3e4495825e1e2264dfdad2.png


4--Constant Throughpupt Timer

功能特点

  • 恒定请求速率:确保在指定的时间段内保持恒定的吞吐量。
  • 灵活配置:可以设置每分钟发送的请求数量或每个线程组的吞吐量。
  • 适用于稳定负载测试:特别适合需要稳定控制请求频率的性能测试。

配置步骤

  1. 添加恒定吞吐量定时器

    • 右键点击需要添加定时器的请求或线程组。
    • 选择“添加” -> “定时器” -> “恒定吞吐量定时器”(Constant Throughput Timer)。
  2. 配置恒定吞吐量定时器

    • 名称:给恒定吞吐量定时器一个有意义的名称。
    • 目标吞吐量(每分钟):设置每分钟发送的请求数量。
    • 计算所有子采样器:选择是否将定时器应用于当前线程组中的所有子采样器。

参数说明

  • 目标吞吐量(每分钟):设置每分钟发送的请求数量。例如,如果设置为60,则每分钟发送60个请求。
  • 计算所有子采样器:选择是否将定时器应用于当前线程组中的所有子采样器。如果选择“是”,则定时器将影响整个线程组中的所有请求;如果选择“否”,则定时器仅影响当前请求。

示例配置

假设我们需要测试一个Web应用,并确保每分钟发送60个请求。

  1. 创建测试计划

    • 右键点击“测试计划” -> 新建 -> 输入测试计划名称(例如“Web应用性能测试”)。
  2. 添加线程组

    • 右键点击测试计划 -> 添加 -> 线程组 -> 输入线程组名称(例如“用户模拟”)。
    • 配置线程组:
      • 线程数:10(模拟10个用户)
      • 循环次数:10(每个用户发送10次请求)
      • 启动延迟:0(立即启动)
  3. 添加HTTP请求

    • 右键点击线程组 -> 添加 -> 取样器 -> HTTP请求。
    • 配置HTTP请求:
      • 名称:请求名称(例如“获取用户列表”)。
      • 服务器名称或IP:目标服务器的地址(例如example.com)。
      • 端口号:目标服务器的端口(例如80)。
      • 协议:HTTP或HTTPS(例如HTTP)。
      • 方法:请求的方法(例如GET)。
      • 路径:请求的路径(例如/api/users)。
  4. 添加恒定吞吐量定时器

    • 右键点击线程组 -> 添加 -> 定时器 -> 恒定吞吐量定时器。
    • 配置恒定吞吐量定时器:
      • 名称:恒定吞吐量定时器
      • 目标吞吐量(每分钟):60(每分钟发送60个请求)
      • 计算所有子采样器:是(将定时器应用于整个线程组中的所有请求)
  5. 运行测试

    • 点击工具栏上的“启动”按钮,运行测试。

优化建议

  1. 吞吐量设置

    • 根据实际需求设置合适的吞吐量。过高的吞吐量可能导致服务器过载,过低的吞吐量可能无法充分测试系统的性能。
  2. 计算所有子采样器

    • 如果需要控制整个线程组中的所有请求,选择“计算所有子采样器”。否则,选择“否”以仅影响当前请求。
  3. 放置位置

    • 恒定吞吐量定时器可以放在线程组级别或特定请求级别。放在线程组级别会影响该线程组中的所有请求,放在特定请求级别只影响该请求。
  4. 多请求场景

    • 如果有多个请求需要控制请求速率,可以为每个请求单独添加恒定吞吐量定时器,或者将多个请求放在一个线程组中,然后在该线程组中添加恒定吞吐量定时器。
  5. 性能影响

    • 恒定吞吐量定时器可能会对测试性能产生一定影响,特别是在大规模性能测试中。可以通过调整吞吐量来优化性能。
  6. 组合使用

    • 恒定吞吐量定时器可以与其他定时器(如固定定时器、统一随机定时器等)组合使用,以实现更复杂的延迟策略。

示例配置详细说明

假设我们有一个简单的测试计划,包含一个线程组和一个HTTP请求,并希望每分钟发送60个请求。

  1. 创建测试计划

    • 右键点击“测试计划” -> 新建 -> 输入测试计划名称(例如“Web应用性能测试”)。
  2. 添加线程组

    • 右键点击测试计划 -> 添加 -> 线程组 -> 输入线程组名称(例如“用户模拟”)。
    • 配置线程组:
      • 线程数:10(模拟10个用户)
      • 循环次数:10(每个用户发送10次请求)
      • 启动延迟:0(立即启动)
  3. 添加HTTP请求

    • 右键点击线程组 -> 添加 -> 取样器 -> HTTP请求。
    • 配置HTTP请求:
      • 名称:获取用户列表
      • 服务器名称或IP:example.com
      • 端口号:80
      • 协议:HTTP
      • 方法:GET
      • 路径:/api/users
  4. 添加恒定吞吐量定时器

    • 右键点击线程组 -> 添加 -> 定时器 -> 恒定吞吐量定时器。
    • 配置恒定吞吐量定时器:
      • 名称:恒定吞吐量定时器
      • 目标吞吐量(每分钟):60(每分钟发送60个请求)
      • 计算所有子采样器:是(将定时器应用于整个线程组中的所有请求)
  5. 运行测试

    • 点击工具栏上的“启动”按钮,运行测试。

a256404116ae40338ca833d8703212d7.png

 


5--JSR223 Timmer

功能特点

  • 自定义延迟逻辑:使用脚本语言动态计算请求之间的延迟时间。
  • 灵活控制:可以根据测试数据和条件动态调整延迟时间。
  • 支持多种脚本语言:支持 Groovy、JavaScript、BeanShell 等多种脚本语言。

支持的脚本语言

  • Groovy:推荐使用,性能优越且功能强大。
  • JavaScript:支持 ECMAScript 标准。
  • BeanShell:支持 Java 语法。
  • 其他语言:支持任何符合 JSR223 规范的脚本语言。

配置步骤

  1. 添加 JSR223 定时器

    • 右键点击需要添加定时器的请求或线程组。
    • 选择“添加” -> “定时器” -> “JSR223 定时器”。
  2. 配置 JSR223 定时器

    • 名称:给 JSR223 定时器一个有意义的名称。
    • 脚本语言:选择使用的脚本语言(例如 Groovy)。
    • 脚本文件:选择脚本文件路径(可选,如果脚本较长或需要版本控制)。
    • 脚本:直接在脚本编辑框中编写脚本。
    • 参数:定义脚本中使用的参数(可选)。

示例配置

假设我们需要测试一个Web应用,并在每个请求之间添加一个动态计算的延迟时间,延迟时间基于当前请求的响应时间。

  1. 创建测试计划

    • 右键点击“测试计划” -> 新建 -> 输入测试计划名称(例如“Web应用性能测试”)。
  2. 添加线程组

    • 右键点击测试计划 -> 添加 -> 线程组 -> 输入线程组名称(例如“用户模拟”)。
    • 配置线程组:
      • 线程数:10(模拟10个用户)
      • 循环次数:10(每个用户发送10次请求)
      • 启动延迟:0(立即启动)
  3. 添加HTTP请求

    • 右键点击线程组 -> 添加 -> 取样器 -> HTTP请求。
    • 配置HTTP请求:
      • 名称:请求名称(例如“获取用户列表”)。
      • 服务器名称或IP:目标服务器的地址(例如example.com)。
      • 端口号:目标服务器的端口(例如80)。
      • 协议:HTTP或HTTPS(例如HTTP)。
      • 方法:请求的方法(例如GET)。
      • 路径:请求的路径(例如/api/users)。
  4. 添加 JSR223 定时器

    • 右键点击HTTP请求 -> 添加 -> 定时器 -> JSR223 定时器。
    • 配置 JSR223 定时器:
      • 名称:JSR223 定时器
      • 脚本语言:Groovy
      • 脚本:在脚本编辑框中编写以下 Groovy 脚本:
        // 获取上一个请求的响应时间
        int responseTime = prev.getTime()// 计算延迟时间,例如延迟时间为响应时间的一半
        int delay = responseTime / 2// 返回延迟时间(单位为毫秒)
        return delay
  5. 运行测试

    • 点击工具栏上的“启动”按钮,运行测试。

优化建议

  1. 脚本语言选择

    • 推荐使用 Groovy,因为它性能优越且功能强大,是 JMeter 官方推荐的脚本语言。
  2. 脚本文件

    • 如果脚本较长或需要版本控制,可以将脚本保存到文件中,并在 JSR223 定时器中选择脚本文件路径。
  3. 参数

    • 如果脚本需要使用外部参数,可以在“参数”部分定义参数,并在脚本中引用这些参数。
  4. 性能影响

    • 注意复杂脚本可能会对测试性能产生影响,特别是在大规模性能测试中。可以通过优化脚本和减少不必要的操作来提高性能。
  5. 错误处理

    • 在脚本中添加适当的错误处理逻辑,确保脚本在遇到异常时能够优雅地处理。
  6. 日志记录

    • 使用日志记录功能可以帮助调试和分析脚本执行情况,确保日志文件路径有效且有足够的写权限。

示例配置详细说明

假设我们有一个简单的测试计划,包含一个线程组和一个HTTP请求,并希望在每个请求之间添加一个动态计算的延迟时间,延迟时间基于当前请求的响应时间。

  1. 创建测试计划

    • 右键点击“测试计划” -> 新建 -> 输入测试计划名称(例如“Web应用性能测试”)。
  2. 添加线程组

    • 右键点击测试计划 -> 添加 -> 线程组 -> 输入线程组名称(例如“用户模拟”)。
    • 配置线程组:
      • 线程数:10(模拟10个用户)
      • 循环次数:10(每个用户发送10次请求)
      • 启动延迟:0(立即启动)
  3. 添加HTTP请求

    • 右键点击线程组 -> 添加 -> 取样器 -> HTTP请求。
    • 配置HTTP请求:
      • 名称:获取用户列表
      • 服务器名称或IP:example.com
      • 端口号:80
      • 协议:HTTP
      • 方法:GET
      • 路径:/api/users
  4. 添加 JSR223 定时器

    • 右键点击HTTP请求 -> 添加 -> 定时器 -> JSR223 定时器。
    • 配置 JSR223 定时器:
      • 名称:JSR223 定时器
      • 脚本语言:Groovy
      • 脚本:在脚本编辑框中编写以下 Groovy 脚本:
        // 获取上一个请求的响应时间
        int responseTime = prev.getTime()// 计算延迟时间,例如延迟时间为响应时间的一半
        int delay = responseTime / 2// 返回延迟时间(单位为毫秒)
        return delay
  5. 运行测试

    • 点击工具栏上的“启动”按钮,运行测试。

 

2399a88ca6fc48039ef3eebff2ffbadf.png


6--Synchronizing Timer

功能特点

  • 并发控制:确保一组线程在同一时间点执行某个请求。
  • 灵活配置:可以设置等待的线程数和超时时间。
  • 适用于压力测试:特别适合需要模拟大量并发用户的场景。

配置步骤

  1. 添加同步定时器

    • 右键点击需要添加定时器的请求或线程组。
    • 选择“添加” -> “定时器” -> “同步定时器”(Synchronizing Timer)。
  2. 配置同步定时器

    • 名称:给同步定时器一个有意义的名称。
    • 数量的线程(用户):设置需要等待的线程数。
    • 超时(毫秒):设置等待的最大时间(可选)。

参数说明

  • 数量的线程(用户):设置需要等待的线程数。例如,如果设置为10,则需要等待10个线程都到达同步点后才会继续执行。
  • 超时(毫秒):设置等待的最大时间。如果在指定时间内没有达到设定的线程数,定时器将释放已等待的线程。如果不设置,定时器将无限期等待。

示例配置

假设我们需要测试一个Web应用,并确保每次有10个用户同时执行某个请求。

  1. 创建测试计划

    • 右键点击“测试计划” -> 新建 -> 输入测试计划名称(例如“Web应用性能测试”)。
  2. 添加线程组

    • 右键点击测试计划 -> 添加 -> 线程组 -> 输入线程组名称(例如“用户模拟”)。
    • 配置线程组:
      • 线程数:20(模拟20个用户)
      • 循环次数:1(每个用户发送1次请求)
      • 启动延迟:0(立即启动)
  3. 添加HTTP请求

    • 右键点击线程组 -> 添加 -> 取样器 -> HTTP请求。
    • 配置HTTP请求:
      • 名称:请求名称(例如“获取用户列表”)。
      • 服务器名称或IP:目标服务器的地址(例如example.com)。
      • 端口号:目标服务器的端口(例如80)。
      • 协议:HTTP或HTTPS(例如HTTP)。
      • 方法:请求的方法(例如GET)。
      • 路径:请求的路径(例如/api/users)。
  4. 添加同步定时器

    • 右键点击HTTP请求 -> 添加 -> 定时器 -> 同步定时器。
    • 配置同步定时器:
      • 名称:同步定时器
      • 数量的线程(用户):10(每次等待10个线程)
      • 超时(毫秒):(可选)如果不设置,定时器将无限期等待
  5. 运行测试

    • 点击工具栏上的“启动”按钮,运行测试。

优化建议

  1. 线程数设置

    • 根据实际需求设置合适的线程数。确保线程数足够大,以便能够达到所需的并发效果。
  2. 超时设置

    • 如果需要确保测试在一定时间内完成,可以设置超时时间。超时时间应根据系统响应时间和测试需求来设置。
  3. 放置位置

    • 同步定时器可以放在线程组级别或特定请求级别。放在线程组级别会影响该线程组中的所有请求,放在特定请求级别只影响该请求。
  4. 多请求场景

    • 如果有多个请求需要同步执行,可以为每个请求单独添加同步定时器,或者将多个请求放在一个线程组中,然后在该线程组中添加同步定时器。
  5. 性能影响

    • 同步定时器可能会对测试性能产生一定影响,特别是在大规模性能测试中。可以通过调整线程数和超时时间来优化性能。
  6. 组合使用

    • 同步定时器可以与其他定时器(如固定定时器、统一随机定时器等)组合使用,以实现更复杂的延迟策略。

示例配置详细说明

假设我们有一个简单的测试计划,包含一个线程组和一个HTTP请求,并希望每次有10个用户同时执行某个请求。

  1. 创建测试计划

    • 右键点击“测试计划” -> 新建 -> 输入测试计划名称(例如“Web应用性能测试”)。
  2. 添加线程组

    • 右键点击测试计划 -> 添加 -> 线程组 -> 输入线程组名称(例如“用户模拟”)。
    • 配置线程组:
      • 线程数:20(模拟20个用户)
      • 循环次数:1(每个用户发送1次请求)
      • 启动延迟:0(立即启动)
  3. 添加HTTP请求

    • 右键点击线程组 -> 添加 -> 取样器 -> HTTP请求。
    • 配置HTTP请求:
      • 名称:获取用户列表
      • 服务器名称或IP:example.com
      • 端口号:80
      • 协议:HTTP
      • 方法:GET
      • 路径:/api/users
  4. 添加同步定时器

    • 右键点击HTTP请求 -> 添加 -> 定时器 -> 同步定时器。
    • 配置同步定时器:
      • 名称:同步定时器
      • 数量的线程(用户):10(每次等待10个线程)
      • 超时(毫秒):(可选)如果不设置,定时器将无限期等待
  5. 运行测试

    • 点击工具栏上的“启动”按钮,运行测试。

8739ea621ad24a9ab9e7087164e4e6a0.png

 


7--泊松随机定时器

功能特点

  • 泊松分布:使用泊松分布生成随机延迟时间,使延迟时间更加自然和随机。
  • 灵活配置:可以设置平均延迟时间和偏差系数。
  • 适用于模拟真实用户行为:特别适合需要模拟真实用户行为的性能测试。

配置步骤

  1. 添加泊松随机定时器

    • 右键点击需要添加定时器的请求或线程组。
    • 选择“添加” -> “定时器” -> “泊松随机定时器”(Poisson Random Timer)。
  2. 配置泊松随机定时器

    • 名称:给泊松随机定时器一个有意义的名称。
    • 常量延迟偏移(毫秒):设置平均延迟时间。
    • 泊松分布的lambda值:设置泊松分布的λ值(Lambda值),控制随机延迟的分布。

参数说明

  • 常量延迟偏移(毫秒):设置平均延迟时间。这是泊松分布的期望值(平均值)。
  • 泊松分布的lambda值:设置泊松分布的λ值。λ值越大,随机延迟的波动范围越大。

示例配置

假设我们需要测试一个Web应用,并在每个请求之间添加基于泊松分布的随机延迟时间,平均延迟时间为2000毫秒(2秒)。

  1. 创建测试计划

    • 右键点击“测试计划” -> 新建 -> 输入测试计划名称(例如“Web应用性能测试”)。
  2. 添加线程组

    • 右键点击测试计划 -> 添加 -> 线程组 -> 输入线程组名称(例如“用户模拟”)。
    • 配置线程组:
      • 线程数:10(模拟10个用户)
      • 循环次数:10(每个用户发送10次请求)
      • 启动延迟:0(立即启动)
  3. 添加HTTP请求

    • 右键点击线程组 -> 添加 -> 取样器 -> HTTP请求。
    • 配置HTTP请求:
      • 名称:请求名称(例如“获取用户列表”)。
      • 服务器名称或IP:目标服务器的地址(例如example.com)。
      • 端口号:目标服务器的端口(例如80)。
      • 协议:HTTP或HTTPS(例如HTTP)。
      • 方法:请求的方法(例如GET)。
      • 路径:请求的路径(例如/api/users)。
  4. 添加泊松随机定时器

    • 右键点击HTTP请求 -> 添加 -> 定时器 -> 泊松随机定时器。
    • 配置泊松随机定时器:
      • 名称:泊松随机定时器
      • 常量延迟偏移(毫秒):2000(平均延迟时间为2000毫秒)
      • 泊松分布的lambda值:1.0(λ值为1.0,表示标准泊松分布)
  5. 运行测试

    • 点击工具栏上的“启动”按钮,运行测试。

优化建议

  1. 平均延迟时间

    • 根据实际需求设置合适的平均延迟时间。过短的延迟可能导致服务器过载,过长的延迟可能无法充分测试系统的性能。
  2. λ值设置

    • λ值控制随机延迟的分布。较大的λ值会导致更大的随机波动,较小的λ值会使延迟时间更集中于平均值。根据测试需求选择合适的λ值。
  3. 放置位置

    • 泊松随机定时器可以放在线程组级别或特定请求级别。放在线程组级别会影响该线程组中的所有请求,放在特定请求级别只影响该请求。
  4. 多请求场景

    • 如果有多个请求需要添加随机延迟,可以为每个请求单独添加泊松随机定时器,或者将多个请求放在一个线程组中,然后在该线程组中添加泊松随机定时器。
  5. 性能影响

    • 泊松随机定时器可能会对测试性能产生一定影响,特别是在大规模性能测试中。可以通过调整平均延迟时间和λ值来优化性能。
  6. 组合使用

    • 泊松随机定时器可以与其他定时器(如固定定时器、统一随机定时器等)组合使用,以实现更复杂的延迟策略。

示例配置详细说明

假设我们有一个简单的测试计划,包含一个线程组和一个HTTP请求,并希望在每个请求之间添加基于泊松分布的随机延迟时间,平均延迟时间为2000毫秒。

  1. 创建测试计划

    • 右键点击“测试计划” -> 新建 -> 输入测试计划名称(例如“Web应用性能测试”)。
  2. 添加线程组

    • 右键点击测试计划 -> 添加 -> 线程组 -> 输入线程组名称(例如“用户模拟”)。
    • 配置线程组:
      • 线程数:10(模拟10个用户)
      • 循环次数:10(每个用户发送10次请求)
      • 启动延迟:0(立即启动)
  3. 添加HTTP请求

    • 右键点击线程组 -> 添加 -> 取样器 -> HTTP请求。
    • 配置HTTP请求:
      • 名称:获取用户列表
      • 服务器名称或IP:example.com
      • 端口号:80
      • 协议:HTTP
      • 方法:GET
      • 路径:/api/users
  4. 添加泊松随机定时器

    • 右键点击HTTP请求 -> 添加 -> 定时器 -> 泊松随机定时器。
    • 配置泊松随机定时器:
      • 名称:泊松随机定时器
      • 常量延迟偏移(毫秒):2000(平均延迟时间为2000毫秒)
      • 泊松分布的lambda值:1.0(λ值为1.0,表示标准泊松分布)
  5. 运行测试

    • 点击工具栏上的“启动”按钮,运行测试。

a64a63618ab14f3894a4a82c485a128c.png

 


8--高斯随机定时器

功能特点

  • 高斯分布:使用高斯分布生成随机延迟时间,使延迟时间更加自然和随机。
  • 灵活配置:可以设置平均延迟时间和标准差。
  • 适用于模拟真实用户行为:特别适合需要模拟真实用户行为的性能测试。

配置步骤

  1. 添加高斯随机定时器

    • 右键点击需要添加定时器的请求或线程组。
    • 选择“添加” -> “定时器” -> “高斯随机定时器”(Gaussian Random Timer)。
  2. 配置高斯随机定时器

    • 名称:给高斯随机定时器一个有意义的名称。
    • 常量延迟偏移(毫秒):设置平均延迟时间。
    • 高斯随机偏移(毫秒):设置标准差,控制随机延迟的分布范围。

参数说明

  • 常量延迟偏移(毫秒):设置平均延迟时间。这是高斯分布的均值(μ)。
  • 高斯随机偏移(毫秒):设置标准差(σ),控制随机延迟的分布范围。标准差越大,随机延迟的波动范围越大。

示例配置

假设我们需要测试一个Web应用,并在每个请求之间添加基于高斯分布的随机延迟时间,平均延迟时间为2000毫秒(2秒),标准差为500毫秒。

  1. 创建测试计划

    • 右键点击“测试计划” -> 新建 -> 输入测试计划名称(例如“Web应用性能测试”)。
  2. 添加线程组

    • 右键点击测试计划 -> 添加 -> 线程组 -> 输入线程组名称(例如“用户模拟”)。
    • 配置线程组:
      • 线程数:10(模拟10个用户)
      • 循环次数:10(每个用户发送10次请求)
      • 启动延迟:0(立即启动)
  3. 添加HTTP请求

    • 右键点击线程组 -> 添加 -> 取样器 -> HTTP请求。
    • 配置HTTP请求:
      • 名称:请求名称(例如“获取用户列表”)。
      • 服务器名称或IP:目标服务器的地址(例如example.com)。
      • 端口号:目标服务器的端口(例如80)。
      • 协议:HTTP或HTTPS(例如HTTP)。
      • 方法:请求的方法(例如GET)。
      • 路径:请求的路径(例如/api/users)。
  4. 添加高斯随机定时器

    • 右键点击HTTP请求 -> 添加 -> 定时器 -> 高斯随机定时器。
    • 配置高斯随机定时器:
      • 名称:高斯随机定时器
      • 常量延迟偏移(毫秒):2000(平均延迟时间为2000毫秒)
      • 高斯随机偏移(毫秒):500(标准差为500毫秒)
  5. 运行测试

    • 点击工具栏上的“启动”按钮,运行测试。

优化建议

  1. 平均延迟时间

    • 根据实际需求设置合适的平均延迟时间。过短的延迟可能导致服务器过载,过长的延迟可能无法充分测试系统的性能。
  2. 标准差设置

    • 标准差控制随机延迟的分布范围。较大的标准差会导致更大的随机波动,较小的标准差会使延迟时间更集中于平均值。根据测试需求选择合适的标准差。
  3. 放置位置

    • 高斯随机定时器可以放在线程组级别或特定请求级别。放在线程组级别会影响该线程组中的所有请求,放在特定请求级别只影响该请求。
  4. 多请求场景

    • 如果有多个请求需要添加随机延迟,可以为每个请求单独添加高斯随机定时器,或者将多个请求放在一个线程组中,然后在该线程组中添加高斯随机定时器。
  5. 性能影响

    • 高斯随机定时器可能会对测试性能产生一定影响,特别是在大规模性能测试中。可以通过调整平均延迟时间和标准差来优化性能。
  6. 组合使用

    • 高斯随机定时器可以与其他定时器(如固定定时器、统一随机定时器等)组合使用,以实现更复杂的延迟策略。

示例配置详细说明

假设我们有一个简单的测试计划,包含一个线程组和一个HTTP请求,并希望在每个请求之间添加基于高斯分布的随机延迟时间,平均延迟时间为2000毫秒,标准差为500毫秒。

  1. 创建测试计划

    • 右键点击“测试计划” -> 新建 -> 输入测试计划名称(例如“Web应用性能测试”)。
  2. 添加线程组

    • 右键点击测试计划 -> 添加 -> 线程组 -> 输入线程组名称(例如“用户模拟”)。
    • 配置线程组:
      • 线程数:10(模拟10个用户)
      • 循环次数:10(每个用户发送10次请求)
      • 启动延迟:0(立即启动)
  3. 添加HTTP请求

    • 右键点击线程组 -> 添加 -> 取样器 -> HTTP请求。
    • 配置HTTP请求:
      • 名称:获取用户列表
      • 服务器名称或IP:example.com
      • 端口号:80
      • 协议:HTTP
      • 方法:GET
      • 路径:/api/users
  4. 添加高斯随机定时器

    • 右键点击HTTP请求 -> 添加 -> 定时器 -> 高斯随机定时器。
    • 配置高斯随机定时器:
      • 名称:高斯随机定时器
      • 常量延迟偏移(毫秒):2000(平均延迟时间为2000毫秒)
      • 高斯随机偏移(毫秒):500(标准差为500毫秒)
  5. 运行测试

    • 点击工具栏上的“启动”按钮,运行测试。

 

dcf9804bcfeb43998bec6e9b753a07a3.png

 


9--BeanShell Timer

功能特点

  • 自定义延迟逻辑:使用 BeanShell 脚本动态计算请求之间的延迟时间。
  • 灵活控制:可以根据测试数据和条件动态调整延迟时间。
  • 支持 BeanShell 脚本:支持使用 BeanShell 脚本语言编写延迟逻辑。

配置步骤

  1. 添加 BeanShell 定时器

    • 右键点击需要添加定时器的请求或线程组。
    • 选择“添加” -> “定时器” -> “BeanShell 定时器”。
  2. 配置 BeanShell 定时器

    • 名称:给 BeanShell 定时器一个有意义的名称。
    • 文件:选择脚本文件路径(可选,如果脚本较长或需要版本控制)。
    • 脚本:直接在脚本编辑框中编写脚本。
    • 参数:定义脚本中使用的参数(可选)。

示例配置

假设我们需要测试一个Web应用,并在每个请求之间添加一个动态计算的延迟时间,延迟时间基于当前请求的响应时间。

  1. 创建测试计划

    • 右键点击“测试计划” -> 新建 -> 输入测试计划名称(例如“Web应用性能测试”)。
  2. 添加线程组

    • 右键点击测试计划 -> 添加 -> 线程组 -> 输入线程组名称(例如“用户模拟”)。
    • 配置线程组:
      • 线程数:10(模拟10个用户)
      • 循环次数:10(每个用户发送10次请求)
      • 启动延迟:0(立即启动)
  3. 添加HTTP请求

    • 右键点击线程组 -> 添加 -> 取样器 -> HTTP请求。
    • 配置HTTP请求:
      • 名称:请求名称(例如“获取用户列表”)。
      • 服务器名称或IP:目标服务器的地址(例如example.com)。
      • 端口号:目标服务器的端口(例如80)。
      • 协议:HTTP或HTTPS(例如HTTP)。
      • 方法:请求的方法(例如GET)。
      • 路径:请求的路径(例如/api/users)。
  4. 添加 BeanShell 定时器

    • 右键点击HTTP请求 -> 添加 -> 定时器 -> BeanShell 定时器。
    • 配置 BeanShell 定时器:
      • 名称:BeanShell 定时器
      • 脚本:在脚本编辑框中编写以下 BeanShell 脚本:
        // 获取上一个请求的响应时间
        int responseTime = prev.getTime();// 计算延迟时间,例如延迟时间为响应时间的一半
        int delay = responseTime / 2;// 返回延迟时间(单位为毫秒)
        return delay;
  5. 运行测试

    • 点击工具栏上的“启动”按钮,运行测试。

优化建议

  1. 脚本语言选择

    • 虽然 BeanShell 是一个强大的脚本语言,但 Groovy 通常性能更好且功能更强大。如果可能,建议使用 Groovy 脚本。
  2. 脚本文件

    • 如果脚本较长或需要版本控制,可以将脚本保存到文件中,并在 BeanShell 定时器中选择脚本文件路径。
  3. 参数

    • 如果脚本需要使用外部参数,可以在“参数”部分定义参数,并在脚本中引用这些参数。
  4. 性能影响

    • 注意复杂脚本可能会对测试性能产生影响,特别是在大规模性能测试中。可以通过优化脚本和减少不必要的操作来提高性能。
  5. 错误处理

    • 在脚本中添加适当的错误处理逻辑,确保脚本在遇到异常时能够优雅地处理。
  6. 日志记录

    • 使用日志记录功能可以帮助调试和分析脚本执行情况,确保日志文件路径有效且有足够的写权限。

示例配置详细说明

假设我们有一个简单的测试计划,包含一个线程组和一个HTTP请求,并希望在每个请求之间添加一个动态计算的延迟时间,延迟时间基于当前请求的响应时间。

  1. 创建测试计划

    • 右键点击“测试计划” -> 新建 -> 输入测试计划名称(例如“Web应用性能测试”)。
  2. 添加线程组

    • 右键点击测试计划 -> 添加 -> 线程组 -> 输入线程组名称(例如“用户模拟”)。
    • 配置线程组:
      • 线程数:10(模拟10个用户)
      • 循环次数:10(每个用户发送10次请求)
      • 启动延迟:0(立即启动)
  3. 添加HTTP请求

    • 右键点击线程组 -> 添加 -> 取样器 -> HTTP请求。
    • 配置HTTP请求:
      • 名称:获取用户列表
      • 服务器名称或IP:example.com
      • 端口号:80
      • 协议:HTTP
      • 方法:GET
      • 路径:/api/users
  4. 添加 BeanShell 定时器

    • 右键点击HTTP请求 -> 添加 -> 定时器 -> BeanShell 定时器。
    • 配置 BeanShell 定时器:
      • 名称:BeanShell 定时器
      • 脚本:在脚本编辑框中编写以下 BeanShell 脚本:
        // 获取上一个请求的响应时间
        int responseTime = prev.getTime();// 计算延迟时间,例如延迟时间为响应时间的一半
        int delay = responseTime / 2;// 返回延迟时间(单位为毫秒)
        return delay;
  5. 运行测试

    • 点击工具栏上的“启动”按钮,运行测试。

 

ef834f267bcb47898c1cc79e8cd5af59.png


 

 

相关文章:

Jmeter中的定时器

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

共享单车管理系统项目学习实战

前言 Spring Boot Vue前后端分离 前端:Vue(CDN) Element axios(前后端交互) BaiDuMap ECharts(图表展示) 后端:Spring Boot Spring MVC(Web) MyBatis Plus(数据库) 数据库:MySQL 验证码请求 git提交 cd C:/Users/Ustini…...

学Linux的第九天--磁盘管理

目录 一、磁盘简介 (一)、认知磁盘 (1)结构 (2)物理设备的命名规则 (二)、磁盘分区方式 MBR分区 MBR分区类型 扩展 GPT格式 lsblk命令 使用fdisk管理分区 使用gdisk管理分…...

CLIP-Adapter: Better Vision-Language Models with Feature Adapters 论文解读

abstract 大规模对比视觉-语言预训练在视觉表示学习方面取得了显著进展。与传统的通过固定一组离散标签训练的视觉系统不同,(Radford et al., 2021) 引入了一种新范式,该范式在开放词汇环境中直接学习将图像与原始文本对齐。在下游任务中,通…...

D74【 python 接口自动化学习】- python 基础之HTTP

day74 http基础定义 学习日期:20241120 学习目标:http定义及实战 -- http基础介绍 学习笔记: HTTP定义 HTTP 是一个协议(服务器传输超文本到浏览器的传送协议),是基于 TCP/IP 通信协议来传递数据&…...

维护表空间和数据文件(一)

学习目标 定义表空间和数据文件的用途创建表空间管理表空间使用Oracle管理文件(OMF)创建和管理表空间获取表空间信息 表空间和数据文件 Oracle逻辑上将数据存储在表空间中,物理上将数据存储在数据文件中。 Tablespaces: 一次只…...

H.265流媒体播放器EasyPlayer.js H5流媒体播放器关于如何查看手机端的日志信息并保存下来

现今流媒体播放器的发展趋势将更加多元化和个性化。人工智能的应用将深入内容创作、用户体验优化等多个方面,带来前所未有的个性化体验。 EasyPlayer.js H.265流媒体播放器属于一款高效、精炼、稳定且免费的流媒体播放器,可支持多种流媒体协议播放&#…...

Apple Vision Pro开发003-PolySpatial2.0新建项目

unity6.0下载链接:Unity 实时开发平台 | 3D、2D、VR 和 AR 引擎 一、新建项目 二、导入开发包 com.unity.polyspatial.visionos 输入版本号 2.0.4 com.unity.polyspatial(单独导入),或者直接安装 三、对应设置 其他的操作与之前的版本相同…...

解决 npm xxx was blocked, reason: xx bad guy, steal env and delete files

问题复现 今天一位朋友说,vue2的老项目安装不老依赖,报错内容如下: npm install 451 Unavailable For Legal Reasons - GET https://registry.npmmirror.com/vab-count - [UNAVAILABLE_FOR_LEGAL_REASONS] vab-count was blocked, reas…...

leetcode 面试150之 156.LUR 缓存

请你设计并实现一个满足 LRU (最近最少使用) 缓存 约束的数据结构。 实现 LRUCache 类: LRUCache(int capacity) 以 正整数 作为容量 capacity 初始化 LRU 缓存int get(int key) 如果关键字 key 存在于缓存中,则返回关键字的值,否则返回 -…...

Vue 动态给 data 添加新属性深度解析:问题、原理与解决方案

在 Vue 中,动态地向 data 中添加新的属性是一个常见的需求,但它也可能引发一些问题,尤其是关于 响应式更新 和 数据绑定 的问题。Vue 的响应式系统通过 getter 和 setter 来追踪和更新数据,但 动态添加新属性 时,Vue 并不会自动为这些新属性创建响应式链接。 1. 直接向 V…...

Unity类银河战士恶魔城学习总结(P141 Finalising ToolTip优化UI显示)

【Unity教程】从0编程制作类银河恶魔城游戏_哔哩哔哩_bilibili 教程源地址:https://www.udemy.com/course/2d-rpg-alexdev/ UI部分暂时完结!!! 本章节优化了UI中物品描述的显示效果,技能描述的显示效果 并且可以批…...

面试:请阐述MySQL配置文件my.cnf中参数log-bin和binlog-do-db的作用

大家好,我是袁庭新。星球里的小伙伴去面试,面试官问:MySQL配置文件my.cnf中参数log-bin和binlog-do-db的作用?一脸懵逼~不知道该如何回答。 在MySQL的配置文件my.cnf中,log-bin和binlog-do-db是与二进制日志…...

监控报警系统的指标、规则与执行闭环

随笔 从千万粉丝“何同学”抄袭开源项目说起,为何纯技术死路一条? 数据源的统一与拆分 监控报警系统的指标、规则与执行闭环 java 老矣,尚能饭否? 一骑红尘妃子笑,无人知是荔枝来! 有所依 我们如何知道系统交易…...

玩转数字与运算:用C语言实现24点游戏的扑克牌魅力

✅作者简介:2022年博客新星 第八。热爱国学的Java后端开发者,修心和技术同步精进。 🍎个人主页:Java Fans的博客 🍊个人信条:不迁怒,不贰过。小知识,大智慧。 💞当前专栏…...

动态反馈控制器(DFC)和 服务率控制器(SRC);服务率和到达率简单理解

目录 服务率和到达率简单理解 服务率 到达率 排队论中的应用 论文解析:队列等待成本动态感知控制模型 动态反馈和队列等待成本意识: 服务速率调整算法: 动态反馈控制器(DFC)和 服务率控制器(SRC) SRC公式4的原理 算力资源分配系统中的调整消耗 举例说明 服务…...

Flutter-Web首次加载时添加动画

前言 现在web上线后首次加载会很慢&#xff0c;要5秒以上&#xff0c;并且在加载的过程中界面是白屏。因此想在白屏的时候放一个加载动画 实现步骤 1.找到web/index.html文件 2.添加以下<style>标签内容到<head>标签中 <style>.loading {display: flex;…...

stl 实现非容器类型元素和容器元素比较

在 C 标准模板库&#xff08;STL&#xff09;中&#xff0c;有许多算法可以接受自定义的比较函数&#xff08;Compare&#xff09;。这些算法通常涉及排序、查找、合并、集合操作等场景&#xff0c;允许用户通过 Compare 函数指定如何比较两个元素。 自定义compare的算法 排序…...

ChatGPT 桌面版发布了,如何安装?

本章教程教大家如何进行安装。 一、下载安装包 官网地址地址&#xff1a;https://openai.com/chatgpt/desktop/ 支持Windows和MacOS操作系统 二、安装步骤 Windows用户下载之后&#xff0c;会有一个exe安装包&#xff0c;点击运行安装即可。 注意事项&#xff0c;如果Windows操…...

【动手学电机驱动】STM32-FOC(8)MCSDK Profiler 电机参数辨识

STM32-FOC&#xff08;1&#xff09;STM32 电机控制的软件开发环境 STM32-FOC&#xff08;2&#xff09;STM32 导入和创建项目 STM32-FOC&#xff08;3&#xff09;STM32 三路互补 PWM 输出 STM32-FOC&#xff08;4&#xff09;IHM03 电机控制套件介绍 STM32-FOC&#xff08;5&…...

JavaWeb后端开发知识储备2

目录 1.HttpClient 2.微信小程序开发 3.Spring Cache 4.Spring Task 4.1cron表达式 4.2入门案例 1.HttpClient 简单来说&#xff0c;HttpClient可以通过编码的方式在Java中发送Http请求 2.微信小程序开发 微信小程序的开发本质上是前端开发&#xff0c;对于后端程序员来…...

Java Stream API - 高效数据处理的核心工具_01

文章目录 概述&#xff1a;高效数据处理的核心工具1. 流的创建1.1 从集合创建流1.2 从数组创建流1.3 直接创建流 2. 中间操作&#xff1a;流的转换和处理2.1 map()&#xff1a;映射操作2.2 filter()&#xff1a;过滤操作2.3 flatMap()&#xff1a;扁平化映射操作2.4 sorted()&a…...

【计算机网络】网段划分

一、为什么有网段划分 IP地址 网络号(目标网络) 主机号(目标主机) 网络号: 保证相互连接的两个网段具有不同的标识 主机号: 同一网段内&#xff0c;主机之间具有相同的网络号&#xff0c;但是必须有不同的主机号 互联网中的每一台主机&#xff0c;都要隶属于某一个子网 -&…...

HTML和CSS 表单、表格练习

HTML和CSS 表格练习 <!DOCTYPE html> <html lang"zh-CN"><head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><title>HTML表格练习</title>…...

ByteBuffer模拟拆包输出消息字符串

以下代码模拟网络编程中的粘包现象&#xff0c;用\n进行分割消息块 源码 public static void main(String[] args) {ByteBuffer byteBuffer1 ByteBuffer.allocate(60) ;byteBuffer1.put("Hello World\nWhat is you name?\nI am Licky!\nHo".getBytes());splice(byt…...

Java FastJson 踩坑记录

newtonsoft.json 第一次用。java 转的json给newtonsoft.json解析&#xff0c;一直解析不出来。 直到写这个文章的时候&#xff0c;我都还觉得是newtonsoft.json和fastjson都有问题。 先看java JSONField(name"Rank​Value") public long Rank1​1000; JSONField(na…...

深入理解 Java 阻塞队列:使用场景、原理与性能优化

在并发编程中&#xff0c;线程安全的队列是解决线程间任务传递和调度的关键工具之一。阻塞队列&#xff08;BlockingQueue&#xff09;作为一种线程安全的队列&#xff0c;实现了在并发环境下对共享数据的安全访问&#xff0c;广泛应用于生产者-消费者模型、任务调度和多线程计…...

Python常用高阶函数:map()、filter()、reduce()

Python常用高阶函数&#xff1a;map()、filter()、reduce() 高阶函数是一类以函数作为参数或者返回值的函数&#xff0c;能够显著提高代码的简洁性和灵活性。在Python中&#xff0c;map()、filter()和reduce()是三种非常常用的高阶函数&#xff0c;它们常被用来对列表或其他可…...

多目标优化算法:多目标极光优化算法(MOPLO)求解ZDT1、ZDT2、ZDT3、ZDT4、ZDT6,提供完整MATLAB代码

一、极光优化算法 极光优化算法&#xff08;Polar Lights Optimization, PLO&#xff09;是2024年提出的一种新型的元启发式优化算法&#xff0c;它从极光这一自然现象中汲取灵感。极光是由太阳风中的带电粒子在地球磁场的作用下&#xff0c;与地球大气层中的气体分子碰撞而产…...

【大数据学习 | Spark-Core】关于distinct算子

只有shuffle类的算子能够修改分区数量&#xff0c;这些算子不仅仅存在自己的功能&#xff0c;比如分组算子groupBy&#xff0c;它的功能是分组但是却可以修改分区。 而这里我们要讲的distinct算子也是一个shuffle类的算子。即可以修改分区。 scala> val arr Array(1,1,2,…...

ShuffleNet:一种为移动设备设计的极致高效的卷积神经网络

摘要 https://arxiv.org/pdf/1707.01083 我们介绍了一种名为ShuffleNet的计算效率极高的卷积神经网络&#xff08;CNN&#xff09;架构&#xff0c;该架构专为计算能力非常有限的移动设备&#xff08;例如10-150 MFLOPs&#xff09;而设计。新架构利用两种新操作&#xff1a;逐…...

AIGC-------AIGC在社交媒体内容生成中的应用

AIGC在社交媒体内容生成中的应用 引言 随着人工智能生成内容&#xff08;AIGC&#xff09;的快速发展&#xff0c;社交媒体平台上的内容创作方式发生了巨大变化。AIGC使得内容创作的门槛大大降低&#xff0c;从而让更多的人能够参与到社交媒体内容的创作中&#xff0c;同时也使…...

提取图像中的高频信息

三种方法 1. 傅里叶变换提取高频和低频【有损】2. 傅里叶变换提取振幅和相位【无损】3. 小波变换【不涉及恢复代码】代码1.代码2代码3 1. 傅里叶变换提取高频和低频【有损】 环境&#xff1a;集群210.30.98.11效果: 2. 傅里叶变换提取振幅和相位【无损】 环境&#xff1a;集…...

js函数声明

在 JavaScript 中&#xff0c;函数是一等公民&#xff08;first-class citizen&#xff09;&#xff0c;这意味着函数可以作为变量、参数和返回值使用。JavaScript 提供了多种定义函数的方式&#xff0c;以下是几种常见的方法&#xff1a; 1. 函数声明&#xff08;Function De…...

语言模型中的多模态链式推理

神经网络的公式推导 简介摘要引言多模态思维链推理的挑战多模态CoT框架多模态CoT模型架构细节编码模块融合模块解码模块 实验结果运行代码补充细节安装包下载Flan-T5数据集准备rougenltkall-MiniLM-L6-v2运行 简介 本文主要对2023一篇论文《Multimodal Chain-of-Thought Reason…...

【Java 解释器模式】实现高扩展性的医学专家诊断规则引擎

&#x1f9d1; 博主简介&#xff1a;CSDN博客专家&#xff0c;历代文学网&#xff08;PC端可以访问&#xff1a;https://literature.sinhy.com/#/literature?__c1000&#xff0c;移动端可微信小程序搜索“历代文学”&#xff09;总架构师&#xff0c;15年工作经验&#xff0c;…...

CTF之密码学(Polybius密码)

棋盘密码&#xff0c;也称为Polybius密码或方格密码&#xff0c;是一种基于替换的加密方法。以下是对棋盘密码的详细解析&#xff1a; 一、加密原理 棋盘密码使用一个5x5的方格棋盘&#xff0c;其中填充了26个英文字母&#xff08;通常i和j被视为同一个字母并放在同一个格子中…...

java excel 导入各种踩坑

在 Java 中处理 Excel 导入时&#xff0c;常见的问题&#xff08;即“踩坑”&#xff09;很多&#xff0c;下面列举了处理 Excel 导入时可能遇到的一些问题&#xff0c;并给出了解决方案和优化技巧。 1. POI 库与版本问题 Apache POI 是处理 Excel 的常用库&#xff0c;但是不…...

优化表单交互:在 el-select 组件中嵌入表格显示选项

介绍了一种通过 el-select 插槽实现表格样式数据展示的方案&#xff0c;可更直观地辅助用户选择。支持列配置、行数据绑定及自定义搜索&#xff0c;简洁高效&#xff0c;适用于复杂选择场景。完整代码见GitHub 仓库。 背景 在进行业务开发选择订单时&#xff0c;如果单纯的根…...

js版本之ES5特性简述【String、Function、JSON、其他】(二)

目录 String相关方法 string.charAt() string.charCodeAt() string.concat() string.match() string.search() string.replace() string.split() string.trim() string.slice() string.substr() string.substring() Function相关方法 arguments.length function…...

【redis】哈希类型详解

哈希类型详解 一、哈希类型的介绍二、哈希类型的常用命令2.1 HSET2.2 HGET2.3 HEXISTS2.4 HDEL2.5 HKEYS2.6 HAVLS2.7 HGETALL2.8 HMGET2.9 HLEN2.10 HSETNX2.11 HINCRBY2.12 HINCRBYFLOAT 三、哈希类型命令小结四、哈希类型内部编码五、哈希类型应用场景 一、哈希类型的介绍 …...

每日练题之动态规划(子序列问题讲解 1.最长递增子序列 2.摆动序列)

前言&#xff1a; 需要对「子序列」和「子数组」这两个概念进行区分&#xff1b; 子序列&#xff08;subsequence&#xff09;&#xff1a;子序列并不要求连续&#xff0c;但是我们调出来的顺序必须和原数组的顺序相同。例如&#xff1a;序列 [4, 6, 5] 是 [1, 2, 4, 3, 7, 6,…...

JSON 性能测试 - WastJson 性能也很快

WAST 是一个高性能 Java 工具集库包&#xff0c;包括 JSON、YAML、CSV、HttpClient、JDBC 和 EL 引擎. WastJson 无论是小中大文本各种数据类型等性能都没有明显的短板&#xff0c;除了推广外可以说是六边形战士&#xff0c;更多测试参考 wast-jmh-test: wast性能测试 (并非所…...

Windows 软件之 FFmpeg

文章目录 前言1 FFmpeg 视频处理1.1 编解码1.2 其它视频编辑命令1.3 视频抽帧 2 FFmpeg 音频处理3 FFmpeg 图片处理3.1 编解码3.2 拼接图片3.3 图片合成视频 附录1&#xff1a;mediainfo.ps1 前言 FFmpeg 是一套可以用来记录、转换数字音频、视频&#xff0c;并能将其转化为流的…...

接口的扩展

1. 接口中新增的方法 JDK7之前接口中只能定义抽象方法。 JDK8的新特性&#xff1a;接口中可以定义有方法体的方法。&#xff08;默认、静态&#xff09; JDK9的新特性&#xff1a;接口中可以定义有私有方法体的方法。 有方法体的方法&#xff1a;接口升级时&#xff0c;为了兼容…...

Vue ECharts 基本数据图表绘制详解:让数据飞起来

1. 引言 1.1 什么是数据可视化 大家好&#xff0c;欢迎来到数据可视化的世界&#xff01;如果你以为数据就是冷冰冰的数字&#xff0c;那你就大错特错了。数据&#xff0c;可是有灵魂的&#xff01;只要给它一副好看的外衣&#xff0c;比如我们今天要聊的图表&#xff0c;它们…...

目录遍历漏洞-CVE-2021-41773

目录 简介 原理 例子 Apache路径穿越漏洞 环境搭建 漏洞原理 漏洞利用 简介 目录遍历漏洞&#xff08;也称为路径遍历漏洞&#xff09;是一种由于Web服务器或Web应用程序对用户输入的文件名称的安全性验证不足而导致的安全漏洞。 原理 目录遍历漏洞允许攻击者在未授权…...

ajax (一)

什么是 AJAX [ˈeɪdʒks] &#xff1f; 概念&#xff1a;AJAX是浏览器与服务器进行 数据通信 的技术&#xff0c;动态数据交互 怎么用AJAX? 1. 先使用 axios [k‘sio ʊ s] 库&#xff0c; 与服务器进行 数据通信 ⚫ 基于 XMLHttpRequest 封装、代码简单、月下载量在 1…...

cocos creator 3.8 物理碰撞器Collider+刚体RigidBody 8

遇到一个朋友&#xff0c;你来就行的朋友&#xff0c;我过去了&#xff0c;管吃管住&#xff0c;这样的朋友真的很难求。 最近离职了&#xff0c;很难想象&#xff0c;一份策划书一天能给你改n次&#xff0c;一周能郁闷&#xff0c;上一个功能没搞完&#xff0c;让你搞下一个功…...

[Python3学习笔记-基础语法] Python3 基础语法

本篇文章详细介绍Python3的基础语法&#xff0c;主要包括编码、标识符、Python保留字、注释、行缩进、多行语句、Number类型、字符串、空行、print打印等。 这些是Python最基础的东西&#xff0c;掌握好了才能更好的学习后续的内容。 有兴趣共同结伴学习Python的朋友&#xff0…...