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

Jmeter 压测保姆级入门教程

1、Jmeter本地安装

1.1、下载安装

软件下载地址: https://mirrors.tuna.tsinghua.edu.cn/apache/jmeter/binaries/
选择一个压缩包下载即可
在这里插入图片描述
然后解压缩后进入bin目录直接执行命令jmeter即可启动

在这里插入图片描述

1.2 修改语言

默认是英文的,修改中文,点击选项-》选择语言-》简体中文
在这里插入图片描述

1.3 必备插件安装

jmeter内置的常用的插件不是很多,如果要额外安装其他插件需要先下载一个插件安装工具的jar包然后放到jmeter的目录下才能使用插件安装工具的功能。

  1. 插件安装工具下载地址

在这里插入图片描述
2) 下载jar包之后放到 jmeter的 /lib/ext 目录下,重启Jmeter即可。

3 打开插件管理。 选项-》 插件管理器
在这里插入图片描述

  1. 点击可用插件tab,然后勾选安装即可
    在这里插入图片描述

推荐勾选: 带jpgc相关的插件,可以做梯度增压

1.4 修改Jmeter的堆内存

由于压测是通过Jmeter这个Java程序去跑的,所以压测的性能和能开启的线程数量都与这个程序本身运行的环境以及配置有关。 一般Jmeter部署在服务器那边性能会更强。

修改jmeter的 /bin/jmeter 文件 (mac环境),如果是window修改 jmeter.bat 。 修改下图的这一行就是调整堆内存信息

${HEAP:=“-Xms1g -Xmx8g -XX:MaxMetaspaceSize=656m”}

在这里插入图片描述
验证是否修改成功,重启使用jconsole工具连接Jmeter进程查看jvm信息即可看到是否修改成功。 或者使用jps命令查看进程号然后再jmap命令查看堆内存分配情况。

在这里插入图片描述

2、 Jmeter操作说明

2.1、测试计划

默认打开的界面如下, 一份测试计划就是一份jmx文件,点击保存就会弹出保存地址。 测试计划就是包含此次做压测的所有信息。 支持导入导出。
在这里插入图片描述

2.2 测试计划界面介绍

异常信息

  • 右上角那个小三角可以看到jemter的执行信息,如果你的压测执行不了可以去里面看看一般是报错了

用户自定义变量

  • 可以在这里配置压测的全局变量,这样我们在使用的时候就不用传具体的值,传变量的值即可。 这样以后要修改的话只需要修改这里的变量值就可以了就不用到处都修改了。
  • 比如我们压测的接口的域名肯定是都一样所以一般会提取出来做全局变量。比如下面配置全局变量域名host, 然后使用的时候就直接配 ${host}即可。
    在这里插入图片描述

2.3、配置元件

默认支持的配置元件列表,主要作用就是配置我们压测接口的一些参数配置
在这里插入图片描述

2.3.1、Http请求默认值

操作: 右键点击测试计划-》 添加-》 配置元件-》 Http请求默认值组件

作用

  • 一般压测的接口的很多请求参数可能是一致的。 所以这里可以设置压测接口时的默认请求参数。 这样就不用每次配压测接口都去配置,默认会带上这里配置的请求参数。

在这里插入图片描述

比如下图配置默认的http协议,以及默认的域名。 这里的域名配置就使用我们前面配置的全局变量 ${host}
在这里插入图片描述

2.3.2、HTTP信息头管理器

操作: 右键点击测试计划-》 添加-》 配置元件-》 HTTP信息头管理器

作用

  • Http请求默认值配置元件类似,都是配置压测接口的请求默认值。 不过这个元件就像其名字一样配置的是默认的Http请求头信息,这样压测接口就不用再配置Http请求头信息默认会带上
  • 比如我们可以配置常用的默认的请求头Content-TypeCookie 。 尤其是Cookie请求头 这样即使是登录接口也能进行调通。

在这里插入图片描述

2.3.3、CSV Data Set Config

操作: 右键点击测试计划-》 添加-》 配置元件-》 CSV Data Set Config

作用

  • 一般用于模拟生成不同的请求参数。 因为一般我们对一个接口进行压测真实的场景是请求参数是不同的

具体配置如下:

  • 主要是先配置一个csv文件的地址,然后指定列头变量字段名。 之后再配置压测接口的时候就可以把使用这些变量字段名。使用格式为: {变量名称}。 比如下面配置使用格式就是 {userName}.
  • 这样在请求压测接口的时候就会来随机读取这个csv文件的这个变量对应的列的某一个的值, 一般我们就是通过这个组件去模拟不同的请求参数。

在这里插入图片描述

2.4、线程组

线程组就是用来模拟并发的数量以及并发的行为。 比如你是要启动10个并发还是100个并发去压测接口就是通过这个组件。并且启动压测程序其实就是通过启动我们的线程组的执行压测。

自带带的线程组如下,其中带gc的使我们添加插件后才有的。 不同的线程组的区别就是设置的并发行为不同

  • 比如有些线程组是一股脑配10个并发然后一直执行10分钟。

  • 有些线程组是配置先启动1个并发,每过5秒后再启动10个并发,当到达100个并发后就执行10分钟。
    在这里插入图片描述

2.4.1、普通线程组

操作: 右键点击测试计划-》 添加-》 线程-》 线程组
作用

  • 下图就是我们配置一个线程组, 配置了20个并发,然后在5秒内启动完20个并发,当执行10000伺候就停止压测。
    在这里插入图片描述

具体该配置的并发行为可以用下图来形象的表示。 可以看到一开始是0个并发,然后随着时间增加不短增加并发,最终在第5秒达到最大并发20,然后就一直20个并发一直执行。
在这里插入图片描述

2.4.2、梯度线程组(Stepping Thread Group)

操作: 右键点击测试计划-》 添加-》 线程-》 jp@gc - Stepping Thread Group
作用

  • 与普通线程组的并发行为不同的是,这个线程组可以做到类似于先启动5个并发,然后隔10秒后再启动10个并发,当达到100个并发,持续执行30s,然后再每隔5秒降低20个并发这种更为详细的并发行为。 而普通线程组每次只能保持固定的并发数去跑, 我们只能不断修改这个固定的并发数去压测以求找到接口最大的吞吐量。 下图就形象的表示了这种驼峰式的并发行为

在这里插入图片描述

具体配置对应的语义和并发行为如下图所示:

  • this goup will start语义: 表示最多启动多大线程。对应图中的峰顶的值
  • first wait for语义: 从运行之后多长时间开始启动线程;若设置为60秒, 对应图中开头的底部横线。
  • then start语义: 表示第一次要启动几个线程。 对应图中第一个上升线。
  • next add语义 + threads every 语义: 表示每隔多少秒启动多少个线程。对应图中的上升梯度线。
  • using ramp-up 语义: 其中与普通线程组一样表示启动线程的时间。 对应图中的上升梯度线的斜度,越大越斜表示用的时间越久。
  • then hold load for语义: 表示达到最大线程后保持最大线程持续执行多久。 对应图中的峰顶的横线。
  • finally sotp + threads every语义: 达到峰顶后,表示每隔多少秒释放多个线程。 对应图中的下降梯度线。

2.5、取样器

如果说线程组就是我们Java的线程池,那么取样器就相当于我们线程池要执行的Runnable任务。比如我们要压测哪个接口就可以配置成取样器。

自带取样器如下

  • 操作: 右键线程组-》 添加-》取样器
  • 一般我们用的比较多就是Http请求取样器,用来压测接口。
    在这里插入图片描述

2.5.1、Http请求取样器

操作: 右键线程组-》 添加-》取样器-》 Http请求
作用: 主要就是用来配置Http接口的信息,包括请求域名,端口,接口路径、接口参数等等。 有了它就可以发起请求。

在这里插入图片描述

3、 实战案例

此处压测的接口代码逻辑: 模拟执行时间是500ms

    @GetMappingpublic String getA1(){try {Thread.sleep(500);} catch (InterruptedException e) {throw new RuntimeException(e);}return "33";}

3.1、 压测接口Hello World

1、在测试计划下面添加线程组,设置100个并发,持续执行600秒。
在这里插入图片描述

2、添加压测的接口
添加http取样器,并且配置接口信息

在这里插入图片描述

3、添加接口执行结果监听器
操作: 右键线程组-》添加-》监听器-》查看结果树。
这样我们接口是否调通以及返回结果都可以看到
在这里插入图片描述

4、添加压测接口汇总报告
操作: 右键线程组-》添加-》监听器-》汇总报告。
这样看到这个线程组压测的统计报告,包括吞吐量TPS、响应时间、是否异常,网络请求量,执行次数。

在这里插入图片描述

5、添加吞吐量TPS实时统计图(可忽略)
操作: 右键线程组-》添加-》监听器-》jp@gc - Transactions per Second。
这样就可以监测吞吐量的实时变化情况。
在这里插入图片描述

5、添加响应时间实时统计图(可忽略)
操作: 右键线程组-》添加-》监听器-》jp@gc - Response Times Over Time
这样就可以监测接口响应时间的实时变化情况。

在这里插入图片描述

5、添加激活线程实时统计图(可忽略)
操作: 右键线程组-》添加-》监听器-》jp@gc - Active Threads Over Time
这样就可以监测线程组的并发行为,因为线程组的组件有很多,如果不是非常熟悉可能都不知道自己配置的线程组正在模拟什么样的并发行为。

在这里插入图片描述

7、启动线程组执行压测
操作: 右键线程组-》启动
原理: 线程组会去并发执行线程组下面配置的所有取样器(这里只添加了一个还可添加多个)

最后我们看下各部分压测结果:

1、首先是接口执行情况:

  • 都是绿色表示接口调通,并且右侧可看到接口响应结果。

在这里插入图片描述

2、看一下压测汇总报告统计

可以看到样本数就是总共请求的数量, 平均值就是平均响应时间(单位是毫秒)结果跟我们接口代码逻辑还是一致的,最小值和最大值也是接口响应时间。 异常率就是接口调不通(吞不下)的概率。 吞吐量就是每秒能处理168个请求。
在这里插入图片描述

3、看一下吞吐量变化情况
随着并发数增加,最终一直维持在180到200的吞吐量之间
在这里插入图片描述

3、看下响应时间的变化
基本维持在500ms左右
在这里插入图片描述

3.2、 模拟不同的请求参数

1、新建一个CSV文件,里面放我们不同的请求参数,比如内容为

userId,userName
1,	zhangShan
2,  liSi
3,  xaioming

2、新增CSV 数据文件设置组件
将我们刚才新增的csv文件路径配到这里,然后配置变量名,并且设置忽略首行(因为我们的csv文件内容首行不是请求参数)
在这里插入图片描述

3、在Http取样器里面直接使用变量即可。
请求参数要使用变量地方就用{}包起来就行。
原理就是请求的时候会去随机读取该文件的的这个字段的值从而达到模拟不同请求参数的效果
在这里插入图片描述

3.3、 如何请求要登录验证的接口

这个看你们的登录验证逻辑,假如我们的登录信息是放在cookies里面,那么我们就可以添加HTTP信息头管理器,然后在里面配置cookie请求头信息。只要把我们的登录cookies放进去就可以执行成功。

在这里插入图片描述

缺点就是cookie失效后每次要重新配置,具体还有其他更自动化的解决方法

3.4、 接口如何上传文件

接口配置那选择文件上传, 配置配置具体的配置路径即可。会去读取上传。 然后参数名称写死file就行。 然后MIME根据具体来。 一般是application/octet-stream 或者 multipart/form-data即可。
如果要模拟上传不同的文件,同上面模拟不同请求参数一样,这里用变量填充代表文件路径即可。
在这里插入图片描述

3.5、 如何在服务端执行Jmeter压测(重要)

之前我们是通过本地Jmeter的GUI界面去进行压测的。但是官方不建议压测通过GUI模式去跑,而是使用CLI命令行的模式去跑压测。 所以我们得先准备测试计划文件.jmx, 然后使用jmeter的命令去跑测试计划。最终会将测试计划的结果报告保存到指定的文件。

具体命令:

jmeter -n -t [xxx.jmx] -l [results file] -e -o [Path to web report folder]
  • -n:非GUI模式,即在非客户端模式下运行JMeter
  • -t:指定待执行的JMeter脚本
  • xxx.jmx是要被执行的JMeter测试计划脚本即在JMeter客户端保存的脚本
  • -l: 指定相关结果到指定的文件中
  • results file就是压测结果保存的文件名,默认存放在命令行当前目录下
  • Path to web report folder 就是报告目录路径

其实细心的可能会发现我们启动jmeter的日志输出默认就是告诉我们应该这样做
具体的官方文档: https://jmeter.apache.org/usermanual/best-practices.html

image.png

以下是我的执行命令案例:

jmeter -n -t 1.1版本xx测试计划.jmx -l result.txt -e -o report

(base) ➜  tmp6 ll
-rw-r--r--@ 1 burukeyou  staff    16K 11 23 14:19 1.1版本xx测试计划.jmx
(base) ➜  tmp6 jmeter -n -t 1.1版本xx测试计划.jmx -l result.txt -e -o report
Creating summariser <summary>
Created the tree successfully using 1.1版本xx测试计划.jmx
Starting standalone test @ November 23, 2023 2:21:03 PM CST (1700720463057)
Waiting for possible Shutdown/StopTestNow/HeapDump/ThreadDump message on port 4445
summary +      1 in 00:00:01 =    1.6/s Avg:   556 Min:   556 Max:   556 Err:     0 (0.00%) Active: 13 Started: 13 Finished: 0
summary +    299 in 00:00:06 =   50.9/s Avg:   509 Min:   504 Max:   556 Err:     0 (0.00%) Active: 0 Started: 100 Finished: 100
summary =    300 in 00:00:07 =   46.0/s Avg:   510 Min:   504 Max:   556 Err:     0 (0.00%)
Tidying up ...    @ November 23, 2023 2:21:09 PM CST (1700720469740)
... end of run
(base) ➜  tmp6 ll
total 216
-rw-r--r--@ 1 burukeyou  staff    16K 11 23 14:19 1.1版本xx测试计划.jmx
-rw-r--r--  1 burukeyou  staff    44K 11 23 14:21 jmeter.log
drwxr-xr-x  6 burukeyou  staff   192B 11 23 14:21 report
-rw-r--r--  1 burukeyou  staff    41K 11 23 14:21 result.txt

可以发现跑完压测报告后最终在生成了result.txt文件和report目录,进入report目录找到index.html浏览器打开即可看到报告如下

image.png

jmeter -n -t [xxx.jmx] -l [results file]执行压测也可不指定 Path to web report folder参数。 只生成 results file. 然后通过 jmeter -g result.txt -o output 命令使用结果文件去生成Html报告。

比如:

(base) ➜  tmp6 ll
total 136
-rw-r--r--@ 1 burukeyou  staff    16K 11 23 14:19 1.1版本xx测试计划.jmx
-rw-r--r--  1 burukeyou  staff   5.3K 11 23 14:26 jmeter.log
-rw-r--r--@ 1 burukeyou  staff    41K 11 23 14:21 result.txt
(base) ➜  tmp6 jmeter -g result.txt -o output 
(base) ➜  tmp6 ll
total 152
-rw-r--r--@ 1 burukeyou  staff    16K 11 23 14:19 1.1版本xx测试计划.jmx
-rw-r--r--  1 burukeyou  staff    14K 11 23 14:29 jmeter.log
drwxr-xr-x  6 burukeyou  staff   192B 11 23 14:29 output
-rw-r--r--@ 1 burukeyou  staff    41K 11 23 14:21 result.txt

如果看压测的每个请求结果响应类似GUI界面那样,可以在jmeter的GUI界面的查看结果树组件的浏览那里导入结果文件即可。

image.png

相关文章:

Jmeter 压测保姆级入门教程

1、Jmeter本地安装 1.1、下载安装 软件下载地址&#xff1a; https://mirrors.tuna.tsinghua.edu.cn/apache/jmeter/binaries/ 选择一个压缩包下载即可 然后解压缩后进入bin目录直接执行命令jmeter即可启动 1.2 修改语言 默认是英文的&#xff0c;修改中文&#xff0c;点击…...

springboot2.1升级到2.7 actuator丢失部分metrics端点

项目场景&#xff1a; 项目需要升级springboot从2.1升级至2.7 问题描述 发现之前的metrics后面的jvm相关的端口丢了 原因分析&#xff1a; 找到这样一篇博文https://blog.csdn.net/CL_YD/article/details/120309094&#xff0c;这篇博文意思是对的&#xff0c;但是写的不太好…...

梦开始的地方——Adobe Premiere Pro

今天&#xff0c;我们来说说一款老生常谈的相信也是很多人都经常迫切需要的软件。Adobe Premiere Pro&#xff0c;简称Pr&#xff0c;是由Adobe公司开发的一款视频编辑软件。 Premiere Pro是视频编辑爱好者和专业人士必不可少的视频编辑工具。它可以提升您的创作能力和创作自由…...

Nginx同时支持Http和Https的配置详解

当配置Nginx同时支持HTTP和HTTPS时&#xff0c;需要进行以下步骤&#xff1a; 安装和配置SSL证书&#xff1a; 获得SSL证书&#xff1a;从可信任的证书颁发机构&#xff08;CA&#xff09;或使用自签名证书创建SSL证书。 将证书和私钥保存到服务器&#xff1a;将SSL证书和私钥…...

3.2 Windows驱动开发:内核CR3切换读写内存

CR3是一种控制寄存器&#xff0c;它是CPU中的一个专用寄存器&#xff0c;用于存储当前进程的页目录表的物理地址。在x86体系结构中&#xff0c;虚拟地址的翻译过程需要借助页表来完成。页表是由页目录表和页表组成的&#xff0c;页目录表存储了页表的物理地址&#xff0c;而页表…...

基于springBoot+Vue的停车管理系统

开发环境 IDEA JDK1.8 MySQL8.0Node 系统简介 本项目为前后端分离项目&#xff0c;前端使用vue&#xff0c;后端使用SpringBoot开发&#xff0c;主要的功能有用户管理&#xff0c;停车场管理&#xff0c;充值收费&#xff0c;用户可以注册登录系统&#xff0c;自主充值和预…...

ES开启安全认证

elasticsearch开启安全认证步骤 1.创建证书 进入到es主目录下执行 ./bin/elasticsearch-certutil ca Elasticsearch开启安全认证详细步骤 第一个证书名称默认&#xff0c;直接回车 第二个输入密码&#xff0c;直接回车 完成后会生成一个文件&#xff1a;elastic-stack-ca.p12…...

CS5511规格书|CS5511方案应用说明|DP转双路LVDS/eDP芯片方案

概述&#xff1a;CS5511是一个将DP/eDP输入转换为LVDS信号的桥接芯片&#xff0c;此外&#xff0c;CS5511可以用作在DP/eDP输入到DP/eDP输出场景中桥接芯片。CS5511的高级接收器支持VEDA DisplayPort&#xff08;DP&#xff09;1.3和嵌入式DisplayPort&#xff08;eDP&#xf…...

JAVA小游戏“飞翔的小鸟”

第一步是创建项目 项目名自拟 第二步创建个包名 来规范class 再创建一个包 来存储照片 如下&#xff1a; package game; import java.awt.*; import javax.swing.*; import javax.imageio.ImageIO;public class Bird {Image image;int x,y;int width,height;int size;doubl…...

1410. HTML 实体解析器 --力扣 --JAVA

题目 「HTML 实体解析器」 是一种特殊的解析器&#xff0c;它将 HTML 代码作为输入&#xff0c;并用字符本身替换掉所有这些特殊的字符实体。 HTML 里这些特殊字符和它们对应的字符实体包括&#xff1a; 双引号&#xff1a;字符实体为 &quot; &#xff0c;对应的字符是 &qu…...

【开源】基于Vue.js的海南旅游景点推荐系统的设计和实现

项目编号&#xff1a; S 023 &#xff0c;文末获取源码。 \color{red}{项目编号&#xff1a;S023&#xff0c;文末获取源码。} 项目编号&#xff1a;S023&#xff0c;文末获取源码。 目录 一、摘要1.1 项目介绍1.2 项目录屏 二、功能模块2.1 用户端2.2 管理员端 三、系统展示四…...

机器学习【01】相关环境的安装

学习实例 参考资料&#xff1a;联邦学习实战{杨强}https://book.douban.com/subject/35436587/ 项目地址&#xff1a;https://github.com/FederatedAI/Practicing-Federated-Learning/tree/main/chapter03_Python_image_classification 一、环境准备 GPU安装CUDA、cuDNN pytho…...

微服务实战系列之签名Sign

前言 昨日恰逢“小雪”节气&#xff0c;今日寒风如约而至。清晨的马路上&#xff0c;除了洋洋洒洒的落叶&#xff0c;就是熙熙攘攘的上班族。眼看着&#xff0c;暖冬愈明显了&#xff0c;叶子来不及泛黄就告别了树。变化总是在不经意中发生&#xff0c;容不得半刻糊涂。 上集博…...

家用小型洗衣机哪款性价比高?口碑最好迷你洗衣机排行榜

由于我们的内衣、内裤和袜子等等贴身小件衣物的清洁频率比一般的衣物要高。而且&#xff0c;如果我们人工手洗的话&#xff0c;不仅会大大浪费了我们的时间&#xff0c;而且还不能进行对这些贴身的以为进行深层消毒和除菌。这种情况下&#xff0c;就得需要一台专门用于清洗内衣…...

企业远程访问业务系统:对比MPLS专线,贝锐蒲公英为何更优优势?

如今&#xff0c;企业大多都会采用OA、ERP、CRM等各种数字化业务系统。 私有云、公有云混合架构也变得越来越常见。 比如&#xff1a;研发系统部署在公司本地私有云、确保数据安全&#xff0c;OA采用公有云方案、满足随时随地访问需求。 如此一来&#xff0c;也产生了远程访问…...

Maven项目下详细的SSM整合流程

文章目录 &#x1f389;SSM整合流程一、两个容器整合✨ 1、先准备好数据库config.properties连接、mybatis-config.xml&#x1f38a; 2、容器一&#xff1a;优先配置spring.xml文件&#x1f38a; 3、容器二&#xff1a;配置springMVC.xml文件&#x1f38a; 4、Tomcat整合spring…...

Linux 设置文件开启数量限制

1、限制某个用户的 vim /etc/security/limits.confroot soft nofile 65535 root hard nofile 65535 *soft nofile 65535 *hard nofile 65535第一行指root用户的每个进程可开启最大的文件数&#xff08;软限制&#xff0c;只警告&#xff09;第二行指root用户的每个进程可开启最…...

详解Java中的异常体系机构(throw,throws,try catch,finally)

目录 一.异常的概念 二.异常的体系结构 三.异常的处理 异常处理思路 LBYL&#xff1a;Look Before You Leap EAFP: Its Easier to Ask Forgiveness than Permission 异常抛出throw 异常的捕获 提醒声明throws try-catch捕获处理 finally的作用 四.自定义异常类 一.异…...

【jvm】虚拟机之堆

目录 一、堆的核心概述二、堆的内存细分&#xff08;按分代收集理论设计&#xff09;2.1 java7及以前2.2 java8及以后 三、堆内存大小3.1 说明3.2 参数设置3.3 默认大小3.4 手动设置3.5 jps3.6 jstat3.7 OutOfMemory举例 四、年轻代与老年代4.1 说明 五、对象分配过程5.1 说明5…...

二百零五、Flume——数据流监控工具Ganglia单机版安装以及使用Ganglia监控Flume任务的数据流(附流程截图)

一、目的 Flume采集Kafka的数据流需要实时监控&#xff0c;这时就需要用到监控工具Ganglia 二、Ganglia简介 Ganglia 由 gmond、gmetad 和 gweb 三部分组成。 &#xff08;一&#xff09;第一部分&#xff1a;gmond gmond&#xff08;Ganglia Monitoring Daemon&#xff09;…...

AI Agent与Agentic AI:原理、应用、挑战与未来展望

文章目录 一、引言二、AI Agent与Agentic AI的兴起2.1 技术契机与生态成熟2.2 Agent的定义与特征2.3 Agent的发展历程 三、AI Agent的核心技术栈解密3.1 感知模块代码示例&#xff1a;使用Python和OpenCV进行图像识别 3.2 认知与决策模块代码示例&#xff1a;使用OpenAI GPT-3进…...

Cilium动手实验室: 精通之旅---20.Isovalent Enterprise for Cilium: Zero Trust Visibility

Cilium动手实验室: 精通之旅---20.Isovalent Enterprise for Cilium: Zero Trust Visibility 1. 实验室环境1.1 实验室环境1.2 小测试 2. The Endor System2.1 部署应用2.2 检查现有策略 3. Cilium 策略实体3.1 创建 allow-all 网络策略3.2 在 Hubble CLI 中验证网络策略源3.3 …...

OPenCV CUDA模块图像处理-----对图像执行 均值漂移滤波(Mean Shift Filtering)函数meanShiftFiltering()

操作系统&#xff1a;ubuntu22.04 OpenCV版本&#xff1a;OpenCV4.9 IDE:Visual Studio Code 编程语言&#xff1a;C11 算法描述 在 GPU 上对图像执行 均值漂移滤波&#xff08;Mean Shift Filtering&#xff09;&#xff0c;用于图像分割或平滑处理。 该函数将输入图像中的…...

Mobile ALOHA全身模仿学习

一、题目 Mobile ALOHA&#xff1a;通过低成本全身远程操作学习双手移动操作 传统模仿学习&#xff08;Imitation Learning&#xff09;缺点&#xff1a;聚焦与桌面操作&#xff0c;缺乏通用任务所需的移动性和灵活性 本论文优点&#xff1a;&#xff08;1&#xff09;在ALOHA…...

【Android】Android 开发 ADB 常用指令

查看当前连接的设备 adb devices 连接设备 adb connect 设备IP 断开已连接的设备 adb disconnect 设备IP 安装应用 adb install 安装包的路径 卸载应用 adb uninstall 应用包名 查看已安装的应用包名 adb shell pm list packages 查看已安装的第三方应用包名 adb shell pm list…...

Kubernetes 网络模型深度解析:Pod IP 与 Service 的负载均衡机制,Service到底是什么?

Pod IP 的本质与特性 Pod IP 的定位 纯端点地址&#xff1a;Pod IP 是分配给 Pod 网络命名空间的真实 IP 地址&#xff08;如 10.244.1.2&#xff09;无特殊名称&#xff1a;在 Kubernetes 中&#xff0c;它通常被称为 “Pod IP” 或 “容器 IP”生命周期&#xff1a;与 Pod …...

Unity中的transform.up

2025年6月8日&#xff0c;周日下午 在Unity中&#xff0c;transform.up是Transform组件的一个属性&#xff0c;表示游戏对象在世界空间中的“上”方向&#xff08;Y轴正方向&#xff09;&#xff0c;且会随对象旋转动态变化。以下是关键点解析&#xff1a; 基本定义 transfor…...

[论文阅读]TrustRAG: Enhancing Robustness and Trustworthiness in RAG

TrustRAG: Enhancing Robustness and Trustworthiness in RAG [2501.00879] TrustRAG: Enhancing Robustness and Trustworthiness in Retrieval-Augmented Generation 代码&#xff1a;HuichiZhou/TrustRAG: Code for "TrustRAG: Enhancing Robustness and Trustworthin…...

云原生周刊:k0s 成为 CNCF 沙箱项目

开源项目推荐 HAMi HAMi&#xff08;原名 k8s‑vGPU‑scheduler&#xff09;是一款 CNCF Sandbox 级别的开源 K8s 中间件&#xff0c;通过虚拟化 GPU/NPU 等异构设备并支持内存、计算核心时间片隔离及共享调度&#xff0c;为容器提供统一接口&#xff0c;实现细粒度资源配额…...

Unity VR/MR开发-VR开发与传统3D开发的差异

视频讲解链接&#xff1a;【XR马斯维】VR/MR开发与传统3D开发的差异【UnityVR/MR开发教程--入门】_哔哩哔哩_bilibili...