接口测试—知识速查(Postman)
文章目录
- 接口测试
- 1. 概念
- 2. 原理
- 3. 测试流程
- 4. HTTP协议
- 4.1 URL的介绍
- 4.2 HTTP请求
- 4.2.1 请求行
- 4.2.2 请求头
- 4.2.3 请求体
- 4.2.4 完整的HTTP请求示例
- 4.3 HTTP响应
- 4.3.1 状态行
- 4.3.2 响应头
- 4.3.3 响应体
- 4.3.4 完整的HTTP请求示例
- 5. RESTful接口规范
- 6. 测试用例的设计思路
- 6.1 单接口测试
- 6.2 多接口测试
- 7 自动化框架的设计思路
- 7.测试工具(Postman)
- 7.1 Postman 断言
- 7.1.1 响应状态码断言
- 7.1.2 包含指定字符串断言
- 7.1.3 JSON数据断言
- 7.1.4 请求头断言
- 7.2 Postman 环境变量
- 7.2.1 全局变量/公有变量
- 7.2.2 局部变量/私有变量
- 7.2 Postman 关联
- 7.3 Postman 请求前置脚本
- 7.3 Postman 参数化
- 7.4 Postman 报告(Newman)
- 7.4.1 安装步骤
- 7.4.2 运行步骤
- 7.5 Tips小提示
- 7.5.1 使中文可以正常显示提供的方法
- 面试题
- Cookie,Session,Token的区别
接口测试
1. 概念
接口可以分为软件接口和硬件接口 。
硬件接口:是指同一计算机不同功能层之间的通信规则称为接口。可以理解为负责连接外部设备的入 口,传输数据的端口,比如usb接口。
软件接口:就是指程序中具体负责在不同模块之间传输或接受数据并做处理的类或者函数。(数据交互的通道)
2. 原理
模拟客户端向服务器发送请求,服务器接收请求后进行相应的业务处理,并向客户端返回响应数据,检查响应数据是否符合预期。
- 请求:是否正确,默认请求成功是200(GET),如果请求错误也能返回404、500等。
- 检查:返回数据的正确性与完整性
- 安全性:接口一般不会暴露在网上任意被调用,需要做一些限制,比如次数限制
3. 测试流程
1、需求分析:主要依据需求文档
2、接口文档解析:一般是由开发人员编写接口文档(API文档)
3、设计测试用例
4、执行测试:使用接口测试工具实现通过编写代码实现
5、接口缺陷管理与跟踪
6、生成测试报告
7、接口自动化持续集成
4. HTTP协议
- HTTP:(HyperText Transfer Protocol)超文本传输协议,是一个基于请求与响应模式的、应用层的协议,也是互联网上应用最为广泛的一种网络协议。
4.1 URL的介绍
- Uniform Resource Locator 统一资源定位符,是互联网上标准资源的地址。HTTP使用URL来建立连接和传输数据。
https://www.baidu.com/s?wd=软件&测试
1、协议部分:“https”,常见的协议有HTTP,HTTPS、FTP等
2、域名部分:“www.baidu.com”,也可以使用IP地址作为域名使用
3、端口部分:“8080”,端口可以省略,默认端口(HTTP:80,HTTPS:443,FTP:21)
4、资源路径部分:“/s”
5、查询参数部分:“?wd=软件&测试”,可以允许有多个参数,多个之间用“&”作为分隔符
4.2 HTTP请求
- http请求由三部分组成,分别是:请求行、请求头、请求体。
4.2.1 请求行
-
请求行包含请求方法、请求目标和HTTP协议版本。
-
常用请求方法:
GET:从服务器获取资源(一项或多项)。
POST:在服务器新建一个资源。
PUT:在服务器更新资源(客户端提供改变后的完整资源) 。
DELETE:从服务器删除资源。
-
示例:
GET /index.html HTTP/1.1
4.2.2 请求头
-
请求头包含了关于请求的附加信息,如请求的主机、内容类型、认证信息等。
-
常见的请求头:Host、Content-Type、Authorization等。
-
Content-Type:请求体数据类型
text/html:HTML格式
image/jpeg:jpg图片格式
application/json:JSON数据格式
application/x-www-form-urlencoded: 表单默认的提交数据格式
multipart/form-data:在表单中进行文件上传时使用
-
示例:
Host: www.example.com
Content-Type: application/json
Authorization: Bearer token
4.2.3 请求体
-
请求体是可选的,通常在使用POST或PUT方法时使用,用于向服务器发送数据。请求体可以包含表单数据、JSON数据等。
-
示例:
{
“name”: “John”,
“age”: 25
}
4.2.4 完整的HTTP请求示例
GET /index.html HTTP/1.1
Host: www.example.com
Content-Type: application/json
Content-Length: 34
Authorization: Bearer token
{
“name”: “John”,
“age”: 25
}
4.3 HTTP响应
- http响应由三部分组成:状态行、响应头、响应体。
4.3.1 状态行
-
状态行包含协议版本号、状态码、状态消息三部分。
-
状态码有三位数字组成,第一个数字定义了响应的类别。
-
状态码含义:
1xx 信息性响应,一般是告诉客户端,请求已经收到了,正在处理,别急…
2xx 处理成功响应,一般表示:请求收悉、我明白你要的、请求已受理、已经处理完成等信息.
3xx 重定向响应,它让客户端再发起一个请求以完成整个处理。
4xx 处理发生错误,责任在客户端,如客户端的请求一个不存在的资源,客户端未被授权,禁止访问等。
5xx 处理发生错误,责任在服务端,如服务端抛出异常,路由出错,HTTP版本不支持等。
-
常见响应状态码:
状态码 | 状态消息 | 说明 |
---|---|---|
200 | OK | 服务器成功返回用户请求的数据 |
201 | CREATED | 用户新建或修改数据成功 |
204 | NO CONTENT | 用户删除数据成功 |
301 | Moved Permanently | 被请求的资源已永久移动到新位置 |
302 | Move Temporarily | 被请求的资源临时性移动到新位置 |
400 | Bad Request | 客户端请求有语法错误,不能被服务器所理解 |
401 | Unauthorized | 未授权的(未登录) |
403 | Forbidden | 表示用户得到授权,但是访问是被禁止的 |
404 | Not Found | 请求资源不存在 |
500 | INTERNAL SERVER ERROR | 服务器发生错误,用户将无法判断发出的请求是否成功 |
503 | Server Unavailable | 服务器当前不能处理客户端的请求,一段时间后可能恢复正常 |
-
示例:
HTTP/1.1 200 OK
4.3.2 响应头
-
响应头包含服务器的基本信息,数据的描述(内容长度(Content-Length)、内容类型(Content-Type)、连接状态(Connection)、编码方式(charset)等等)。
-
示例:
Server: Apache/2.2.14 (Win32)
Content-Length: 88
Content-Type: text/html
Connection: Closed
4.3.3 响应体
-
响应的消息体,数据包含普通文本、XML、JSON、HTML源码等等。
-
示例:
Hello World!
4.3.4 完整的HTTP请求示例
HTTP/1.1 200 OK
Date: Mon, 27 Jul 2009 12:28:53 GMT
Server: Apache/2.2.14 (Win32)
Last-Modified: Wed, 22 Jul 2009 19:15:56 GMT
Content-Length: 88
Content-Type: text/html
Connection: Closed
Hello World!
5. RESTful接口规范
- RESTful :一种网络应用程序的设计风格和开发方式,提供了一组设计原则和约束条件。
- 示例:
操作 | 请求方式 | URL | 成功状态码 |
---|---|---|---|
查询某个用户 | GET | http://127.0.0.1:8080/myweb/users/1 | 200 |
查询所有用户 | GET | http://127.0.0.1:8080/myweb/users | 200 |
添加用户 | POST | http://127.0.0.1:8080/myweb/users | 201 |
修改用户 | PUT | http://127.0.0.1:8080/myweb/users/1 | 201 |
删除用户 | DELETE查询某个用户 | http://127.0.0.1:8080/myweb/users/1 | 204 |
- 特点:
- 请求 API 的 URL 用来定位资源
- 通过标准HTTP方法对资源进行增删改查操作
- 利用HTTP状态码返回状态信息
6. 测试用例的设计思路
- 接口功能测试:验证接口功能是否按照接口文档实现(输入+处理+输出)
6.1 单接口测试
-
正向功能:(通过性测试) 必填参数(p2),全部参数(p2),组合参数。
-
反向测试:(异常测试)
- 参数异常:多参、少参、无参、错误参数
- 数据异常:数据为空(p3)、长度不符(p3)、类型不符(p3)、错误数据、过期数据
- 业务数据异常:结合业务功能考虑输出的各种异常返回情况(业务数据不合理)(p3)
6.2 多接口测试
- 业务场景功能测试(站在用户角度考虑常用的使用场景)接口之间数据依赖
7 自动化框架的设计思路
- 搭建基础框架——整理项目目录。
- 通用功能类封装——封装通用功能,如数据库工具类等。
- 接口对象封装与调用——封装接口AOI对象,用pytest编写脚本调用。
- 测试数据参数化——测试数据json文件设计,参数化实现。
- 用例组织执行——执行测试用例,生成测试报告。
7.测试工具(Postman)
7.1 Postman 断言
- 作用:让Postman工具代替人工自动判定预期结果和实际结果是否一致。
7.1.1 响应状态码断言
- 模板名称:Status code: Code is 200
- 模板内容:
// 判断响应状态码是否等于200
pm.test("Status code is 200", function () {pm.response.to.have.status(200);
});// 解释说明:
pm.test(参数1:字符串-测试断言名称,参数2:回调函数-具体断言语句)
pm.response.to.have.status(code:Number); 判断是否含有指定状态码
7.1.2 包含指定字符串断言
- 模板名称:Response body: Contains string
- 模板内容:
// 判断响应结果是否包含指定字符串
pm.test("Body matches string", function () {pm.expect(pm.response.text()).to.include("string_you_want_to_search");
});// 解释说明:
pm.expect() // 接受实际结果
.to // 连接符,用于连接断言与判断
.include() // 用于指定断言方式和预期结果
pm.response.text() // 获取响应结果的文本
7.1.3 JSON数据断言
- 模板名称:Response body: JSON value check
- 模板内容:
// 校验响应的JSON数据
pm.test("Your test name", function () {var jsonData = pm.response.json();pm.expect(jsonData.value).to.eql(100);
});// 解释说明:
pm.response.json() // 获取响应结果的JSON数据
pm.expect(json对象的属性) // 接受实际结果
.to.eql() // 用于指定断言方式和预期结果
7.1.4 请求头断言
- 模板名称:response headers:content type header check
- 模板内容:
// 校验请求头的属性
pm.test("Content-Type is present", function () {pm.response.to.have.header("Content-Type");
});pm.response() // 获取响应对象
.to.have.header(请求头属性) // 用于指定断言方式和预期结果
7.2 Postman 环境变量
-
一套环境中,变量不能重复,各个环境变量之间,变量名可以重复,只对选择了对应环境的测试集生效。
-
环境的分类:开发环境、测试环境、生产/线上环境
-
应用场景:
-
url地址
-
header
-
body
注意:别忘了添加引号包裹,postman的特殊语法
-
-
调用:{{变量名}}
7.2.1 全局变量/公有变量
- 作用范围:针对postman下面所有测试集均生效
- Globals
- 代码获取全局变量:
# 获取全局变量
pm.globals.get("全局变量");
# 设置全局变量
pm.globals.set("全局变量", "变量值")
7.2.2 局部变量/私有变量
- 作用范围:针对某个环境下面所有测试集
- Variable
- 代码获取私有变量:
# 获取私有变量
pm.environment.get("私有变量");
# 设置私有变量
pm.environment.set("私有变量", "变量值")
注意:如果私有变量名与全局变量名相同,优先执行私有变量
7.2 Postman 关联
- 后一个接口的请求需要依赖前一个接口的响应数据,一般通过全局变量或者环境变量来进行参数在接口之间的传递。
- 流程图
7.3 Postman 请求前置脚本
- 在Pre-request Script页签编写,在请求发送之前被执行。
// 生成随机数 0到1之间的小数
var ran = Math.random()// 把刚刚的随机数放入到全局变量中
pm.globals.set("ran_key", ran);
7.3 Postman 参数化
-
场景:测试脚本中仅测试数据不一样,使用参数化提高脚本复用。
-
步骤:
-
测试数据保存在数据文件单独维护
-
引用数据文件实现脚本循环调用
-
-
准备数据文件:
# CSV文件
username,admin
username,
# json文件
[{"username":"admin"},{"username":""}
]
-
引用数据文件数据:
- 请求参数中获取:
引用相关对象的keyeg:{{username}}
- 代码中获取:
Postman内置data对象引用key
eg. data.status
7.4 Postman 报告(Newman)
7.4.1 安装步骤
-
先下载Node.js
https://nodejs.org/en/
-
安装NodeJs
打开cmd, 输入node, 如果没有报错, 说明node安装成功。
-
安装newman
打开cmd, 输入npm install -g newman
-
通过查看newman版本测试安装是否成功
打开cmd, 输入newman -v, 出现版本信息即安装成功
-
安装newman-reporter-html
打开cmd,输入:npm install -g newman-reporter-html
7.4.2 运行步骤
-
保存的文件目录(包含数据文件、测试集、局部变量、全局变量),cmd进入命令行黑窗口
注意:文件名不要有中文,空格等。
-
运行测试文件
格式:
newman run 测试脚本文件 -e 环境变量文件 -g 全局变量文件 -d 测试数据文件 -r html --reporter-html-export contract/contract.html
命令:
newman run postman_collection.json -e postman_environment.json -g postman_globals.json -d data.json -r html --reporter-html-export contract/contract.html
解释:
run 测试脚本文件:表示要执行的postman脚本,及导出的测试集
-e 环境变量文件:指定脚本中依赖的环境变量文件的路径
-g 全局变量文件:指定脚本中依赖的全局变量文件的路径
-d 测试数据文件:指定脚本中依赖的测试数据文件的路径
–reporter-html-export haha/hehe.html:代表生成的位置和名字
7.5 Tips小提示
7.5.1 使中文可以正常显示提供的方法
var UTFTranslate = {
ReChange:function(pValue){
return unescape(pValue.replace(/&#x/g,'%u').replace(/\\u/g,'%u').replace(/;/g,''));
}
};
const $ = cheerio.load(responseBody); // 把响应结果保存
var mydata = $("title").html();
mydata = UTFTranslate.ReChange(mydata); // 调用一开始的翻译函数
面试题
Cookie,Session,Token的区别
- Cookie:是一种在服务器产生在客户端保存数据的机制,通常用于记录用户登录状态、购物车信息等。Cookie可以设置过期时间,也可以设置为只在特定域名下有效。
- Session:是一种在服务器产生在服务器端保存数据的机制,通常用于记录用户登录状态、购物车信息等。Session可以在多个请求之间共享数据,但是需要通过加密等方式保证安全性。
- Token:是一种在服务器产生在客户端保存数据,用于身份验证的机制,通常用于API接口的身份验证。Token可以通过加密等方式保证安全性,并且可以在多个请求之间共享数据。
相关文章:

接口测试—知识速查(Postman)
文章目录 接口测试1. 概念2. 原理3. 测试流程4. HTTP协议4.1 URL的介绍4.2 HTTP请求4.2.1 请求行4.2.2 请求头4.2.3 请求体4.2.4 完整的HTTP请求示例 4.3 HTTP响应4.3.1 状态行4.3.2 响应头4.3.3 响应体4.3.4 完整的HTTP请求示例 5. RESTful接口规范6. 测试用例的设计思路6.1 单…...

机器学习深度学习——序列模型(NLP启动!)
👨🎓作者简介:一位即将上大四,正专攻机器学习的保研er 🌌上期文章:机器学习&&深度学习——卷积神经网络(LeNet) 📚订阅专栏:机器学习&&深度…...

小白到运维工程师自学之路 第六十四集 (dockerfile构建tomcat、mysql、lnmp、redis镜像)
一、tomcat(更换jdk) mkdir tomcat cd tomcat/ tar xf jdk-8u191-linux-x64.tar.gz tar xf apache-tomcat-8.5.40.tar.gzvim Dockerfile FROM centos:7 MAINTAINER Crushlinux <syh163.com> ADD jdk1.8.0_191 /usr/local/java ENV JAVA_HOME /us…...

超低功耗水表电器表LCD驱动显示芯片,高抗干扰性能提供LQFP48、LQFP64的封装
VK2C23是一个点阵式存储映射的LCD驱动器,可支持最大224点(56SEGx4COM)或者最大416点(52SEGx8COM)的LCD屏。单片机可通过I2C接口配置显示参数和读写显示数据,也可通过指令进入省电模式。其高抗干扰ÿ…...

SpringBoot3---核心特性---2、Web开发III(模板引擎、国际化、错误处理)
星光下的赶路人star的个人主页 夏天就是吹拂着不可预期的风 文章目录 1、模板引擎1.1 Thymeleaf1.2 基础语法1.3 属性设置1.4 遍历1.5 判断1.6 属性优先级1.7 行内写法1.8 变量选择1.9 模板布局1.10 devtools 2、国家化3、错误处理3.1 默认机制3.2 自定义错误响应3.3 最佳实战 …...

MemFire教程|FastAPI+MemFire Cloud+LangChain开发ChatGPT应用-Part2
基本介绍 上篇文章我们讲解了使用FastAPIMemFire CloudLangChain进行GPT知识库开发的基本原理和关键路径的代码实现。目前完整的实现代码已经上传到了github,感兴趣的可以自己玩一下: https://github.com/MemFire-Cloud/memfirecloud-qa 目前代码主要…...

C# File.Exists与Directory.Exists用法
File.Exists: 用于检查给定文件路径是否存在。如果文件存在,则返回true,否则返回false。 string path“D:\\test\\example.txt” bool exists File.Exists(path); if (exists) {Console.WriteLine("File exists."); } else {Con…...

(深度学习,自监督、半监督、无监督!!!)神经网络修改网络结构如何下手???
修改神经网络结构,我们可以根据这个进行添加: 卷积层(Convolutional Layers):标准的卷积层用于提取特征并进行特征映射。 池化层(Pooling Layers):用于减少特征图的空间维度&…...

Codejock Task Panel ActiveX Crack
Codejock Task Panel ActiveX Crack ActiveX COM的Codejock任务面板为Windows开发人员提供了一个复杂的Office任务面板,类似于在Microsoft Office和Windows资源管理器中看到的内容。TaskPanel甚至可以用作Visual Studio风格的工具箱。 功能概述 ActiveX COM的Codejo…...

LeetCode 热题 100 JavaScript--141. 环形链表
给你一个链表的头节点 head ,判断链表中是否有环。 如果链表中有某个节点,可以通过连续跟踪 next 指针再次到达,则链表中存在环。 为了表示给定链表中的环,评测系统内部使用整数 pos 来表示链表尾连接到链表中的位置(…...

文字转语音
键盘获取文字,转化为语音后保存本地 from win32com.client import Dispatch from comtypes.client import CreateObject from comtypes.gen import SpeechLib speakerDispatch(SAPI.SpVoice) speaker.Speak(请输入你想转化的文字) datainput(请输入:)#s…...

让ELK在同一个docker网络下通过名字直接访问
1. docker网络 参考https://blog.csdn.net/lihongbao80/article/details/108019773 https://www.freecodecamp.org/chinese/news/how-to-get-a-docker-container-ip-address-explained-with-examples/ 默认网络有三种,分别是 1、bridge模式,–netbridge(…...

EventBus 开源库学习(一)
一、概念 EventBus是一款在 Android 开发中使用的发布-订阅事件总线框架,基于观察者模式,将事件的接收者和发送者解耦,简化了组件之间的通信,使用简单、效率高、体积小。 一句话:用于Android组件间通信的。 二、原理…...

车载以太网SOME/IP的个人总结
如何实现CAN-SOME/IP通信路由测试 (qq.com) AutoSAR SOMEIP与SOC vsomeip通讯 (qq.com) 利用commonAPI和vSomeip对数据进行序列化 (qq.com) Vector - CANoe - VCDL与SomeIP (qq.com) 使用Wireshark 查看SOMEIP的方法 (qq.com) 基于AutoSAR的车载以太网测试 - SOMEIP之ECU做…...

vue2.29-Vue3跟vue2的区别
1、vue3介绍 更新(和重写)Vue的主要版本时,主要考虑两点因素:首先是新的JavaScript语言特性在主流浏览器中的受支持水平;其次是当前代码库中随时间推移而逐渐暴露出来的一些设计和架构问题。 相较于vue2,vu…...

【深度学习】分类和分割常见损失函数
分类 分类是一种监督机器学习任务,其中训练模型来预测给定输入数据点的类或类别。分类旨在学习从输入特征到特定类或类别的映射。 有不同的分类任务,例如二元分类、多类分类和多标签分类。 二元分类是一项训练模型来预测两个类别之一的任务,…...

Redhat Linux 安装MySQL安装手册
Redhat安装MySQL安装手册 1 下载2 上传服务器、解压并安装3 安装安装过程1:MySQL-shared-5.6.51-1.el7.x86_64.rpm安装过程2:MySQL-shared-compat-5.6.51-1.el7.x86_64.rpm安装过程3:MySQL-server-5.6.51-1.el7.x86_64.rpm安装过程4ÿ…...

题目:2303.计算应缴税款总额
题目来源: leetcode题目,网址:2303. 计算应缴税款总额 - 力扣(LeetCode) 解题思路: 按要求计算即可。注意最多产生 n1 个不同区间内的税款即可。 解题代码: class Solution {public doub…...

Kotlin 1.9.0 发布:带来多项新特性,改进 Multiplatform/Native 支持
新特性 Kotlin 的最新版本引入了许多新的语言特性,包括用于开放范围的…<操作符、扩展正则表达式等。此外,它还改进了 Kotlin Multiplatform 和 Kotlin/Native 支持。 Kotlin 1.9 稳定了与枚举类关联的 entries 属性,它会返回所定义的枚…...

接口测试——认知(一)
目录 引言 环境准备 1. 为什么要进行接口测试 2. 什么是接口 3. 接口测试与功能测试的区别 引言 为什么要做接口自动化测试? 在当前互联网产品迭代频繁的背景下,回归测试的时间越来越少,很难在每个迭代都对所有功能做完整回归。 但接…...

剑指 Offer 10- I. 斐波那契数列
写一个函数,输入 n ,求斐波那契(Fibonacci)数列的第 n 项(即 F(N))。斐波那契数列的定义如下: F(0) 0, F(1) 1 F(N) F(N - 1) F(N - 2), 其中 N > 1. 斐波那契数列由 0 和 1 开始&am…...

洪水填充算法详解
😜作 者:是江迪呀✒️本文关键词:算法、前端、JavaScript、HTML、洪水填充算法☀️每日 一言:不以物喜,不以己悲 一、前言 当象一个容器中注水时,无论容器的结构如何复杂,注入的水…...

ubuntu18.04安装docker及docker基本命令的使用
官网安装步骤:https://docs.docker.com/desktop/install/ubuntu/ docker快速入门教程 Ubuntu-Docker安装和使用 docker官网 docker-hub仓库 1、常用指令 (1)镜像操作 # ############################# 以nginx为例 docker images docker p…...

DataWhale 机器学习夏令营第二期——AI量化模型预测挑战赛 学习记录
DataWhale 机器学习夏令营第二期 学习记录一 (2023.08.06)1. 问题建模1.1 赛事数据数据集情况数据中缺失值类别和数值特征的基本分布 1.2 评价指标中间价的计算方式价格移动方向说明 1.3 线下验证 DataWhale 机器学习夏令营第二期 ——AI量化模型预测挑战赛 已跑通baseline&…...

简单认识ELK日志分析系统
一. ELK日志分析系统概述 1.ELK 简介 ELK平台是一套完整的日志集中处理解决方案,将 ElasticSearch、Logstash 和 Kiabana 三个开源工具配合使用, 完成更强大的用户对日志的查询、排序、统计需求。 好处: (1)提高安全…...

【算法笔记】深度优先遍历-解决排列组合问题-
深度优先遍历-解决排列组合问题 问题1: 假设袋子里有编号为1,2,…,m这m个球。现在每次从袋子中取一个球记下编号,放回袋中再取,取n次作为一组,枚举所有可能的情况。 分析: 每一次取都有m种可能的情况,因此…...

【雕爷学编程】Arduino动手做(184)---快餐盒盖,极低成本搭建机器人实验平台2
吃完快餐粥,除了粥的味道不错之外,我对个快餐盒的圆盖子产生了兴趣,能否做个极低成本的简易机器人呢?也许只需要二十元左右 知识点:轮子(wheel) 中国词语。是用不同材料制成的圆形滚动物体。简…...

应急响应-勒索病毒的处理思路
0x00 关于勒索病毒的描述 勒索病毒入侵方式:服务弱口令,未授权,邮件钓鱼,程序木马植入,系统漏洞等 勒索病毒的危害:主机文件被加密,且几乎难以解密,对主机上的文件信息以及重要资产…...

ChatGPT是否能够处理多模态数据和多模态对话?
ChatGPT有潜力处理多模态数据和多模态对话,这将进一步扩展其在各种应用领域中的实用性。多模态数据是指包含多种不同类型的信息,例如文本、图像、音频和视频等。多模态对话是指涉及多种媒体形式的对话交流,例如同时包含文本和图像的对话。 *…...

AcWing1171. 距离(lcatarjan)
输入样例1: 2 2 1 2 100 1 2 2 1输出样例1: 100 100输入样例2: 3 2 1 2 10 3 1 15 1 2 3 2输出样例2: 10 25 #include<bits/stdc.h> using namespace std; typedef long long ll; const int N2e55; int n,m,x,y,k,r…...