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

jmeter 接口性能测试 学习笔记

目录

  • 说明
    • 工具准备
    • 工具配置
      • 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 设置sessionrequest.getSession().setAttribute("user", "admin");return new HashMap<String,Object>() {{put("message", "成功");}};}/*** 模拟的查询接口*/@GetMapping(value = "list")public Object list(HttpServletRequest request) {// 获取sessionObject 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数据查询结果

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

调试取样器结果

在这里插入图片描述

相关文章:

jmeter 接口性能测试 学习笔记

目录 说明工具准备工具配置jmeter 界面汉化配置汉化步骤汉化结果图 案例1&#xff1a;测试接口接口准备线程组添加线程组配置线程组值线程数&#xff08;Number of Threads&#xff09;Ramp-Up 时间&#xff08;Ramp-Up Period&#xff09;循环次数&#xff08;Loop Count&…...

`HashMap`、`Hashtable` 和 `HashSet`的区别

HashMap、Hashtable 和 HashSet 都是 Java 中常用的集合类&#xff0c;它们的功能和实现有所不同&#xff0c;尽管它们都使用哈希表&#xff08;hash table&#xff09;作为底层数据结构。以下是它们之间的主要区别&#xff1a; 1. HashMap 和 Hashtable 的区别 特性HashMapH…...

Arduino中解析JSON数据

JSON JSON&#xff08;JavaScript Object Notation&#xff0c;即JavaScript对象表示法&#xff09;是一种广泛采用的开放标准文件格式与数据交换格式。它兼具人类可读性和机器易解析性&#xff0c;使得数据的编写、阅读、生成及解析都变得十分便捷。JSON的设计不依赖于特定编…...

linux----文件访问(c语言)

linux文件访问相关函数 打开文件函数 - open 函数原型&#xff1a;int open(const char *pathname, int flags, mode_t mode);参数说明&#xff1a; pathname&#xff1a;这是要打开的文件的路径名&#xff0c;可以是绝对路径或者相对路径。例如&#xff0c;"/home/user/…...

源码分析之Openlayers中MousePosition鼠标位置控件

概述 本文主要介绍 Openlayers 中的MousePosition鼠标位置控件&#xff0c;该控件会创建一个元素在页面的右上方用来实时显示鼠标光标的位置坐标。该控件在实际应用很有效&#xff0c;可以实时获取鼠标位置&#xff0c;但是一般控件元素都会自定义。 源码分析 MousePosition…...

以ATTCK为例构建网络安全知识图

ATT&CK&#xff08;Adversarial Tactics, Techniques, and Common Knowledge &#xff09;是一个攻击行为知识库和模型&#xff0c;主要应用于评估攻防能力覆盖、APT情报分析、威胁狩猎及攻击模拟等领域。本文简单介绍ATT&CK相关的背景概念&#xff0c;并探讨通过ATT&a…...

myexcel的使用

参考&#xff1a; &#xff08;1&#xff09;api文档&#xff1a;https://www.bookstack.cn/read/MyExcel-2.x/624d8ce73162300b.md &#xff08;2&#xff09;源代码&#xff1a; https://github.com/liaochong/myexcel/issues 我&#xff1a; &#xff08;1&#xff09;m…...

Unity 上好用的插件

PlayerMaker BehaviorDesigner Cinemachine Timeline Hybrid Addressable AssetBundle Blower Simple Zoom 大地图上缩放和平移使用ScrollRect的好效果实现...

Vivado - 远程调试 + 远程综合实现 + vmWare网络配置 + NFS 文件共享 + 使用 VIO 核

目录 1. 简介 2. VIO 配置 2.1 VIO IP 2.2 VIO 对比 ILA 3. VIO 示例 3.1 Led 3.1.1 工程配置 3.1.2 效果展示 3.2 Key 3.2.1 工程配置 3.2.1 效果展示 3.3 门控触发 3.3.1 工程配置 3.3.2 效果展示 4. 远程调试 4.1 配置目标主机 4.2 配置本机 4.3 vmWare 网…...

双臂机器人

目录 一、双臂机器人简介 二、双臂机器人系统的组成 三、双臂机器人面临的主要挑战 3.1 协调与协同控制问题 3.2 力控制与柔顺性问题 3.3 路径规划与轨迹优化问题 3.4 感知与环境交互 3.5 人机协作问题 3.6 能源与效率问题 3.7 稳定性与可靠性问题 四、双臂机器人…...

【Lua热更新】上篇

Lua 热更新 - 上篇 下篇链接&#xff1a;【Lua热更新】下篇 文章目录 Lua 热更新 - 上篇一、AssetBundle1.理论2. AB包资源加载 二、Lua 语法1. 简单数据类型2.字符串操作3.运算符4.条件分支语句5.循环语句6.函数7. table数组8.迭代器遍历9.复杂数据类型 - 表9.1字典9.2类9.3…...

Ubuntu批量修改文件名

文章目录 批量重命名文件&#xff1a;Ubuntu下使用find命令结合sed和mv参考 批量重命名文件&#xff1a;Ubuntu下使用find命令结合sed和mv 在日常开发和文件管理中&#xff0c;有时我们需要批量重命名一批文件&#xff0c;比如将文件名中的某个特定字符串替换为另一个字符串。…...

食家巷大烤馍:岁月沉淀下的麦香传奇

在繁华都市的街角巷尾&#xff0c;隐藏着许多不为人知的美食宝藏&#xff0c;食家巷大烤馍便是其中之一。它宛如一位低调的美食大师&#xff0c;默默散发着独特的魅力&#xff0c;用最质朴的味道&#xff0c;征服着每一个过往食客的味蕾。 初见食家巷大烤馍&#xff0c;你会被…...

harmony UI组件学习(1)

Image 图片组件 string格式&#xff0c;通常用来加载网络图片&#xff0c;需要申请网络访问权限:ohos.permission.INTERNET Image(https://xxx.png) PixelMap格式&#xff0c;可以加载像素图&#xff0c;常用在图片编辑中 Image(pixelMapobject) Resource格式&#xff0c;加…...

BTP Integration Suite CPI Apache Camel

官网文档&#xff1a; https://help.sap.com/docs/integration-suite/sap-integration-suite/what-is-sap-integration-suite CPI 云集成(CPI)有以下几个特性&#xff1a; SAP Cloud Integration通过消息交换支持端到端流程集成。 它基于Apache软件基金会的开源框架Camel。 …...

vitepress-打包SyntaxError: Element is missing end tag.

一、vitepress打包编译报错Element is missing end tag. 背景&#xff1a; 新增了一些笔记准备上传到git仓库&#xff0c;持续集成部署的时候&#xff0c;控制台报错了&#xff0c;错误信息如下&#xff1a; SyntaxError: Element is missing end tag. 仔细看了下控制台几乎没啥…...

【从零开始入门unity游戏开发之——C#篇21】C#面向对象的封装——`this`扩展方法、运算符重载、内部类、`partial` 定义分部类

文章目录 一、this扩展方法1、扩展方法的基本语法2、使用扩展方法3、扩展方法的注意事项5、扩展方法的限制6、总结 二、运算符重载1、C# 运算符重载2、运算符重载的基本语法3. 示例&#xff1a;重载加法运算符 ()4、使用重载的运算符5、支持重载的运算符6、不能重载的运算符7、…...

Java进程占用的内存有哪些部分?

大家好&#xff0c;我是锋哥。今天分享关于【Java进程占用的内存有哪些部分?】面试题。希望对大家有帮助&#xff1b; Java进程占用的内存有哪些部分? 1000道 互联网大厂Java工程师 精选面试题-Java资源分享网 Java进程在运行时&#xff0c;会将内存划分为多个区域&#xf…...

【华为OD机试真题】【2024年E卷】数值同化-队列BFS(C++/Java/Python)

文章目录 分值&#xff1a;200题目描述思路复杂度分析AC 代码 分值&#xff1a;200 题目描述 存在一个 m * n 的 二维数组只&#xff0c;其成员取值范围为0, 1, 2。其中值为1的元素具备同化特性&#xff0c;每经过1S&#xff0c;将上下左右值为0的元素同化为1。而值为2的元素…...

“魔法糖果盒的秘密:用朴素贝叶斯算法猜糖果颜色”

想象一下&#xff0c;你有一个神奇的糖果盒&#xff0c;这个糖果盒里有两种糖果&#xff1a;红色的和蓝色的。你闭上眼睛&#xff0c;从盒子里拿出一个糖果&#xff0c;然后尝一尝&#xff0c;你想知道这个糖果是红色的还是蓝色的。朴素贝叶斯算法就像是一个魔法规则&#xff0…...

linux中docker命令大全

基本命令 docker pull 拉取镜像 docker pull docker push 推送镜像到DockerRegistry docker push docker images 查看本地镜像 docker images docker rmi 删除本地镜像 docker rmi docker run 创建并运行容器&#xff08;不能重复创建&#xff09; docker run d…...

Python `str.strip()` 的高级用法详解

Python str.strip 的高级用法详解 1. str.strip() 的基本用法2. str.strip() 的高级用法2.1 移除指定字符2.2 移除多个指定字符2.3 移除换行符和制表符2.4 结合正则表达式的高级处理 3. lstrip() 和 rstrip() 的用法3.1 lstrip()&#xff1a;移除左端字符3.2 rstrip()&#xff…...

[蓝桥杯 2019 国 B] 排列数

目录 前言 题解 思路 疑问 解答 前言 对于本篇文章是站在别人的基础之上来写的&#xff0c;对于这道题作为2019年国赛B组的最难的一题&#xff0c;他的难度肯定是不小的&#xff0c;这道题我再一开始接触的时候连思路都没有&#xff0c;也是看了两三遍别人发的题解&#x…...

[bug] StarRocks borker load意向之外的bug

意向之外&#xff0c;又清理之中 背景&#xff1a; StarRocks各方面碾压相同类型的数据库&#xff0c;最近我们要从生成HIVE导历史数据&#xff08;ORC格式&#xff09;到StarRocks&#xff0c;前期小测一下&#xff0c;在测试是没问题&#xff0c;上生产先导2个月的数据&…...

2025年前端面试热门题目——HTML|CSS|Javascript|TS知识

以下是对这些 HTML 面试问题的详细解答&#xff1a; 1. HTML 的 src 和 href 属性有什么区别? src (Source) 属性&#xff1a; 用于嵌入资源&#xff0c;例如图像、脚本或 iframe。加载资源时&#xff0c;当前页面的加载会暂停&#xff0c;直到资源加载完成。常用于 <img&g…...

Linux中部署项目

1.下载JDK17 进入 /usr/local 目录&#xff0c;创建 java 文件夹。并将 JDK17 上传到 java 目录下。 上传成功后&#xff0c;通过cd命令进入Java文件夹目录&#xff0c;解压 JDK17 压缩包&#xff0c;命令 unzip zulu17.44.53-ca-jdk17.0.8.1-linux_x64.zip。 如果报错说 u…...

在 CentOS 上安装 MySQL 8

在 CentOS 上安装 MySQL 8 您可以按照以下步骤操作&#xff1a; 1. 更新系统 首先&#xff0c;更新系统软件包以确保安装的最新版本。 sudo yum update -y 2. 安装 MySQL 8 安装 MySQL 存储库 wget https://dev.mysql.com/get/mysql80-community-release-el7-3.noarch.r…...

gradle项目下载依赖报错

报错信息 Cannot resolve external dependency org.projectlombok:lombok:1.18.36 because no repositories are defined. Required by:project :Possible solution:- Declare repository providing the artifact, see the documentation at https://docs.gradle.org/current/…...

solon 集成 activemq-client (sdk)

原始状态的 activemq-client sdk 集成非常方便&#xff0c;也更适合定制。就是有些同学&#xff0c;可能对原始接口会比较陌生&#xff0c;会希望有个具体的示例。 <dependency><groupId>org.apache.activemq</groupId><artifactId>activemq-client&l…...

LRU 缓存

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