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

接口测试基础

一、认识接口测试

9d9b3fd2f1544c0499b49d9e537d8e28.png


接口测试

接口:系统之间数据交互的通道。

  • 硬件接口

  • 软件接口


fae44ac390dc45beb611673d3f61d5b5.png


接口测试:基于不同的输入参数,校验接口响应数据与预期数据是否一致。


为什么要学接口测试?

  • 提前介入测试、尽早发现问题

  • 中级测试工程师必备技能

18783831634c41d7aebde6677981a2fb.png


接口测试学什么?

  • 接口测试用例设计

  • 工具实现接口测试

  • 代码实现接口测试

2e1dc4f6762a4a80a0cded669d4f12a6.png


二、项目介绍

项目介绍

  • 项目名称:客达天下

  • 项目类型:销售管理系统 (CRM)

  • 项目特点:

    • 前后端分离

    • 功能通用性强

a167a8aceb9940f193511c496b07af78.png


熟悉项目

  • 项目角色:销售人员、销售经理、财务人员等

  • 项目业务:线索管理、合同管理等

  • 项目技术:

99bbf24f42a74edc93a99c86ec3102a4.png


待测接口

 需求:完成管理业务及相关单位模块接口测试。
合同管理业务登录添加课程上传合同新增合同
课程管理模块添加课程修改课程查询课程删除课程

64691b5ce06b4f219690cea5d8939436.png


接口测试流程

920cb6735ed9403fb156d64110df72f1.png


三、HTTP协议

3296f7f3ad62407e8bd4e5a9e0380b77.png


URL

URL:是互联网上标准资源的地址,一般称为统一资源定位符。

组成:协议://hostname[:port]/path/ [?查询参数1 & 查询参数2]

示例:

8befb7f37ec9410c920d8d518ec2edd7.png


HTTP协议

HTTP:超文本传输协议,基于请求与响应的应用层协议

作用:规定了客户端与服务器之间信息传递规范,是二者共同遵守的协议。

组成:

  • HTTP请求:定义请求数据格式

    • 请求行、请求头、请求体

  • HTTP响应:定义响应数据格式

    • 状态行、响应头、响应体


HTTP —请求行

位置:请求数据第一行

作用:说明需求方法、访问的资源、协议版本

356de25b276a42cbb778ff5cfd73db15.png


常用请求方法:

  • GET:从服务器获取资源

  • POST:在服务器新建一个资源

  • PUT:在服务器更新资源

  • DELETE:从服务器删除资源


HTTP请求—请求头

位置:请求数据第二行到空白行之间

作用:通知服务器客户端请求信息

特点:请求头部由键值对组成,每行一对

baad76fdf1fc44e8afd8083c798539d4.png


Content-Type:请求体数据类型

  • text/html:HTML格式

  • image/jpeg:jpg图片格式

  • application/json:JSON数据格式

  • application/x-www-form-urlencoded:表单默认的提交数据格式

  • multipart/form-data:在表单中进行文件上传时使用


HTTP请求—请求体

位置:空白行之间的内容

作用:传输数据实体

注意:请求体常在POST、PUT方法中使用

常配合的请求头:Content-Type和Content-Length

140da9c1b9824df98642deadb0677e27.png


  • 请求报文中可以没有请求体数据


HTTP响应—状态行

位置:响应数据第一行

作用:描述服务器处理结果

内容:状态行由协议版本号、状态码、状态消息组成

84ab820e7f58454e978dc5e05c461273.png


状态码:三位数字组成,第一个数字定义响应类别

 1XX:提示信息2XX:成功3XX:重定向4XX:客户端错误5XX:服务端错误

HTTP响应—常见的响应状态码

54527f14ec3241e6a0a8c90b3189f393.png


HTTP响应—响应头

位置:第二行开始到空白行之间

作用:描述客户端要使用的一些附加信息

特点:响应头由键值对组成,每行一对

182d5437eec046ef98692fc41f08d5c3.png


HTTP响应—响应体

位置:响应数据空白行之后

作用:服务器返回的数据实体

特点:有图片、json、xml、html等多种类型

332b1001fa3843eabe23577ff5fec61a.png


案例:

5ef773462df44478b8a046cc38284b30.png


四、接口规范

接口规范

作用:让前端开发与后台接口开发人员更好的配合,提高工作效率

常见接口规范:

传统接口风格

 RESTful接口风格

3f5362ac41be4d59a27084dae7c30cdb.png


传统接口风格

示例:对用户进行操作的相关接口,包括增删改查

872a0594bc914974909f953afe8a6544.png


RESTful

RESTful:一种网络应用程序的设计风格和开发方式,提供了一组设计原则和约束条件。

示例:

d354d3dcc72f48c390761b809571e2a9.png


特点:

  • 请求 API 的 URL 用来定位资源
  • 通过标准HTTP方法对资源进行增删改查操作
  • 利用HTTP状态码返回状态信息

区别

c15ca0099f3545d7b00a819f8647485d.png


Postman测试步骤

9cf2b35dd45e43c7900f52c650c740dd.png


一、合同新增业务

e1b0aa6180164ceea04dfc55d421add9.png


二、找业务路径

3bd0a330e8654b758c7c6485494ba45d.png


三、解析接口文档

7d076ef7ee9e4ec0871b5dfe430eea01.png


四、编写接口测试用例

65bed71bdeb4408dbb7eeec6ede20fa7.png


总结

1aa0a52f09234a559ef741ec9d731ffc.png


Postman使用

一、Postman介绍

介绍:Postman是一款接口调试工具

特点:支持 Mac、Windows 和 Linux

下载:

 https://www.getpostman.com

4e72dfa8a7574b1dba07aa7a7d20e597.png


二、登录接口调式

获取验证码

 需求:使用postman访问验证码接口,并查看响应结果​地址:
​​​​​​​ http://kdtx-test.itheima.net/api/captchaimage​实现步骤1.设置请求方式2.输入接口地址3.点击发送请求4.查看响应结果

a37546fa92d248249cc43d5ef1d8fcf2.png


登录

 需求:使用Postman访问验证码接口,并查看响应结果说明:地址:http://kdtx-test.itheima.net/api/login方法:post请求数据:请求头:Content-Type:application/json请求体:["username": "admin","password": "admin 123","code":"2","uuid":"验证码接口返回结果中的数据值"]实现步骤:1.设置请求方式2.输入接口地址3.点击发送请求4.查看响应结果

156268fc6ece41779f96f1ba04821430.png


总结

d43638f592e3439ca9d6f56d73af3527.png


三、自动关联数据

问题:每次登录之前都需要手动复制验证码数据

思路:

6d2159a872a04f2687adbd6cbaf9f96f.png


自动关联数据

环境创建与选择

e313e7e586fb4dd8b8fbaa7169dc5b65.png


案例:使用自动关联技术,实现登录成功

需求:

 1.验证码接口:/api/captchaimage2.登录接口:/api/login登录接口请求体uuid字段 -> 验证码接口返回 uuid字段

分析:

 1.验证码接口响应体中提取uuidvar jsonData = pm.response.json();2.设置环境变量保存uuidpm.environment.set("var_name",value);3.登录接口引用uuid请求参数中引用: {{var_name}}

c3d04bd5a05d45539285a4c413f831da.png


总结

a02f7776a80d4652a9b5cda77048b06a.png


接口调式

一、添加课程接口调试

1b5f9b1b4af347869906186e54abe31b.png


二、上传合同接口调试

bd59ec39708b4330b827ee8fbaee850d.png


Postman调试合同上传接口

6ae6443169f34c8fbcab909fd1686aab.png


6c181f797d8f4f6abc3848555cb1272f.png


三、新增合同接口调试

添加合同接口调试

1a4f7e49ebf34950a1fe50c492c8f332.png

注意:

测试数据中的合同编号 contracNo 必须唯一。


查询合同列表接口调试

6af519951c844b1aa6604269e3150443.png


总结

6adc026629c04bac8a54929e64d548a3.png


Postman进阶

一、批量执行

735f7adb6c2e45388c47421b4e4d9634.png


Postman批量执行

作用:通过运行测试集的方式批量运行测试用例

步骤:

  1. 点击测试集中的 "Run" 按钮,批量运行测试用例

  2. 弹出 Collection Runner窗口,点击运行按钮

  3. 查看测试结果

638741ef8f524ed7bce683fdad430019.png


1d18dc21453f4f41bb077b8c3145e8ba.png


aa87e3335c0c4e88958c3bd99a6373bb.png


1f2e4449ce69418aadfb2cab9e797ac2.png


二、登录接口测试

d33b854278764f998d819a7e6964f400.png


案例:完成 KDTX项目登录接口用例设计

需求:已注册正确的用户名和密码,登录成功用户名或密码错误,登录失败,提示 "用户名或密码错误"需求:按照接口测试思路进行测试点分析从测试点转化为测试用例使用Postman进行接口测试

提取测试点

2d43ddda31064601b6e5dadb76397005.png


设计测试用例

227f2b07012040118b3426a1d5757c9f.png


步骤:

  • 点击测试集中的 "Add folder" 添加文件夹管理测试用例

  • 点击文件夹上的 "Add Request" 添加请求实现测试用例

27840e5900d748b99ccd9c308f53d33a.png


总结

1f0688c00cb146daa8eafec3c55869bc.png


三、Postman断言

Postman断言介绍

作用:让Postman工具代替人工自动判定预期结果和实际结果是否一致。

用法:

f45953d0f43c46c59faef46f06023796.png


Postman断言—响应状态码断言

模块名称: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);  // 判断是否包含指定的状态码

Postman断言—包含指定字符串断言

模块名称:Response body: Contains string

模块内容:

2c0520e836cf48c99c386ccc34133f94.png


Postman断言—JSON断言

模块名称:Response body: JSON value check

模块内容:

9fc5e4975b7f4a36acf8c66e1c75154a.png


6ddcbfd30c9d4db0887e015f110ff824.png


总结

4d9cb15bd17f47a7826d096ac4acb667.png


四、参数化

Postman参数化介绍

场景:测试脚本中仅测试数据不一样,使用参数化比提高脚本复用。

步骤:

  • 测试数据保存在数据文件单独维护

  • 引用数据文件实现脚本循环调用

c1667ebc3fac4846ad8d8038200b1e69.png


Postman参数化实现

准备数据文件

a34cd38b8e0e414297999a2492057189.png


引用数据文件数据

4b8a8246f4d34d81a01b3aa55a85607c.png


Postman参数化实现

选择数据文件:运行测试集时选择数据文件

99eaa54576124f728c272e90f0e4b157.png


5967f7bd6f014f9cb456e9c573aa579e.png


总结

490dd1ef95254a6fa6b67da2d54f8cba.png


课程项目实践

一、课程添加

课程添加接口文档

4c72e0153a9344cea8bc92cae9b8ffd0.png


9ed60101e90342b193315a44bd38f4b3.png


1.提取测试点

2343872678fb4131909c3fa8094cc30e.png


2.设计测试用例

1166e1678240409d82b857a1c3ab0ad1.png


3.使用Postman进行接口测试

步骤:

  • 点击测试集中的 "Add folder" 添加文件夹管理测试用例

  • 点击文件夹上的 "Add Request" 添加请求实现测试用例

ef6644dde608447f991d11dcb2416a58.png


总结

c686b6fbad4a407dab0e12015fc40e62.png


二、查询课程列表

查询课程列表接口文档

5f670219a3374ebbbd24aaeadb80ec96.png


5e7780fb4192447e9bbef1dd20679f78.png


提取测试点

b990c7e215c14ed089b6ec5763048baf.png


设计测试用例

8c6599f0b2b04215856de4a870b33256.png


三、课程修改

课程修改接口文档

0728926f09a6492f81a5e863fbfba3c6.png


50bd2efb5b9941c68de0b57694dd4f6f.png


提取测试点

572b9e1c6ed643bb9954eb5c70dab7a7.png


设计测试用例

eb0412698d734ebcb11aae8c4dbd8841.png


四、课程删除

课程删除接口文档

04739869d4c14774a4eceab4a5f67ad8.png


59dfd8a4c0064fb7a1aa6ec9e2e6d0bc.png


提取测试点

d789afb83b02421a9e92548f61742e6f.png


设计测试用例

f206f65daaee45d9b6ccedddb4c01ce7.png


 

相关文章:

接口测试基础

一、认识接口测试 接口测试 接口:系统之间数据交互的通道。 硬件接口 软件接口 接口测试:基于不同的输入参数,校验接口响应数据与预期数据是否一致。 为什么要学接口测试? 提前介入测试、尽早发现问题 中级测试工程师必备技能 接口测试学…...

为什么 from . import * 不会导入子模块

为什么 from . import * 不会导入子模块 在 Python 中,from . import * 并不会自动导入子模块。这是因为 import * 的行为是由模块的 __all__ 变量决定的。如果没有定义 __all__,它只会导入当前模块中定义的顶层变量和函数,而不会递归地导入…...

LangGPT结构化提示词编写实践

langGPT提示词 # Role: 浮点数比较助手 ## Profile - author: LangGPT - version: 1.0 - language: 中文 - description: 一个专门帮助用户进行浮点数比较的助手,确保LLM能够准确识别和对比浮点数。## Skills 1. 理解浮点数的结构和数值意义。 2. 精…...

React: class 和 style

一、class 1、在react中使用className属性来绑定类名 <div className"header flex-middle-middle">添加2个类名 </div>2、动态添加类名 <div className{item ${nameactive ? active : }}>动态添加active类名 </div>二、style 1、react中…...

【数据结构】包装类、初识泛型

&#x1f387;&#x1f389;&#x1f389;&#x1f389;点进来你就是我的人了 博主主页&#xff1a;&#x1f648;&#x1f648;&#x1f648;戳一戳&#xff0c;欢迎大佬指点&#xff01; 人生格言: 当你的才华撑不起你的野心的时候,你就应该静下心来学习! 欢迎志同道合的朋友…...

TCP客户端connect断线重连

文章目录 TCP客户端connect断线重连1、为什么要断线重连2、实现代码 TCP客户端connect断线重连 1、为什么要断线重连 客户端会面临服务器崩溃的情况&#xff0c;我们可以试着写一个客户端重连的代码&#xff0c;模拟并理解一些客户端行为&#xff0c;比如游戏客户端等. 考虑到…...

细说MCU用DMA改变DAC输出信号频率和改善输出波形质量的方法

目录 一、参考硬件 二、修改定时器参数改变输出波形频率 三、改善波形质量 四、代码修改 五、查看结果 一、参考硬件 本项目的软件硬件工程参考作者的其他文章&#xff1a;细说MCU用DMA实现DAC输出的方法-CSDN博客 https://wenchm.blog.csdn.net/article/details/14065…...

Java高级面试题

文章目录 Java高级特性Java 8 中的新特性有哪些&#xff1f;Lambda 表达式的用途是什么&#xff1f;Stream API 的工作原理是什么&#xff1f;Optional 类的作用是什么&#xff1f;什么是函数式接口&#xff1f;Java 9 之后的新特性有哪些&#xff1f; 并发编程Java中的线程池是…...

USART串口理论知识总结

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 USART串口理论知识总结 1、通讯的串行和并行1.串口采用发送数据代码并用printf重代码 1、通讯的串行和并行 1.串口采用发送数据代码并用printf重代码 #include <stdint.h…...

基于 HTML+ECharts 实现智慧景区数据可视化大屏(含源码)

构建智慧景区数据可视化大屏&#xff1a;基于 HTML 和 ECharts 的实现 随着旅游业的蓬勃发展&#xff0c;智慧景区的概念逐渐深入人心。通过数据可视化&#xff0c;景区管理者可以实时监控游客流量、设施使用情况以及环境状况&#xff0c;从而提升游客体验和管理效率。本文将详…...

vxe-table——实现切换页码时排序状态的回显问题(ant-design+elementUi中table排序不同时回显的bug)——js技能提升

之前写的后台管理系统&#xff0c;都是用的antdelement&#xff0c;table组件中的【排序】问题是有一定的缺陷的。 想要实现的效果&#xff1a; antv——table组件一次只支持一个参数的排序 如下图&#xff1a; 就算是可以自行将排序字段拼接到列表接口的入参中&#xff0c…...

SQL

SQL全称 Structured Query Language&#xff0c;结构化查询语言。操作关系型数据库的编程语言&#xff0c;定义了一套操作关系型数据库统一标准 。 SQL通用语法 SQL语句可以单行或多行书写&#xff0c;以分号结尾。SQL语句可以使用空格/缩进来增强语句的可读性。MySQL数据库的…...

maven archetype

1.简介 maven脚手架是为了创建一个项目模板&#xff0c;以后新建项目都能够复用该模板 maven中模板引擎使用的是velocity,在文件中可以使用它的语法获取变量等操作 2.实现 单模块脚手架实现 pom.xml <?xml version"1.0" encoding"UTF-8"?> &…...

浏览器打开抽奖系统html

<!DOCTYPE html> <html> <head> <meta charset"utf-8"> <title>在线抽奖 随机选取 自动挑选</title> <script src"https://libs.baidu.com/jquery/1.10.2/jquery.min.js"></script> <style> body {…...

微信小程序-使用Component方法代替Page方法构造页面

一.使用Component方法的前提条件 在小程序js文件里使用Component方法代替Page方法需要在json文件里面定义usingComponents属性 {"usingComponents": {} }二.注意事项 1.在page页面里使用的钩子函数和事件监听方法都需要写在methods对象里面 methods:{update(){thi…...

Spark SQL----DISTRIBUTE BY子句

Spark SQL----DISTRIBUTE BY子句 一、描述二、语法三、参数四、例子 一、描述 DISTRIBUTE BY子句用于根据输入表达式对数据进行重新分区。与CLUSTER BY子句不同&#xff0c;这不会对每个分区内的数据进行排序。 二、语法 DISTRIBUTE BY { expression [ , ... ] }三、参数 e…...

HTML5-canvas1

1、canvas&#xff1a;创建画布 <canvas id"canvas"></canvas>2、画一条直线 var canvasdocument.getElementById(cancas&#xff09;; canvas.width800; canvas.height800; var contextcanvas.getContext(2d); //获得2d绘图上下文环境 //画一条直线 c…...

【NOI-题解】1009 - 数组逆序1162 - 数组元素的删除1211 - 数组元素的插入1161. 元素插入有序数组1159. 数组元素的移动

文章目录 一、前言二、问题问题&#xff1a;1009 - 数组逆序问题&#xff1a;1162 - 数组元素的删除问题&#xff1a;1211 - 数组元素的插入问题&#xff1a;1161. 元素插入有序数组问题&#xff1a;1159. 数组元素的移动 三、感谢 一、前言 本章节主要对数组问题中数组元素移…...

新电脑如何设置 npm 源及查看源、安装 cnpm、pnpm 和 yarn 的详细教程

当你获得一台新电脑&#xff0c;或需要在现有电脑上优化 JavaScript 和 Node.js 的开发环境时&#xff0c;正确配置 npm 是一步不可少的过程。本教程将详细指导你如何设置 npm 源&#xff0c;查看当前源&#xff0c;以及如何安装 cnpm、pnpm 和 yarn。 1. 设置 npm 源 npm (N…...

完全移动huggingface模型仓库(不是简单mv)

Linux中移动huggingface模型仓库 参考链接 先在bashrc中配置&#xff1a; export HF_DATASETS_CACHE"/your/path/dataset" export HF_HOME"/your/path/" export HUGGINGFACE_HUB_CACHE"/your/path/hub" export TRANSFORMERS_CACHE"/your…...

手机空号过滤批量查询的意义及方法

手机空号过滤批量查询是现代营销和通信管理中常用的技术手段&#xff0c;旨在通过批量处理手机号码&#xff0c;筛选出活跃号码和空号等无效号码&#xff0c;以提高营销效率和减少不必要的通信成本。以下是关于手机空号过滤批量查询的详细解答&#xff1a; 一、手机空号过滤批…...

Dockerfile制作部署wordpress-6.6

目录 一. 环境准备 二. 准备对应的配置文件 三. 编写Dockerfile 四. 构建镜像 五. 配置MySQL 六. 安装wordpress 七. 扩展 一. 环境准备 localhost192.168.226.25 rocky_linux9.4 Docker version 27.0.3 关闭防火墙和selinux&#xff0c;进行时间同步。 安装docker…...

项目的纪要

ai客服项目中发现的问题: 可以在控制台看到我们存储的cookie: 可以看到是这样的, 但是我们通过getCookie方法专门获取这个字段, 然后在控制台打印后 const userName getCookie(SA_USER_NICK_NAME); console.log(userName, userName); 输出结果是: 然后我们尝试通过de…...

ubuntu 更新源

前言 实现一键替换在线源 一键更新源 ubuntu 全球镜像站以下支持现有ubuntu 20&#xff0c;22&#xff0c;24 echo "Delete the default source" rm -rf /etc/apt/sources.listecho "Build a new source" cat <<EOF>>/etc/apt/sources.li…...

XGBoost、RF随机森林算法MATLAB实现

% 加载并预处理训练数据 opts1 = detectImportOptions(附件一AE.xlsx, PreserveVariableNames, true); train_data = readtable(附件一AE.xlsx, opts1); train_data.Time = datetime(train_data.time, InputFormat, yyyy-MM-dd HH:mm:ss); % 特征提取和标签准备 windowSize…...

WPF 解决: DataGrid 已定义列,但是还是会显示模型的所有属性的问题

AutoGenerateColumns 属性 AutoGenerateColumns&#xff1a;这个属性决定 DataGrid 是否根据数据源中的属性自动生成列。如果设置为 true&#xff0c;DataGrid 会根据数据源中的属性自动生成列。如果设置为 false&#xff0c;则 DataGrid 不会自动生成列&#xff0c;开发者需要…...

【ai】Easy-RAG : ImportError: cannot import name ‘BaseModel‘ from ‘pydantic‘

[Bug]: cannot import name ‘RootModel’ from ‘pydantic’ #1237 版本不匹配导致 ImportError: cannot import name ‘BaseModel’ from ‘pydantic’ /home/zhangbin/miniconda3/envs/Easy-RAG/bin/python /home/zhangbin/proj/06_rag/02_Easy-RAG/webui.py /home/zhangbi…...

WebKit简介

WebKit是一个开源的浏览器引擎&#xff0c;最初由苹果公司开发&#xff0c;用于Safari浏览器。它是基于KDE项目的KHTML引擎进行开发&#xff0c;并在改进和扩展中形成了WebKit引擎。 WebKit的工作流程可以分为以下几个步骤&#xff1a; 1.解析HTML&#xff1a;当浏览器加载一个…...

笔记 | Python环境下的GUI编程常用包

前言 Python的使用频率和范围越来越大&#xff0c;在一些开发工作中由于需要可视化的图形界面&#xff0c;常常需要进行图形用户界面&#xff08;Graphic User Interface, GUI&#xff09;开发。例如&#xff0c;目前最火热的大模型应用&#xff0c;常常是以一个网页界面进行操…...

mysql 数据库空间统计sql

mysql 数据库空间统计 文章目录 mysql 数据库空间统计说明一、数据库存储代码二、查询某个数据库的所有表的 代码总结 说明 INFORMATION_SCHEMA Table Reference 表参考 information_schema是‌MySQL中的一个特殊数据库&#xff0c;它存储了关于所有其他数据库的元数据信息。…...

【Linux】线程——线程池、线程池的实现、线程安全的线程池、单例模式的概念、饿汉和懒汉模式、互斥锁、条件变量、信号量、自旋锁、读写锁

文章目录 Linux线程7. 线程池7.1 线程池介绍7.2 线程池的实现7.3 线程安全的线程池7.3.1 单例模式的概念7.3.2 饿汉和懒汉模式 8. 常见锁使用汇总8.1 互斥锁&#xff08;Mutex&#xff09;8.2 条件变量&#xff08;Condition Variable&#xff09;8.3 信号量&#xff08;Semaph…...

stm32入门-----TIM定时器(PWM输出比较——下)

目录 前言 一、硬件元器件介绍 1.舵机 2.直流电机驱动 二、C语言编程步骤 1.开启时钟 2.配置输出的GPIO口 3.配置时基单元 4.初始化输出比较通道 5.开启定时器 三、实践项目 1.PWM驱动LED呼吸灯 2.PWM驱动舵机 3.PWM驱动直流电机 前言 本期我们就开始去进行TIM定时…...

css实现线条中间高亮,左右两边模糊(linear-gradient的运用)

效果&#xff1a; <div class"line"></div> .line {height: 1px;background: linear-gradient(90deg, rgba(255, 255, 255, 0) 0%, #a9c2ff 50%, rgba(255, 255, 255, 0) 100%);border-radius: 4px 4px 4px 4px; } CSS实现边框底部渐变色的方法:(最简单…...

【数据结构】建堆算法复杂度分析及TOP-K问题

【数据结构】建堆算法复杂度分析及TOP-K问题 &#x1f525;个人主页&#xff1a;大白的编程日记 &#x1f525;专栏&#xff1a;数据结构 文章目录 【数据结构】建堆算法复杂度分析及TOP-K问题前言一.复杂度分析1.1向下建堆复杂度1.2向上建堆复杂度1.3堆排序复杂度 二.TOP-K问…...

Thinkphp5实现前后端通过接口通讯基本操作方法

在ThinkPHP5框架中&#xff0c;实现前后端通过接口通讯是一个常见的需求&#xff0c;尤其是在开发RESTful API时。下面是一个基本的步骤指南&#xff0c;用于设置ThinkPHP5来创建API接口&#xff0c;并使前端能够通过HTTP请求与后端进行通讯。 1. 创建API模块 首先&#xff0…...

Go 语言任务编排 WaitGroup

WaitGroup 是常用的 Go 同步原语之一,用来做任务编排。它要解决的就是并发-等待的问题: 现在有一个 goroutine A 在检查点 ( checkpoint ) 等待一组 goroutine 全部完成它们的任务,如果这些 goroutine 还没全部完成任务,那么 goroutine A 就会被阻塞在检查点,直到所有的 …...

星环科技推出知识库产品 AI PC时代数据交互方式变革

随着企业业务的快速发展&#xff0c;数据量呈爆炸式增长&#xff0c;有效的知识管理成为企业面临的重要问题。企业遇到的普遍问题是大量的结构化、半结构化数据存储在不同的系统中&#xff0c;需要用多种计算机语言进行检索。而大模型彻底改变了人们和数据的交互方式&#xff0…...

10道JVM经典面试题

1、 JVM中&#xff0c;new出来的对象是在哪个区&#xff1f; 2、 说说类加载有哪些步骤&#xff1f; 3、 JMM是什么&#xff1f; 4、 说说JVM内存结构&#xff1f; 5、 MinorGC和FullGC有什么区别&#xff1f; 6、 什么是STW? 7、 什么情况下会发生堆/栈溢出&#xff1f…...

Redisson常用的数据结构及应用场景

Redisson 提供了一系列高级数据结构&#xff0c;这些数据结构封装了 Redis 的原生数据类型&#xff0c;提供了 Java API 的便利性和分布式特性。以下是 Redisson 中一些常用的数据结构&#xff0c;场景还在不断完善中&#xff1a; RBucket&#xff1a;这是一个简单的键值对存储…...

【实现100个unity特效之8】使用ShaderGraph实现2d贴图中指定部分局部发光效果

最终效果 寒冰法师 火焰法师 文章目录 最终效果寒冰法师火焰法师 素材一、功能分析实现方法基本思路Unity的Bloom后处理为什么关键部位白色&#xff1f;最终结果 二、 新建URP项目三、合并图片四、使用PS制作黑白图片方法一 手动涂鸦方法二 魔棒工具1. 拖入图片进PS&#xff0…...

Ubuntu 24.04 LTS Noble安装Docker Desktop简单教程

Docker 为用户提供了在 Ubuntu Linux 上快速创建虚拟容器的能力。但是&#xff0c;那些不想使用命令行管理容器的人可以在 Ubuntu 24.04 LTS 上安装 Docker Desktop GUI&#xff0c;本教程将提供用于设置 Docker 图形用户界面的命令…… Docker Desktop 是一个易于使用的集成容…...

XML 和 SimpleXML 入门教程

XML 和 SimpleXML 入门教程 XML&#xff08;可扩展标记语言&#xff09;是一种用于存储和传输数据的标记语言。它是一种自我描述的语言&#xff0c;允许用户定义自己的标签来表示数据。SimpleXML 是 PHP 中的一个扩展&#xff0c;用于解析和操作 XML 数据。本文将介绍 XML 和 …...

leetcode--链表类题目总结

本文作为刷题时对链表类题目的总结. 常见技巧: 引入虚拟头节点 便于处理边界情况便于对链表操作快慢双指针(判环,找环的入口等)链表逆序(推荐使用 虚拟头节点 头插法 进行逆序) 链表逆序( 头插法 虚拟头节点):链表内指定区间反转_牛客题霸_牛客网 虚拟节点:合并…...

打卡第22天------回溯算法

开始学习了,希望我可以尽快成功上岸! 一、回溯理论基础 什么是回溯法?回溯法也可以叫做回溯搜索法,它是一种搜索的方式。 回溯是递归的副产品,只要有递归就会有回溯。 回溯法的效率回溯法的本质是穷举,穷举所有可能,然后找出我们想要的答案。如果想让回溯法高效一些,可…...

Ubuntu对比两个文件内容有什么区别?

在Ubuntu&#xff08;或任何基于Linux的系统&#xff09;中&#xff0c;你可以使用多种命令行工具来比较两个文件的内容差异。以下是一些常用的方法&#xff1a; 1. **diff 命令**&#xff1a; diff 是Linux中用于比较两个文件差异的标准工具。它逐行比较文件&#xff0c;并显示…...

python:本机摄像头目标检测实时推理(使用YOLOv8n模型)

本文将介绍如何使用本机摄像头进行目标检测实时推理的python代码。 文章目录 一、下载YOLO权重文件二、环境配置三、完整代码 一、下载YOLO权重文件 https://github.com/ultralytics/ultralytics?tabreadme-ov-file 拉到网页最下面&#xff0c;选择适合的模型&#xff0c;下…...

Spark实时(四):Strctured Streaming简单应用

文章目录 Strctured Streaming简单应用 一、Output Modes输出模式 二、Streaming Table API 三、​​​​​​​​​​​​​​Triggers 1、​​​​​​​unspecified&#xff08;默认模式&#xff09; 2、​​​​​​​​​​​​​​Fixed interval micro-batches&am…...

SpringBoot上传超大文件导致OOM,完美问题解决办法

问题描述 报错: Caused by: java.lang.OutOfMemoryError at java.io.ByteArrayOutputStream.hugeCapacity(ByteArrayOutputStream.java:123) ~[?:1.8.0_381] at java.io.ByteArrayOutputStream.grow(ByteArrayOutputStream.java:117) ~[?:1.8.0_381] at java.…...

PyTorch 的各个核心模块和它们的功能

1. torch 核心功能 张量操作&#xff1a;PyTorch 的张量是一个多维数组&#xff0c;类似于 NumPy 的 ndarray&#xff0c;但支持 GPU 加速。数学运算&#xff1a;提供了各种数学运算&#xff0c;包括线性代数操作、随机数生成等。自动微分&#xff1a;torch.autograd 模块用于…...

Java开发之LinkedList源码分析

#来自ゾフィー&#xff08;佐菲&#xff09; 1 简介 LinkedList 的底层数据结构是双向链表。可以当作链表、栈、队列、双端队列来使用。有以下特点&#xff1a; 在插入或删除数据时&#xff0c;性能好&#xff1b;允许有 null 值&#xff1b;查询效率不高&#xff1b;线程不安…...