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

【测试工具JMeter篇】JMeter性能测试入门级教程(七):JMeter断言

一、前言

在 JMeter 中,断言元件(Assertion)用于验证测试结果是否符合预期。断言元件可以检查服务器的响应数据,以确保它们符合期望的模式或值,从而验证性能测试脚本的正确性。断言元件通常在每个请求的响应中添加,以确保服务器返回了正确的响应。

二、常用的JMeter断言元件

1. 常用断言元件

  • Response Assertion(响应断言)
  • Size Assertion(大小断言)
  • XPath Assertion(XPath 断言)
  • JSON Assertion(Json 断言)

2. 断言添加方式:

根据需要可在【测试计划】、【线程组】、【线程请求】下添加断言,一般在对应的【线程请求】下添加,如下图所示。
添加路径:【线程请求-点击右键-添加-断言-对应的断言形式】

3. 查看断言结果

3.1 【断言结果】看断言结果

添加路径:【测试计划-点击右键-添加-监听器-断言结果】

在这里插入图片描述


整个测试计划下所有请求所有断言结果报错信息均会在此显示,如下图所示,将所有断言结果的报错信息直接展示出来。

在这里插入图片描述

3.2【查看结果树】看断言结果

添加路径:【测试计划-点击右键-添加-监听器-查看结果树】,整个测试计划下所有请求所有断言结果报错信息均会在此显示,如下图的形式,切换查看。

在这里插入图片描述

三、断言元件的详细介绍

3.1 Response Assertion(响应断言)

3.1.1 简介

        用于检查服务器响应的内容是否符合预期,可以基于响应的内容、代码、消息或其他属性进行断言。可以根据响应文本、响应代码、响应消息和其他参数来定义断言条件,并指定断言模式(包含、匹配、不包含等)。

3.1.2 参数配置介绍

  1. Apply to 选项默认即可,Main sample only(仅作用于父节点取样器)。

  2. 测试字段:要检查的项 (实际结果)

    • Text Response:来自服务器的响应文本。
    • Response Code:响应的状态码,例如:200。
    • Response Message:响应的信息,例如: OK。
    • Response Headers: 响应头部
    • Request Headers: 请求头部
    • Request Data:请求数据
    • URL 样本:请求 URL
    • Document(text): 响应的整个文栏
    • 忽略状态:忽略返回的响应状态码
  3. 模式匹配规则:比较方式(校验规则)

    • contains(包括):文本包含指定的正则表达式
    • Matches(匹配):整个文本匹配指定的正则表达式
    • Equals(等于):整个返回结果的文本等于指定的字符串(区分大小写)
    • substring:返回结果的文本包含指定字符串(区分大小写)
    • 否: 取反
    • 或者:如果存在多个测试模式,勾选代表逻辑或(只要有一个模式匹配,则断言就是 ok),不勾选代表逻辑与(所有都必须匹配,断言才是 ok)
  4. 测试模式:预期结果,即填写指定的结果(可填写多个) 按钮[添加]、[删除] 是进行指定内容的管理。

3.1.3 实战案例

检查百度首页的请求响应中是否包含"百度一下,你就知道"。

1. 步骤一:添加百度的 HTTP Request,添加对应的 Response Assertion,添加查看结果树。

如下图所示:

2. 步骤二:在 Response Assertion 元件中添加对应配置,

如下图所示:

3. 步骤三:查看结果如图所示:断言成功。

3.2 Size Assertion(大小断言)

3.2.1 简介

在 JMeter 中,Size Assertion 是一种断言元件,用于验证服务器响应的内容的大小是否符合预期。Size Assertion 允许您检查返回的响应数据的大小是否在指定的范围内,以便在性能测试中验证响应的大小是否符合要求。

3.2.2 参数配置介绍

  1. Apply to 选项默认即可,Main sample only(仅作用于父节点取样器)。
  2. Response Size Field to Test:

    • Full Response:完整响应
    • Response Headers:响应头
    • Response Body:响应的消息体,选择此项判断返回主题数据 Body 的大小
    • Response Code:响应代码
    • Response Message:响应信息
  3. Size to Assert:

    • size in bytes(字节大小):设置要判断的数值,单位 bytes/kb
    • Type of Comparison(比较类型)

3.2.3 实战案例

检查百度首页的请求响应的内容大小是否大于等于 2381。

1. 步骤一:添加百度的 HTTP Request,添加对应的 Size Assertion,添加查看结果树。

如下图所示:

2. 步骤二:在 Size Assertion 元件中添加对应配置

如下图所示:

3. 步骤三:查看结果如图所示:断言成功。

3.3 XPath Assertion(XPath 断言)

3.3.1 简介

        XPath Assertion 是 JMeter 中的一种断言元件,用于验证 XML 或 HTML 响应的内容是否符合指定的 XPath 表达式。XPath 是一种用于在 XML 文档中定位和选择元素的语言,通过 XPath Assertion,可以使用 XPath 表达式来验证响应中的特定内容,例如检查特定元素、属性或文本是否存在或符合条件。

3.3.2 参数配置介绍

  1. XML Parsing Options (XML 解析选项)

    • Use Tidy:当需要处理的页面是 HTML 格式时,必须选中该选项;如果是 XML 或 XHTML 格式(例如 RSS 返回),则取消选中,默认是 quiet;
    • Quiet 表示只显示需要的 HTML 页面,
    • Report errors 表示显示响应报错,
    • Show warnings 表示显示警告;
    • Use Namespaces:如果启用该选项,后续的 XML 解析器将使用命名空间来分辨;
    • Validate XML:根据页面元素模式进行检查解析;
    • Ignore Whitespace:忽略空白内容;
    • Fetch external DTDs:如果选中该项,外部将使用 DTD 规则来获取页面内容。引用名称:下一个请求要引用的参数名称,如填写 title,则可用${ var_regexp2}引用它。 (一些 XML 元素具有属性,属性包含应用程序使用的信息,属性仅在程序对元素进行读、写操作时,提供元素的额外信息,这时候需要在 DTDs 中声明)
  2. Xpath Assertion 用于填写 xpath 表达式,点击 Validate 验证其正确性,勾选 True if nothing matches 表示确认都不匹配,才会断言验证通过。

3.3.3 实战案例

检查百度首页的请求响应的内容包含 Xpath 表达式://input[@id="kw"]

1. 步骤一:添加百度的 HTTP Request,添加对应的 XPath Assertion,添加查看结果树。

如下图所示:

2. 步骤二:在 Xpath Assertion 元件中添加对应配置

如下图所示:

3. 步骤三:查看结果如图所示:断言成功。

3.4 JSON Assertion(Json 断言)

3.4.1 简介

        JSON Assertion 是 JMeter 中的一种断言元件,用于验证 JSON 格式的响应数据是否符合预期。在进行 API 接口性能测试时,通常会返回 JSON 格式的响应数据,通过 JSON Assertion,可以根据预定义的 JSON 断言规则来验证返回的 JSON 数据是否正确。

3.4.2 参数配置介绍

  • Assert JSON Path exists: 用于断言的 JSON 元素的路径(实际结果)
  • Additionally assert value: 如果想要用某个值生成断言,请选择复选框。
  • Match as regular expression 使用正则表达式断言。
  • Expected Value: 期望值 (期望结果)
  • Expect null: 如果希望为空,请选择复选框。
  • Invert assertion (will fail if above conditions met): 反转断言(如果满足以上条件则失败)

3.4.3 JSON与JSON Path的简单说明

(1)JSON(JavaScript Object Notation)是一种轻量级的数据交换格式。

JSON数据容易理解,便于阅读和编写,同时计算机也易于解析和生成,所以JSON有广泛的应用。JSON常用数据结构如下:

  • 对象(object)格式
{"name": "zhanghe","sex": 1,"age": 25
}
  • 数组(Array)格式
{"man": [{"name": "zhanghe","sex": 1,"age": 25},{"name": "zhangsan","sex": 0,"age": 28}],"women": [{"name": "sansan","sex": 1,"age": 25},{"name": "huanhuan","sex": 0,"age": 28}  ]
}

(2)JSONPath

我们经常用XPath来分析、转换以及由选择的从XML文档中提取数据,与XPath类似,JSONPath也可以方便的从JSON结构中发现和提取数据。

(3)JSONPath语法

JsonPath的语法相对简单,它采用开发语言友好的表达式形式,如果你了解类C语言,对JsonPath就不会感到不适应。

JsonPath语法要点:

  • $ 表示文档的根元素
  • @ 表示文档的当前元素
  • .node_name 或 ['node_name'] 匹配下级节点
  • [index] 检索数组中的元素
  • [start:end:step] 支持数组切片语法
  • * 作为通配符,匹配所有成员
  • .. 子递归通配符,匹配成员的所有子元素
  • (<expr>) 使用表达式
  • ?(<boolean expr>)进行数据筛选

下表将列举所有支持的语法,并对XPath进行比较:

XPathJsonPath说明
/$文档根元素
.@当前元素
/.[]匹配下级元素
..N/A匹配上级元素,JsonPath不支持此操作符
//..递归匹配所有子元素
**通配符,匹配下级元素
@N/A匹配属性,JsonPath不支持此操作符
[][]下标运算符,根据索引获取元素,XPath索引从1开始,JsonPath索引从0开始
``[,]
N/A[start:end:step]数据切片操作,XPath不支持
[]?()过滤表达式
N/A()脚本表达式,使用底层脚本引擎,XPath不支持
()N/A分组,JsonPath不支持

注意:

  • JsonPath的索引从0开始计数
  • JsonPath中字符串使用单引号表示,例如:$.store.book[?(@.category=='reference')]中的'reference'

具体示例如下表:

下面是相应的JsonPath的示例,代码来源于JSONPath - XPath for JSON,JSON文档如下:

{"store": {"book": [{"category": "reference","author": "Nigel Rees","title": "Sayings of the Century","price": 8.95}, {"category": "fiction","author": "Evelyn Waugh","title": "Sword of Honour","price": 12.99}, {"category": "fiction","author": "Herman Melville","title": "Moby Dick","isbn": "0-553-21311-3","price": 8.99}, {"category": "fiction","author": "J. R. R. Tolkien","title": "The Lord of the Rings","isbn": "0-395-19395-8","price": 22.99}],"bicycle": {"color": "red","price": 19.95}}
}

接下来我们看一下如何对这个文档进行解析:

XPathJsonPathResult
/store/book/author$.store.book[*].author所有book的author节点
//author$..author所有author节点
/store/*$.store.*store下的所有节点,book数组和bicycle节点
/store//price$.store..pricestore下的所有price节点
//book[3]$..book[2]匹配第3个book节点
//book[last()]$..book[(@.length-1)],或 $..book[-1:]匹配倒数第1个book节点
//book[position()<3]$..book[0,1],或 $..book[:2]匹配前两个book节点
//book[isbn]$..book[?(@.isbn)]过滤含isbn字段的节点
//book[price<10]$..book[?(@.price<10)]过滤price<10的节点
//*$..*递归匹配所有子节点
你可以在JSONPath Online Evaluator站点进行验证JsonPath的执行效果。

3.4.4 实战案例

检查天气请求响应的 JSON 数据中,city 对应的内容是否为'北京'。

步骤一:添加天气的 HTTP Request,添加对应的 JSON Assertion,添加查看结果树。

如下图所示:

步骤二:在 JSON Assertion 元件中添加对应配置

如下图所示:

步骤三:查看结果如图所示:断言成功。

相关文章:

【测试工具JMeter篇】JMeter性能测试入门级教程(七):JMeter断言

一、前言 在 JMeter 中&#xff0c;断言元件&#xff08;Assertion&#xff09;用于验证测试结果是否符合预期。断言元件可以检查服务器的响应数据&#xff0c;以确保它们符合期望的模式或值&#xff0c;从而验证性能测试脚本的正确性。断言元件通常在每个请求的响应中添加&am…...

Linux 常用命令

目录 一、ls 指令 二、pwd命令 三、cd 指令 1、cd 目录名 2、cd .. 返回上级目录 3、cd ~ 进入用户家目 4、cd - 返回最近访问目录 5、cd相对路径&&cd绝对路径 四、touch指令 五、mkdir指令 1、mkdir 目录名 创建一个目录 2、mkdir -p 递归创建多…...

汽车IVI中控OS Linux driver开发实操(二十八):回声消除echo cancellation和噪声消除Noise reduction

概述: 在当今高度互联的世界中,清晰的实时通信比以往任何时候都更重要。在远程团队会议期间,没有什么能像回声一样打断对话。当说话者听到他们的声音回响时,可能会分散注意力,甚至无法理解对话。即使是很小的回声也会产生很大的影响,仅仅25毫秒的振幅就足以造成声音干扰…...

003-SpringBoot整合Pagehelper

SpringBoot整合Pagehelper 一、引入依赖二、配置 application.yml三、配置 MybatisPlusConfig四、Controller五、ServiceImpl 一、引入依赖 <dependency><groupId>com.github.pagehelper</groupId><artifactId>pagehelper-spring-boot-starter</ar…...

零基础学安全--shell练习

目录 用shell写一个计算器 测试​ 一些小问题 n阶乘数 测试 拓展 写⼀个Shell脚本去筛选出eth0⽹卡的ipv4地址&#xff0c;并赋值⼀个变量输出 测试 无限重启 用shell写一个计算器 read -p "请输入数字a: " number1 read -p "请输入操作符&#xf…...

【专题】计算机网络之运输层(传输层)

1. 运输层协议概述 1.1 进程之间的通信 (1) 运输层的作用 运输层提供进程间的逻辑通信。 运输层的屏蔽作用&#xff1a; 运输层向高层用户屏蔽了下面网络核心的细节&#xff08;如网络拓扑、所采用的路由选择协议等&#xff09;&#xff0c;使应用进程看见的就是好像在两个运…...

【leetcode100】旋转图像

1、题目描述 给定一个 n n 的二维矩阵 matrix 表示一个图像。请你将图像顺时针旋转 90 度。 你必须在 原地 旋转图像&#xff0c;这意味着你需要直接修改输入的二维矩阵。请不要 使用另一个矩阵来旋转图像。 示例 1&#xff1a; 输入&#xff1a;matrix [[1,2,3],[4,5,6],…...

软件工程——期末复习(1)

名词解释&#xff1a; 名词解释--人月 答案&#xff1a;人月是软件开发工作量的单位&#xff0c;1人月表示1个程序员1个月的工作时间所开发的代码量。 请解释软件缺陷、错误和失败&#xff0c;并简单举例说明。 答案&#xff1a;缺陷&#xff08;defect&#xff09;指系统代…...

HTML5系列(3)--多媒体标签详解

前端技术探索系列&#xff1a;HTML5 多媒体标签详解 &#x1f3a5; 开篇寄语 &#x1f44b; 前端开发者们&#xff0c; 在前三篇文章中&#xff0c;我们探讨了 HTML5 的语义化和表单特性。今天&#xff0c;让我们深入了解 HTML5 的多媒体能力&#xff0c;看看如何构建强大的…...

Spring Boot 3.4.0 发布:功能概览与示例

Spring Boot 3.4.0 带来了许多增强功能&#xff0c;使现代应用开发更加高效、便捷和强大。以下是最新功能的完整概述&#xff0c;以及一些帮助您快速入门的代码示例。 1. 应用程序版本管理 Spring Boot 引入了 spring.application.version 属性&#xff0c;方便开发者设置和访…...

【Vue3】【Naive UI】<n-upload>标签

【Vue3】【Naive UI】标签 基本设置 【VUE3】【Naive UI】&#xff1c;NCard&#xff1e; 标签 【VUE3】【Naive UI】&#xff1c;n-button&#xff1e; 标签 【VUE3】【Naive UI】&#xff1c;a&#xff1e; 标签 【VUE3】【Naive UI】&#xff1c;NDropdown&#xff1e; 标签…...

7.代理模式(Proxy Pattern)

古朗月行 代理模式JDK动态代理代码示例原码分析 cglib动态代理代码示例源码分析 JDK cglib动态代理对比ClassLoader类的生命周期&#xff1a; 参考资料 唐 李白 小时不识月&#xff0c;呼作白玉盘。 又疑瑶台镜&#xff0c;飞在青云端。 仙人垂两足&#xff0c;桂树何团团。…...

【效果】回到顶部功能实现

实现效果&#xff1a; 相关代码&#xff1a; <template><div class"cats" :style"{ top: catsTop }" ref"cats" click"catTop"></div> </template> 样式&#xff1a; /* 回到顶部 - 小猫咪 */ .cats {posi…...

项目搭建+修改

一 : 在列表成功回调函数,追加数据中,添加修改的按钮 for (let x of res) {//追加数据$("#table").append(<tr><td><input type"checkbox" class"ck" value"\${x.uid}"></td><td>\${x.uid}</td>…...

GD库如何根据颜色生成纯色背景图

GD库是一个用于图像处理的PHP扩展模块&#xff0c;它提供了一系列函数来创建、编辑和操作图像。要使用GD库根据颜色生成纯色背景图&#xff0c;可以按照以下步骤进行&#xff1a; 一、检查并安装GD库 检查GD库是否已安装&#xff1a; 可以通过运行phpinfo();或在命令行中使用p…...

Python 网络爬虫入门全知道

一、引言 在当今数字化时代&#xff0c;网络上的数据量呈爆炸式增长。无论是进行数据分析、市场调研&#xff0c;还是开发智能应用&#xff0c;获取网络数据都变得极为重要。而 Python 网络爬虫就是一把打开网络数据宝库的利器。它能够自动地从网页中抓取我们需要的信息&#…...

MATLAB期末复习笔记(下)

目录 五、数据和函数的可视化 1.MATLAB的可视化对象 2.二维图形的绘制 3.图形标识 4.多子图绘图 5.直方图的绘制 &#xff08;1&#xff09;分类 &#xff08;2&#xff09;垂直累计式 &#xff08;3&#xff09;垂直分组式 &#xff08;4&#xff09;水平分组式 &…...

基于大数据爬虫数据挖掘技术+Python的网络用户购物行为分析与可视化平台(源码+论文+PPT+部署文档教程等)

#1024程序员节&#xff5c;征文# 博主介绍&#xff1a;CSDN毕设辅导第一人、全网粉丝50W,csdn特邀作者、博客专家、腾讯云社区合作讲师、CSDN新星计划导师、Java领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和学生毕业项目实战,高校老…...

【go】只读通道和只写通道

文章目录 概述1. 通道的方向2. 为什么会有只读通道和只写通道&#xff1f;3. 总结 概述 在 Go 中&#xff0c;只读通道和只写通道的概念通过通道的方向来实现。Go 语言允许你在函数参数中指定通道的方向&#xff0c;从而限制通道的使用方式&#xff0c;这样可以确保代码的清晰…...

带Burst AOT Settings移植问题

报错 burst问题 Burst AOT Settings 是 Unity 的 Burst Compiler 的一部分&#xff0c;用于预编译程序集&#xff08;AOT&#xff0c;Ahead-Of-Time Compilation&#xff09;&#xff0c;以便在不支持 JIT&#xff08;即时编译&#xff09;的平台上运行&#xff0c;例如 iOS 和…...

Debezium日常分享系列之:Debezium Engine

Debezium日常分享系列之&#xff1a;Debezium Engine 依赖打包项目在代码中输出消息格式消息转换消息转换谓词高级记录使用引擎属性异步引擎属性数据库模式历史属性处理故障 Debezium连接器通常通过部署到Kafka Connect服务来运行&#xff0c;并配置一个或多个连接器来监视上游…...

运行 GreatSQL 时为什么要求关闭透明大页

在大部分运维规范中&#xff0c;一般都会要求在运行 GreatSQL/MySQL 的环境中要关闭透明大页&#xff0c;那么到底什么是透明大页&#xff0c;为什么要关闭&#xff0c;打开有什么风险吗&#xff1f; 在此之前&#xff0c;我也是有点懵的&#xff0c;本文试着回答这个疑问&…...

【Rive】Rive在Android上的简单应用

1 前言 Rive 是一款强大的矢量图编辑器&#xff0c;可以设计图形、也可以制作动画。Rive 提供了矩形、圆形、三角形、多边形、星形、钢笔、文字等工具来绘制各式各样的矢量图形&#xff1b;提供了平移、旋转、缩放等工具对矢量图形进行各种变换&#xff1b;提供了骨骼、约束、时…...

Base 崛起,SynFutures 或成生态系统中最具潜力应用

10月份的 Unchained Crypto 采访中&#xff0c;Solana 联合创始人 Anatoly 表示&#xff0c;通过观察活跃地址数、TVL、DeFi 版块、Meme 热潮和开发者生态等多个关键指标&#xff0c;察觉到 Base 势头正猛&#xff0c;成为以太坊生态最强劲的 L2。 11月下旬&#xff0c;小狐狸创…...

探索Go语言中的循环双向链表

简介 循环双向链表将双向链表的灵活性与循环结构相结合&#xff0c;使得每个节点都有一个指向前一个节点和后一个节点的指针&#xff0c;并且最后一个节点的Next指针指向头节点&#xff0c;形成一个闭环。本文将深入探讨如何在Go语言中实现和操作这种数据结构。 循环双向链表…...

Leetcode617.合并二叉树(HOT100)+Leetcode79. 单词搜索(HOT100)

链接 代码&#xff1a; class Solution { public:TreeNode* mergeTrees(TreeNode* root1, TreeNode* root2) {if(!root1)return root2;if(!root2)return root1;root1->valroot2->val;root1->left mergeTrees(root1->left,root2->left);root1->right merg…...

亚马逊云(AWS)使用root用户登录

最近在AWS新开了服务器&#xff08;EC2&#xff09;&#xff0c;用于学习&#xff0c;遇到一个问题就是默认是用ec2-user用户登录&#xff0c;也需要密钥对。 既然是学习用的服务器&#xff0c;还是想直接用root登录&#xff0c;下面开始修改&#xff1a; 操作系统是&#xff1…...

使用Docker在Ubuntu 22.04上部署MySQL数据库的完整指南

使用Docker在Ubuntu 22.04上部署MySQL数据库的完整指南 在现代应用开发中&#xff0c;使用Docker来部署数据库已成为一种流行的做法。本文将详细介绍如何在Ubuntu 22.04系统上使用Docker部署最新版本的MySQL数据库&#xff0c;包括关键注意事项、详细步骤、闭坑指南以及总结。…...

算法笔记:力扣15、三数之和

思路&#xff1a; 实现代码 class Solution {public List<List<Integer>> threeSum(int[] nums) {List<List<Integer>> result new ArrayList<>(); Arrays.sort(nums); // 先对数组进行排序 for (int i 0; i < nums.length - 2; i) { /…...

perf list PMU 缓存事件

事件标识事件解释PMU事件路径l1d_cacheL1数据缓存的访问次数&#xff0c;L1缓存是CPU内部最快的缓存&#xff0c;位于距离CPU核心非常近的位置。armv8_pmuv3/l1d_cache/l1d_cache_lmiss_rd表示从L1数据缓存读取数据时发生缓存未命中的次数。armv8_pmuv3/l1d_cache_lmiss_rd/l1d…...

使用C#开发VTK笔记(一)-VTK开发环境搭建

一.使用C#开发VTK的背景 因为C#开发的友好性,一直都比较习惯于从C#开发程序。而长期以来,都希望有一个稳定可靠的三位工程数模的开发演示平台,经过多次对比之后,感觉VTK和OpenCasCade这两个开源项目是比较好的,但它们都是用C++编写的,我用C#形式开发,只能找到发布的C#组…...

2024Selenium自动化常见问题!

"NoSuchElementException"异常&#xff1a; 确保使用了正确的选择器来定位元素。可以使用id、class、XPath或CSS选择器等。 可以尝试使用find_elements方法来查找元素列表&#xff0c;并检查列表的长度来判断元素是否存在。 使用显式等待&#xff08;WebDriverWait…...

考研英语翻译与大小作文

名词动化词 1 持有 harbor2 2 反映 mirror 3 缩短 bridge 4 使用 harness 5 掩饰 mask/veil 6 修改 tailor 7 汇集 pool 8 控制 curb 9 想象 picture 10 激发 trigger 拉丁…...

详解Rust异步编程

文章目录 多线程编程与异步编程对比并发模型对比分析异步编程基础概念及用法 Rust的异步编程通过async/await语法和Future特性提供了一种高效的方式来处理并发任务&#xff0c;尤其在I/O密集型操作中表现出色。async/await异步编程模型性能高&#xff0c;还能支持底层编程&…...

Vue + Element UI 实战技巧:如何实现 el-table 重新加载数据后折叠所有展开行

在 Vue 中使用 Element UI 的 el-table 组件时&#xff0c;如果你想要在数据重新加载后折叠所有行的展开状态&#xff0c;你可以通过维护一个数据属性来追踪哪些行是展开的&#xff0c;并在数据更新时重置这个属性。 以下是一个简单的示例来说明如何实现这个功能&#xff1a; …...

linux静态链接和动态链接

静态链接的特点 程序独立性高 静态链接是在程序编译时&#xff0c;将所有需要的目标文件以及它们所依赖的库文件中的代码和数据链接成一个可执行文件。一旦链接完成&#xff0c;这个可执行文件就包含了运行所需的全部内容&#xff0c;不依赖外部的库文件。例如&#xff0c;一个…...

计算机网络学习资料全攻略

计算机网络是计算机科学中一个非常重要的分支&#xff0c;它涉及到数据在计算机系统之间的传输和通信。随着互联网的快速发展&#xff0c;对计算机网络知识的掌握变得越来越重要。本文将为您提供一份全面的计算机网络学习资料指南&#xff0c;帮助您从基础到高级逐步深入学习。…...

第七课 Unity编辑器创建的资源优化_UI篇(UGUI)

上期我们学习了简单的Scene优化&#xff0c;接下来我们继续编辑器创建资源的UGUI优化 UI篇&#xff08;UGUI&#xff09; 优化UGUI应从哪些方面入手&#xff1f; 可以从CPU和GPU两方面考虑&#xff0c;CPU方面&#xff0c;避免触发或减少Canvas的Rebuild和Rebatch&#xff0c…...

Go的简单问题问答

基础问题回答 Go 的主要特点是什么&#xff1f; 简洁&#xff1a;语法简化&#xff0c;减少复杂性。并发&#xff1a;内置 Goroutine 和 Channel&#xff0c;支持轻量级并发。静态类型&#xff1a;强类型语言&#xff0c;编译时检查错误。跨平台&#xff1a;编译生成独立的二进…...

SVN迁移至Git,保留commit提交记录

SVN迁移至Git 如何将 SVN 仓库迁移到 Git 并保留提交记录一、生成userinfo.txt二. 使用 git svn clone 命令迁移 SVN 到 Git2.1. 基本命令格式2.2. 示例&#xff1a;从 SVN 克隆到 Git参数说明&#xff1a;2.3 执行的过程遇到的窗口2.4. 迁移过程 三. 将 Git 仓库推送到远程 Gi…...

一站式指导:在Neo4j与PostgreSQL间实现高效数据同步

作者&#xff1a;后端小肥肠 &#x1f347; 我写过的文章中的相关代码放到了gitee&#xff0c;地址&#xff1a;xfc-fdw-cloud: 公共解决方案 &#x1f34a; 有疑问可私信或评论区联系我。 &#x1f951; 创作不易未经允许严禁转载。 姊妹篇&#xff1a; 数据同步的艺术&#…...

linux-安全-iptables防火墙基础笔记

目录 一、 iptables链结构 五链 二、 iptables表结构 四表 三、 匹配流程 四、 语法 五、 匹配 1. 通用匹配 2. 隐含匹配 3. 显示匹配 六、 SNAT 七、 DNAT 八、 规则备份及还原 1. 备份 2. 还原 这篇将讲解iptables防火墙的基础知识 一、 iptables链结构 规则…...

Redis——主从复制原理

Redis的主从复制原理是其高可用性和分布式读取能力的重要基础。以下是Redis主从复制原理的详细解释&#xff1a; 一、主从复制的基本概念 Redis的主从复制是一种数据复制和备份的方式&#xff0c;它允许一个主节点&#xff08;Master&#xff09;将其所有的数据同步到一个或多…...

vue2 虚拟DOM 和 真实DOM (概念、作用、Diff 算法)

虚拟 DOM 和 真实DOM&#xff08;概念、作用、Diff 算法&#xff09; 1.1 概念 真实 DOM&#xff08;Document Object Model&#xff09;&#xff1a;是浏览器中用于表示文档结构的树形结构。 <h2>你好</h2>虚拟DOM&#xff1a;用 JavaScript 对象来模拟真实 DOM…...

王道考研编程题总结

我还在完善中&#xff0c;边复习边完善&#xff08;这个只是根据我自身总结的&#xff09; 一、 线性表 1. 结构体 #define MaxSize 40 typedef struct{ElemType data[MaxSize]&#xff1b;int length; }SqList 2. 编程题 1. 删除最小值 题意 &#xff1a;从顺序表中删除…...

手机租赁系统开发全攻略 创新服务助力企业智能转型

内容概要 在当今数字化飞速发展的时代&#xff0c;“手机租赁系统开发”正逐渐成为企业智能转型的必然选择。这一过程并不简单&#xff0c;但关键流程的解析将帮助企业理清思路。首先&#xff0c;了解需求和目标是基础&#xff0c;之后制定详细计划和流程图&#xff0c;让整件…...

git回退到某个版本git checkout和git reset命令的区别

文章目录 1. git checkout <commit>2. git reset --hard <commit>两者的区别总结推荐使用场景* 在使用 Git 回退到某个版本时&#xff0c; git checkout <commit> 和 git reset --hard <commit> 是两种常见的方式&#xff0c;但它们的用途和影响有很…...

如何使用Spring Boot进行Web开发?

Spring Boot 是一个基于 Java 的框架&#xff0c;它简化了新 Spring 应用的初始设置和开发过程。使用 Spring Boot 进行 Web 开发可以让你快速创建独立的、生产级别的基于 Spring 的应用。下面是使用 Spring Boot 进行 Web 开发的基本步骤&#xff1a; 文章目录 1. 环境准备2. …...

error=‘null‘], commandType=io.lettuce.core.RedisPublisher$SubscriptionCommand]

问题 查看java应用启动日志输出下面错误&#xff1a; errornull], commandTypeio.lettuce.core.RedisPublisher$SubscriptionCommand] Completing command LatencyMeteredCommand [typeINFO, outputStatusOutput [output# Server redis_version:4.0.14 redis_git_sha1:000…...

AI PC处理器ARM架构-引入NPU和大模型

AI PC处理器架构变化&#xff1a;ARM低功耗、引入NPU和大模型 AI进化加速端侧落地&#xff0c;新一轮浪潮蓄势待发(2024)”。ARM(Advanced RISC Machine)架构和x86架构是两种主要的处理器架构&#xff0c;它们在设计理念、应用场景和性能特点等方面有显著的差异。 ARM架构是一…...