Jmeter
目录
一、jmeter 安装
二、jmeter 介绍
1、jmeter是什么?
2、jmeter 用来做什么?
3、优点
4、缺点
5、jmeter 目录介绍
①_bin 目录介绍
② docs 目录 — — 接口文档目录
③ extras目录 — — 扩展插件目录
④ lib 目录 — — 所用到的插件目录
⑤ licenses 目录 — — jmeter 证书目录
⑥ printable_docs目录
三、jmeter 基本使用&元件
1、jmeter 入门脚本
jmeter测试计划要素:
2、测试计划元件
3、元件的作用域
(1)原则:
(2)执行顺序
4、jmeter 第一个案例
5、jmeter 运行原理
6、jmeter配置文件修改
(1)修改中文乱码问题
(2)修改默认语言
四、jmeter核心知识
1、发送http请求
1)相关配置元件
2)http请求配置
2、jmeter 参数化***
1)参数化的概念
3)用户参数
5)总结参数化
3、jmeter 断言
1)常用断言
2)响应断言
3)Json 断言
4)断言持续时间
4、jmeter 关联
1)jmeter 常用的关联方法
2)正则表达式提取器
3)xpath 提取器
4)JSON提取器
5)jmeter 的属性 -- 全局变量
5、 jmeter录制脚本
1)使用badboy录制
2)使用jmeter自身代理录制移动端
6、jmeter连接数据库 -- 以MySQL为例
1)使用数据库步骤
① 创建测试计划
② 创建线程组
③ 引入数据库驱动jar 包
④ 配置 JDBC Connectionn Configuration
⑤ 连接测试(JDBC Request)
7、逻辑控制器
1)如果(if)控制器
2)循环控制器
3)ForEach 控制器
8、定时器
1)同步定时器
2)常数吞吐量定时器 constant throughput timer
3)固定定时器***最常用**
一、jmeter 安装
看文章:
解释:不要使用GUI模式进行压力测试,GUI模式仅仅用于创建和调试压力测试脚本的。
二、jmeter 介绍
1、jmeter是什么?
jmeter:是Apche公司使用Java平台开发的一款测试工具。
2、jmeter 用来做什么?
- 接口测试
- 性能测试
- 压力测试(优势)
- 数据库测试
- Java程序测试 (因为本身就是Java语言编写的)
3、优点
- 开源免费
- 支持多协议 (http,tcp...)
- 轻量级
- 功能强大
4、缺点
无法验证JS程序,也无法验证页面UI,所以必须要和 selenium 配合来完成web2.0应用的测试
5、jmeter 目录介绍
①_bin 目录介绍
examples | 目录中有CSV样例 |
---|---|
jmeter.bat | windows 的启动文件 |
jmeter.sh | Linux 的启动文件 |
jmeter.log | jmeter 运行日志文件 |
jmeter.properties | 系统配置文件 |
jmeter-server.bat | windows 分布式测试要用到的服务器配置 |
jmeter-serrver | Linux 分布式测试要用到的服务器配置 |
jmeter.properties :
- 打开:右击 -->
- 修改后需要重启 jmeter 使用
https=http+ssl
② docs 目录 — — 接口文档目录
例如:docs\api\index.html 可打开网页查看
③ extras目录 — — 扩展插件目录
提供了对 ant 的支持,可以使用 ant 实现自动化测试。例如批量脚本执行,产生html格式的报表
测试运行时,可以把测试数据记录下来,jmeter会自动生成一个 .jtl 文件,将该文件放在extras目录下,运行“ant-Dtest=文件名 report”,就可以生成测试统计报表。
④ lib 目录 — — 所用到的插件目录
⑤ licenses 目录 — — jmeter 证书目录
⑥ printable_docs目录
(网页可以翻译看)
三、jmeter 基本使用&元件
1、jmeter 入门脚本
- ①添加测试计划 (当打开jmeter默认有一个测试计划)
- ②添加线程组 (右击测试计划-->添加-->线程-->线程组)
- ③添加http请求 (右击线程组-->取样器-->http请求)
- ④配置http请求
jmeter测试计划要素:
- 测试计划(项目名称)
- 测试计划中至少有一个线程组
- 线程组中至少有一个取样器
- 测试计划中必须有监听器
- ⑤ 添加查看结果树(右击线程组-->监听器-->查看结果树)#查看结果树不做任何配置
编辑好脚本后,可以发送请求
save后默认发送请求
2、测试计划元件
元件与组件的区别
- 元件:多个类似功能组件的容器
- 组件:容器中实现单独的某个功能
①线程组介绍(不属于元件哦!放在一起学习而已)
② 取样器(sample)
取样器是性能测试中向服务器发送请求,记录响应信息,记录响应时间的最小单位。
jmeter支持不同取样器(即支持不同协议的请求)
③ 逻辑控制器(logic controller)
包括两类元件:
- 一类用于控制testplan中sampler节点发送请求的逻辑顺序的控制器,常用的有 if控制器,Switchcontroller、runtimecontroller、循环控制器等
- 另一类是用来组织可控制sampler节点的,如事务控制器、吞吐量控制器
④ 配置元件(config element)
用来提供对静态数据的支持
⑤ 定时器(timer)
在操作之前设置等待时间(例如取样器与取样器之间,设置一个等待时间)
⑥ 前置处理器(per processors)
用于实际请求之前对即将发出的请求进行特殊处理
⑦ 后置处理器(post processors)
用于对sampler发出请求后得到的服务器响应进行处理
⑧ 断言(assertions)
用于检查测试中得到的响应数据等是否符合预期,assertions一般用来设置检查点,用以保证性能测试过程中的数据交互与预期是否一致
⑨ 监听器
对测试结果进行处理和可视化展示的一系列组件
3、元件的作用域
靠测试计划中元件树形结构的父子关系来确认
(1)原则:
取样器:以取样器为核心,取样器没有作用域
逻辑控制器:只对子节点的取样器和逻辑控制器起作用
其他元件:
- 如果父节点是取样器,则只对其父节点起作用
- 如果父节点不是取样器,则该作用域是其父节点下的其他所有后代节点(子节点,子节点的子节点)
(2)执行顺序
同一作用域下不同元件执行顺序
- 配置元件 -- 前置处理器 -- 定时器 -- 取样器 -- 后置处理器 -- 断言 -- 监听器
同一作用域下相同元件的执行顺序
- 从上到下依次执行
案例:执行顺序案例
定时器1 -- 请求1 -- 定时器1 -- 定时器2 -- 请求2 -- 定时器1 -- 定时器3 -- 请求3
解析:定时器1 的父节点不是取样器,所以对父节点下的所有后代节点都起作用
4、jmeter 第一个案例
需求:使用 jmeter 访问百度接口,并查看请求和响应信息
步骤:
- 添加线程组
- 添加 HTTP 请求 并 配置
- 添加查看结果树
5、jmeter 运行原理
1、在 jmeter 中是以线程的方式运行的
问:为什么以线程方式运行而不是进程?
因为 jmeter 是运行在jvm虚拟机上的,每个进程的开销比较大,如果以进程的方式来运行的话,每台负载机上的进程数量就不会允许太多,当我们需要大量并发时就需要大量的负载机,这显然是不经济的,再者Java也是支持多线程的,所以 jmeter 选择了以线程的方式来运行。
2、jmeter通过线程组来驱动多个线程运行测试脚本,对被测服务器发起负载,每个负载机上都可以运行多个线程组。
jmeter运行场景:
- GUI模式(界面模式)(主要用来编写和调试jmeter测试脚本)
- 命令行模式(对负载机的资源消耗会更小)(用来实现高并发和压力测试)
在资源有限的情况下,都是用命令行模式来执行jmeter脚本的,而页面模式是用来前期创建脚本或者调试脚本的
负载机:执行jmeter脚本的电脑
6、jmeter配置文件修改
bin --> jmeter.properties -->右击打开
(1)修改中文乱码问题
找下面这句话(查找快捷键:ctrl+f)
- sampleresult.default.encoding=ISO-8859-1
- #ISO-8859-1是默认值
将参数修改为
sampleresult.default.encoding =utf-8
去掉这行代码前面的#号
(2)修改默认语言
修改保存完后,重启 jmeter 就生效了
四、jmeter核心知识
1、发送http请求
(学习 jmeter取样器 以 http请求 为例)
作用:向服务器发送http/https请求
1)相关配置元件
① HTTP管理器
http请求 与 配置元件配套使用
② http消息头管理器(http请求头)
主要使用Content-Type参数(指请求参数的类型)
在jmeter中,发送HTTP的post请求时,需要添加http消息头管理器
!汉字是??时,在内容编码中加 utf-8
③ http请求默认值
作用:将同一线程组下所有http请求的协议和服务器域名统一管理
(如果http请求中自己填写了http协议和服务器域名,当发送请求时使用本身的协议和域名)
2)http请求配置
- http协议默认端口号:80
- httpd默认端口号:443
请求地址:http://127.0.0.1:8000/api/departments/
练习:编写 jmeter 脚本,访问百度 (URL=http://www.baidu.com/S 参数:wd=test(form表单) )
- 案例1:GET请求,路径传递参数
- 案例2:GET请求,参数列表传递参数
- 案例3:POST请求,请求体数据传输参数
- 案例4:POST请求,参数列表传输参数
2、jmeter 参数化***
1)参数化的概念
什么是参数化?
- 根据需求动态获取数据并进行赋值的过程
jmeter中参数的定义?
- jmeter中参数化的变量用 ${变量名} 表示
jmeter参数化常用方式?
- CSV数据控件 (CSV Data Set Config)
- 用户定义的变量(User Defined Variables)
- 用户参数(User Variables)
2)CSV Data Set Config
一种从外部读取数据功能的组件
适用范围:需要大量测试数据
实现步骤:
- 创建测试计划
- 创建线程组
- 添加 CSV Data Set Config 组件并配置
- 添加http请求并配置
- 添加查看结果树
将表格xlsx格式转换为CSV --> CSV编码转为UTF-8(notepad)--> CSV数据文件设置 --> http请求设置 -->设置线程组线程数或循环次数
配置http请求(引用定义的变量名,格式:${变量名})
3)用户参数
适用于:参数取值范围很小
位置:前置处理器 --> 用户参数
使用方式:
- 针对那个http请求使用就在哪个http请求下添加(http --> 添加 --> 前置处理器 --> 用户参数)
配置用户参数
- 添加变量 --> 添加变量名称
- 添加用户 --> 添加用户名称(一个用户就是一个测试数据)
使用用户参数
- 在http请求中引用变量(${变量名})
- 在线程组中设置线程数;线程数的值和用户数一致
4)用户定义的变量
适用于:定义全局变量
位置:
- 测试计划页面(一般情况下)
- 配置元件 --> 用户定义的变量
步骤:
- 添加线程组
- 添加用户定义的变量
- 添加http请求,引用变量${变量名}
- 添加查看结果树
5)总结参数化
①csv数据文化配置(配置元件中)
- 适用于大量的测试数据时的使用
②用户参数(前置处理器中)
- 适用于少量测试数据
③用户定义的变量(测试计划 / 配置元件中)
- 定义全局变量
3、jmeter 断言
(让 程序自动判断预期结果和实际结果是否一致)
1)常用断言
- 响应断言
- json断言
- 持续时间断言
2)响应断言
作用:对HTTP请求的任意格式响应结果进行断言
位置:右击http请求 --> 添加 --> 断言 --> 响应断言
参数:
案例1:
请求:https://www.baidu.com
检查:响应数据中是否包含“百度一下,你就知道”
案例2:校验多个测试数据
3)Json 断言
适用于:HTTP响应结果是 json 格式时,可以使用 json断言
参数:
案例:
4)断言持续时间
作用:检查http请求的响应数据是否超出要求范围
参数:
- 响应时间(毫秒):http请求允许的最大响应时间(1s = 1000ms)。
案例:
4、jmeter 关联
当请求之间有依赖关系,比如一个请求的入参是另一个请求的返回数据,这时候就需要用到关联。
1)jmeter 常用的关联方法
- 正则表达式 提取法(针对任意格式)
- Xpath 提取法(html格式)
- JSON 提取法
正则表达式在线测试
2)正则表达式提取器
位置:右击HTTP请求 --> 添加 --> 后置处理器 --> 正则表达式提取器
http请求配置中,用 ${变量名} 引用 正则表达式提取器的引用名称
案例1:获取传智播客首页的title,并作为参数传递
- 请求:http://www.itcast.cn/,获取网页的title值
- 请求:http://www.baidu.com/,把获取到的title作为请求参数
案例2:获取传智播客首页的地址,把第5个校区地址作为参数传递(span为地址的校区)
方法1: (地址要先发送一次请求,在响应数据中查看)
方法2:
案例3:
获取传智播客首页的地址,把第5个校区地址作为参数传递(span为地址/后面带一、二、三)
3)xpath 提取器
作用:根据HTML格式的响应结果数据进行提取
参数:
案例1:获取传智播客首页的title,并作为参数传递
- 请求:http://www.itcast.cn/,获取网页的title值
- 请求:http://www.baidu.com/,把获取到的title作为请求参数
4)JSON提取器
作用:针对JSON格式的响应结果数据进行提取
参数:
案例:提取天气接口中的城市信息,作为参数在访问百度首页时传递
5)jmeter 的属性 -- 全局变量
提问:当有关联关系的两个请求在不同线程组中,该如何进行消息传递呢?(定义全局变量)
① jmeter属性的配置函数:
- _setProperty函数:将值保存成 jmeter属性
- _Property函数:在其他线程组中读取 jmeter 属性
② jmeter属性的执行:
- _setProperty函数 执行(保存jmeter属性):通过 BeanShell 取样器
- _Property函数 执行(读取属性):在其他线程组中使用 property函数
③ 案例
操作步骤:
- 添加线程组1
- 添加http请求-天气
- 添加JSON提取器
- 添加BeanShell取样器(将JSON提取的值保存成jmeter属性)
- 添加线程组2
- 添加http请求-百度(读取jmeter属性)
- 添加查看结果树
配置setproperty函数(选项--函数助手对话框--生成代码)
让线程组串行执行!
5、 jmeter录制脚本
1)使用badboy录制
安装badboy(提取码:drzb)
录制步骤:
- 打开badboy,默认记录状态
- 地址栏输入网址,回车 --> 页面操作 --> 停止记录
- 导出脚本:file --> export jmeter --> 选择路径保存
在jmeter中打开已有的文件
- jmeter脚本文件后缀 .jmx
- 在jmeter中点击打开文件,选择文件路径,找到需要的文件打开就可以了
2)使用jmeter自身代理录制移动端
① 配置jmeter
- 打开jmeter添加新的测试计划
- 添加线程组
- 添加HTTP代理服务器(右击测试计划 --> 非测试元件 --> HTTP代理服务)
- 配置HTTP代理服务器(也可以在request filtering 上设置过滤条件)
② 配置手机
设置 --> wifi --> 配置代理(然后填电脑的IP地址,端口号)
然后就可以录制移动端操作了!
6、jmeter连接数据库 -- 以MySQL为例
需将mysql-connector-java-X.X.X-bin.jar放入到jmeter安装目录下的./lib目录,重启jmeter
1)使用数据库步骤
① 创建测试计划
② 创建线程组
- 添加 JDBC Connectionn Configuration (建立数据库连接)
- 添加 JDBC Request (发送数据库请求)
- 添加查看结果树
③ 引入数据库驱动jar 包
④ 配置 JDBC Connectionn Configuration
- database url(数据库地址):如:jdbc:mysql://数据库IP地址:数据库端口/数据库名称
⑤ 连接测试(JDBC Request)
- Variable name of pool...:数据库连接池的名字(与JDBC Connection Configuration 名字保持一致)
- Querys:查询数据库语句的SQL语句(末尾不要加;)
- parameter values:数据的参数值
- parameter types:数据的参数类型
- variable name:变量名称,用于保持SQL语句返回结果(eg. 变量名称)
- result variable name:创建一个对象变量,保存所有返回结果
- query timeout:查询超时时间
- handle result set:定义如何处理由 callable statements语句返回的结果
jmeter测试数据库服务--JDBC Request_不进则退2020的博客-CSDN博客_jmeter连接数据库https://blog.csdn.net/qq_32706349/article/details/97539270?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522164955943716782094879408%2522%252C%2522scm%2522%253A%252220140713.130102334..%2522%257D&request_id=164955943716782094879408&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2~all~baidu_landing_v2~default-4-97539270.142%5Ev7%5Epc_search_result_control_group,157%5Ev4%5Econtrol&utm_term=jmeter%E8%BF%9E%E6%8E%A5%E6%95%B0%E6%8D%AE%E5%BA%93&spm=1018.2226.3001.4187
7、逻辑控制器
1)如果(if)控制器
作用:用来控制它下面测试元素是否运行
位置:右击线程组 --> 添加 --> 逻辑控制器 --> 如果(if)控制器
参数:
条件:
- JS语法格式:"${name}"=="itcast" #当name取值等于itcast
- 函数格式:${_jexl3("${name}"=="itcast")} #需要勾选下面的复选框
案例:
两个if控制器的条件如下:(其下对应的HTTP请求分别对应www.baidu.com和www.itcast.cn)
- "${name}"=="baidu";
- "${name}"=="itcast";
- #如果勾选了复选框,则需使用函数格式:
- ${_jexl3("${name}"=="baidu")}
- ${_jexl3("${name}"=="itcast")}
2)循环控制器
① 参数:
案例:循环访问百度10次
思考:线程组设置的循环次数和循环控制器循环次数有什么区别?
不同:
- 线程组设置的循环次数对线程组下所有HTTP请求都起作用
- 循环控制器循环次数只对该控制器下的HTTP请求起作用
当线程组循环次数为 M,循环控制器次数为N时:
- 循环控制器下的HTTP请求循环次数:M*N次
- 非循环控制器下的HTTP请求循环次数:M次
3)ForEach 控制器
作用:一般和用户自定义变量或正则表达式提取器一起使用,读取返回结果中一系列相关的变量
参数:
案例:
- 有一组关键字 [hello,python,测试],使用用户定义的变量存储
- 要依次取出关键字,并在百度搜索,例如:https://www.baidu.com/s?wd=hello
操作步骤:
案例2:
8、定时器
1)同步定时器
阻塞线程(累计一定的请求),在规定的时间内达到一定的线程数量,这些线程会在同一时间点一起释放,瞬间产生很大的压力。
参数:
步骤:
- 添加线程组
- 添加http请求
- 添加同步定时器(要设置时间且不能太小!)
- 添加查看结果树
- 添加监听器 --> 聚合报告
2)常数吞吐量定时器 constant throughput timer
稳定性测试时,需要模拟用户真实的业务场景。若真实业务场景QPS为20,如何精确模拟?
作用:让jmeter按指定的吞吐量(QPS)执行,以每分钟为单位。
参数:
- 案例1 :一个用户访问百度首页,持续一段时间,统计运行情况
- 案例2:两个用户访问百度首页,持续一段时间,统计运行情况。
3)固定定时器***最常用**
配置http请求
在http请求4下面添加固定定时器,并配置等待时间
执行后为什么出现下面结果呢?
请求的格式是json ,json 格式请求的请求头类型是application/json
所以需要用信息头管理器修改头域
成功!
相关文章:
Jmeter
目录 一、jmeter 安装 二、jmeter 介绍 1、jmeter是什么? 2、jmeter 用来做什么? 3、优点 4、缺点 5、jmeter 目录介绍 ①_bin 目录介绍 ② docs 目录 — — 接口文档目录 ③ extras目录 — — 扩展插件目录 ④ lib 目录 — — 所用到的插件目录 ⑤ lic…...
Flutter 学习 之 时间转换工具类
Flutter 学习之时间转换工具类 在 Flutter 应用程序开发中,处理时间戳是非常常见的需求。我们通常需要将时间戳转换为人类可读的日期时间格式。为了实现这一点,我们可以创建一个时间转换工具类。 实现方法 以下是一个简单的时间转换工具类的示例&…...
docker consul
docker consul的容器服务更新与发现 服务注册与发现是微服务架构中不可或缺的重要组件,起始服务都是单节点的,不保障高可用性,也不考虑服务的承载压力,服务之间调用单纯的通过接口访问的,直到后来出现多个节点的分布式…...
全志V3S嵌入式驱动开发(开发环境再升级)
【 声明:版权所有,欢迎转载,请勿用于商业用途。 联系信箱:feixiaoxing 163.com】 前面我们陆陆续续开发了差不多有10个驱动,涉及到网口、串口、音频和视频等几个方面。但是整个开发的效率还是比较低的。每次开发调试的…...
ChatGPT:人工智能助手的新时代
ChatGPT:人工智能助手的新时代 文章目录 ChatGPT:人工智能助手的新时代引言ChatGPT的原理GPT-3.5架构概述预训练和微调过程生成式对话生成技术 ChatGPT的应用场景智能助理客服机器人虚拟角色教育辅助创意生成个性化推荐 ChatGPT的优势ChatGPT的使用技巧与…...
【面试】二、Java补充知识
JVM中的存储 JVM的五块存储区: 方法区(线程共享) 方法区用来存储类的各种信息(类名、方法信息等)、静态变量、常量和编译后的代码也存储在方法区中 方法区中也存在运行时常量池 常量池中会存放程序运行时生成的各种…...
LISTENER、TNSNAMES和SQLNET配置文件
LISTENER、TNSNAMES和SQLNET配置文件 用户连接验证listener.ora文件配置监听日志local_listener参数 tnsnames.ora文件配置 sqlnet.ora文件配置 用户连接验证 Oracle数据库中用户有三种常见的登录验证方式: 通过操作系统用户验证:必须是在数据库服务器…...
【Leetcode -225.用队列实现栈 -232.用栈实现队列】
Leetcode Leetcode -225.用队列实现栈Leetcode -232.用栈实现队列 Leetcode -225.用队列实现栈 题目:仅使用两个队列实现一个后入先出(LIFO)的栈,并支持普通栈的全部四种操作(push、top、pop 和 empty)。 …...
悟道3.0全面开源!LeCun VS Max 智源大会最新演讲
夕小瑶科技说 原创 作者 | 小戏 2023 年智源大会如期召开! 这场汇集了 Geoffery Hinton、Yann LeCun、姚期智、Joseph Sifakis、Sam Altman、Russell 等一众几乎是 AI 领域学界业界“半壁江山”的大佬们的学术盛会,聚焦 AI 领域的前沿问题,…...
2023蓝桥杯大学A组C++决赛游记+个人题解
Day0 发烧了一晚上没睡着,感觉鼻子被打火机烧烤一样难受,心情烦躁 早上6点起来吃了个早饭,思考能力完全丧失了,开始看此花亭奇谭 看了六集,准备复习数据结构考试,然后秒睡 一睁眼就是下午2点了 挂了个…...
wkhtmltopdf踩坑记录
1. 不支持writing-mode。 需求是文字纵向排列,内容从左到右,本来用的是writing-mode: tb-rl;,插件转pdf后发现失效。 解决方法: 让每一列文字单独用一个div容器包裹,对它的宽度进行限制,控制每一行只能出现…...
贪心算法part2 | ● 122.买卖股票的最佳时机II ● 55. 跳跃游戏 ● 45.跳跃游戏II
文章目录 122.买卖股票的最佳时机II思路思路代码官方题解困难 55. 跳跃游戏思路思路代码官方题解代码困难 45.跳跃游戏II思路思路代码困难 今日收获 122.买卖股票的最佳时机II 122.买卖股票的最佳时机II 思路 局部最优:将当天价格和前一天比较,价格涨…...
[C++]异常笔记
我不怕练过一万种腿法的对手,就怕将一种腿法 练一万次的对手。 什么是C的异常 在C中,异常处理通常使用try-catch块来实现。try块用于包含可能会抛出异常的代码,而catch块用于捕获并处理异常。当异常被抛出时,程序会跳过try块中未执行…...
浅谈一级机电管道设计中的压力与介质温度
管道设计是工程设计中的一个非常重要的部分,管道的设计需要考虑到许多因素,其中就包括管道设计压力分类和介质温度分类。这两个因素是在设计管道时必须非常严格考虑的, 首先是管道设计压力分类。在管道设计中,根据工作要求和要传输…...
Docker网络模型(八)使用 macvlan 网络
使用 macvlan 网络 一些应用程序,特别是传统的应用程序或监控网络流量的应用程序,期望直接连接到物理网络。在这种情况下,你可以使用 macvlan 网络驱动为每个容器的虚拟网络接口分配一个MAC地址,使其看起来像一个直接连接到物理网…...
控制视图内容的位置
文本域中的提示内容在默认情况下是垂直居中的,要改变文本在文本域中的位置,可以使用android:gravity来实现。 利用android:gravity可以指定如何在视图中放置视图内容,例如,如何在文本域中放置文本。 如果希望视图文本显示在上方&a…...
【分布式系统与一致性协议】
分布式系统与一致性协议 CAP原理APCPCA总结BASE理论 一致性拜占庭将军问题 分布式系统是一个硬件或软件组件分布在不同的网络计算机上,彼此之间仅仅通过消息传递进行通信和协调的系统。 分布式系统的设计目标一般包含如下: 可用性:可用性是分…...
音视频领域的未来发展方向展望
文章目录 音视频领域的未来发展方向全景音视频技术虚拟现实和增强现实的区别 人工智能技术可视化智能分析智能语音交互图像识别和视频分析技术 语音处理智能推荐技术远程实时通信 流媒体技术未来方向 音视频领域的未来发展方向 全景音视频技术:全景音视频技术是近年…...
时间同步/集群时间同步/在线/离线
目录 一、能够连接外网 二、集群不能连接外网--同步其它服务器时间 一、能够连接外网 1.介绍ntp时间协议 NTP(Network Time Protocol)网络时间协议,是用来使计算机时间同步的一种协议,它可以使计算机对其服务器或时钟源做同步…...
基于BP神经网络对MNIST数据集检测识别(numpy版本)
基于BP神经网络对MNIST数据集检测识别 1.作者介绍2.BP神经网络介绍2.1 BP神经网络 3.BP神经网络对MNIST数据集检测实验3.1 读取数据集3.2 前向传播3.3 损失函数3.4 构建神经网络3.5 训练3.6 模型推理 4.完整代码 1.作者…...
HTML5-创建HTML文档
HTML5中的一个主要变化是:将元素的语义与元素对其内容呈现结果的影响分开。从原理上讲这合乎情理。HTML元素负责文档内容的结构和含义,内容的呈现则由应用于元素上的CSS样式控制。下面介绍最基础的HTML元素:文档元素和元数据元素。 一、构建…...
Vue中Axios的封装和API接口的管理
一、axios的封装 在vue项目中,和后台交互获取数据这块,我们通常使用的是axios库,它是基于promise的http库,可运行在浏览器端和node.js中。他有很多优秀的特性,例如拦截请求和响应、取消请求、转换json、客户端防御XSR…...
MLIR面试题
1、请简要解释MLIR的概念和用途,并说明MLIR在编译器领域中的重要性。 MLIR(Multi-Level Intermediate Representation)是一种多级中间表示语言,提供灵活、可扩展和可优化的编译器基础设施。MLIR的主要目标是为不同的编程语言、领域专用语言(DSL)和编译器…...
***杨辉三角_yyds_LeetCode_python***
1.题目描述: 给定一个非负整数 numRows,生成「杨辉三角」的前 numRows 行。 在「杨辉三角」中,每个数是它左上方和右上方的数的和。 示例 1: 输入: numRows 5 输出: [[1],[1,1],[1,2,1],[1,3,3,1],[1,4,6,4,1]] 示例 2: 输入: numRows …...
Mac使用DBeaver连接达梦数据库
Mac使用DBeaver连接达梦数据库 下载达梦驱动包 达梦数据库 在下载页面随便选择一个系统并下载下来。 下载下来的是zip的压缩包解压出来就是一个ISO文件,然后我们打开ISO文件进入目录:/dameng/source/drivers/jdbc 进入目录后找到这几个驱动包&#x…...
spring.expression 随笔0 概述
0. 我只是个普通码农,不值得挽留 Spring SpEL表达式的使用 常见的应用场景:分布式锁的切面借助SpEL来构建key 比较另类的的应用场景:动态校验 个人感觉可以用作控制程序的走向,除此之外,spring的一些模块的自动配置类,也会在Cond…...
从Cookie到Session: Servlet API中的会话管理详解
文章目录 一. Cookie与Session1. Cookie与Session2. Servlet会话管理操作 二. 登录逻辑的实现 一. Cookie与Session 1. Cookie与Session 首先, 在学习过 HTTP 协议的基础上, 我们需要知道 Cookie 是 HTTP 请求报头中的一个关键字段, 本质上是浏览器在本地存储数据的一种机制,…...
docker数据管理与网络通信
一、管理docker容器中数据 管理Docker 容器中数据主要有两种方式:数据卷(Data Volumes)和数据卷容器( DataVolumes Containers) 。 1、 数据卷 数据卷是一个供容器使用的特殊目录,位于容器中。可将宿主机的目录挂载到数据卷上,对数据卷的修改操作立刻…...
怎么查询电脑的登录记录及密码更改情况?
源头是办公室公用的电脑莫名其妙打不开了,问别人也都不知道密码是多少 因为本来就没设密码啊!(躺倒) 甚至已经想好了如果是50万想攻破电脑,被po抓住要怎么花这笔钱了 是我想太多 当然最后也没解决,莫名…...
《三》TypeScript 中函数的类型
TypeScript 允许指定函数的参数和返回值的类型。 函数声明的类型定义:function 函数名(形参: 形参类型, 形参: 形参类型, ...): 返回值类型 {} function sum(x: number, y: number): number {return x y } sum(1, 2) // 正确 sum(1, 2, 3) // 错误。输入多余的或者…...
wordpress构架都是模板/seo全国最好的公司
1、业务场景:在开发业务时,有一个对象数组,对象数组有一个字段是数字,我需要筛选出这个数组对应的数字字段的最大值,于是用到了如下代码: Math.max.apply(Math,mayArr.map((item:{score:number})> retu…...
做优惠卷网站/冯耀宗seo教程
npm 初始化by Zell Liew由Zell Liew 初始化npm的最佳时间 (The best time to npm init) When should you npm init?您应该何时启动npm init ? Most developers run npm init right after creating and navigating into a new project.大多数开发人员在创建并导航…...
my eclipse网站开发/友情链接价格
大家好,我是表哥Harker,表妹我来咯~ 从今天起是 Web前端开发基础入门的正式第一篇,早起的鸟儿有虫吃,开饭咯! 顺便说下整个系列有一篇学习导图方便表妹们查找 第一篇讲什么呢? 山不在高,有仙则灵,楼不在高,地基稳才行哟!我们可以观察房地产公司开发一片住宅区楼房时…...
网站论坛怎么建设/进行seo网站建设
在《人月神话》中,布鲁克斯老先生将维护软件的" 概念完整性" 作为软件开发的核心问题。软件之所以很复杂、难以维护,根本原因就在于软件的概念完整性遭到了破坏,甚至开发团队的成员从来就没有意识到有必要去维护软件的概念完整性&a…...
品牌自适应网站建设/开发一个网站的步骤流程
/** JDK1.5后出现的特性,自动装箱和自动拆箱* 自动装箱: 基本数据类型,直接变成对象* 自动拆箱: 对象中的数据变回基本数据类型* 方便使用* 自动装箱和拆箱弊端,可能出现空指针异常*/ public class IntegerDemo_2 {public static void main(String[] args) {function…...
勉费申请做网站/关键词搜索神器
关于Spring中基于xml文件配置bean的详细总结(spring 4.1.0) 一、Spring中的依赖注入方式介绍 依赖注入有三种方式 属性注入构造方法注入工厂方法注入(很少使用,不推荐,本文不再介绍)属性注入 通过 setter…...