jmeter 接口性能测试 学习笔记

news2024/12/21 21:41:08

目录

  • 说明
    • 工具准备
    • 工具配置
      • jmeter 界面汉化配置
        • 汉化步骤
        • 汉化结果图
    • 案例1:测试接口
      • 接口准备
      • 线程组
        • 添加线程组
        • 配置线程组值
          • 线程数(Number of Threads)
          • Ramp-Up 时间(Ramp-Up Period)
          • 循环次数(Loop Count)
          • 永远循环(Forever)
          • 延迟(Delay)
      • http请求
        • 添加http请求
        • 配置HTTP请求值
          • 协议 (Protocol)
          • 服务器名称或 IP(Server Name or IP)
          • 端口号(Port)
          • 请求
          • 路径(Path)
      • 察看结果树
        • 添加察看结果树
        • 察看结果树内容
      • 聚合报告
        • 添加聚合报告
        • 聚合报告说明
          • 文件名
          • Label
          • 样本 Samples
          • 平均值 Average
          • 中位数 Median
          • 90%百分位 90% Line
          • 最小值 Min
          • 最大值 Max
          • 异常 Error %
          • 吞吐量 Throughput
          • 传输数据量 KB per Second
          • 建立连接时间 Connect Time
          • 响应时间 Response Time
          • 平均吞吐量 Avg. Throughput
          • 总计 Total
          • 请求计数 Request Counts and Percentages
    • 案例2:导出报告
      • 导出html 报告
    • 案例3: 计算理论的并发用户数
      • 前提
      • 结果分析
        • 关键指标分析
        • 并发用户数估算公式
    • 案例4: 携带cookie请求
      • 说明
      • 接口准备
      • 配置测试计划
      • 线程组
      • http请求
      • 添加结果监听器
        • 添加步骤
        • 添加指定的监听器
      • 执行登录http请求
      • 添加正则表达式提取器
        • 说明
        • 介绍
        • 添加步骤
          • 正则表达式提取器配置说明
      • 添加HTTP Cookie管理器
        • 添加HTTP Cookie管理器步骤
        • 配置HTTP Cookie管理器
        • 添加调试取样器
          • 添加步骤
      • 运行线程组
        • 登录结果
        • list数据查询结果
        • 调试取样器结果

说明

工具准备

  • apache-jmeter-5.4.1
  • jdk8 +

工具配置

jmeter 界面汉化配置

汉化步骤

jmeter 界面默认是英文,配置成中文。

  1. 打开 /bin/jmeter.porperties 文件,
  2. 将 默认的 language=en 改为 language=zh_CN 后,重启jmeter。
汉化结果图

在这里插入图片描述

案例1:测试接口

接口准备

spring mvc 项目创建一个接口,来模拟测试的目标接口。

import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

import javax.servlet.http.HttpServletRequest;
import java.util.HashMap;
import java.util.Objects;

@RestController
@RequestMapping(value = "test")
public class TestController {
    @GetMapping(value = "test")
    public Object test() {
        return new HashMap<String,Object>() {{
            put("message", "成功");
        }};
    }
}

线程组

添加线程组

在这里插入图片描述

配置线程组值

在这里插入图片描述

线程数(Number of Threads)
  • 定义
    这个值指定了要创建的虚拟用户(线程)的数量。每个线程都代表一个独立的用户,因此线程数越多,模拟的并发用户数也就越多。
  • 使用场景
    如果你想模拟 1000 个并发用户,就设置线程数为 1000。
Ramp-Up 时间(Ramp-Up Period)
  • 定义
    Ramp-Up 时间是指所有线程(虚拟用户)启动所需的时间,单位是秒。
    例如,如果设置了 100 个线程,Ramp-Up 时间为 100 秒,那么每秒会启动一个线程,直到所有线程都被启动。Ramp-Up 时间设置得较长可以避免瞬间发起大量请求,从而导致服务器负载过高。
  • 使用场景
    如果你希望所有用户在 100 秒内启动,那么 Ramp-Up 时间应设置为 100 秒。
    通过这种方式,你可以模拟逐步增加负载的场景。
循环次数(Loop Count)
  • 定义
    循环次数指定每个线程将执行的次数。如果设置为 1,则每个线程只执行一次。如果设置为 -1,则表示无限循环,直到测试结束时停止。
  • 使用场景
    如果你希望每个用户执行 10 次请求,可以将 Loop Count 设置为 10;如果希望每个用户一直执行,直到测试结束,则设置为 -1。
永远循环(Forever)
  • 定义
    这是一个复选框,当勾选时,线程将会不停地循环执行测试计划中的请求,直到测试手动停止。
  • 使用场景
    如果你正在进行压力测试,并且希望线程永远执行直到你手动停止,可以勾选此选项。
延迟(Delay)
  • 定义
    该选项可以为每个线程设置一个固定的启动延迟时间。这意味着每个线程启动时,会等待指定的时间,然后再开始执行请求。
  • 使用场景
    这种配置适合于模拟用户之间有间隔的启动情况。

http请求

添加http请求

在这里插入图片描述

配置HTTP请求值
协议 (Protocol)
  • 定义
    指定协议类型,可以选择 http 或 https。
  • 使用场景
    如果你测试的是 HTTPS 服务,选择 https
服务器名称或 IP(Server Name or IP)
  • 定义
    指定请求目标服务器的地址,可以是域名(如 www.example.com)或 IP 地址(如 192.168.1.1)。
  • 使用场景
    如果目标服务器是 www.example.com,就填写 www.example.com。如果是通过 IP 地址访问,则填写 IP。
端口号(Port)
  • 定义
    指定服务器的端口号,默认情况下 HTTP 使用端口 80,HTTPS 使用端口 443。如果服务器使用其他端口,可以在此处指定。
  • 使用场景
    如果你的服务器监听在 8080 端口,则需要设置 8080。
请求
  • 定义
    选择 HTTP 请求方法,常见的方法包括:
    GET:获取资源。
    POST:提交数据。
    PUT:更新数据。
    DELETE:删除资源。
    HEAD:请求资源的头信息。
    OPTIONS:请求可用的方法。
    PATCH:部分更新资源。
  • 使用场景
    根据目标 API 或 Web 页面请求类型选择合适的 HTTP 方法。
路径(Path)
  • 定义
    指定访问的具体路径或资源。例如,/login、/api/getData 等。
  • 使用场景
    请求的具体接口路径,如 https://www.example.com/api/getData 中,/api/getData 为路径。
    在这里插入图片描述

察看结果树

添加察看结果树

在这里插入图片描述

察看结果树内容

在这里插入图片描述

聚合报告

添加聚合报告

在这里插入图片描述

聚合报告说明

在这里插入图片描述

文件名

报告数据输出的文件。必须要先创建此文件,才能指定。报告结果写入此文件。用于导出报告。具体查看本文的导出html报告部分

Label
  • 定义
    测试请求的名称。通常是测试中每个 HTTP 请求的名称。
  • 使用场景
    每个请求(或事务)的标识符,可以通过它来查看特定请求的性能表现。
样本 Samples
  • 定义
    样本数量,表示此请求在整个测试过程中被执行的次数。
  • 使用场景
    查看某个请求执行的次数。例如,HTTP 请求可能执行了 100 次。
平均值 Average
  • 定义
    所有请求响应时间的平均值,单位是毫秒(ms)。
  • 使用场景
    表示请求的平均响应时间。较高的平均响应时间可能表示服务器存在性能瓶颈。
中位数 Median
  • 定义
    响应时间的中位数,单位是毫秒(ms)。
  • 使用场景
    中位数是将所有响应时间按升序排列后处于中间位置的值。中位数可以更好地反映出“典型”响应时间,避免了极端值的影响。
90%百分位 90% Line
  • 定义
    响应时间的第 90 百分位数,表示 90% 的请求响应时间低于该值。
  • 使用场景
    此值可以帮助分析大多数请求的响应时间,特别是对用户体验影响较大的长时间响应请求。
最小值 Min
  • 定义
    响应时间的最小值,单位是毫秒(ms)。
  • 使用场景
    表示最短的响应时间。可以帮助判断在测试过程中是否有异常的快速响应。
最大值 Max
  • 定义
    响应时间的最大值,单位是毫秒(ms)。
  • 使用场景
    表示最长的响应时间。非常高的最大响应时间可能表示系统在某些时刻出现了严重的性能瓶颈。
异常 Error %
  • 定义
    错误率,表示在所有请求中,失败请求所占的百分比。
  • 使用场景
    错误率高通常意味着系统存在故障或性能瓶颈,可能需要检查相关的错误日志来进一步定位问题。
吞吐量 Throughput
  • 定义
    吞吐量,表示每秒请求的数量(requests per second, RPS)。
  • 使用场景
    吞吐量是衡量系统在单位时间内处理请求的能力,较高的吞吐量通常意味着系统能够处理更多的用户请求。
传输数据量 KB per Second
  • 定义
    每秒传输的数据量,单位是千字节(KB/s)。
  • 使用场景
    表示在每秒钟内系统传输的数据量。较高的值通常表示系统处理大数据量的能力较强。
建立连接时间 Connect Time
  • 定义
    建立连接的时间,单位是毫秒(ms)。通常用于 HTTP 请求的连接阶段。
  • 使用场景
    较高的连接时间可能意味着网络延迟或服务器响应慢,特别是在多用户场景下,连接时间的优化尤为重要。
响应时间 Response Time
  • 定义
    响应时间,单位是毫秒(ms)。
  • 使用场景
    响应时间是指从发送请求到收到完整响应的时间,它是评估系统性能最直接的指标之一。通常越低越好。
平均吞吐量 Avg. Throughput
  • 定义
    平均吞吐量,表示所有请求的吞吐量的平均值。
  • 使用场景
    平均吞吐量可以帮助判断系统的处理能力。如果某一时刻吞吐量明显下降,可能存在性能瓶颈。
总计 Total
  • 定义
    总计行,表示所有请求的合计数。
  • 使用场景
    提供该测试计划所有请求的总的统计数据。
请求计数 Request Counts and Percentages
  • 定义
    聚合报告还会显示每个请求成功和失败的计数,以及它们在所有请求中的比例。
  • 使用场景
    可以帮助我们快速评估在负载测试中出现的错误情况和系统的稳定性。

案例2:导出报告

导出html 报告

  1. 在空文件夹中创建一个 report.txt 的文件。
  2. 在聚合报告的文件名中填写该文件的全路径。
    在这里插入图片描述
  3. 执行测试。测试执行完成后, report.txt 文件中会有测试结果数据。在这里插入图片描述
  4. report.txt 文件的后缀名称更换成csv, 即 report.csv
  5. 创建一个空的文件夹,存放生成的html。
  6. 打开导出配置界面
    在这里插入图片描述
  7. 配置导出,点击 Generate report 按钮开始导出。
    Results file: 选择步骤4中的report.csv文件
    user.properties: 选择Jmeter 安装目录 bin 下的user.properties 文件。如下图
    Output directory:选择步骤5中创建的空文件夹
    在这里插入图片描述
  8. 查看导出结果
    导出结束之后,在步骤5的文件夹中会生成报告html。用浏览器打开index.html 即可查看。如下图:
    在这里插入图片描述

案例3: 计算理论的并发用户数

前提

按照案例1 步骤配置完成后,能正常执行完成得到聚合报告。
将报告导出html后,在html报告中可以查看到以下统计报告表。
例如统计报告表如下:
在这里插入图片描述

结果分析

注意:最大并发数需要结合其他信息如测试工具的配置、服务器资源利用率等来确定。以下分析只是基于html导出的统计报告表中的值推断的理论结果。

关键指标分析
  1. Samples (请求数): 100
  2. Error % (错误率): 0.00%
  3. Average (平均响应时间): 198.56 ms
  4. Min (最小响应时间): 98 ms
  5. Max (最大响应时间): 269 ms
  6. Transactions/s (每秒事务数): 362.32
并发用户数估算公式

并发用户数 = 平均响应时间(单位:毫秒) * 每秒事务数 (单位:次/秒)
上例的统计结果表中的理论并发用户估算值为: (198.56 * 1000) * 362.32 = 0.19856 * 362.32 约等于 72

案例4: 携带cookie请求

说明

在进行接口测试的时候需要先进行登录,对于传统的登录,登录成功后,后端使用session存储登录信息并将cookie信息返回给前端,前端请求接口的时候需要携带上cookie进行请求。为此,需要获取到登录成功返回的cookie信息存储在请求头中进行测试。

接口准备

package www.zhang.tomcat.controller;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import javax.servlet.http.HttpServletRequest;
import java.util.HashMap;
import java.util.Objects;

@RestController
@RequestMapping(value = "test")
public class TestController {
    /**
    * 模拟的登录接口
    */
    @GetMapping(value = "login")
    public Object login(HttpServletRequest request) {
        // 登录成功后设计session 设置session
        request.getSession().setAttribute("user", "admin");

        return new HashMap<String,Object>() {{
            put("message", "成功");
        }};
    }

	/**
    * 模拟的查询接口
    */
    @GetMapping(value = "list")
    public Object list(HttpServletRequest request) {
        // 获取session
        Object user = request.getSession().getAttribute("user");

        // 没有获取到对应登录信息
        if(Objects.isNull(user)){
            return new HashMap<String,Object>() {{
                put("message", "fail not user");
            }};
        }
        
        return new HashMap<String,Object>() {{
            put("message", "成功"+user.toString());
        }};
    }
}

配置测试计划

线程组

按照案例1 添加线程组的步骤添加线程组,此处省略

http请求

按照案例1 添加http请求的步骤添加线程组,添加2个http请求。
登录请求login :
在这里插入图片描述
查询请求 list:
在这里插入图片描述

添加结果监听器

添加步骤

在这里插入图片描述

添加指定的监听器

此处主要是为了查看、学习不同监听器的结果而已。按照下图添加以下结果监听器。
在这里插入图片描述

执行登录http请求

按实际填写完成http登录请求相关的配置后,启动1次登录测试,并保证此次登录测试要成功。
在察看结果树监听器中可以看到请求记录。点击请求记录,查看响应内容,即可看到登录成功后返回的cookie的信息。如下图
在这里插入图片描述

添加正则表达式提取器

说明

由于登录成功后会在响应头中返回cookie的信息,此时可以用提取器获取到响应头中的cookie的信息。

介绍

正则表达式提取器用于从服务器返回的响应数据中提取特定的信息。你可以使用它来提取匹配正则表达式的内容,并将提取到的数据保存为 JMeter 变量,供后续的请求使用。

添加步骤

在这里插入图片描述

正则表达式提取器配置说明

在这里插入图片描述

  • 要检查的信息头
    此处要在响应头中获取数据,选择信息头。

  • 引用名称
    自定义变量名称,获取到的值会赋值给这个变量。其他地前方使用此变量格式:${变量名称}

  • 正则表达式
    根据填写的正则表达式规则来匹配到对应的值。
    (.*) 通配符,表示所有。
    例如:
    根据登录成功后返回的响应头可得cookie中携带的sessionId的格式如下:

HTTP/1.1 200 
Set-Cookie: JSESSIONID=DFB85D3D2C35B36792B052E881400A4B; Path=/; HttpOnly
Content-Type: application/json;charset=UTF-8
Transfer-Encoding: chunked
Date: Fri, 20 Dec 2024 09:12:14 GMT
# JSESSIONID=sessionId;
JSESSIONID=(.*); Path=/

从cookie中获取到sessionId 后,只要携带此数据请求接口,后端会自动根据此sessionId 找到登录信息。

  • 模板
    模板用于指定在响应中提取内容的位置。通常,在正则表达式中使用捕获组,模板就是指定使用哪个捕获组的内容.
    例如,此处只需要获取第一个捕获到的值。
    模板格式: $序号$
    例如:匹配第1个 $1$;匹配第2个 $2$

  • 匹配数字
    用于指定你想要提取第几个匹配项:
    0 表示提取所有匹配项。
    1 表示提取第一个匹配项(默认值)。

    -1 表示提取最后一个匹配项。

添加HTTP Cookie管理器

在数据查询接口 list中 添加HTTP Cookie管理器,用于把在登录接口中通过正则表达式提取到的登录sessionid数据获取,放到请求头中。

添加HTTP Cookie管理器步骤

在这里插入图片描述

配置HTTP Cookie管理器

根据响应头中的格式数据进行填写
在这里插入图片描述

添加调试取样器

调试取样器来获取变量值,用于查看正则表达式的变量是否能提取到值。

添加步骤

在这里插入图片描述

运行线程组

运行线程组查看结果

登录结果

在这里插入图片描述

list数据查询结果

请求头
在请求头
响应结果
在这里插入图片描述

调试取样器结果

在这里插入图片描述

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

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

相关文章

小红书关键词搜索采集 | AI改写 | 无水印下载 | 多维表格 | 采集同步飞书

小红书关键词搜索采集 | AI改写 | 无水印下载 | 多维表格 | 采集同步飞书 一、下载影刀&#xff1a; https://www.winrobot360.com/share/activity?inviteUserUuid595634970300317698 二、加入应用市场 https://www.yingdao.com/share/accede/?inviteKeyb2d3f22a-fd6c-4a…

Unbuntu下怎么生成SSL自签证书?

环境&#xff1a; WSL2 Unbuntu 22.04 问题描述&#xff1a; Unbuntu下怎么生成SSL自签证书&#xff1f; 解决方案&#xff1a; 生成自签名SSL证书可以使用OpenSSL工具&#xff0c;这是一个广泛使用的命令行工具&#xff0c;用于创建和管理SSL/TLS证书。以下是生成自签名…

通过阿里云 Milvus 与 PAI 搭建高效的检索增强对话系统

背景介绍 阿里云向量检索服务Milvus版&#xff08;简称阿里云Milvus&#xff09;是一款云上全托管服务&#xff0c;确保了了与开源Milvus的100%兼容性&#xff0c;并支持无缝迁移。在开源版本的基础上增强了可扩展性&#xff0c;能提供大规模 AI 向量数据的相似性检索服务。相…

打靶记录22——Tomato

靶机&#xff1a; https://download.vulnhub.com/tomato/Tomato.ova 难度&#xff1a; 低 目标&#xff1a; 获得 Root 权限 Flag 攻击方法&#xff1a; 主机发现端口扫描信息收集路径爬取源码分析文件包含写入日志 /var/log/auth.log内核漏洞枚举 les.sh本地提权 主机…

三维引擎cesium学习经验

三维引擎cesium学习经验&#xff1a; 1、初始化viewer对象 2、对entity的操作&#xff1a;添加&#xff0c;隐藏&#xff0c;修改&#xff0c;去除&#xff0c;居中显示 3、去除掉entity的双击事件 4、获取当前视角高度 5、获取经纬度在屏幕上的位置 6、获取三维场景屏幕中心点…

【蓝桥杯】43699-四平方和

四平方和 题目描述 四平方和定理&#xff0c;又称为拉格朗日定理&#xff1a; 每个正整数都可以表示为至多 4 个正整数的平方和。如果把 0 包括进去&#xff0c;就正好可以表示为 4 个数的平方和。 比如&#xff1a; 502021222 712121222; 对于一个给定的正整数&#xff0c;可…

十、从0开始卷出一个新项目之瑞萨RZN2L rzn-fsp v2.0.0 Release Notes

目录 一、概述 二、Github地址 三、 Features Added 3.1 Developer Assistance feature support added. 3.2 Multiplex interrupts support added. 四、Bug Fixes and Improvements 4.1 Added a noncache section for user applications. 4.2 Unified case of asm inst…

VM16+解压版CentOS7安装和环境配置教程(2024年12月20日)

VM16解压版CentOS7安装和环境配置教程-2024年12月20日 一、下载安装包二、vm安装三、解压版CentOS7安装四、CentOS设置静态IP 因为很多同学觉得配置CentOS7好麻烦&#xff0c;我特地提供了一个已经配置好的现成镜像&#xff0c;来简化操作本篇来记录过程。 如果你在看到这篇文章…

PC寄存器(Program Counter Register)jvm

在JVM(Java虚拟机)中,PC寄存器(Program Counter Register)扮演着至关重要的角色。以下是对JVM中PC寄存器的详细解释: 一、定义与功能 定义: JVM中的PC寄存器,也被称为程序计数器,是对物理PC寄存器的一种抽象模拟。它用于存储当前线程所执行的字节码指令的地址,即指…

学习threejs,scene.overrideMaterial全局材质效果

&#x1f468;‍⚕️ 主页&#xff1a; gis分享者 &#x1f468;‍⚕️ 感谢各位大佬 点赞&#x1f44d; 收藏⭐ 留言&#x1f4dd; 加关注✅! &#x1f468;‍⚕️ 收录于专栏&#xff1a;threejs gis工程师 文章目录 一、&#x1f340;前言1.2 ☘️THREE.Scene 场景1.2 ☘️…

【原生js案例】前端封装ajax请求及node连接 MySQL获取真实数据

上篇文章&#xff0c;我们封装了ajax方法来请求后端数据&#xff0c;这篇文章将介绍如何使用 Node.js 来连接 MySQL&#xff0c;并对数据库进行操作。 实现效果 代码实现 后端接口处理 const express require("express"); const connection require("../da…

FFmpeg 4.3 音视频-多路H265监控录放C++开发二十一.2,RTP协议-RTP协议概述,协议详情

前提: 为什么要学习 RTP&#xff08;Real-time Transport Protocol&#xff09;重点 简介&#xff1a;RTP是一个实时传输媒体数据的协议&#xff0c;通常与RTSP一起使用。它负责在网络上传输音视频数据。特点&#xff1a;RTP通过UDP或TCP传输媒体数据&#xff0c;提供时间戳和序…

Chapter 18 CMOS Processing Technology

Chapter 18 CMOS Processing Technology 这一章介绍CMOS制造工艺, 介绍wafer制作, 光刻, 氧化, 离子注入, 沉淀(deposition)和刻蚀. 然后介绍MOS管制作流程, 最后介绍被动器件和互连接. 18.1 General Considerations sheet resistance为方块电阻. R ρL/(W t), 方块电阻定…

服务器数据恢复—V7000存储中多块磁盘出现故障导致业务中断的数据恢复案例

服务器存储数据恢复环境&#xff1a; 一台V7000存储上共12块SAS机械硬盘&#xff08;其中1块是热备盘&#xff09;&#xff0c;组建了2组Mdisk&#xff0c;创建了一个pool。挂载在小型机上作为逻辑盘使用&#xff0c;小型机上安装的AIXSybase。 服务器存储故障&#xff1a; V7…

LabVIEW中的“Synchronize with Other Application Instances“

在LabVIEW中&#xff0c;“Synchronize with Other Application Instances”是一个常见的提示或错误&#xff0c;通常出现在尝试并行运行多个LabVIEW实例时&#xff0c;特别是当你打开多个VI或项目时。这个问题可能影响程序的执行流程&#xff0c;导致不同实例之间的数据同步或…

简单配置,全面保护:HZERO审计服务让安全触手可及

HZERO技术平台&#xff0c;凭借多年企业资源管理实施经验&#xff0c;深入理解企业痛点&#xff0c;为您提供了一套高效易用的审计解决方案。这套方案旨在帮助您轻松应对企业开发中的审计挑战&#xff0c;确保业务流程的合规性和透明度。 接下来&#xff0c;我将为大家详细介绍…

【论文研读】U-DiTs:在U型扩散Transformer中引入下采样Token,以更低计算成本超越DiT-XL/2

推荐理由 这篇论文提出了一种新的U型扩散Transformer模型&#xff08;U-DiT&#xff09;&#xff0c;该模型通过对自注意力机制中的查询、键和值进行下采样&#xff0c;有效减少了计算冗余&#xff0c;同时提高了性能。论文中的研究不仅包含理论分析和实验验证&#xff0c;还展…

深入理解 Linux wc 命令

文章目录 深入理解 Linux wc 命令1. 基本功能2. 常用选项3. 示例3.1 统计文件的行、单词和字符数3.2 仅统计行数3.3 统计多个文件的总和3.4 使用管道统计命令输出的行数 4. 实用案例4.1 日志分析4.2 快速统计代码行数4.3 统计单词频率 5. 注意事项6. 总结 深入理解 Linux wc 命…

SDMTSP:黑翅鸢算法(Black-winged kite algorithm,BKA)求解单仓库多旅行商问题,可以更改数据集和起点(MATLAB代码)

一、黑翅鸢算法BKA 黑翅鸢算法&#xff08;Black-winged kite algorithm&#xff0c;BKA&#xff09;由Wang Jun等人于2024年提出&#xff0c;该算法受黑翅鸢的迁徙和掠食行为启发而得。BKA集成了柯西突变策略和领导者策略&#xff0c;增强了算法的全局搜索能力&#xff0c;提…

[oeasy]python054_python有哪些关键字_keyword_list_列表_reserved_words

python有哪些关键字_keyword_list_列表_reserved_words 回忆上次内容 hello world 不是 从来就有的 来自于 c语言 print、小括号 和 双引号 也来自于 c语言 添加图片注释&#xff0c;不超过 140 字&#xff08;可选&#xff09; python 标识符 的 命名规则 依然 完全 学习…