JMeter接口测试-5.JMeter高级使用

JMeter高级使用

案例:

  • 用户登录后-选择商品-添加购物车-创建订单-验证结果

问题:

  • JMeter测试中,验证结果使用断言,但断言都是固定的内容
  • 假如要判断的内容(预期内容)是在变化的, 有时候还是不确定的, 那该怎么办呢?

解决:

  • 1.通过查询数据库获取动态的结果
  • 2.使用beanshell断言进行结果验证

实现步骤:

  • 创建登录接口HTTP请求

  • 创建添加购物车接口HTTP请求

  • 创建订单接口HTTP请求,通过数据查看订单号

  • 对订单接口结果验证,是否创建订单号

    • 查询数据库获取结果

    • 使用beanshell断言进行动态结果验证

1. JMeter连接数据库

1.1 数据库配置信息

配置信息:

  • ip:192.168.1.242
  • port:7090
  • 用户名:test
  • 密码:test123456
  • 数据库名称:xxxx

可使用数据库连接工具进行连接,例如:navicat

image-20240730150454330

1.2 连接数据库

  • 元件JDBC Connection Configuration进行连接数据库

实现步骤:

  • 1.下载MySQL的jdbc驱动(mysql-connector-java.jar)

    • https://mvnrepository.com/artifact/mysql/mysql-connector-java
      • image-20200209163119761
    • 将其放到放在指定的目录,或者放在 …\apache-jmeter\lib\ 目录下

    在这里插入图片描述

  • 在测试计划下添加驱动地址

    • 在这里插入图片描述

    • 备注:

      • 如果放在jmeter/bin目录,则不需要在测试计划下添加jar包
  • 选择线程组-添加-配置原件-JDBC Connection Configuration

    • 主要配置

      • Variable Name Bound to Pool
        • 配置变量名称
        • Variable Name不能为空
      • Database connection
        • DataBase URL 格式为:jdbc:mysql://服务器ip:端口号/数据库
        • 在数据库后加参数?allowMultiQueries=true,可同时执行多条mysql语句;否则报错
        • select语句中含有中文字符的缘故,jmeter识别不了。
          • 解决办法:就是在JDBC 的连接中,增加useUnicode=true&characterEncoding=utf8
    • jdbc:mysql://211.103.136.242:7090/db-name
      test
      test123456
      

在这里插入图片描述

  • 添加JDBC Request

    • 添加-> 取样器-> JDBC Request
      • 添加变量和查询语句
      • 变量名必须和JDBC Connection Configuration中的变量名保持一致
  • image-20200209224521555

  • 查询语句

    • select order_id from tb_order_info where user_id='1' order by order_id desc limit 3
      
  • Variable names:将查询结果当做一个参数使用

  • 查出来的数据有好些内容,调用方式

    ```
    取数据第1值调用:$ {test_01}
    取数据第5值调用:$ {test_05}
    取数据第n值调用:$ {test_n}
    

    image-20200209224750397

2. Beanshell使用

2.1 介绍

什么是Bean Shell?

  • BeanShell是一种完全符合Java语法规范的脚本语言,并且又拥有自己的一些语法和方法;

  • BeanShell是一种松散类型的脚本语言(这点和JS类似);

  • BeanShell是用Java写成的,一个小型的、免费的、可以下载的、嵌入式的Java源代码解释器,具有对象脚本语言特性,非常精简的解释器jar文件大小为175k。

  • BeanShell执行标准Java语句和表达式,另外包括一些脚本命令和语法。

官网:http://www.BeanShell.org/

JMeter中用BeanShell的好处

  • JMeter也是由java编写的,而java运行时需要先编译,然后才可以运行
  • 而BeanShell是一款解释器,直接可能运行源代码

BeanShell在JMeter的作用

  • 对JMeter的功能的扩展
  • 对jmeter变量的一些操作

2.2 Jmeter有哪些BeanShell

  • 定时器:  BeanShell Timer
  • 前置处理器:BeanShell PreProcessor
  • 取样器:  BeanShell Sampler
  • 后置处理器:BeanShell PostProcessor
  • 断言:   BeanShell断言
  • 监听器:  BeanShell Listener

备注:

  • 一般归属于线程组或逻辑控制器,相对独立
  • 而BeanShell PreProcessor和BeanShell PostProcessor归属于sampler(取样器)
    • 前者是固定在sampler运行前运行
    • 后者是在sampler运行后运行,二者都依赖于sampler而存在
  • BeanShell断言同样依赖于sampler,作用是断言sampler是否成功

应用场景

  • 生成变量
  • 解析响应结果
  • 定制化逻辑处理
  • Beanshell还常用于请求发送前后的加密解密

2.3 Bean Shell常用内置变量

JMeter在它的BeanShell中内置了变量,用户可以通过这些变量与JMeter进行交互,其中主要的变量

  • log

    • 打印日志
  • ctx

    • 该变量引用了当前线程的上下文
  • vars - (JMeterVariables)

    • 操作jmeter变量
  • props - (JMeterProperties)

    • 操作jmeter属性,该变量引用了JMeter的配置信息,可以获取Jmeter的属性
  • prev - (获取sample返回的信息)

    • 获取前面的sample返回的信息
  • Response

    • 获取Response对象,能通过这个对象获取响应信息
  • Failure

    • 查看接口调使用能否成功,假如返回false是成功的,true是失败的
  • FailureMessage

    • 失败信息,没有设置的时候失败信息是空的,可自定义相关信息
  • ResponseCode

    • 返回接口code成功是200
  • SampleLabel

    • 获取接口请求的名称
  • SamplerData

    • 获取请求的url和body

备注:

  • 变量只对当前线程组有效,属性是全局的。变量和属性的值只能是字符串。

2.4 内置变量详解介绍

2.4.1 log

介绍

  • 用于打印日志,最常用,也最简单;
  • 打印在 jmeter.log 中,可以设置打印级别,可以打印字符串、变量等。

使用方法

参考:http://excalibur.apache.org/apidocs/org/apache/log/Logger.html

  1. 打印 info 形式的普通字符串日志:

    log.info("hello world"); 
    #输出 hello world
    
  2. 拼接字符串和变量 (其中 token 是 jmeter 局部变量):

    log.info("hello world" + "${token}"); 
    #输出 hello world 和 token 变量的拼接结果
    
  3. 打印自定义变量

    str = "hello world";
    log.info(str);
    #输出 hello world
    
  4. 打印 error 形式的普通字符串日志,修改JMeter日志输出级别,否则看不到

    log.error("ERROR-ERROR");
    

备注:

  • print() 打印日志
  • print() 是在控制台中输出信息,log() 默认是在 jmeter.log 中输出信息
  • 日志文件在安装路径下bin\Jmeter.log中

2.4.2 vars

介绍

  • 用于存取 jmeter 局部变量
  • 通常用于存取字符串内容,也可以存取对象;

使用方法

参考:http://jmeter.apache.org/api/org/apache/jmeter/threads/JMeterVariables.html

  1. 获取变量

    • vars.get()
  2. String key = vars.get("name");
    #获取变量名为 name 的值,并保存在 key 中
    
  3. 保存变量

    • vars.put()

      vars.put("name","value"); 
      #把变量 name(值为 value)保存到jmeter变量中
      
  4. 对象保存JMeter变量中

    • vars.putObject()

      vars.putObject("Object_name",new Object()); 
      把对象Object_name保存到jmeter变量中
      
  5. 变量删除

    • vars.remove()

      vars.remove("name");
      #从jmeter变量中删除name
      

print() 是在控制台中输出信息,log() 默认是在 jmeter.log 中输出信息。

备注:

  • bean shell提供了一个内置变量Parameters,来保存参数的集合

    • log.info(Parameters);
      
  • Parameters

    • #输入${name1}${name2}
      #脚本 
      //打印
      log.info("传递的参数列表"+Parameters);
      log.info("name1:"+bsh.args[0]);log.info("name2:"+bsh.args[1]);
      log.info("name3:"+bsh.args[2]);
      log.info("name3:"+bsh.args[3]);
      //获取参数传递过来的值存在变量里
      vars.put("v1","bsh.args[1]");
      vars.put("v2","bsh_args[2]");
      vars.put("v3","bsh_args[3]");log.info("v1:");
      log.info("v2:");
      log.info("v3:");
      
2.4.3 props

介绍:

  • 设置 jmeter 全局的静态变量;

使用方法:

  1. 获取属性变量

    • props.get

    • ymd = props.get("START.YMD");
      #获取属性 START.YMD 的值(脚本启动日期)
      #其中的 key 和 value 均是字符串形式;
      
  2. 存入全局属性

    • props.put

    • props.put("token","12ddb123")
      
  3. 判断某属性是否存在, 返回布尔值

`props.containsKey(``"PROPERTY_NAME"``)  `
  1. 判断某项值是否存在,返回布尔值:
props.contains("PROPERTY_VALUE")
  1. 删除某个值
props.remove("PROPERTY_NAME")
  1. 所有属性以字符串形式表示
props.toString()

备注:

  • 操作jmeter属性,该变量引用了JMeter的配置信息,可以获取Jmeter的属性,它的使用方法与vars类似,但是只能put进去String类型的值,而不能是一个对象
  • 变量只对当前线程组有效,属性props是全局的
  • 变量和属性的值只能是字符串
2.4.4 ctx/prev

介绍:

  • ctx当前线程的上下文信息
  • prev等同于ctx.getPreviousResult,通过prev可以直接获取前一个取样器返回的信息

使用方法:

参考:ctx:http://jmeter.apache.org/api/org/apache/jmeter/threads/JMeterContext.html

参考:prev:http://jmeter.apache.org/api/org/apache/jmeter/samplers/SampleResult.html

  • prev.getResponseDataAsString():获取响应信息
  • prev.getResponseCode() :获取响应code
String response_data = prev.getResponseDataAsString();
log.info("res:"+response_data);
String response_code = prev.getResponseCode();
log.info("res_code:"+response_code);
2.4.5 其它

使用方法:

参考:http://jmeter.apache.org/api/org/apache/jmeter/samplers/Sampler.html其它

  1. ResponseCode响应码

    • 代码:
    ResponseCode = 500;
    
    • 结果

    在这里插入图片描述

  2. ResponseMessage响应结果

    • 代码

    • ResponseMessage="自定义返回结果"
      
    • 结果

      image-20200216215902169

  3. SampleResult

    • 代码

    • SampleResult.setResponseData("Hello world");
      
    • 与ResponseMessage功能类似

  4. IsSuccess设置返回是否成功

    • 代码

    • IsSuccess=false
      
    • 结果

      image-20200216220205122

  5. Label取样器的名称

    log.info(Label);
    
  6. Sample

    通过sampler来访问当前取样器;

    使用方法参考:http://jmeter.apache.org/api/org/apache/jmeter/samplers/Sampler.html

2.4.6 Beanshell线程共享变量

分析:

  • 变量只对当前线程组有效,属性是全局的

  • 使用beanshell把变量设置为全局变量

线程共享变量

  • Beanshell取样器设置全局属性

    • 使用函数助手

    • ${__setProperty(authorizations,${token},)}
      
    • 使用props

    • props.put("authorizations","${token}")
      
  • 其它线程组通过JWT ${__property(authorizations,,)}

  • HTTP响应信息头更新

    • JWT ${__property(authorizations,)}
    • image-20200209232842519

    JMeter中线程间共享变量可以通过定义属性值来完成,JMeter启动时会读取一些属性文件,比如jmeter.properties、user.properties,这些属性

值是可以增加的,也可以修改的,通过BeanShell可以对其进行更改。

以BeanShell Sampler为例,在其中通过props.put()来增加属性,props.get()来获取属性。

在其它Sampler中,比如Java Sampler中通过 ${__property(【属性名称】,)}来获取。

2.5 Beanshell

通过Beanshell Sampler,测试人员可以编写一些特定逻辑生成的数据,并且通过vars.get、vars.put 或者props.get、props.put 把相应的变量传递到Jmeter脚本当中

vars.get(String,String) 可以获取Jmeter中已经生成的变量

vars.put(String,String) 可以创建和更新Jmeter变量

props.get(String,String) 可以获取Jmeter中已经生成的属性

props.put(String,String) 可以创建和更新Jmeter属性

vars和props的区别是前者是变量,只能在同一线程组内传递,后者是属性,可以在整个测试计划中跨线程组传递。

beanshell参数详解:

  • 勾选每次调用前重置,里面定义的变量就会被重置。

  • 脚本文件可以导入beanshell脚本

  1. 调用java文件

java源文件

public class Myclass
{public int add(int a, int b){return a + b;}    
}

步骤:

  • 在bean shel中通过source(“代码路径”)方法引入java,然后调用方法和java一样,new一个class,再调用里面的add 方法
//引入java文件  source将一个bsh脚本读到解释器或运行在另一个解释器
source("/TEST/Test.java");//绝对路径
//调用方法,语法和java一样
int res = new Test().add(1,2);
//保存变量
vars.put("add",res.toString());
  1. 引入外部class文件

    直接把上例中的java文件编译成class文件

    用addClassPath(“D:\”)方法引入 class文件,在用import导入包及类,然后就可以像java一样调用了

//引入class文件
addClassPath("/Users/wuyanhong/Desktop/提升小课/接口测试零基础入门/代码/");
//导入类名
import MyClass;
//调用
int res = new MyClass().add(1,2);
//保存变量
vars.put("add",res.toString());
//打印变量
log.info(vars.get("add"));

案例1:获取当前时间格式为yyyy-MM-dd HH:mm:ss

下面举例写展示当前日期:开发给个接口需要传递当前时间格式为yyyy-MM-dd HH:mm:ss
import java.util.*;import java.text.*;Date d = new Date();DateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");String dateStr = df.format(d);vars.put("current_date",dateStr);  //给jmeter添加一个变量,内置变量

2.6 Beanshell断言

BeanShell断言可以使用beanshell脚本来执行断言检查,可以用于更复杂的个性化需求,使用更灵活,功能更强大,但是要能够熟练使用beanshell脚本。

在这里除了可以使用beanshell的内置变量外,主要通过Failure和FailureMessage来设置断言结果。

  1. Failure = false;-----表示断言成功
  2. Failure = true;-----表示断言失败
  3. FailureMessage = “……”;-----自定义的失败信息。

实现步骤:

  • 在保存订单接口下添加beanshell断言

  • 编写断言代码

    • //数据库的取值与接口正则取值比对
      if("${db_order_id_1}".equals("${order_id}_1")) {Failure=false;System.out.println("OK");
      }
      else
      { Failure=true;FailureMessage="不一致";
      }
      
      image-20200209231853393

参数详解:

  • bsh.args[0],bsh.args是一个数组,里面保存的是beanshell【参数】输入框中保存的变量
  • 参数:可以将其他元件中已经定义的变量作为参数传给beanshell脚本,传入的参数被存在bsh.args数组中
  • 脚本文件:可以从文件导入脚本,而不是直接写。
  • 脚本:直接编写beanshell代码

2.7 BeanShell PreProcessor

测试中接口请求参数大部分需要加密后请求,处理需要加密的参数就需要用到jmeter中的前置处理器BeanShell PreProcessor

案例:实现登录密码加密并请求登录接口

  1. 在eclipse写好md5加密的代码,然后打成jar包(选中该类点击右键->Export->jar file)

    import java.security.MessageDigest;
    import java.security.NoSuchAlgorithmException;public class MD5 {public static String getMD5(String sourceStr) {try {MessageDigest md = MessageDigest.getInstance("MD5");//获取MD5实例md.update(sourceStr.getBytes());//此处传入要加密的byte类型值byte[] digest = md.digest();//此处得到的是md5加密后的byte类型值int i;StringBuilder sb = new StringBuilder();for (int offset = 0; offset < digest.length; offset++) {i = digest[offset];if (i < 0)i += 256;if (i < 16)sb.append(0);sb.append(Integer.toHexString(i));//通过Integer.toHexString方法把值变为16进制}return sb.toString();} catch (NoSuchAlgorithmException e) {e.printStackTrace();return null;}}public static  void main(String []args){String res = MD5.getMD5("123456");System.out.println(res);}}
  2. 把打好的jar包放到jmeter目录下的apache-jmeter目录的lib\ext下;

  3. 添加前置处理器-BeanShell PreProcessor

  4. 编写代码

  5. import demo.MD5;
    String res = new MD5().getMD5("123456");
    System.out.println(res);
    vars.put("md5_pwd",res.toString());
    

    //把加密后的密码存到jmeter变量中,然后在http sampler中就可通过${}使用:

  6. 执行测试

2.8 BeanShell PostProcessor

获取响应结果,关联操作

下载解析jar包:https://mvnrepository.com/artifact/com.alibaba/fastjson/1.2.62

步骤:

  1. 获取响应,把响应结果转为json对象
  2. 获取响应参数,并打印断言结果
  3. 设置变量

代码:

//1.获取响应,把响应结果转为json对象
String response_data = prev.getResponseDataAsString();
JSONObject data_obj = new JSONObject(response_data);
log.info("res:"+response_data);
//2.获取响应参数,打印断言结果
String name=data_obj.get("username").toString();
log.info("name:"+name);
vars.put("username",name);
//3.判断结果
if(name.equals("python")){log.info("成功"); 
}
else
{ log.info("失败");
}

总结:

拓展:

beanshell中参数传递一般指的是先获取到参数,再传递参数。在beanshell中传递参数一般使用vars.put(key,value)方法。

注意:

1.vars.get()不能接收int参数

2.vars.put(key,value)中,key要用双引号""括起来

3. 并发测试

  • ”并发测试”理解为性能测试,但接口测试中并发测试仅关注于并发测试系统的返回结果是否正确
  • 并不关心相关的性能指标,例如系统资料、服务器响应时间等等
  • 为了实现并发,我们可以在需要压力的地方设置集合点,每到输入用户名和密码登录时,所有的虚拟用户都相互之间等一等,然后一起访问

3.1 集合点

jmeter里面的集合点通过添加定时器同步定时器

启动:

  • 点击线程组,右键点击添加->定时器->同步定时器

    • image-20200210112801052

用法:

  • 模拟用户组的数量:集合多少人再执行请求(也就是执行的线程数)
    注意:等同于设置为线程数,一定要确保设置的值不大于它所在线程组包含的用户数

  • 超时时间以毫秒为单位:指定人数 多少秒没交集合到算超时(设置延迟时间以毫秒为单位)

    • 注意:如果设置timeout in milliseconds为0,表示无超时时间,会一直等下去。
    • 线程数量无法达到"Number of Simultaneous Users to Group by"中设置的值,那么Test将无限等待,除非手动终止。
  • 如果希望定时器仅用于其中一个取样器,则把该定时器作为子节点加入

    • image-20200210113123344
  • 如果是作用于多个,放置请求之前

    • image-20200210113223257

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

stm32入门-----硬件I2C读写MPU6050

目录 前言 一、stm32中I2C库函数介绍&#xff08;stm32f10x_i2c.h&#xff09; 1.初始化 2.使能操作 3.生成起始位和结束位标志 4.发送I2C从机地址 5.发送数据和接收数据 6.发送应答位 7.状态检测 二、硬件I2C读取MPU6050 1.电路连线图 2.主要工程文件 3.MPU6050.…

虚拟机(CentOS7)安装jenkins

centos7安装jenkins 前提条件&#xff0c;安装jdk与maven 1、JDK17安装 # 进入系统管理员 sudo root # 进入对应文件夹下 cd /usr/local # 下载jdk17 wget https://download.oracle.com/java/17/latest/jdk-17_linux-x64_bin.rpm # rpm命令安装下载的jdk17 rpm -ivh jdk-17_li…

GPU爆显存 | Windows下杀死GPU进程释放显存

文章目录 0 问题引入1 解决方案 0 问题引入 深度学习的时候&#xff0c;用CUDA加速训练了&#xff0c;但是进程没有完全结束&#xff0c;再跑的时候爆显存了。 1 解决方案 查看当前的GPU进程 nvidia-smi通过如下命令来杀死指定的进程。 taskkill /PID PID号 /F //例如&am…

Netty一

Netty Netty介绍 Netty应用场景 I/O模型 阻塞IO 同步非阻塞IO 异步非阻塞IO BIO NIO AIO对比 Netty线程模型 Reactor模式 单Reactor单线程 单Reactor多线程 主从Reactor多线程 Netty模型 异步模型 Future-Listener机制 TCP粘包拆包基本介绍 Netty内存使用 Netty内存池化 Netty…

Spring中使用Async进行异步功能开发实战-以大文件上传为例

目录 前言 一、场景再现 1、Event的同步机制 二、性能优化 1、异步支持配置 2、自定义处理线程池扩展 3、将线程池配置类绑定到异步方法 三、总结 前言 在之前的博客中&#xff0c;曾将讲了在SpringBoot中如何使用Event来进行大文件上传的解耦&#xff0c;原文地址&…

Java-变量,运算符,输入与输出

目录 一&#xff0c;语法基础 1.基本Java程序 2.语法基础 2.1 变量 2.2 常量限制(fiinal)类比C中的const 2.3 类型转化 2.4 运算符 2.5 表达式 2.5 输入与输出 2.5.1 输入 2.5.2 输出 一&#xff0c;语法基础 1.基本Java程序 public class Main{public static void…

C#使用NPOI进行Excel和Word文件处理(一)

文章目录 前言文件大小性能NPOI 的优势示例代码性能优化建议总结Github 地址链接导出效果 前言 NPOI 是一个非常流行的用于在 .NET 环境中操作 Office 文件&#xff08;包括 Excel 文件&#xff09;的开源库。它的功能非常强大&#xff0c;但性能和文件大小问题可能因具体的使…

虚拟机如何使用pxe服务实现自动安装系统

一、前提 服务机为rhel7.9 因为我们需要虚拟机为服务器来给要安装系统的虚拟机分配IP 所以要先将VMWare的NAT模式的DHCP自动分配取消&#xff0c;如图&#xff1a; yum install httpd -y systemctl enable --now httpd 二、基于HTTP协议的PXE服务器 1、首先需要进入图形化…

Redis-管道

面试题 如何优化频繁命令往返造成的性能瓶颈 Redis是一种基于客户端-服务端模型以及请求/响应协议的TCP服务。一个请求会遵循以下步骤: 1 客户端向服务端发送命令分四步(发送命令-命令排队一命令执行-返回结果)&#xff0c;并监听Socket返回&#xff0c;通常以阻塞模式等待服…

How does age change how you learn?(2)年龄如何影响学习能力?(二)

Do different people experience decline differently? 不同人经历的认知衰退会有不同吗? Do all people experience cognitive decline uniformly?Or do some people’s minds slip while others stay sharp much longer? 所有人经历的认知衰退都是一样的吗?还是有些人…

Linux--应用层协议HTTP

HTTP协议 HTTP协议&#xff08;HyperText Transfer Protocol&#xff0c;超文本传输协议&#xff09;是互联网上应用最为广泛的一种网络协议&#xff0c;它基于TCP/IP通信协议来传送数据&#xff0c;规定了浏览器与服务器之间数据传输的规则&#xff0c;确保数据能够在网络源头…

JavaEE 第1节 认识多线程

本节目标&#xff08;全是重点&#xff0c;都必须掌握&#xff09; 1、了解什么是线程、多线程、进程以及他们之间的关系 2、了解多线程的优势以及各种特性 3、用Java掌握多种创建线程的方法 一、线程、多线程、进程 1、概念 1.基本概念 这三个名词的概念可以用一个餐馆…

安卓自定义控件

文章目录 引入布局创建自定义控件 引入布局 首先创建一个项目&#xff0c;创建一个空的活动。然后右键单击res/layout创建一个Layout Resource File文件&#xff0c;取名title.xml。 <?xml version"1.0" encoding"utf-8"?> <LinearLayout xmln…

【Linux】win 环境下进行 linux开发

文章目录 IDE 安装Python开发创建一个新项目安装 Python、pip 和 venv创建虚拟环境&#xff08;建议&#xff09;运行Python 参考文章 想要win 环境下进行 linux开发&#xff0c;需要依赖于wsl。wsl安装可参考上篇文章 【Linux】wsl win安装Linux环境 这里主要介绍在 linux下…

《学会 SpringMVC 系列 · 剖析入参处理》

&#x1f4e2; 大家好&#xff0c;我是 【战神刘玉栋】&#xff0c;有10多年的研发经验&#xff0c;致力于前后端技术栈的知识沉淀和传播。 &#x1f497; &#x1f33b; CSDN入驻不久&#xff0c;希望大家多多支持&#xff0c;后续会继续提升文章质量&#xff0c;绝不滥竽充数…

【大模型系列】Video-LLaVA(2023.12)

Paper&#xff1a;https://arxiv.org/pdf/2311.10122v2Github&#xff1a;https://github.com/PKU-YuanGroup/Video-LLaVAHuggingface&#xff1a;https://huggingface.co/spaces/LanguageBind/Video-LLaVAAuthor&#xff1a;Bin Lin et al. 北大袁粒团队 文章目录 1 Video-LLa…

各地级市能源消费总量、夜间灯光值数据(2000-2022年)

全国各地级市能源消费总量、夜间灯光值数据&#xff08;2000-2022年&#xff09; 数据年限&#xff1a;2000-2022年 数据格式&#xff1a;excel 数据内容&#xff1a;337个地级市能源消费总量、夜间灯光值数据&#xff0c;包括城市、省份、年份、夜间灯光值&#xff08;总和&am…

基于pytorch的steam游戏评分的线性回归问题分析

前言 相信已经暑假一个月的大家肯定并不陌生上面这个学习软件()&#xff0c;面对琳琅满目的游戏总是让人不知道挑选什么&#xff0c;这时候一个游戏的评分往往便成为了一个玩家选择下载的原因&#xff0c;那么今天我们就来研究研究&#xff0c;steam上一个游戏的种种数据&…

【window10/window11】解决任务管理器有进程无法强制结束情况

以管理员身份启动控制台窗体&#xff0c;然后从任务管理器中查询到你要结束的进程名&#xff0c;然后运行以下命令&#xff08;UniAccessAgent.exe替换成你要结束的进程&#xff09;&#xff1a; wmic process where nameUniAccessAgent.exe delete 此方法可以解决在任务管理…

快速体验LLaMA-Factory 私有化部署和高效微调Llama3模型(曙光超算互联网平台异构加速卡DCU)

序言 本文以 LLaMA-Factory 为例&#xff0c;在超算互联网平台SCNet上使用异构加速卡AI 显存64GB PCIE&#xff0c;私有化部署Llama3模型&#xff0c;并对 Llama3-8B-Instruct 模型进行 LoRA 微调、推理和合并。 快速体验基础版本&#xff0c;请参考另一篇博客&#xff1a;快…