Jmeter5.X性能测试

Jmeter5.X性能测试


文章目录

  • Jmeter5.X性能测试
  • 一、掌握Http基础协议
    • 1.1 浏览器的B/S架构和C/S架构
    • 1.2 HyperText Transfer Protocol 超文本传输协议
    • 1.3 超文本传输协议Http消息体拆分讲解
    • 1.4 HTTP的九种请求方法和响应码介绍
    • 1.5 Http请求头/响应头
    • 1.6 Http常见请求/响应头content-type内容类型
  • 二、性能测试工具Jmeter使用
    • 2.1 Jmeter5.X基础功能组件+线程组
    • 2.2 Jmeter聚合报告分析和多案例断言
    • 2.3 CSV可变参数实战
    • 2.4 高并发业务下Jmeter集合点应用实战
  • 三、Jmeter二次开发之BeanShell实战
    • 3.1 BeanShell的作用
    • 3.2 BeanShell的使用
    • 3.3 BeanShell响应JSON处理和自定义断言
    • 3.4 Jmeter压测post方式接口和关联接口场景
  • 四、BeanShell使用外部Java文件
  • 五、Jmeter性能测试之html可视化压测报告


一、掌握Http基础协议

1.1 浏览器的B/S架构和C/S架构

  • 什么是CS架构 客户机-服务器,即Client-Server(C/S)结构 但是缺少通用性,系统维护、升级需要重新设计和开发,增加了维护和管理的难度

  • 什么是BS架构 B/S架构即浏览器和服务器架构模式,是WEB兴起后的一种网络架构模式 WEB浏览器是客户端最主要的应用软件 统一了客户端,将系统功能实现的核心部分集中到服务器上,简化了系统的开发、维护和使用

在这里插入图片描述

  • 什么是URL(统⼀资源定位符,获取服务器资源的一种)

标准格式: 协议://服务器IP:端⼝/路径1/路径N ? key1=value1 & key2=value2
https://editor.csdn.net/md/?articleId=142419810

1.2 HyperText Transfer Protocol 超文本传输协议

什么是Http超文本传输协议

协议是⼀种约定,规定好⼀种信息的格式,如果发送⽅按照这种请求格式发送信息,那么接 收端就要按照这样的格式解析数据,这就是协议

JSON

{"name":"xiaoming","age":23
}

xml协议

<user><name> xiaoming </name><age> 12 </age>
</user>

http超文本传输协议

  • 什么是http协议

即超⽂本传送协议(Hypertext Transfer Protocol ),是Web联⽹的基础,也是⼿机PC联⽹常⽤的协议之⼀,HTTP协议是建⽴在TCP协议之上的⼀种应⽤
HTTP连接最显著的特点是客户端发送的每次请求都需要服务器回送响应,从建⽴连接到关闭连接的过程称为“⼀次连接”
HTTP请求-HTTP响应

  • 响应码:

1xx:信息
2xx:成功 200 OK,请求正常
3xx:重定向
4xx:客户端错误 404 Not Found 服务器⽆法找到被请求的⻚⾯
5xx:服务器错误 503 Service Unavailable,服务器挂了或者不 可⽤

  • 和https的关系

Hyper Text Transfer Protocol over SecureSocket Layer
主要由两部分组成:HTTP + SSL / TLS
比 HTTP 协议安全,可防止数据在传输过程中不被窃取、改变,确保数据的完整性,增加破解成本
缺点:相同网络环境下,HTTPS 协议会使页面的加载时间延长近 50%,增加额外的计算资源消耗,增加 10%到 20%的耗电等;不过利大于弊,所以Https是趋势,相关资源损耗也在持续下降
如果做软件压测:直接压测内网ip,通过压测公网域名,不管是http还是https,都会带来额外的损耗导致结果不准确

1.3 超文本传输协议Http消息体拆分讲解

Http请求消息结构

  • 请求行
    • 请求方法
    • URL地址
    • 协议名
  • 请求头
    • 报文头包含若干个属性 格式为“属性名:属性值”,
    • 服务端据此获取客户端的基本信息
  • 请求体
    • 请求的参数,可以是json对象,也可以是前端表单生成的key=value&key=value的字符串
      在这里插入图片描述

Http响应消息结构

  • 响应行
    • 报文协议及版本、状态码
  • 响应头
    • 报文头包含若干个属性 格式为“属性名:属性值”
  • 响应正文
    • 响应报文体,我们需要的内容,多种形式比如html、json、图片、视频文件等

1.4 HTTP的九种请求方法和响应码介绍

浏览器请求方法

  • http1.0定义了三种:
    • GET: 向服务器获取资源,比如常见的查询请求
    • POST: 向服务器提交数据而发送的请求
    • Head: 和get类似,返回的响应中没有具体的内容,用于获取报头
  • http1.1定义了六种
    • PUT:一般是用于更新请求,比如更新个人信息、商品信息全量更新
    • PATCH:PUT 方法的补充,更新指定资源的部分数据
    • DELETE:用于删除指定的资源
    • OPTIONS: 获取服务器支持的HTTP请求方法,服务器性能、跨域检查等
    • CONNECT: 方法的作用就是把服务器作为跳板,让服务器代替用户去访问其它网页,之后把数据原原本本的返回给用户,网页开发基本不用这个方法,如果是http代理就会使用这个,让服务器代理用户去访问其他网页,类似中介
    • TRACE:回显服务器收到的请求,主要用于测试或诊断

Http响应码

  • 浏览器向服务器请求时,服务端响应的消息头里面有状态码,表示请求结果的状态
  • 分类

    • 1XX: 收到请求,需要请求者继续执行操作,比较少用

    • 2XX: 请求成功,常用的 200

    • 3XX: 重定向,浏览器在拿到服务器返回的这个状态码后会自动跳转到一个新的URL地址,这个地址可以从响应的Location首部中获取;

      • 好处:网站改版、域名迁移等,多个域名指向同个主站导流
      • 必须记住
        • 301:永久性跳转,比如域名过期,换个域名
        • 302:临时性跳转
    • 4XX: 客户端出错,请求包含语法错误或者无法完成请求

      • 必须记住
        • 400: 请求出错,比如语法协议
        • 403: 没权限访问
        • 404: 找不到这个路径对应的接口或者文件
        • 405: 不允许此方法进行提交,Method not allowed,比如接口一定要POST方式,而你是用了GET
    • 5XX: 服务端出错,服务器在处理请求的过程中发生了错误

      • 必须记住
        • 500: 服务器内部报错了,完成不了这次请求
        • 503: 服务器宕机

1.5 Http请求头/响应头

  • HTTP请求头(Request Headers)
    • 请求头包含在HTTP请求的消息头部分,用于向服务器提供客户端的请求上下文和其他相关信息。请求头的一些常见字段包括:

      • Accept: 表示客户端可以接受的内容类型。例如,Accept: text/html 表示客户端可以接收HTML格式的内容
      • Accept-Language: 表示客户端首选的语言。例如,Accept-Language: en-US 表示客户端首选语言是美国英语
      • Accept-Encoding: 表示客户端支持的编码方式。例如,Accept-Encoding: gzip, deflate 表示客户端支持GZIP和DEFLATE压缩编码
      • Authorization: 包含用于认证的信息。例如,在使用Basic认证时,会包含一个Base64编码的用户名和密码
      • Content-Length: 表示请求体的长度(单位为字节)。例如,Content-Length: 1024 表示请求体长度为1024字节
      • Content-Type: 表示请求体的MIME类型。例如,Content-Type: application/json 表示请求体是JSON格式的数据。
      • Cookie: 包含客户端的cookie信息,用于识别客户端的身份
      • User-Agent: 描述发送请求的应用程序的信息。例如,User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) - AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.3 描述了发送请求的浏览器信息
      • If-Modified-Since: 请求资源是否自某个日期以来已被修改
      • Referer: 请求的来源页面的URL
GET /index.html HTTP/1.1
Host: example.com
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.3
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8
Accept-Language: en-US,en;q=0.5
Accept-Encoding: gzip, deflate, br
Connection: keep-alive
Upgrade-Insecure-Requests: 1

  • HTTP响应头(Response Headers)
    • 响应头包含在HTTP响应的消息头部分,用于向客户端提供服务器的响应上下文和其他相关信息。响应头的一些常见字段包括:

      • Content-Type: 表示响应体的MIME类型。例如,Content-Type: text/html 表示响应体是HTML格式的数据
      • Content-Length: 表示响应体的长度(单位为字节)
      • Content-Encoding: 表示响应体使用的编码方式。例如,Content-Encoding: gzip 表示响应体经过GZIP压缩。
      • Date: 服务器生成响应的日期和时
      • Server: 服务器软件的名称和版本
      • Set-Cookie: 用于设置客户端的cookie
      • Expires: 响应过期的日期和时间
      • Cache-Control: 控制缓存的行为,如Cache-Control: no-cache 表示不允许缓存
      • Last-Modified: 资源最后一次被修改的时间
      • Location: 用于重定向的情况,提供新的URL
      • Content-Disposition: 指示客户端如何处理响应体,如Content-Disposition: attachment; filename=“example.pdf” 表示响应体应当作为附件下载
      • Content-Language: 响应体的语言
      • Vary: 表示响应的内容可能因请求中的某些头字段而变化
HTTP/1.1 200 OK
Date: Fri, 25 Oct 2019 13:00:00 GMT
Server: Apache/2.4.41 (Ubuntu)
Content-Type: text/html; charset=UTF-8
Content-Length: 1778
Connection: close
Set-Cookie: session_id=d41d8cd98f00b204e9800998ecf8427e; Path=/; HttpOnly
Last-Modified: Wed, 23 Oct 2019 11:45:33 GMT
Expires: Thu, 26 Oct 2019 13:00:00 GMT
Cache-Control: max-age=86400

1.6 Http常见请求/响应头content-type内容类型

  • Content-type: 用来指定不同格式的请求响应信息,俗称 MIME媒体类型
  • 常见的取值
    • text/html :HTML格式
    • text/plain :纯文本格式
    • text/xml : XML格式
    • image/gif :gif图片格式
    • image/jpeg :jpg图片格式
    • image/png:png图片格式
    • application/json:JSON数据格式
    • application/pdf :pdf格式
    • application/octet-stream :二进制流数据,一般是文件下载
    • application/x-www-form-urlencoded:form表单默认的提交数据的格式,会编码成key=value格式
    • multipart/form-data: 表单中需要上传文件的文件格式类型

二、性能测试工具Jmeter使用

2.1 Jmeter5.X基础功能组件+线程组

什么是线程组

  • 就是一组线程,并发执行,每个线程可以认为是一个请求

特殊线程组

  • setUP:最先执行,前置工作
  • 线程组:中级执行,常规处理
  • tearDown:最后执行,收尾工作

在这里插入图片描述

Sampler(采样器)
在这里插入图片描述
查看测试结果

查看结果树
位置:
放在http采集器级别,获取兄弟节点数据
放在http采样器下面,获取当前http采样器数据

在这里插入图片描述

Http采样器复用和Http请求头管理

  • 需求
    • 如果有多个接口,每个接口都需要重复配置http协议、ip、端口等相同参数,维护起来麻烦
    • 可以通过配置 http请求默认值 进行默认配置,那对应的线程组则不用重复配置

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述
Http请求头管理

  • 多数HTTP接口请求需要添加HTTP Header请求头,如何添加?
  • 通过HTTP信息头管理器即可

在这里插入图片描述

2.2 Jmeter聚合报告分析和多案例断言

性能测试的关键点

  • TPS

    • Transactions Per Second 每秒事务数, 可以是一个接口、多个接口、一个业务流程
    • 包括增删改操作
  • QPS

    • Queries Per Second, 每秒查询数, 指一台服务器每秒能够响应的查询次数
    • QPS 只是一个简单查询的统计,不能描述增删改等操作
    • 如果只是查询操作 TPS = QPS
  • RT

    • 响应时间


      在这里插入图片描述

Jmeter实战之压测结果响应断言

  • 什么是断言assert

    • 指期望用户指定的条件满足,它是当用户定义的约束条件不满足时触发异常

    • 简单说:**判断程序结果是否符合预期 **

    • 什么时候应该用断言

      • 多数情况都可以,但是推荐使用较为简单的断言,比如响应断言

      • 复杂断言会消耗压测机器的性能

在这里插入图片描述

  • 测试字段(选择哪些字段进行断言)
    • 响应文本 Text response: 响应服务器返回的文本内容
    • 响应代码 Response Code: 断言Http 响应码是否符合预期,比如 200
    • 响应消息 Response Message : 验证响应消息是否按预期显示
    • 响应标头 Response Headers : 断言查看特定的 HTTP 标头是否存在
    • 文档(文本)Document (text): 基本不用,高负载可能会占用大量内存导致OOM
    • URL样例 URL Sampled : 针对请求的 URL 使用以确保它符合预期
  • 模式匹配的规则
    • 包括 Contains: 响应内容【包含】需要匹配,支持正则表达式。

    • 匹配 Matches: 响应内容要【完全匹配】需要匹配代表响应成功,大小写不敏感,支持正则表达式。

    • 相等 Equals: 响应内容要【完全等于】需要匹配代表响应成功,大小写敏感,内容是字符串

    • 字符串Substring: 响应内容【包含需要匹配】的内容才代表响应成功,大小写敏感,内容是字符串

    • 不相等 Not: 取反操作,不相等

    • OR: 应用 OR 组合中的每个断言,将多个断言模式进行OR连接

高并发业务下Jmeter压测之持续时间断言

  • 什么是持续时间断言Duration to assert

    • 用于判断服务器的响应时间,作用对象是服务器
    • Duration in milliseconds:响应时间设置(单位毫秒),如果响应时间大于设置的响应时间,断言失败,否则成功

在这里插入图片描述

在这里插入图片描述

  • 应用场景

    • 高并发下的,接口响应时间增加,如果超过一定时间则认为是超时
  • 建议

    • 断言类型很多,常规Duration Assertion与Response Assertion基本就足够使用了
    • 常规业务里面会有状态码断言,还有RT响应时间要求,这样的话聚合报告的异常错误率就会更满足业务需求

2.3 CSV可变参数实战

Jmeter性能测试之CSV多个可变参数压测实战

  • 需求

    • 业务开发里面参数一般不是固定方式,而是采用可变参数进行压测
    • 比如压测商品详情,查看id从1~100 的商品详情

解决方案 CSV可变参数

在这里插入图片描述
在这里插入图片描述

2.4 高并发业务下Jmeter集合点应用实战

  • 性能测试

    • 是多用户并发测试,但真正的并发其实是不存在的,用工具模拟并发
    • 前面的测试“线程数”是并发用户数,启动需要时间,不是并发同一时刻访问
    • 常规压测需要模拟全部用户同一时刻访问,比如 秒杀 案例场景
    • 需求:先让全部请求 同时集合在一起,然后再一起访问,实现真正的并发

解决方式 :Jmeter的同步定时器

  • 将多个请求同步并发操作,同步定时器又可称之为“集合点”
  • 将需要做并发的请求集合在一起后再进行请求

在这里插入图片描述
注意事项

  • 设置的值不能大于线程组 数量
  • 最好的情况是 【线程组】 可以被 【用户组】整除
  • 超时时间以毫秒为单位:指定人数 多少毫秒没集合到算超时
  • 超时时间是0则无限等待,如果是大于0,则未达到集合的【用户组】数量,会在超时后执行

三、Jmeter二次开发之BeanShell实战

3.1 BeanShell的作用

什么是BeanShell

  • 用Java写成的 小型、免费的Java源代码解释器
  • 可以执行标准Java语句和表达式,完全符合java语法的java脚本语言(需要会javase语言)
  • 包括一些脚本命令,有自己的一些语法和方法,是一种松散类型的脚本语言(这点和JS类似)
  • 用于一些复杂的个性化需求,使用更灵活,功能更强大
  • 官网地址:http://www.beanshell.org

BeanShell常用分类

  • 采样器BeanShell
  • 前置处理器 BeanShell PreProcessor:提前对参数处理比如加密编码
  • 后置处理器 BeanShell PostProcessor :对返回结果做处理
  • 断言 BeanShell Assert :验证请求接口是否满足要求

在这里插入图片描述

  • BeanShell内置对象,可以直接使用

    SampleResult, ResponseCode, ResponseMessage, IsSuccess, Label, FileName, ctx, vars, props, log
    

在这里插入图片描述

3.2 BeanShell的使用

使用Bean shell内置对象vars对【变量】进行存取操作,作用在当前线程组

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
使用Bean shell内置对象props 对【属性】进行存取操作,作用在跨线程组使用

在这里插入图片描述
使用Bean shell内置对象log

在这里插入图片描述

  • Http采样器和BeanShell组合应用实战

    • 定义Http采样器

    • BeanShell里面定义变量 var

    • 读取var变量

      ${id}、${title}
      

3.3 BeanShell响应JSON处理和自定义断言

步骤

  • 新增BeanShell断言
  • 核心变量

使用JSON工具

  • jar包放入jmeter目录下的 \lib\ext 中
import org.json.*;String data = prev.getResponseDataAsString();  //获取响应信息
String httCode = prev.getResponseCode(); //获取响应codelog.info("data="+data);JSONObject jsonobj = new JSONObject(data);  //转json对象
log.info(jsonobj.toString());int code = jsonobj.getInt("code");
log.info("code="+code);

在这里插入图片描述

3.4 Jmeter压测post方式接口和关联接口场景

背景

假设你正在负责一款在线购物平台的性能测试工作。该平台的核心功能包括用户注册、登录、浏览商品、加入购物车、下单支付等。为了保证平台在高并发访问下的稳定性,需要对关键业务流程中的各个接口进行性能测试
业务流程:
用户注册:新用户通过注册页面提交个人信息
用户登录:已注册用户通过登录页面提交用户名和密码
浏览商品:用户在主页浏览商品列表,并点击进入商品详情页
加入购物车:用户将喜欢的商品添加至购物车
下单支付:用户从购物车结算,填写订单信息并完成支付接口描述:
注册接口:通过POST请求提交用户的姓名、邮箱、密码等信息
登录接口:通过POST请求提交用户的登录凭证
商品列表接口:通过GET请求获取商品列表
商品详情接口:通过GET请求获取具体商品的信息
加入购物车接口:通过POST请求将商品ID添加至用户的购物车
订单提交接口:通过POST请求提交订单信息,包括商品清单、收货地址等测试目标:
负载测试:评估系统在一定并发用户数下的响应时间和吞吐量
稳定性测试:检测系统在长时间高负载情况下的表现,确保没有内存泄漏等问题
容量测试:确定系统可以处理的最大并发用户数
压力测试:超过最大容量限制,观察系统崩溃点及其恢复能力

关联接口需求

在这个场景中,有些接口之间存在依赖关系例如:
登录接口的响应可能包含了后续请求所需的token或session ID,这些信息需要在后续的请求中使用因此
需要在JMeter中设置相应的提取器(如正则表达式提取器或JSON提取器)来捕获这些值,并将其保存为变量,以便在后续的请求中使用

实现步骤简述

  1. 构建测试计划:在JMeter中创建一个测试计划,设置好虚拟用户数、迭代次数等参数。
  2. 配置HTTP请求:为每个接口配置一个HTTP请求取样器,指定正确的URL、请求类型(GET/POST)、参数等。
  3. 添加依赖处理逻辑:使用Beanshell/Groovy脚本或JMeter内置的逻辑控制器来处理接口间的依赖关系。
  4. 添加监听器:添加监听器来记录测试结果,如查看结果树、聚合报告等。
  5. 运行测试:执行测试计划,监控系统表现。
  6. 分析结果:根据测试结果分析系统的性能瓶颈,并提出改进建议

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

四、BeanShell使用外部Java文件

  • 需求

  • 常规beanshell里面写代码,适合简单的逻辑

  • 工作里面还会用到更多方法逻辑,需要在idea编辑器里面写,然后进行调用

  • 方式

    • jar包:放到的lib目录或ext目录下,前面演示过json工具类操作
    • java文件
  • 步骤

    • 使用 source加载源码,路径可以是绝对路径和相对路径
    • 加载源文件后可以直接使用 类名.方法名(参数)
  1. 编写Java类:首先,编写一个Java类,比如 MyUtils.java,并编译成 .class 文件
// MyUtils.java
public class MyUtils {public static String getHello(String name) {return "Hello, " + name;}
}
  1. 编译Java类:使用命令行或IDE编译上述Java文件
javac MyUtils.java
  1. 将编译后的类添加到JMeter的类路径:

    • 将编译好的 .class 文件复制到 JMeter 的 lib 目录下,或者将其打包成 .jar 文件,然后将 .jar 文件放入 lib/ext 目录下
      重启JMeter以加载新的类
  2. 在BeanShell中调用:

    • 在BeanShell Sampler、PreProcessor、PostProcessor或Assertion中,你可以直接调用这个类的方法
// BeanShell Sampler 示例
import com.example.MyUtils; // 假设包名为com.exampleString result = MyUtils.getHello("World");
log.info(result);

五、Jmeter性能测试之html可视化压测报告

  • 测试报告

    • 聚合报告(前面讲过)
      • 有收集到性能数据,但显示比较单一
    • Jmeter 可以生成 HTML 性能测试报告
  • 步骤

    • 保存jmx到本地
    • 进到jmeter的bin目录下
jmeter -n -t <test_plan.jmx> -l <output_file.jtl> -e -o <report_folder>

其中,<test_plan.jmx> 是你的测试计划文件,<output_file.jtl> 是输出结果文件,<report_folder> 是生成报告的目录

参数说明

  • -n 非gui方式运行jmeter
  • -t :jmx 脚本路径
  • -l :result.jtl 运行结果保存路径,注意:.jtl 文件名不能重复,文件夹需要存在
  • -e :在脚本运行结束后生成 HTML 报告
  • -o :用于存放 HTML 报告的目录,文件夹需要存在

在这里插入图片描述
在这里插入图片描述

  • dashboard讲解
    • Test and Report informations
      • Source file:jtl文件名
      • Start Time :压测开始时间
      • End Time :压测结束时间
      • Filter for display:过滤器
      • Lable:sampler采样器名称
    • APDEX(Application performance Index)
      • apdex:应用程序性能指标,范围在0~1之间,1表示达到所有用户均满意
      • T(Toleration threshold):可接受阀值
      • F(Frustration threshold):失败阀值
    • Requests Summary
      • OK:成功率
      • KO:失败率
    • Statistics 统计数据
      • lable:sampler采样器名称
      • samples:请求总数,并发数*循环次数
      • KO:失败次数
      • Error%:失败率
      • Average:平均响应时间
      • Min:最小响应时间
      • Max:最大响应时间
      • 90th pct: 90%的用户响应时间不会超过这个值
      • 95th pct: 95%的用户响应时间不会超过这个值
      • 99th pct: 99%的用户响应时间不会超过这个值 (存在极端值)
      • throughtput:Request per Second吞吐量 qps
      • received:每秒从服务器接收的数据量
      • send:每秒发送的数据量
  • charts讲解
    • Over Time(随着时间的变化)
      • Response Times Over Time:响应时间变化趋势
      • Response Time Percentiles Over Time (successful responses):最大,最小,平均,用户响应时间分
      • Active Threads Over Time:并发用户数趋势
      • Bytes Throughput Over Time:每秒接收和请求字节数变化,蓝色表示发送,黄色表示接受
      • Latencies Over Time:平均响应延时趋势
      • Connect Time Over Time :连接耗时趋势
    • Throughput
      • Hits Per Second (excluding embedded resources):每秒点击次数
      • Codes Per Second (excluding embedded resources):每秒状态码数量
      • Transactions Per Second:即TPS,每秒事务数
      • Response Time Vs Request:响应时间和请求数对比
      • Latency Vs Request:延迟时间和请求数对比
    • Response Times
      • Response Time Percentiles:响应时间百分比
      • Response Time Overview:响应时间概述
      • Time Vs Threads:活跃线程数和响应时间
      • Response Time Distribution:响应时间分布图

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

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

相关文章

qt管理系统框架(好看界面、漂亮界面、好看的界面、漂亮的界面)

概述 最近一个项目用QT开发&#xff0c;然后找了美工帮设计了下界面。总算完工&#xff0c;后想一下干脆抽出一个基础框架&#xff0c;方便以后用。 功能 支持mysql、echarts。 支持加载动态权限菜单&#xff0c;轻松权限控制。 支持遮罩对话框、抽屉 支持开机启动动画界面 内…

力扣——相同的树(C语言)

1.题目&#xff1a; 给你两棵二叉树的根节点 p 和 q &#xff0c;编写一个函数来检验这两棵树是否相同。如果两个树在结构上相同&#xff0c;并且节点具有相同的值&#xff0c;则认为它们是相同的。 2.原理&#xff1a; 这里直接将两个数的结点进行比较&#xff0c;向下递归&…

2024年双11买什么东西划算?2024年双十一必买清单好物大总结

双十一购物节&#xff0c;海量商品与诱人折扣并存&#xff0c;正是我们精打细算、理性消费的好时机。面对琳琅满目的爆款与折扣&#xff0c;记得先问问自己&#xff1a;这真的是我需要的吗&#xff1f;在日常中能否发挥其价值&#xff1f;基于这样的考量&#xff0c;我们精选了…

机器学习入门指南:从基础到实践

&#x1f493; 博客主页&#xff1a;瑕疵的CSDN主页 &#x1f4dd; Gitee主页&#xff1a;瑕疵的gitee主页 ⏩ 文章专栏&#xff1a;《热点资讯》 机器学习入门指南&#xff1a;从基础到实践 机器学习入门指南&#xff1a;从基础到实践 机器学习入门指南&#xff1a;从基础到实…

通义灵码实操—飞机大战游戏

通义灵码实操—飞机大战游戏 有没有想象过自己独立编写一个有趣的小游戏。在本实践课程中&#xff0c;你不仅可以实现这个想法&#xff0c;而且还将得到通义灵码智能编程助手的支持与指导。我们将携手步入编程的神奇世界&#xff0c;以一种简洁、高效且具有创造性的方式&#…

react-router与react-router-dom的区别

写法上的区别&#xff1a; 写法1: import {Swtich, Route, Router, HashHistory, Link} from react-router-dom;写法2: import {Switch, Route, Router} from react-router; import {HashHistory, Link} from react-router-dom;react-router实现了路由的核心功能 react-router-…

react使用Fullcalendar 实战用法

使用步骤请参考&#xff1a;react使用Fullcalendar 卡片式的日历&#xff1a; 需求图&#xff1a; 卡片式的日历&#xff0c;其实我是推荐 antd的&#xff0c;我两个都写了一下都能实现。 antd 的代码&#xff1a; antd的我直接用的官网示例&#xff1a;antd 日历示例 i…

mysql中redolog、binlog

我们中说删库跑路&#xff0c;那么数据库删除后&#xff0c;里面的数据怎么恢复呢&#xff1f; 这里就涉及到了redolog和binlog了 一、什么是存储引擎和缓冲池 存储引擎是 MySQL 中直接与磁盘交互部分。也是存储引擎读写数据的最小单位&#xff0c;一个页里可以有一条或多条…

力扣——113. 路径总和

113. 路径总和 II 给你二叉树的根节点 root 和一个整数目标和 targetSum &#xff0c;找出所有 从根节点到叶子节点 路径总和等于给定目标和的路径。 叶子节点 是指没有子节点的节点。 示例 1&#xff1a; 输入&#xff1a;root [5,4,8,11,null,13,4,7,2,null,null,5,1], t…

openGauss开源数据库实战十四

文章目录 任务十四 openGauss 逻辑结构:视图管理任务目标实施步骤一、准备工作二、为什么需要视图1.通过视图对用户隐藏信息2.创建一个比逻辑模型更符合用户直觉的表 三、创建视图时指定视图的属性名四、基于视图建立新的视图五、物化视图六、视图失效(openGauss暂不支持)七、通…

DICOM标准:US超声模块属性详解——超声医学的DICOM标准解析

引言 数字成像和通信在医学领域中的应用极为广泛&#xff0c;其中DICOM&#xff08;数字成像和通信医学&#xff09;标准对于确保不同设备和系统之间的兼容性和互操作性至关重要。本文将详细介绍DICOM标准中关于超声医学&#xff08;Ultrasound, US&#xff09;的部分&#xff…

分布式光伏管理办法

随着分布式光伏项目的不断增加&#xff0c;传统的管理方式已经难以满足高效、精准的管理需求。光伏业务管理系统作为一种集信息化、智能化于一体的管理工具&#xff0c;正在逐步成为分布式光伏项目管理的重要支撑。 光伏业务管理系统通过数字化手段实现对光伏业务全流程的精细化…

录屏+直播神器 OBS Studio 30.2.3

这款很多游戏博主都在用的录制神器&#xff0c;平时你看到的抖音平台上的游戏主播&#xff0c;大部分都用的这款直播录屏软件。同时它可以虚拟直播&#xff08;绿幕虚拟背景&#xff09;具体可以百度或哔哩哔哩上有详细教程 软件优点 高性能实时视频/音频捕获和混合。创建由多个…

企业应该采用和支持网络安全的几个实践

令人惊讶的是&#xff0c;网络安全可以像遵循最佳实践一样简单&#xff0c;理想情况下应该将其融入企业文化本身。在这篇文章中了解更多。 网络安全的重要性 在当今的网络安全期望中&#xff0c;软件工程师应该优先考虑他们的计算机系统和内部IT网络的安全性。我认为严重依赖…

ConnectX-7 25/50/100/200/400G NIC

ConnectX-7 25/50/100/200/400G NIC ConnectX-7提供了广泛的软件定义、硬件加速的网络、存储和安全功能&#xff0c;使组织能够现代化和保护他们的IT基础设施。此外&#xff0c;ConnectX-7还支持从边缘到核心数据中心到云的敏捷和高性能解决方案&#xff0c;同时增强网络安全性…

(代码随想录)BEllman_ford算法 及其优化 SPFA

代码随想录 (知识提炼) Bellman_ford算法 用处 解决带负权值的单源最短路问题 核心思想 对所有边进行松弛n-1次操作&#xff08;n为节点数量&#xff09;&#xff0c;从而求得目标最短路。 何为松弛 minDist[B] 表示 到达B节点 最小权值&#xff0c;minDist[B] 有哪些状态可…

代码随想录算法训练营第十六天|530.二叉搜索树的最小绝对差、501.二叉搜索树中的众数、236. 二叉树的最近公共祖先

530.二叉搜索树的最小绝对差 题目链接&#xff1a;. - 力扣&#xff08;LeetCode&#xff09; 文章讲解&#xff1a;代码随想录 视频讲解&#xff1a;二叉搜索树中&#xff0c;需要掌握如何双指针遍历&#xff01;| LeetCode&#xff1a;530.二叉搜索树的最小绝对差_哔哩哔哩…

大数据分析案例-基于随机森林算法的智能手机价格预测模型

&#x1f935;‍♂️ 个人主页&#xff1a;艾派森的个人主页 ✍&#x1f3fb;作者简介&#xff1a;Python学习者 &#x1f40b; 希望大家多多支持&#xff0c;我们一起进步&#xff01;&#x1f604; 如果文章对你有帮助的话&#xff0c; 欢迎评论 &#x1f4ac;点赞&#x1f4…

mtr mysql-test-run.pl — Run MySQL Test Suite

The mysql-test-run.pl Perl script is the main application used to run the MySQL test suite. pl Perl脚本是用来运行MySQL测试套件的主要应用程序。 It invokes mysqltest to run individual test cases. 它调用mysqltest来运行单独的测试用例。 Invoke mysql-test-run.pl…

华为云计算知识总结——及案例分享

目录 一、华为云计算基础知识二、华为云计算相关案例实战案例一&#xff1a;搭建弹性云服务器&#xff08;ECS&#xff09;并部署Web应用案例二&#xff1a;构建基于OBS的图片存储和分发系统案例三&#xff1a;基于RDS的高可用数据库应用案例四&#xff1a;使用华为云DDoS防护保…