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

JMeter接口性能测试从入门到精通

前言:

本文主要介绍了如何利用jmter进行接口的性能测试

1.在测试计划中添加线程组

1.1.线程组界面中元素含义

如果点击循环次数为永远:

2.添加HTTP取样器

2.1.填写登录接口的各个参数

2.2.在线程组下面增加查看结果树

请求成功的情况:

请求失败的情况:

我们注意到在同一个系统中,协议+IP+端口号是不会发生改变的,所以我们需要添加HTTP请求默认值

3.添加HTTP请求默认值

当取样器中存在未配置的选项,会直接去HTTP请求默认值配置中去取;取样器中配置了的选线不会去http请求默认值配置中取

当我们在测试列表页接口的时候,发生了错误,因为我们没有能获取到用户的登录信息,直接跳过登录进入列表页,这肯定是不行的,因此我们还需要给HTTP请求添加请求头数据

4.给HTTP请求添加请求头数据

注意左侧目录跟二叉树结构类似:

5.Json提取器

接口响应成功,通过提取返回值对应字段,可用于其他接口的参数配置

5.1.添加Json提取器

Json操作符参考:

5.2.添加Json配置

5.3.配置Json提取的参数

注意变量名要用 ${变量名} 的格式!

当然我们也可以输入表达式,点击右侧的test按钮检查json提取表达式写的是否正确 

注意要先调整成JSON Path Tester格式 

如何提取登录接口返回值里的data数据,作为列表页接口的请求信息呢?

如果多个接口中都有符合条件的json提取字段,则会发生覆盖,那我们如何只提取登录界面的token呢?根据目录的主从关系

想象场景:有两百个详情页接口,每个接口都要用到写死的id值,而这个id值后续可能需要修改---最好的方式用批量修改的方式

6.用户定义变量

一次修改,终身受益!

解决bug

 当出现问题时,先放在postman上面进行运行看看正确情况,在jemter上不好发现错误

添加博客时,出现了内部的错误

将请求的content-type类型的数据修改之后,成功了!

7.JSON断言

接口发送请求成功,响应码为200并不能完全代表接口请求成功,我们更多需要关注接口响应数据是否符合预期。

7.1.添加断言

7.2.添加JSON配置

注意:

  1. 若不选Additionally assert value,表示添加断言值,则可用来判断字段是否存在
  2. 选择Additionallyassert value,则必须添加Expected Value期望的断言值
  3. 若不选Match as regular expression正则匹配,则Expected Value必须填写完整,少一个字符都会导致断言失败
  4. 若选择Match as regular expression正则匹配,则Expected Value可以仅写上部分关键词即可断言成功

正则表达式的使用方法:

8.同步定时器(集合点)

我们如果不手动添加同步定时器,那么多线程是达不到同步的效果的,那么我们创建多线程就失去了意义。

如下图:配置了五个线程,这五个线程是陆陆续续的完成了测试计划,谁先准备好谁先执行

所以我们要添加同步计时器:

这下我们测试多线程就完美实现了同步的效果!

TIP:

模拟用户组的数量不能超过线程组里配置的线程数
当准备好的线程数>=配置数量,就直接发送请求当配置的数量小干线程数时,最好把循环打开,避免最后一次为准备好的线程数量达不到并发数

8.CSV数据文件设置

以登陆接口为例,当我们执行登陆接口的性能测试时,手动配置了用户名和密码为固定的username和password,然而实际使用中不可能只有一个用户登陆,为了模拟更真实的登录环境,我们需要提供更多的用户username和password来实现登录操作、

添加方式:线程组--配置元件--CSV数据文件设置

操作步骤:

8.1.CSV数据文件设置

  • 文件名:填写csv文件的路径。建议使用绝对路径。
  • 文件编码:UTF-8
  • 变量名称:从csv数据文件中读起的数据需要保存到的变量名。有多个变量时用逗号分隔
  • 是否忽略首行:是否从csv数据文件第一行开始读取。
  • 分隔符:要求与csv数据文件中多列的分隔符一致
  • 遇到文件结束符再次循环:若选择为True当数据不够的时候会从头取。若选择False,则需要勾选下面的配置,遇到文件结束符停止线程,这里如果不勾选,请求将会报错。

此时就需要根据我们自己写的变量名称进行赋值,如下图:

测试效果:

两者登录的账号密码各不相同

8.2.编写test.csv文件

注意一定要这样转为csv文件,不能直接改后缀,不然会出现未定义的错误!

 

8.3.修改登陆接口及其他涉及到username和password获取的参数

8.4.修改线程组中线程数,使得每次取到的username和password都不⼀样

9.HTTP Cookie管理器

添加了HTTP Cookie管理器后,会自动存储并发送Cookie

10.添加梯度压测线程组

10.1.解析梯度压测线程组

注意要先将项目里面的内容拷贝一份

  • This group will start:启动多少个线程,同线程组中的线程数
  • First,wait for:等待多少秒才开始压测,一般默认为0
  • Then start:一开始有多少个线程数,一般默认为0
  • Next,add:下一次增加多少个线程数
  • threads every:当前运行多长时间后再次启动线程,即每一次线程启动完成之后的的持续时间:
  • using ramp-up:启动线程的时间;若设置为5秒,表示每次启动线程都持续5秒、
  • thenhold loadfor:线程全部启动完之后持续运行多长时间
  • finally,stop/threadsevery:多长时间释放多少个线程;若设置为5个和1秒,表示持续负载结束之后每1秒钟释放5个线程

进一步解读:

解读:每隔3秒启动5个线程,这5个线程必须在1秒之内完成准备

结束方式:

还需要吞吐量和响应时间 都需要添加进来

还有活跃线程的状态

11.常见监听器

11.1.聚合报告

从聚合报告可以看到性能测试过程中整体的数据变化,

11.2. Response Times Over Time

Response Times Over Time主要用于监听整个事务运行期间的响应时间。在测试过程中,它可以帮助测试人员观察并分析响应时间的实时平均值以及整体响应时间的走向。通过这一监听器,测试人员能够更直观地了解系统在不同时间点的响应性能,从而发现可能存在的性能问题或瓶颈。

Response Times Over Time的图形展示中,横坐标通常代表运行时间,而纵坐标则代表响应时间(单位是毫秒)。测试人员可以根据图形中的趋势线来判断响应时间的稳定性以及是否存在大的波动。例如,如果响应时间在某个时间点突然增加,这可能意味着系统在该时间点遇到了性能问题。

11.3.Transactions per Second(TPS)

JMeter中的Transactions per Second(TPS)监听器是一个用于分析系统吞吐量的重要工具。TPS即每秒事务数,表示一个客户机向服务器发送请求后服务器做出反应的过程。这个指标反映了系统在同一时间内处理业务的最大能力。TPS值越高,说明系统的处理能力越强。

在使用TPS监听器时,横坐标通常代表运行时间,而纵坐标则代表TPS值。通过监听器展示的图表,可以清晰地看到TPS值随时间的变化情况。在图表中,红色通常表示通过的TPS,而绿色可能表示失败的TPS。这有助于我们快速识别系统性能的变化和瓶颈。

12.测试报告

JMeter测试报告是一个全面而详细的文档,它提供了关于测试执行结果的详细信息,帮助用户全面评估系统的性能并进行性能优化。
生成性能测试报告的命令:

jmeter -n -t 脚本文件 -l ⽇志文件 -e -o 目录

-n : 无图形化运行

-t : 被运行的脚本

-l : 将运行信息写入日志文件,后缀为jtl的日志文件6-e : 生成测试报告

-o : 指定报告输出目录

 最后生成测试报告的时候,先要进入到测试报告的那个目录

打开报告 发现全部通过!

双击index.html文件,界面展示如下:

13.性能分析

通过三大指标来分析性能问题

13.1 响应时间

如果响应时间超过了要求,代表系统到了瓶颈注意事项:分析在多少线程的情况下发生了超标
响应时间变化的原因:
系统不稳定,有时快有时慢
随着并发压力变大而慢慢变慢,响应时间变高

13.2 错误率(可靠性)

高并发场景下,系统是否能够正常处理业务要求:99.99%可靠,99.9999%
错误率高的原因,
接口请求错误
服务器无法继续处理,达到了瓶颈(代码写的不好,内存泄漏、硬件资源等)后端系统限流(系统里配置了不能超过多少并发)、熔断、降级什么是熔断、降级?

熔断:防止系统因某个服务的故障而整体崩溃。当电商平台上用户支付时,收银台发现某个支付渠道,如微信支付失败率突增,超时严重,那么就可以临时把这个支付方式熔断掉降级:主动关闭一些非核心功能,以确保核心功能的正常运行。某次腾讯视频挂了的时候,用户名称默认显示腾讯用户,这也是一种降级方式,用兜底名称做展示

13.3 吞吐量

吞吐量越大,性能越好,吞吐量相对稳定或者变低,可能系统达到了性能瓶颈吞吐量变化规律:
波动很大:代表系统性能不稳定
慢慢变高,再趋于稳定:和并发量强相关。如果并发量小于吞吐量,慢慢增大并发量,吞吐量也会随之增加
慢慢变低,并发量也减少了:要么说明性能测试要结束了,并发减少;也可能是系统变的卡顿,从而导致响应时间变慢,导致单个线程发起的并发量变少

TIP:解决jmeter乱码问题:

通过后置处理器BeanShell PostProcessor


        1)在线程组中添加后置处理器:BeanShell PostProcessor

        2)输入prev.setDataEncoding("utf-8"),目的是修改响应数据编码格式为utf-8

        3)保存脚本再次执行jmeter即可。

用后置处理器修改响应编码的方式更方便一些,不用改文件,也不用重启jmeter。

所以性能测试的拐点如何测试?

14.HTTP请求中post和get有什么区别?

1. 语义和使用场景

  • GET:
    • 语义: 用于请求从指定的资源获取数据。
    • 用途: 常用于请求服务器发送某个资源,例如请求一个网页、图片或其他文件。
    • 幂等性: GET请求被认为是幂等的,即多次执行同一请求对资源状态没有副作用。
    • 缓存: GET请求的结果可以被缓存。
    • 参数传递: 请求参数附加在URL之后,以查询字符串的形式传递,例如 http://example.com/resource?param1=value1&param2=value2
  • POST:
    • 语义: 用于向指定的资源提交数据,请求服务器进行处理(例如创建/更新资源)。
    • 用途: 常用于提交表单数据、上传文件等操作。
    • 幂等性: POST请求通常不是幂等的,即多次执行同一请求可能会对资源状态产生副作用。
    • 缓存: POST请求的结果一般不被缓存。
    • 参数传递: 请求参数包含在请求体中,而不是URL中。

2. 数据传输

  • GET:
    • 数据传输量有限制(由于URL长度限制,不同浏览器和服务器有不同限制)。
    • 数据暴露在URL中,不适合传输敏感信息。
  • POST:
    • 没有数据大小的严格限制(虽然服务器可能设置了自己的限制)。
    • 数据在请求体中传输,相对更安全,适合传输敏感信息(但仍需注意使用HTTPS来保证安全性)。

3. 浏览器行为

  • GET:
    • 浏览器会将GET请求的结果缓存起来,并在用户尝试重新加载页面时可能直接从缓存中读取数据。
    • 用户可以将GET请求的URL收藏为书签。
  • POST:
    • 浏览器通常不会缓存POST请求的结果。
    • 用户无法直接将POST请求的URL收藏为书签。

4. IDEMPOTENCY(幂等性)

  • GET 是幂等的,即多次执行同一GET请求对服务器状态没有副作用。
  • POST 通常不是幂等的,多次执行同一POST请求可能会改变服务器状态。

相关文章:

JMeter接口性能测试从入门到精通

前言: 本文主要介绍了如何利用jmter进行接口的性能测试 1.在测试计划中添加线程组 1.1.线程组界面中元素含义 如果点击循环次数为永远: 2.添加HTTP取样器 2.1.填写登录接口的各个参数 2.2.在线程组下面增加查看结果树 请求成功的情况: 请求…...

WinForm真入门(9)——RichTextBox控件详解

WinForm中RichTextBox控件详解:从基础到高级应用 上一文中笔者重点介绍了TextBox控件的详细用法,忘记的 请点击WinForm真入门(8)——TextBox控件详解,那么本文中的RichTextBox与TextBox有什么区别吗,光看名字的话,多了…...

Linux : 内核中的信号捕捉

目录 一 前言 二 信号捕捉的方法 1.sigaction()​编辑 2. sigaction() 使用 三 可重入函数 四 volatile 关键字 一 前言 如果信号的处理动作是用户自定义函数,在信号递达时就调用这个函数,这称为捕捉信号。在Linux: 进程信号初识-CSDN博客 这一篇中已经学习到了一种信号…...

Linux 字符串截取#与%

在Linux的Shell脚本中,#和%用于字符串截取,通过通配符模式匹配删除部分内容 批量修改文件名技巧:Linux下#、##、%、%%符号操作详解-CSDN博客 从左截取(# 和 ##) #:删除最短匹配左侧内容。 ##&#xff1a…...

Android学习总结之自定义View实战篇

场景一:自定义进度条 在很多应用中,我们会看到一些独特样式的进度条,接下来就实现一个简单的圆形进度条。 实现思路 继承 View 类。重写 onDraw 方法,在该方法里使用 Canvas 和 Paint 来绘制圆形进度条。提供更新进度的方法。 …...

C++ STL 详解 ——list 的深度解析与实践指南

在 C 的标准模板库(STL)中,list作为一种重要的序列式容器,以其独特的双向链表结构和丰富的操作功能,在许多编程场景下发挥着关键作用。深入理解list的特性与使用方法,能帮助开发者编写出更高效、灵活的代码…...

open函数的概念和使用案例

open 是 Linux/Unix 系统中用于打开或创建文件的系统调用,返回一个文件描述符(File Descriptor),后续可通过该描述符进行文件读写等操作。以下是其核心概念和使用案例的详细说明: 1. 核心概念 作用:打开或…...

整理一些大模型部署相关的知识

不一定有什么用, 不经常用还会忘掉. 之前被人问到一次,脑子卡壳回答不出要点, 非常尴尬! 在此记录一下使用心得, 偶尔回来翻看! 一 并行方式 1.1 数据并行 (Data Parallelism) 主要用于模型训练阶段, 即将多个完整的模型副本分布到多个gpu上, 每个gpu运行一部分数据数据, 每个…...

算法刷题记录——LeetCode篇(2.10) [第191~200题](持续更新)

更新时间:2025-04-04 算法题解目录汇总:算法刷题记录——题解目录汇总技术博客总目录:计算机技术系列博客——目录页 优先整理热门100及面试150,不定期持续更新,欢迎关注! 198. 打家劫舍 你是一个专业的…...

蓝桥杯备赛 Day 19 加练dfs

是否需要回溯? 输入参数有哪几个(当前dfs和下一个dfs什么会变?)? 是否需要返回值? 一.1158: 八皇后 P1158 - 八皇后 - New Online Judge (ecustacm.cn) 学习: 1.dfs输入为层数,即行号i,因为是每行只放一个,下一个dfs就是i1 2…...

蓝桥杯-卡java排序

问题描述 本题是一道针对 Java 中 Arrays.sort 的题目,因此只有一个数据,该数据可以把 int 类型的数组在使用 Arrays.sort 后卡成 O(n2)O(n2)。 给定一个有 nn 个正整数的序列 aa,你需要将其升序排序后输出。 输入格式 第一行输入一个正整…...

内存管理模块

在 Linux 内核中,内存管理是一个复杂而关键的组成部分。内核空间的虚拟地址被划分为多个区域,每个区域有其特定的用途和映射机制。本文将详细介绍 直接映射区(Direct Mapping Area)、vmalloc 区、永久内核映射区(Perma…...

Spring RestTemplate修仙指南:从HTTP萌新到请求大能的终极奥义

各位在Spring生态摸爬滚打的道友们!今天要解锁的是Spring官方御用HTTP法宝——RestTemplate!这货堪称Java界的"御剑飞行术",虽然官方已推荐WebClient接棒,但江湖上仍有80%项目在用这员老将!准备好一键起飞了…...

cpp经典数论问题

题目如下 思路 代码如下...

Redis 线程模型:单线程也能快如闪电?

目录 一、核心思想:快刀斩乱麻的“单线程”高手 🦸‍♂️二、为什么是“单线程”?🤔三、单线程如何做到高性能?✨ “I/O 多路复用”是关键!四、真的一直都只有“一个线程”吗?并不完全是&#x…...

游戏引擎学习第208天

运行游戏并回顾我们的情况 今天,我们将继续完成之前中断的调试输出工作。最近的工作偏离了一些,展示了如何进行元编程的实践,主要涉及了一个小的解析器。尽管这个解析器本身是一个玩具,但它展示了如何完成一个完整的循环&#xf…...

JavaScript箭头函数介绍(=>)(箭头函数不绑定自己的this,而是继承上下文的this;不能用于造函数)JavaScript =>

文章目录 JavaScript箭头函数全解析箭头函数的基本语法简洁语法特性隐式返回值对象字面量返回 词法绑定的this不适用箭头函数的场景对象方法构造函数DOM事件处理 高级用法在数组方法中的应用链式调用柯里化函数 性能考量1. 作为回调函数时减少创建闭包的开销2. 简化代码结构&am…...

数据对象:DTO、DO、PO和 BO的区别和关系

在Java开发中,DTO(Data Transfer Object)、DO(Domain Object)、PO(Persistent Object)和BO(Business Object)是常用的数据对象概念,下面为你详细介绍并给出简…...

Java内存模型详解:堆、栈、方法区

1. 堆(Heap) 作用:存放所有对象实例及数组,是垃圾回收的主要区域。 结构: 新生代(Young Generation): Eden区:新创建的对象首先分配在此。 Survivor区(From…...

ubuntu 20.04 编译运行LeGo_LOAM 跑数据集 并且保存pcl文件

1.搭建文件目录,clone代码,编译 mkdir -p Lego_LOAM/src cd Lego_LOAM/src git clone https://github.com/RobustFieldAutonomyLab/LeGO-LOAM.git cd .. catkin_make -j1 错误1&#xff1a;: fatal error: opencv/cv.h: 没有那个文件或目录 13 | #include <opencv/cv.h…...

CMake使用教程

CMake是开源、跨平台的构建工具,可以让我们通过编写简单的配置文件去生成本地的Makefile,这个配置文件是独立于运行平台和编译器的,这样就不用亲自去编写Makefile了,而且配置文件可以直接拿到其它平台上使用,无需修改,非常方便。 使用命令行执行CMakeLists.txt,对文件进…...

快速上手Linux进程管理

一.理解进程和线程 1.1 什么是进程 它表示一个正在执行的程序实例。在操作系统中&#xff0c;进程是系统进行资源分配和调度的基本单位。每个进程都有自己独立的内存空间、代码、数据和系统资源&#xff0c;如打开的文件、使用的硬件设备等。 进程的主要特点包括&#xff1a…...

pytorch框架实现cnn四种天气图片多分类问题-添加dropout和bn层

目录 1.导包 2.加载数据、拼接训练、测试文件夹 3. 查看当前目录下的所有文件名,以列表的形式输出 4.原数据集dataset中存在的数据的目标类别 5.创建train和test目录 及其需要分类的子文件夹 6.使用torchvision 的transforms进行数据预处理 6.1数据统一缩放resize、To…...

swift-11-init、deinit、可选链、协议、元类型

一、required 二、属性观察器 三、可失败初始化器 可以用init!定义隐式解包的可失败初始化器 可失败初始化器可以调用非可失败初始化器&#xff0c;非可失败初始化器调用可失败初始化器需要进行解包 如果初始化器调用一个可失败初始化器导致初始化失败 &#xff0c;那么整个初…...

【力扣hot100题】(062)搜索插入位置

感觉自己对二分法还是没有很好掌握&#xff0c;主要在于边界问题&#xff0c;只会基本的搜索&#xff0c;如果要搜索比目标值大的第一个索引或者比目标值小的最后一个索引&#xff08;或者换一些花里胡哨的题目&#xff09;就完全不会了。 class Solution { public:int search…...

TCPIP详解 卷1协议 三 链路层

3.1——以太网和IEEE802局域网/城域网标准 以太网这个术语通常指一套标准&#xff0c;由DEC&#xff0c;Intel公司和Xerox公司在1980年首次发布&#xff0c;并在1982年加以修订。第一个常见格式的以太网&#xff0c;目前被称为10Mb/s以太网或共享以太网。它被IEEE采纳为802.3标…...

以太网安全

前言&#xff1a; 端口隔离可实现同一VLAN内端口之间的隔离。用户只需要将端口加入到隔离组中&#xff0c;就可以实现隔离组内端口之间的二层数据的隔离端口安全是一种在交换机接入层实施的安全机制&#xff0c;旨在通过控制端口的MAC地址学习行为&#xff0c;确保仅授权设备能…...

linux如何查看当前系统的资源占用情况

在 Linux 系统中&#xff0c;有多个命令可以查看当前系统的资源占用情况。以下是一些常用的命令及其说明&#xff1a; 1. 查看内存使用情况&#xff1a;free free -h-h 参数表示以人类可读的格式显示&#xff08;如 MB, GB&#xff09;。输出示例&#xff1a; to…...

人脸识别系统(人脸识别、前后端交互、Python项目)

基于Flask、Face_Recognition的人脸识别系统 项目介绍 基于flask、face_recognition的人脸识别系统。 本项目采用Face_Recognition库内置的ResNet-34预训练模型&#xff0c;其已对LFW公开数据集进行预训练而得到的模型。利用ResNet-34预训练模型&#xff0c;可使用少量已知人…...

2025 ArkTS语言开发入门之前言(二)

2025 ArkTS语言开发入门之前言&#xff08;二&#xff09; 前言 在上一节&#xff0c;咱们学习了如何下载并安装ArkTS的集成开发环境&#xff0c;这时候有的臭宝会发现&#xff0c;左边的这些叽里咕噜的是什么&#xff1f;下面&#xff0c;我来带着臭宝们来学习一下这些是什么…...

VLAN(虚拟局域网)

一、vlan概述 VLAN(virtual local area network)是一种通过逻辑方式划分网络的技术&#xff0c;允许将一个物理网络划分为多个独立的虚拟网络。每一个vlan是一个广播域&#xff0c;不同vlan之间的通信需要通过路由器或三层交换机 [!注意] vlan是交换机独有的技术&#xff0c;P…...

2025.4.6总结

今日记录&#xff1a;今天玩的有些累&#xff0c;先是去护肤店护理了脸部&#xff0c;然后去汉口江滩那看了看美景&#xff0c;吹吹江风。节假日去玩&#xff0c;光是挤一个半小时地铁都感觉累。还好上下班期间不用挤地铁&#xff0c;不然还真受不了。 假期小结 1.消费&#…...

【清明折柳】写在扬马三周目后

黄绿之间&#xff0c;方寸之外。 文章目录 楔子解耦到离散螃蟹与毒药文本的力量朝花夕拾后记 楔子 “——就像物理学家通过演绎与归纳将宏微世界的运转规律浓缩到数学公式中时&#xff0c;如今的人工智能也在试图量化整个人类文明。” “——只是&#xff0c;使用的是昂贵、笨…...

P1258 小车问题(二分)

题目描述 甲、乙两人同时从 A 地出发要尽快同时赶到 B 地。出发时 A 地有一辆小车&#xff0c;可是这辆小车除了驾驶员外只能带一人。已知甲、乙两人的步行速度一样&#xff0c;且小于车的速度。问&#xff1a;怎样利用小车才能使两人尽快同时到达。 输入格式 仅一行&#x…...

一个基于ragflow的工业文档智能解析和问答系统

工业复杂文档解析系统 一个基于ragflow的工业文档智能解析和问答系统,支持多种文档格式的解析、知识库管理和智能问答功能。 系统功能 1. 文档管理 支持多种格式文档上传(PDF、Word、Excel、PPT、图片等)文档自动解析和分块处理实时处理进度显示文档解析结果预览批量文档…...

负指数二项式展开

转载&#xff1a;负指数二项式展开_二项式负数次幂的展开式-CSDN博客...

CentOS 7服务器上快速安装mamba函数库

本次预配置虚拟环境为cuda 11.8torch 2.2.2python 3.10 1. 创建conda虚拟环境&#xff1a;conda create -n mamba python3.10 激活环境&#xff1a;conda activate mamba 2. 安装Pytorch环境&#xff1a; conda install pytorch2.2.2 torchvision0.17.2 torchaudio2.2.2 py…...

ResNet改进(18):添加 CPCA通道先验卷积注意力机制

1. CPCA 模块 CPCA(Channel Prior Convolutional Attention)是一种结合通道先验信息的卷积注意力机制,旨在通过显式建模通道间关系来增强特征表示能力。 核心思想 CPCA的核心思想是将通道注意力机制与卷积操作相结合,同时引入通道先验知识,通过以下方式优化特征学习: 通…...

代码随想录算法训练营--打卡day6

一.四数相加 1.题目链接 454. 四数相加 II - 力扣&#xff08;LeetCode&#xff09; 2.思路 使用 HashSet 无法记录每种和出现的次数&#xff0c;当不同的 (nums1[i], nums2[j]) 组合得到相同的和时&#xff0c;会出现统计错误。这里应该使用 HashMap 来记录和以及其出现的…...

edge webview2 runtime跟Edge浏览器软件安装包双击无反应解决方法

软件安装报错问题有需要远程文章末尾获取联系方式&#xff0c;可以帮你远程处理各类安装报错。 一 、edge webview2 runtime跟Edge浏览器软件安装包双击无反应 在安装edge webview2 runtime跟Edge浏览器双击无反应没有出现安装界面。这个可能是 新版本的Edge WebView2 Runti…...

Xorg 内存上涨的根源探究

Xorg 内存上涨的根源探究 起因 在同一客户端进程内显示多股视频源,通过SDL创建窗口渲染,由于网络抖动视频源出现频繁断流现象导致,渲染任务反复重启,从而导致SDL渲染窗口反复创建释放,最后导致Xorg内存持续上涨 排查准备 Xorg是什么? Xorg(X.Org Server)是 X Wind…...

Neo4j基本命令使用

neo4j neo4j简介安装可视化管理后台登录 Cyphercreatematchmergecreate创建关系merge创建关系wheredelete sort命令字符串函数toUpper()函数toLower()函数substring()函数replace()函数 聚合函数count()函数max()函数min()函数sum()函数avg()函数索引index python 中使用neo4j …...

Python爬虫教程009:requests的基本使用以及get和post请求的使用

文章目录 5.1 基本使用5.2 get请求5.3 post请求5.1 基本使用 在 Python 爬虫开发中,requests 是一个非常流行、简单易用的 HTTP 库,用于发送网络请求。它可以让你方便地抓取网页内容、提交表单、上传文件等。 🔧安装: pip install requestsresponse的属性及类型: resp…...

SQL练习

目录 1.查询" 01 "课程比" 02 "课程成绩高的学生的信息及课程分数 2.查询平均成绩大于等于 60 分的同学的学生编号和学生姓名和平均成绩 3.查询在 SC 表存在成绩的学生信息 4.查询所有同学的学生编号、学生姓名、选课总数、所有课程的总成绩(没成绩的显…...

ubuntu20.04 复现fastlio2 并运行数据包

1.搭建文件目录和拷贝代码 mkdir -p Fastlio2/src cd Fastlio2/src git clone https://github.com/hku-mars/FAST_LIO.git git clone https://github.com/Livox-SDK/livox_ros_driver.git 2.到工作空间下编译 cd .. catkin_make 报错1&#xff1a; 解决方案1&#xff1a; …...

Windows安装 PHP 8 和mysql9,win下使用phpcustom安装php8.4.5和mysql9

百度搜索官网并下载phpcustom&#xff0c;然后启动环境&#xff0c;点击网站管理 里面就有php8最新版&#xff0c;可以点mysql设置切mysql9最新版&#xff0c;如果你用最新版无法使用&#xff0c;说明你的php程序不支持最新版的mysql MySQL 9.0 引入了一些新的 SQL 模式和语法变…...

【失配树 KMP+树上倍增】P5829失配树|省选-

本文涉及知识点 较难理解的字符串查找算法KMP 树上倍增 P5829 【模板】失配树 题目描述 给定一个字符串 s s s&#xff0c;定义它的 k k k 前缀 p r e k \mathit{pre}_k prek​ 为字符串 s 1 … k s_{1\dots k} s1…k​&#xff0c; k k k 后缀 s u f k \mathit{suf}_…...

机器学习模型性能提升教程(特征工程和模型优化)

特征工程和模型优化是提升机器学习模型性能的核心步骤&#xff0c;以下从特征工程和模型优化两个维度&#xff0c;结合具体案例展开说明&#xff1a; 一、特征工程 特征工程的核心目标是从原始数据中提取更有价值的信息&#xff0c;常见方法包括特征选择、特征构造和特征转换。…...

跨域问题前端解决

由于浏览器的同源策略&#xff0c;前后端分离的项目&#xff0c;调试的时候总是会遇到跨域的问题&#xff0c;这里通过修改前端代码解决跨域问题。 首先先查看前端代码的根目录下&#xff0c;有没有vue.config.js文件, 若有&#xff0c;使用方法1&#xff0c;若没有此文件&…...

每天五分钟深度学习框架pytorch:搭建LSTM完成时间序列的预测

本文重点 前面一篇文章我们使用了pytorch搭建了循环神经网络LSTM然后完成了手写字体识别的任务,本文我们使用LSTM完成一个时间序列的任务。 数据集介绍 数据集如图所示,其中有一列是时间,然后还有一列是对应时间的起飞航班数,它可以看成是一个时间序列,通过前面t时间的起…...