Postman工具初学一篇快速入门教程

文章目录

  • 下载安装
  • 注册登录
  • Collection
  • Folder
  • Request
    • Get请求
    • Post请求
    • Header设置
    • Response响应
  • Environments
    • Global环境变量
    • 其他环境变量
    • Collection变量
    • 变量使用
    • 同名变量的优先级
  • Postman内置变量
  • Pre-request script和Test script脚本
    • 设置、删除和获取变量
    • 获取请求参数
    • 获取响应数据
    • MD5、AES、SHA256加密
    • sendRequest请求接口
      • Get请求
      • Post请求
        • raw模式
        • xxx-www-form-urlencoded模式
        • form-data模式
        • xml模式
    • 断言测试
  • 控制台日志
  • 数据导入导出
    • 链接或文件方式导入
    • Collection导出
    • Environments导出
    • 导出本地Postman所有数据
    • 分享数据

Postman 是一个用于构建和使用 API 的 API 平台,Postman 简化了 API 生命周期的每个步骤并简化了协作,可以更快地创建更好的 API。
Postman 包含一个基于Node.js的强大的运行时,允许您向Request和Folder添加动态行为,这允许您编写测试套件,构建可以包含动态参数的请求,在请求之间传递数据等等。

版本说明:

在这里插入图片描述

下载安装

Postman官网下载链接:https://www.postman.com/,根据自己的操作系统选择。
在这里插入图片描述
找到下载到的目录直接双击.exe文件,会默认安装在C盘,安装完会自动打开。

注册登录

Postman最新版本已经不维护离线模式(未登录),要体验全部功能需要登录,若没有Postman账号可以注册一个,若已有账号,只要登录就可。

官网注册链接:https://identity.getpostman.com/signup。

注册好后,在Postman界面点击sign in进行登录(会从浏览器登录后跳转回应用程序)。
在这里插入图片描述

Collection

Collection是多个Folder和Request的合集,可以添加Pre-request Script、Tests脚本和Variables变量,且作用于Collection里的所有Request。
选择侧边栏的Collections,再点击加号创建一个空的Collection新建Collection。
在这里插入图片描述
Collection相关说明如下图:
在这里插入图片描述
删除Collection:
在这里插入图片描述
快捷键删除:选择要删除的Collection -> 点击键盘Delete键 -> 确认删除。

Folder

Folder是多个Request的合集(对Request更加细分),只能在Collection下创建,可以添加Pre-request Script、Tests脚本,且作用于Folder下的所有Request。
选择指定的Collection右侧三个点,下拉弹窗选择Add folder新建Folder。
在这里插入图片描述
Folder相关说明如下图:
在这里插入图片描述
删除Folder:
在这里插入图片描述
快捷键删除:选择要删除的Folder -> 点击键盘Delete键 -> 确认删除。

Request

Request是请求接口,可以在Collection或Folder下创建,可以添加Pre-request Script、Tests脚本,且只作用于当前Request。
选择指定的Collection或Folder右侧的三个点,下拉弹窗选择Add request新建Request。
在这里插入图片描述
Request相关说明如下图:
在这里插入图片描述
Request未保存状态窗口标签会有一个红点提示。
在这里插入图片描述
删除Request:
在这里插入图片描述
快捷键删除:选择要删除的Request -> 点击键盘Delete键 -> 确认删除。

注意:当我们在窗口栏上点击加号创建Request,是没有指定保存在哪个Collection或Folder里的。
在这里插入图片描述
使用Ctrl+S保存时需要自己选择保存到哪个地方。

在这里插入图片描述

Get请求

新建的Request默认是Get请求,也可以通过左侧的下拉弹窗修改。Get请求参数一般是在请求路径后用"?"拼接,也可以在Postman的params手动添加参数,会自动在请求路径后面拼接,取消参数前面的勾选后请求不会携带该参数。
在这里插入图片描述
说明:

  • Key:参数名。
  • Value:参数值。
  • Description:参数描述。
  • BulkEdit:批量编辑。

Post请求

选择请求方式为Post,请求参数在Body里设置,并选择指定的格式。
在这里插入图片描述

说明:

  • none:无参。
  • form-data:表单格式,Content-Type为multipart/form-data。
  • x-www-form-urlencoded:和表单类似键值对,但Content-Type为application/x-www-from-urlencoded。
  • raw:其他格式,有Text、JavaScript、JSON、HTML和XML(上图选择的是JSON)。
  • Beautify:根据选择的格式(例如:JSON),格式化参数,使参数方便阅读。

Header设置

Postman请求头在headers设置,例如:鉴权token等等,取消参数前面的勾选后请求不会携带。
在这里插入图片描述
说明:

  • Key:参数名。
  • Value:参数值。
  • Description:参数描述。
  • BulkEdit:批量编辑。
  • Presets:预设可以设置固定几个必携带的参数,下次新建Request后可以点击Presets选择直接添加。
  • 7Hidden:是隐藏了7个默认的参数,点击旁边的眼睛可以显示隐藏部分。

删除指定header参数:(删除图标默认是隐藏的)
在这里插入图片描述
设置并使用预设header参数:

  1. 找到管理预设Manage Presets。
    在这里插入图片描述
  2. 选择添加Header Presets。
    在这里插入图片描述
  3. 添加预设header,可以添加多个header参数,最后点击add添加(下图header值使用了动态变量后面会讲到)。
    在这里插入图片描述
    在这里插入图片描述
  4. 选择要使用的预设header,选择后会自动在当前Request的headers添加预设的header参数。
    在这里插入图片描述

Response响应

若Request有一些请求前执行的脚本,在Pre-request Script下添加,请求后执行的脚本,在Tests下添加(后面会讲到脚本),最后点击Send发送请求,并在Response区域查看请求结果。
在这里插入图片描述
说明:

  • Body:请求体。
  • Cookies:返回的Cookie信息。
  • Headers:响应头。
  • TestResults:Tests脚本执行结果。
  • Pretty:格式化后的结果。
  • Raw:未格式化的结果。
  • Preview:结果预览。
  • Status:请求状态码。
  • Time:请求响应时间。
  • Size:请求响应数据大小。

创建Request范例,点击Save as example。
在这里插入图片描述
会在当前Request下创建一个范例Request,这个Request是可以编辑的,也可以修改请求路径和参数等信息。
在这里插入图片描述
注意:范例Request的修改不会影响原来的Request。

响应结果另存为文件和清空:
在这里插入图片描述

Environments

Environments用来设置环境变量,默认有一个且唯一的Globals全局变量,也可以自己创建多个环境变量。

Global环境变量

设置Global全局环境变量:
在这里插入图片描述
注意:Globals全局变量作用于整个Postman,包括Collection、Folder、Request和脚本。

其他环境变量

设置其他环境变量:(例如:本地、开发、测试、生产环境)

  1. 创建新环境。
    在这里插入图片描述

  2. 新建环境重命名,并设置参数(和Globals一样)。
    在这里插入图片描述

Collection变量

设置Collection变量,作用于当前Collection下的所有Folder和Request。把Collection Variables放Environments是为了方便说,它们都是设置变量,之间存在优先级关系(查看下文)。
在这里插入图片描述

变量使用

语法:

{{variable_name}}

使用两个双大括号包裹变量名的方式引用,可以在请求路径Url、请求参数Params、请求参数Body、请求Headers、Pre-request Script和Tests脚本里使用。

Globals环境变量使用:
在这里插入图片描述

注意:无论有没有指定其他环境都可以使用Global变量,因为Global变量作用于整个Postman,当Global和指定环境变量名同名时,指定环境比全局环境优先级高,当鼠标光标悬浮在使用的变量名上,可以展示当前变量值和作用范围。

指定环境变量使用:
在这里插入图片描述

Globals和指定其他环境变量预览:
在这里插入图片描述
Collection变量使用:
在这里插入图片描述

同名变量的优先级

当Globals环境变量、其他环境变量和Collection变量同名时,使用该变量的优先级是:指定的其他环境 -> Collection -> Globals。

Postman内置变量

Postman内置变量参考:https://learning.postman.com/docs/writing-scripts/script-references/variables-list/

常用内置变量:

  • 时间戳:{{$timestamp}}
  • 生成0-1000的随机整数:{{$randomInt}}
  • 生成一个GUID的字符串:{{$guid}}
  • 生成一个随机UUID:{{$randomUUID}}

注意:内置变量和Environment、Collection变量一样,只是它是内部已经定义好的,可以直接在请求参数和脚本中引用。

Pre-request script和Test script脚本

Postman 包含一个基于Node.js的强大的运行时,允许您向请求Request、Collection和Folder添加动态行为,这允许您编写测试套件,构建可以包含动态参数的请求,在请求之间传递数据等等。

执行流程的2个脚本事件:

  • pre-request script:请求前脚本,在请求接口前执行。
  • test script:测试脚本,在请求接口并响应数据后执行。

脚本的执行顺序:
在这里插入图片描述

设置、删除和获取变量

//设置Collection变量
pm.collectionVariables.set("variable_name", "variable_value");
//设置Global变量
pm.globals.set("variable_name", "variable_value");
//设置Environment变量
pm.environment.set("variable_name", "variable_value");
//删除Collection变量
pm.collectionVariables.unset("variable_name");
//删除Global变量
pm.globals.unset("variable_name");
//删除Environment变量
pm.environment.unset("variable_name");
//获取变量(包括Global,Environment和Collection),同名变量,按照优先级获取
pm.variables.get("variable_name");
//获取Global环境变量
pm.globals.get("variable_name");
//获取Collection环境变量
pm.collectionVariables.get("variable_name");
//获取Environment环境变量
pm.environment.get("variable_name");

Postman在编写脚本的右侧有代码片段,只需要点击一下就会在编辑框生成代码片段,更友好的使用。
在这里插入图片描述

获取请求参数

//raw请求方式
let body = pm.request.body.raw;
let data = JSON.parse(body);
//form-data请求方式
let param = pm.request.body.formdata.get("variable_name");
// x-www-form-urlencoded请求方式
let param = pm.request.body.urlencoded.get("variable_name");

获取响应数据

为了在响应中执行断言,首先需要将数据解析为断言可以使用的JavaScript对象。

//解析JSON
const responseJson = pm.response.json();
//解析xml
const responseXml = xml2Json(pm.response.text());
//解析csv
const parse = require('csv-parse/lib/sync');
const responseCsv = parse(pm.response.text());
//解析HTML
const temp = cheerio.load(pm.response.text());
console.log(temp.html());

如果不解析成JavaScript对象是不是就不可以断言?当然不是,也可以不解析响应体断言。

// 测试响应体是否包含某个字符串
pm.test("Body contains string", () => {
 	pm.expect(pm.response.text()).to.include("customer_id"); 
}

MD5、AES、SHA256加密

//MD5
let token = CryptJS.MD5("文本内容").toString();
//SHA256加密
let token = CryptJS.SHA256("文本内容").toString();
//AES加密
function AesEncrypt(data, secret_key){
	//密码,文本,偏移量、模式等设置
    var ECBOptions = {mode: CryptoJS.mode.ECB,padding: CryptoJS.pad.Pkcs7};
    //加密密钥
    var AesSecert = CryptoJS.enc.Utf8.parse(secret_key);
    //AES加密
    return CryptoJS.AES.encrypt(data, AesSecert, ECBOptions).toString();
}
//AES解密
var ECBOptions = {
	mode: CryptoJS.mode.ECB,
	padding: CryptoJS.pad.Pkcs7
};
function decrypt(data, secret_key) {
	var AesSecert = CryptoJS.enc.Utf8.parse(secret_key);
	return CryptoJS.AES.decrypt(body, AesSecert, ECBOptions).toString(CryptoJS.enc.Utf8);
}

sendRequest请求接口

当我们在请求某个接口时,需要先从另一个接口获取需要的数据,或者在请求某个接口后再请求其他接口,这个时候就可以使用sendRequest。

语法:

pm.sendRequest(param, function(err, response){
	//进行其他操作(也可以再次调用sendRequest)
});

说明:

  • param:请求接口信息(包括但不限于请求路径、请求头和请求方式)。
  • err:接口异常信息。
  • response:接口响应数据。

注意:没指定请求方式默认是Get请求。

Get请求

//无参数无Header请求
pm.sendRequest("http://127.0.0.1:8090/demo/goods/list", function(err, resp) {
    console.log(resp.json());
});

//携带Header请求
const param = {
	//请求路径
    url: 'http://127.0.0.1:8090/demo/goods/list',
    //请求方式
    method: 'GET',
    //请求头
    header: {
        'token': '9e11562e553b4f56af43a1e81dcbb137'
    }
};
pm.sendRequest(param, function(err, resp) {
    console.log(resp.json());
});

//携带参数请求:在请求路径后面用?号拼接,多个参数用&分隔
pm.sendRequest("http://127.0.0.1:8090/demo/goods/list?id=123&name=小馒头", function(err, resp) {
    console.log(resp.json());
});

//携带参数携带Header请求
const param = {
	//请求路径
    url: 'http://127.0.0.1:8090/demo/goods/list?id=123&name=小馒头',
    //请求方式
    method: 'GET',
    //请求头
    header: {
        'token': '9e11562e553b4f56af43a1e81dcbb137'
    }
};
pm.sendRequest(param, function(err, resp) {
    console.log(resp.json());
});

Post请求

Post请求和Get不同,请求参数在Body里,而Body有raw、x-www-form-urlencoded、form-data、xml模式。

raw模式

Content-Type设为application/json。

header: {
	'Content-Type': 'application/json'
}

body的model设置为raw。

body: {
	mode: 'raw',
	raw: JSON.stringify({"data":{"name":"多味花生"}})
}

注意:raw的属性格式是{"key1":"value1","key2":"value2"},JSON格式。

示例:

//定义请求入参
const jsonParam = {
    "data": {
        "name": "多味花生"
    }
};
//定义请求参数
const reqData = {
    url: 'http://127.0.0.1:8090/demo/goods/info',
    method: 'POST',
    header: {
        'Content-Type': 'application/json',
        'signature': '0cc4d99e4d9941d19c324de7881b6a98'
    },
    body: {
        mode: 'raw',
        raw: JSON.stringify(jsonParam)
    }
};
//发送请求
pm.sendRequest(reqData, function(err, resp) {
    console.log(resp.json());
});
xxx-www-form-urlencoded模式

Content-Type设置为application/xxx-www-urlencoded;charset=UTF-8。

header: {
	'Content-Type': 'application/xxx-www-urlencoded;charset=UTF-8'
}

body的mode设置为urlencoded。

body: {
	mode: 'urlencoded',
	urlencoded: 'name=多味花生&typeEnum=FOOD'
}

注意:urlencoded的属性格式是key1:value1&key2:value2&key3:value3,多个参数使用&隔开。

示例:

//定义请求参数
const reqData = {
    url: 'http://127.0.0.1:8090/demo/goods/count',
    method: 'POST',
    header: {
        'Content-Type': 'application/xxx-www-urlencoded;charset=UTF-8',
        'signature': '0cc4d99e4d9941d19c324de7881b6a98'
    },
    body: {
        mode: 'urlencoded',
        urlencoded: 'name=多味花生&typeEnum=FOOD'
    }
};
//发送请求
pm.sendRequest(reqData, function(err, resp) {
    console.log(resp.json());
});
form-data模式

Content-Type设置为multipart/form-data。

header: {
	'Content-Type': 'multipart/form-data'
}

body的mode设置为formdata。

body: {
	mode: 'formdata',
	formdata: [{key:"name", value:"谷粒多"},{key:"typeEnum",value:"FOOD"}]
}

注意:formdata的属性格式是[{key:key1, value:value1},{key:key2, value:value2}],每个参数用{}包裹,多个参数用逗号隔开。

示例:

//定义请求参数
const reqData = {
    url: 'http://127.0.0.1:8090/demo/goods/count',
    method: 'POST',
    header: {
        'Content-Type': 'multipart/form-data',
        'signature': '0cc4d99e4d9941d19c324de7881b6a98'
    },
    body: {
        mode: 'formdata',
        formdata: [{key:"name", value:"谷粒多"},{key:"typeEnum",value:"FOOD"}]
    }
};
//发送请求
pm.sendRequest(reqData, function(err, resp) {
    console.log(resp.json());
});
xml模式

Content-Type设置为application/xml。

header: {
	'Content-Type': 'application/xml'
}

body的mode设置为raw。

body: {
	mode: 'raw',
	raw: '<count> <name>蛋仔</name> <type>ELECTRONICS</type> </count>'
}

注意:raw的属性格式是<自定义标签>标签值</自定义标签>,自定义标签名是请求参数名,标签值是参数值。

示例:

//定义请求参数
const reqData = {
    url: 'http://127.0.0.1:8090/demo/goods/count',
    method: 'POST',
    header: {
        'Content-Type': 'application/xml',
        'signature': '0cc4d99e4d9941d19c324de7881b6a98'
    },
    body: {
        mode: 'raw',
        raw: '<count> <name>蛋仔</name> <type>ELECTRONICS</type> </count>'
    }
};
//发送请求
pm.sendRequest(reqData, function(err, resp) {
    console.log(resp.json());
});

断言测试

pm对象提供了测试功能:

  • pm.test(testName:String, specFunction:Function):Function:测试函数。
  • pm.expect(assertion:*):Function → Assertion:允许在响应数据上做测试,使用ChaiJS expect BDD语法。
  • pm.response.to.have.*pm.response.to.be.*来构建断言。

测试状态码:

pm.test("请求状态码200", function() {
  pm.response.to.have.status(200); 
});
pm.test("请求状态码200", function() {
  pm.expect(pm.response.code).to.eql(200); 
});

测试响应时间:

pm.test("请求响应时间少于200ms", () => {
  pm.expect(pm.response.responseTime).to.be.below(200); 
});

组合断言测试:测试脚本也可以包含多个断言作为单个测试,可以将相关断言组合在一起。如果包含的任一个断言失败,整个测试将失败,所有断言都必须成功,测试才能通过。

pm.test("The response has all properties", () => {
  const responseJson = pm.response.json(); //将响应体body转换成JSON格式
  pm.expect(responseJson.type).to.eql('vip'); // type等于vip
  pm.expect(responseJson.name).to.be.a('string'); // name值的类型为string类型
  pm.expect(responseJson.id).to.have.lengthof(1); // id的长度为1
}

控制台日志

在测试脚本中遇到错误或意外行为时,Postman控制台可以帮助你识别,通过将console.log调试语句与你的测试断言相结合,你可以检查http请求和响应的内容,以及变量之类的。

使用控制台日志来标记代码执行,也称为“跟踪语句”。

  • console.log():打印日志
  • console.info():打印日志信息
  • console.debug():打印Debug日志
  • console.error():打印错误日志
  • console.warn():打印警告信息

示例:

if(pm.response.json().data) {
    console.log("数据不为空");
} else {
    console.log("数据为空");
}

Postman控制台在左下角的Console。
在这里插入图片描述

数据导入导出

这里的数据导入导出,包括Collection、Environment环境变量、Pre-request Script和Tests脚本。

链接或文件方式导入

  1. 点击主页标题栏下的import按钮。
    在这里插入图片描述
  2. 选择导入的方式,下图所示三种方式。
    在这里插入图片描述

Collection导出

  1. 选择要导出的Collection,点击右侧三个点,选择Export导出。
    在这里插入图片描述
  2. 默认选择,直接导出JSON文件。
    在这里插入图片描述

注意:如果Collection有Variable变量、Pre-request script和Tests脚本也会被导出。

Environments导出

  1. Globals导出,点击Export按钮,直接导出JSON文件。
    在这里插入图片描述
  2. 新增的其他环境导出,点击右侧三个点,选择Export,导出JSON文件。
    在这里插入图片描述

导出本地Postman所有数据

  1. 打开设置
    在这里插入图片描述
  2. 选择Data -> Request Data Export。
    在这里插入图片描述
  3. 会跳转到网页上,点击Export Data按钮。
    在这里插入图片描述
  4. 默认全选,选择导出,会通过Email方式发送到你的账号邮箱,访问邮箱链接下载导出文件。
    在这里插入图片描述

分享数据

除了Collection可以生成分享链接,其他的Folder、Request和Environment都只能分享给指定的用户或者用户邮箱,分享数据和导出数据一样。

Collection分享:

  1. 选择要分享的Collection,以下二种方式任意选一个。
    在这里插入图片描述
  2. 选via api,点击Generate New Key,最后复制完整链接给其他用户,用户通过该链接导入分享的Collection。
    在这里插入图片描述

Request分享:

  1. 选择分享的Request,点击右侧三个点,选择Share。
    在这里插入图片描述
  2. 根据分享方式
    在这里插入图片描述
    注意:下面让你选择什么方式去合作,默认选择创建一个新的工作台并移除当前Collection给你的团队,另一个是分享你的工作台给你的团队。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

重新认识canvas,掌握必要的联结密码

查看专栏目录 canvas示例教程100专栏&#xff0c;提供canvas的基础知识&#xff0c;高级动画&#xff0c;相关应用扩展等信息。canvas作为html的一部分&#xff0c;是图像图标地图可视化的一个重要的基础&#xff0c;学好了canvas&#xff0c;在其他的一些应用上将会起到非常重…

蓝桥杯 python 第二题 数列排序

这里给出一种解法 """ # 错的 n int(input()) dp[int(i) for i in input().split(" ")] dp.sort() print(" ".join(str(i) for i in dp)) """#这个是对的 num int(input())l list(map(int, input().split()))l.sort()pr…

Nginx配置jks格式证书,升级https

通常在给服务器升级https&#xff0c;需要在nginx上配置域名对应的https证书&#xff0c;nginx通常配置的是crt和key格式的证书。最近遇到有人提供了jks格式的证书&#xff0c;查阅了几个资料都是需要先将jks转为p12格式&#xff0c;然后再将p12转为crt格式。这里记录一下相关过…

JDK21和 Flowable 7.0.0

JDK21和 Flowable 7.0.0 一.Flowable二.项目搭建1.依赖包2.数据库3.资源文件1.YML配置文件2.Drools kbase3.Drools rule4.DMN 决策表5.BPMN 流文件 4.BPMN 流程图绘制插件5.测试代码1.启动类2.Flowable 配置3.Camel 配置1.Camel 配置2.Camel Router 定义 4.扩展类监听1.外部工作…

SpringBoot 创建定时任务(配合数据库动态执行)

相关参考文件如下&#xff1a; SpringBoot 创建定时任务&#xff08;配合数据库动态执行&#xff09; - 知乎 (zhihu.com)https://zhuanlan.zhihu.com/p/88875287

css如何让两个元素在同一水平线上(文字和svg图片)

一开始写发现这两者不在同一水平线 起初用margin-top margin-bottom来协调 发现效果并不好 1&#xff1a;写法僵硬 2&#xff1a;margin会把div撑破&#xff0c;达不到预期效果&#xff08;padding也是&#xff09; 3. 加了flex布局 之后, 因为我这个是在表格里面,无法居中…

RK3568平台开发系列讲解(Linux系统篇)/dev/mem 物理内存映射到用户态

🚀返回专栏总目录 文章目录 一、/dev/mem 配置二、/dev/mem 设备的使用方法三、mmap 函数沉淀、分享、成长,让自己和他人都能有所收获!😄 一、/dev/mem 配置 /dev/mem 是 Linux 系统中的一个虚拟设备,通常与 mmap 结合使用,可以将设备的物理内存映射到用户态,以实现用…

QT DAY2 作业

1. 头文件 #ifndef MYWIDGET_H #define MYWIDGET_H#include <QWidget> #include <QMovie> #include <QTextEdit> #include <QDebug> namespace Ui { class MyWidget; }class MyWidget : public QWidget {Q_OBJECTpublic:explicit MyWidget(QWidget *p…

2024 Midjourney 基础教程(⼆):了解 Midjourney Bot 和AI绘画使用技巧进阶教学

在上⼀篇⽂章中&#xff0c;我们学到了如何注册 Midjourney &#xff0c;开通付费订阅&#xff0c;并画出了可能是⾃⼰的第⼀张 AI绘画。怎么样&#xff1f;这种将想象的画⾯&#xff0c;变为现实世界图⽚的感觉。 是否有种造物者的错觉&#xff0c;同时有种开盲盒的惊喜感&…

20230403读书笔记|《苏轼词集》——试问岭南应不好,此心安处是吾乡

20230403读书笔记|《苏轼词集》——试问岭南应不好&#xff0c;此心安处是吾乡 导读卷一卷二卷三 在书架里加了好几本苏轼词集&#xff0c;很多词是重复的&#xff0c;但这并不影响多读几本&#xff0c;苏轼的词豪迈大气&#xff0c;豁达爽朗&#xff0c;蛮值得一读的。有不少都…

图解Kubernetes的服务(Service)

pod 准备&#xff1a; 不要直接使用和管理Pods&#xff1a; 当使用ReplicaSet水平扩展scale时&#xff0c;Pods可能被terminated当使用Deployment时&#xff0c;去更新Docker Image Version&#xff0c;旧Pods会被terminated&#xff0c;然后创建新Pods 0 啥是服务&#xf…

【LeetCode:200. 岛屿数量 | DFS 】

&#x1f680; 算法题 &#x1f680; &#x1f332; 算法刷题专栏 | 面试必备算法 | 面试高频算法 &#x1f340; &#x1f332; 越难的东西,越要努力坚持&#xff0c;因为它具有很高的价值&#xff0c;算法就是这样✨ &#x1f332; 作者简介&#xff1a;硕风和炜&#xff0c;…

Low Poly Cartoon House Interiors

400个独特的低多边形预制件的集合,可以轻松创建高质量的室内场景。所有模型都已准备好放入场景中,并使用一个纹理创建,以提高性能!包含演示场景! 模型分类: - 墙壁(79件) - 地板(28块) - 浴室(33个) - 厨房(36件) - 厨房道具(68件) - 房间道具(85件) - 灯具(…

Git LFS 大文件存储

Git 碰到大文件的困境 Git 是业界流行的分布式版本控制工具&#xff0c;本地仓库与远端仓库同样保存了全量的文件和变更历史&#xff0c;这样让代码协作变得简单和高效。但也正因为如此&#xff0c;Git针对大型文件&#xff08;例如图片、视频或其他二进制文件&#xff09;的版…

浅谈智慧路灯安全智能供电方案设计——安科瑞赵嘉敏

摘要: 智慧路灯&#xff0c;作为智慧城市、新基建、城市更新的主要组成部分&#xff0c;近些年在各大城市已得到很好的落地和 应用&#xff0c;但其与传统路灯相比集成大量异元异构电子设备&#xff0c;这些设备的供电电压、接口形式、权属单位各不相同&#xff0c; 如何设计一…

网络高清视频监控平台的告警联动(或报警联动)功能介绍

一、告警联动的定义和概念 视频监控领域的告警联动功能是指通过视频监控平台&#xff0c;将多个相关系统或设备进行集成&#xff0c;实现统一管理和自动化控制。当监控场景中出现异常情况时&#xff0c;系统能够自动触发相应的报警和响应&#xff0c;以保障安全和及时处理异常事…

[算法与数据结构][c++][python]:C++与Python中的赋值、浅拷贝与深拷贝

C与Python中的赋值、浅拷贝与深拷贝 写在前面&#xff1a;Python和C中的赋值与深浅拷贝&#xff0c;由于其各自语言特性的问题&#xff0c;在概念和实现上稍微有点差异&#xff0c;本文将这C和Python中的拷贝与赋值放到一起&#xff0c;希望通过对比学习两语言实现上的异同点&a…

test fuzz-04-模糊测试 jazzer Coverage-guided, in-process fuzzing for the JVM

拓展阅读 开源 Auto generate mock data for java test.(便于 Java 测试自动生成对象信息) 开源 Junit performance rely on junit5 and jdk8.(java 性能测试框架。性能测试。压测。测试报告生成。) test fuzz-01-模糊测试&#xff08;Fuzz Testing&#xff09; test fuzz-…

【Helm 及 Chart 快速入门】02、Helm 基本使用

目录 一、Helm 基本使⽤ 1.1 搜索 chart 应⽤ 1.2 部署 chart 应⽤ 1.3 删除 chart 应⽤ 1.4 定制参数部署应⽤ 1.5 chart 应⽤升级 1.6 chart 应⽤回滚 一、Helm 基本使⽤ 1.1 搜索 chart 应⽤ 使⽤ helm search repo 关键字可以查看相关 charts&#xff1a; […

数据结构之二叉搜索树(Binary Search Tree)

数据结构可视化演示链接&#xff0c;也就是图片演示的网址 系列文章目录 数据结构之AVL Tree 数据结构之B树和B树 数据结构之Radix和Trie 文章目录 系列文章目录示例图定义二叉搜索树满足的条件应用场景 示例图 二叉 线形(顺序插入就变成了线性树&#xff0c;例如插入顺序为&…