【软件测试】--接口测试
1. 接口用例设计
接口测试的测试点
功能测试
-
单接口功能:
- 手工测试中的单个业务模块,一般对应一个接口
- 登陆业务 --> 登陆接口
- 加入购物车业务 --> 加入购物车接口
- 订单业务 --> 订单接口
- 支付业务 --> 支付接口
- 借助工具、代码。绕开前端界面,组织接口所需要的数据,展开接口测试
- 手工测试中的单个业务模块,一般对应一个接口
-
业务场景功能
- 按照用户实际使用场景,梳理接口业务场景
- 组织业务场景时,一般只需做正向测试即可(与手工一致)
- 一般建议用最少的用例覆盖最多的业务场景
性能测试
- 响应时长
- 吞吐量
- 并发数
- 服务器资源利用率
安全测试
- 攻击安全 – 与测试工程师无关
- 业务安全 – 测试的方向
- 敏感数据是否加密
- SQL注入:在用户输入数据的位置,写入SQL语句
1.1 设计方法与思路
与手工测试相同之处
- 手工测试对应的功能测试点与接口测试对应的功能完全一致
与手工测试不同之处
- 手工测试,测写入到输入框中的数据是否正确。接口测试测参数对应的参数值是否正确
- 接口测试,不单单针对参数值进行进行,还可以针对参数本身进行测试
- 正向参数:
- 必选参数:所有的必选(必填)都包含
- 组合参数;所有的必选+任意一个或多个可选参数
- 全部参数:所有的必选+所有的可选参数
- 反向参数:
- 多参
- 少参
- 无参
- 错误参数
- 正向参数:
1.2 单接口测试用例
手工测试用例文档8大要素:
用例编号、用例标题、模块、优先级、预置条件、测试数据、操作步骤、预期结果
接口测试用例文档10要素:
用例编号、用例标题、模块、优先级、预置条件、请求方法、URL、请求头、请求体(请求数据)、预期结果
以TPShop为例
登陆模块的接口测试用例测试点
数值
- 正向
- 登录成功
用例编号 | 模块 | 用例名称 | 接口名称 | 请求URL | 请求方法 | 请求参数类型 | 请求参数 | 预期结果 | 测试结果 | 备注 |
---|---|---|---|---|---|---|---|---|---|---|
tpshop_login_001 | 登陆 | 登陆成功 | 获取验证码 登陆 | http://106.54.9.13/index.php?m=Home&c=User&a=verify http://106.54.9.13/index.php?m=Home&c=User&a=do_login | GET POST | form | data = { “username”: " 18184761327", “password”: “123456”, “verify_code”: 8888 } | 获取到验证码图片 登陆成功 |
- 反向
- 用户名为空
- 用户名包含特殊字符、字母
- 用户名超过11位(12位)
- 用户名不足11位(10位)
- 用户名未注册
- 密码为空
- 密码包含特殊字符、字母
- 密码为1位
- 密码为100位
- 密码错误
用例编号 | 模块 | 用例名称 | 接口名称 | 请求URL | 请求方法 | 请求参数类型 | 请求参数 | 预期结果 | 测试结果 | 备注 |
---|---|---|---|---|---|---|---|---|---|---|
tpshop_login_002 | 登陆 | 账号不存在 | 获取验证码 登陆 | http://106.54.9.13/index.php?m=Home&c=User&a=verify http://106.54.9.13/index.php?m=Home&c=User&a=do_login | GET POST | form | data = { “username”: " 18184761327", “password”: “123456”, “verify_code”: 8888 } | 获取到验证码图片 账号不存在 | ||
tpshop_login_003 | 登陆 | 密码错误 | 获取验证码 登陆 | http://106.54.9.13/index.php?m=Home&c=User&a=verify http://106.54.9.13/index.php?m=Home&c=User&a=do_login | GET POST | form | data = { “username”: " 18184761327", “password”: “123456”, “verify_code”: 8888 } | 获取到验证码图片 密码错误 |
参数(接口测试特有)
-
正向
- 必选参数:正确用户名+正确密码
- 可选参数:忽略
- 全部参数:正确用户名+正确密码
-
反向
- 多参:多"abc":“123”
- 少参:少username,正确密码
- 无参:没有任何参数
- 错误参数
用例编号 模块 用例名称 接口名称 请求URL 请求方法 请求参数类型 请求参数 预期结果 测试结果 备注 tpshop_login_001 登陆 登陆成功 获取验证码 登陆 http://106.54.9.13/index.php?m=Home&c=User&a=verify
http://106.54.9.13/index.php?m=Home&c=User&a=do_loginGET POST form data = {
“username”:
" 18184761327", “password”: “123456”, “verify_code”: 8888 }获取到验证码图片 登陆成功 tpshop_login_002 登陆 用户名为空 获取验证码 登陆 http://106.54.9.13/index.php?m=Home&c=User&a=verify
http://106.54.9.13/index.php?m=Home&c=User&a=do_loginGET POST form data = { “username”: " ", “password”: “123456”, “verify_code”: 8888 } 获取到验证码图片 账号不存在 tpshop_login_003 登陆 多参数 获取验证码 登陆 http://106.54.9.13/index.php?m=Home&c=User&a=verify
http://106.54.9.13/index.php?m=Home&c=User&a=do_loginGET POST form data = {
“username”:
" 18184761327", “password”: “123456”, “verify_code”: 8888, “abc”:“123”}获取到验证码图片 密码错误 tpshop_login_003 登陆 密码错误 获取验证码 登陆 http://106.54.9.13/index.php?m=Home&c=User&a=verify
http://106.54.9.13/index.php?m=Home&c=User&a=do_loginGET POST form data = {
“username”:
" 18184761327", “password”: “123456”, “verify_code”: 8888 }获取到验证码图片 密码错误 tpshop_login_001 登陆 无参数 获取验证码 登陆 http://106.54.9.13/index.php?m=Home&c=User&a=verify
http://106.54.9.13/index.php?m=Home&c=User&a=do_loginGET POST form data = {
“username”:
" 18184761327", “password”: “123456”, “verify_code”: 8888 }获取到验证码图片 登陆成功
1.3 业务场景测试用例
- 用户怎么用,怎样设计业务
- 用最少的测试用例,尽量覆盖最多的接口
分析测试点
针对“员工管理”业务场景
- 登陆–添加员工–查询员工–修改员工–再次查询–删除员工–查询员工列表
针对每个业务设计单接口用例
登陆
添加员工-
查询员工
修改员工
再次查询
删除员工
查询员工列表
2. postman
2.1 简介和安装
- 简介
- postman是一款非常流行的接口调试工具,它使用简单,而且功能也很强大。不仅测试人员会使用,开发人员也会经常使用
- 特征
- 简单易用的图形用户界面
- 可以保存接口请求的历史记录
- 使用测试集collection可以更有效的管理组织接口
- 可以在团队之间同步接口数据
2.2 collection管理测试用例
步骤:
- 创建用例集
- add request
2.3 postman断言
2.3.1 postman断言简介
断言:让程序判断预期结果和实际结果是否一致
特点:
- postman的断言是使用JavaScript语言编写的,卸载’Tests’标签页里
- Tests中的脚本在发送请求之后执行,会把断言的结果(Pass/Fail)最终在"Test Results"标签页中展示
2.3.2 常用postman断言
- Status code :Code is 200
//判断响应状态码是否等于200
pm.test("Status code is 200", function () {pm.response.to.have.status(200);
});
pm:postman的一个实例
test():postman实例的一个方法参数1:断言完成后给出的提示信息参数2:function(){},匿名函数调用
- Response body :Contains string
//判断响应体中是否包含指定的字符串
pm.test("Body matches string", function () {pm.expect(pm.response.text()).to.include("string_you_want_to_search");
});
pm:postman的一个实例
test():postman实例的一个方法参数1:"Body matches string"断言完成后给出的提示信息参数2:function(){},匿名函数调用"string_you_want_to_search" :判断是否包含的字符串
- Response body : Is equal to a string
//判断响应体数据是否等于指定的字符串
pm.test("Body is correct",function(){pm.response.to.have.body("response_body_string");
});
pm:postman的一个实例
test():postman实例的一个方法参数1:"Body is correct"断言完成后给出的提示信息参数2:function(){},匿名函数调用"response_body_string" :判断响应体是否相同的字符串
- 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:postman的一个实例
jsonData:定义的一个json格式的响应体变量
test():postman实例的一个方法参数1:"Body is correct"断言完成后给出的提示信息参数2:function(){},匿名函数调用"response_body_string" :判断响应体是否相同的字符串
- Response headers:Content-Type header check
//判断相应头中是否包含指定的头标签
pm.test("Content-Type is present", function () {pm.response.to.have.header("Content-Type");
});
2.4 全局变量与环境变量
2.4.1 概念
- 全局变量:全局变量是全局唯一的,不可重复定义的变量
- 环境变量:
- 一个变量只能属于某个环境,在某一个环境中变量不可重复定义
- 在环境与环境之间可以定义重复的变量
- 一个环境可以包含多个环境变量
- 常见环境分类:开发环境、测试环境、生产环境
2.4.2 设置变量
- 全局变量
- 手动测试
- 代码设置:pm.globals.set(“var_name”,value);
- 环境变量
- 手动测试
- 代码设置:pm.environment.set(“var_name”,value);
2.4.3 获取变量值
-
全局变量
- 请求参数中获取:{{var_name}}
- 代码中获取:var value = pm.globals.get(“var_name”);
-
环境变量
-
请求参数中获取:{{var_name}}
-
代码中获取:var value = pm.environment.get(“var_name”);
-
2.5 postman请求前置脚本
假设,这样一种场景:
调某接口时,要输入“时间戳”,如果输入的“时间戳”的绝对值,超过标准时间10分钟。则不允许调用
-
时间戳:表示当前系统时间。表示方式:从1970年1月1日 00:00:00~现在所经历的秒数
-
请求前置脚本:
- 书写在“pre-request Script”标签中
- Postman 在http请求发送之前,会自动执行,该脚本中的代码!
案例
调用百度首页接口,传时间戳给服务器
步骤:
- 创建“请求前置脚本”用例集和http请求页
- 指定请求方法GET,URL:http://www.baidu.com
- 在Pre-request Script标签页中,写入代码,获取时间戳,写入到全局变量中
//获取时间戳 var timestamp = new Date().getTime()//将时间戳保存到全局变量中 pm.globals.set("glb_timestamp",timestamp)
- 点击Send按钮,促使Pre-request Script 标签页中被自动执行。点击右上角的“眼睛”图标查看Globals中,多出一个全局变量。
- 在URL中,借助查询参数,使用全局变量{{glb_timestamp}}。点击Send按钮,发送带有时间戳的请求。
- 查看(View-Show Post Console )
2.6 postman关联
postman的关联,用来解决接口和接口之间调用的依赖关系。需要借助全局变量、环境变量来解决关联问题。
实现步骤:(以A接口返回的数据,供B接口使用为例)
- 组织A接口http请求,发送A接口请求
- 获取A接口返回的响应数据,写入全局/环境变量中
- 组织B接口的请求,从全局/环境变量中获取A返回的数据
案例
请求获取天气接口,提取响应结果中的城市,将城市名,给百度搜索接口使用
实现步骤
- 创建用例集和请求页面
- 组织天气接口的请求方法、URL,发送http请求
- 获取响应结果的json数据,从数据中提取城市名,保存到全局变量中glb_city
//获取响应数据
var jsonData = pm.response.json();
//获取城市名
var city = jsonData.weatherinfo.city
//写入全局变量
pm.globals.set("glb_city",city)
-
点击小眼睛查看全局变量是否设置正确
-
组织百度搜索接口的请求方法、URL,在查询参数中,指定使用全局变量{{glb_city}}
2.7 批量执行测试用例
步骤
- 点击用例集名称,选择“Run”按钮,进入Runner标签页中
- 在Runner标签页中,用例集内的所有请求页会被默认自动选中
- 点击Run,即可批量执行
运行结果:
2.8 postman测试报告
使用newman命令,运行导出的测试集脚本,打开cmd输入:
newman run 测试脚本文件 -e 环境变量文件 -d 测试数据文件 -r html --reporter-html-export report.htmleg:
newman run demo.postman_collection.json -r html
newman run demo.postman_collection.json -r html --reporter-html-export report.html
命令说明:
- run xxx.json :表示要执行的postman脚本,即导出的测试集数据
- -e source :用来指定环境变量文件的路径
- -d source :用来指定测试文件的路径
生成报告步骤:
- 导出用例集
- 在用例集所在目录,输入cmd打开终端
- 键入命令,生成报告
F:\Four_year\测试\postman> newman run postman关联.postman_collection.json -r html --reporter-html-export postman关联报告.html
点击查看
相关文章:
【软件测试】--接口测试
1. 接口用例设计 接口测试的测试点 功能测试 单接口功能: 手工测试中的单个业务模块,一般对应一个接口 登陆业务 --> 登陆接口加入购物车业务 --> 加入购物车接口订单业务 --> 订单接口支付业务 --> 支付接口 借助工具、代码。绕开前端界面…...
【前端】上传视频,截取第一帧图片
使用input上传视频,获得视频的第一帧 参考:JavaScript获取视频的尺寸信息和第一帧图片 - 掘金 (juejin.cn) html: <inputbind:this{uploadRef}on:change{handleUpload}accept"video/*"type"file"/>视频类型校验&a…...
Redis-GEO数据结构的基本用法
GEO就是Geolocation的简写形式,代表地理坐标。Redis在3.2版本中加入了对GEO的支持,允许存储地理坐标信息,帮助我们根据经纬度来检索数据。常见的命令有: GEOADD:添加一个地理空间信息,包含:经度…...
【Linux C | 网络编程】进程池大文件传输的实现详解(三)
上一篇实现了进程池的小文件传输,使用自定义的协议,数据长度数据本身,类似小火车的形式,可以很好的解决TCP“粘包”的问题。 【Linux C | 网络编程】进程池小文件传输的实现详解(二) 当文件的内容大小少于…...
Mac如何通过SSH连接Github
目录 前言 一、实现步骤 1.生成 SSH 密钥对 2.添加 SSH 密钥到 GitHub: 3.配置 SSH 连接 1.更新远程仓库 URL 2.测试 SSH 连接 前言 GitHub 在 2021 年 8 月 13 日停止了对使用密码进行身份验证的支持。因此,你需要使用其他认证方式,如…...
成就巴西休闲游戏如何借助Google谷歌广告投放优势
在探讨巴西休闲游戏如何借助谷歌广告投放优势实现市场扩张的过程中,我们不得不深入分析巴西市场的独特属性、休闲游戏的兴起背景,以及谷歌广告平台在全球范围内的强大影响力。近年来,随着移动游戏市场的快速发展,特别是中轻度休闲…...
利用python检查磁盘空间使用情况
目录 一.前言 二.使用的库介绍 三.代码实现以及解析 3.1导入模块 3.2邮件发送函数 send_email 3.3检查磁盘空间函数 check_and_clean_disk 3.4主程序逻辑 四.致谢 一.前言 在信息技术飞速发展的今天,数据量的激增使得磁盘空间管理成为系统运维中的一项基…...
卷积神经网络(五)---图像增强的方法
前面的部分专注于卷积神经网络的层结构介绍,同时还介绍了到目前为止比较出名的卷积神经网络,接着使用比较复杂的卷积神经网络提高了 MNIST 数据集的准确率。下面将从另外的角度——图像增强的方面入手,提高模型的准确率和泛化能力。 一直以来…...
矩阵常见分解算法及其在SLAM中的应用
文章目录 常见特殊矩阵定义Cholesky分解(正定Hermittian矩阵,分解结果唯一)Cholesky分解应用 SVD分解(将singularvalues排序后分解唯一)SVD 分解的应用(任意矩阵) QR分解(任意矩阵&a…...
【排序】快速排序详解
✨✨欢迎大家来到Celia的博客✨✨ 🎉🎉创作不易,请点赞关注,多多支持哦🎉🎉 所属专栏:排序 个人主页:Celias blog~ 一、快速排序的思想 快速排序的核心思想是: 选定一个…...
贪心算法总结(2)
一、买卖股票的最佳时机 . - 力扣(LeetCode) class Solution { public:int maxProfit(vector<int>& prices) {int miniINT_MAX;int ret0;for(int&price:prices){//遍历的时候,我们随时去更新最小的值,然后让每一位…...
弘景光电:技术实力与创新驱动并进
在光学镜头及摄像模组产品领域,广东弘景光电科技股份有限公司(以下简称“弘景光电”)无疑是一颗耀眼的明星。自成立以来,弘景光电凭借其强大的研发实力、卓越的产品性能、精密的制造工艺以及严格的质量管理体系,在光学…...
2024年7月23日~2024年7月29日周报
目录 一、前言 二、完成情况 2.1 一种具有边缘增强特点的医学图像分割网络 2.2 融合边缘增强注意力机制和 U-Net 网络的医学图像分割 2.3 遇到的困难 三、下周计划 一、前言 上周参加了一些师兄师姐的论文讨论会议,并完成了初稿。 本周继续修改论文࿰…...
M3U8流视频数据爬虫
M3U8流视频数据爬虫 HLS技术介绍 现在大部分视频客户端都采用HTTP Live Streaming(HLS,Apple为了提高流播效率开发的技术),而不是直接播放MP4等视频文件。HLS技术的特点是将流媒体切分为若干【TS片段】(比如几秒一段…...
保护您的数字财富:模块化沙箱在源代码防泄露中的突破
在数字化浪潮中,企业面临着前所未有的数据安全挑战。源代码、商业机密、客户数据……这些宝贵的数字资产一旦泄露,后果不堪设想。SDC沙盒防泄密系统,以其卓越的技术实力和创新的解决方案,为企业提供了一个坚不可摧的安全屏障。 核…...
FFmpeg源码:avio_r8、avio_rl16、avio_rl24、avio_rl32、avio_rl64函数分析
一、引言 AVIOContext是FFmpeg(本文演示用的FFmpeg源码版本为5.0.3)中的字节流上下文结构体,用来管理输入输出数据。打开一个媒体文件的时候,需要先把数据从硬盘读到缓冲区,然后会用到AVIOContext中的如下成员&#x…...
如何使用 API 查看极狐GitLab 镜像仓库中的镜像?
GitLab 是一个全球知名的一体化 DevOps 平台,很多人都通过私有化部署 GitLab 来进行源代码托管。极狐GitLab :https://gitlab.cn/install?channelcontent&utm_sourcecsdn 是 GitLab 在中国的发行版,专门为中国程序员服务。可以一键式部署…...
软件-vscode-plantUML-IDEA
文章目录 vscode基础命令 实操1. vscode实现springboot项目搭建 (包括spring data jpa和sqlLite连接) PlantUMLIDEA下载及安装Eval Reset插件配置修改IDEA创建项目的默认目录IDEA配置gitIDEA翻译插件translationIDEA断点调试IDEA全局搜索快捷键不能使用代…...
ES6语法详解,面试必会,通俗易懂版
目录 Set的基本使用WeakSet 使用Set 和 WeakSet 区别内存泄漏示例:使用普通 Set 保存 DOM 节点如何避免这个内存泄漏MapWeakMap 的使用 Set的基本使用 在ES6之前,我们存储数据的结构主要有两种:数组、对象。 在ES6中新增了另外两种数据结构&a…...
CTFshow--Web--代码审计
目录 web301 web302 web303 web304 web305 web306 web307 web308 web309 web310 web301 开始一个登录框, 下意识sql尝试一下 发现 1 的时候会到一个 checklogin.php 的路径下, 但啥也没有 好吧, 这是要审计代码的 ,下载好源码, 开始审计 看了一下源码 , 应该就是sql…...
Java语言程序设计——篇十(1)
🌿🌿🌿跟随博主脚步,从这里开始→博主主页🌿🌿🌿 接口介绍 接口概述接口定义接口的实现实战演练 👅接口的继承实战演练实战演练 接口的类型常量实战演练 静态方法默认方法解决默认方…...
Qt对比MFC优势
从Qt小白到现在使用了有四年的时间,之前也搞过MFC,WinForm,基本上都是桌面的框架, 从难易程度看MFC>QT>WinForm; 运行的效率上来看MFC>QT>WinForm; 开发效率上WinForm>QT>MFC; 跨平台Qt首选; 界面的美观难易程度Qt>…...
RuntimeError: No CUDA GPUs are available
RuntimeError: No CUDA GPUs are available 目录 RuntimeError: No CUDA GPUs are available 【常见模块错误】 【解决方案】 解决步骤如下: 欢迎来到英杰社区https://bbs.csdn.net/topics/617804998 欢迎来到我的主页,我是博主英杰,211科…...
URL参数中携带中文?分享 1 段优质 JS 代码片段!
本内容首发于工粽号:程序员大澈,每日分享一段优质代码片段,欢迎关注和投稿! 大家好,我是大澈! 本文约 800 字,整篇阅读约需 1 分钟。 今天分享一段优质 JS 代码片段,在发送 ajax 请…...
sass的使用
一、变量 //声明一个变量 $highlight-color: #F90; .selected {border: 1px solid $highlight-color; }//编译后 .selected {border: 1px solid #F90; }二、导入 import "xxx.scss"三、混合器简单定义 通过mixin定义,通过include调用 // mixin.scss /…...
【足球走地软件】走地数据分析预测【大模型篇】走地预测软件实战分享
了解什么是走地数据? 走地数据分析,在足球赛事的上下文中,是一种针对正在进行中的比赛进行实时数据分析的方法。这种方法主要用于预测比赛中的某些结果或趋势,如总进球数、比分变化、球队表现等。 在足球走地数据分析中…...
现在有什么赛道可以干到退休?
最近,一则“90后无论男女都得65岁以后退休”的消息在多个网络平台流传,也不知道是真是假,好巧不巧今天刷热点的时候又看到一条这样的热点:现在有什么赛道可以干到退休? 点进去看了几条热评,第一条热评说的…...
c程序杂谈系列(职责链模式与if_else)
从处理器的角度来说,条件分支会导致指令流水线的中断,所以控制语句需要严格保存状态,因为处理器是很难直接进行逻辑判断的,有可能它会执行一段时间,发现出错后再返回,也有可能通过延时等手段完成控制流的正…...
前端开发技术之CSS(层叠样式表)
盒模型(Box Model) CSS盒模型描述了如何计算一个元素的总宽度和高度。 它包括以下几个部分: 1. 内容(Content):元素的实际内容,比如文本或图片。 2. 内边距(Padding)&…...
go语言day20 使用gin框架获取参数 使用自定义的logger记录日志
Golang 操作 Logger、Zap Logger 日志_golang zap-CSDN博客 目录 一、 从控制器中获取参数的几种形式 1) 页面请求url直接拼接参数。 2) 页面请求提交form表单 3) 页面请求发送json数据,使用上下文对象c的BindJSON()方法接…...
DHCP笔记
DHCP---动态主机配置协议 作用:为终端动态提供IP地址,子网掩码,网关,DNS网址等信息 具体流程 报文抓包 在DHCP服务器分配iP地址之间会进行广播发送arp报文,接收IP地址的设备也会发送,防止其他设备已经使用…...
TCP为什么需要四次挥手?
tcp为什么需要四次挥手? 答案有两个: 1.将发送fin包的权限交给被动断开发的应用层去处理,也就是让程序员处理 2.接第一个答案,应用层有了发送fin的权限,可以在发送fin前继续向对端发送消息 为了搞清楚这个问题&…...
MySQL 索引相关基本概念
文章目录 前言一. B Tree 索引1. 概念2. 聚集索引/聚簇索引3. 辅助索引/二级索引4. 回表5. 联合索引/复合索引6. 覆盖索引 二. 哈希索引三. 全文索引 前言 InnoDB存储引擎支持以下几种常见索引:BTree索引,哈希索引,全文索引 一. B Tree 索引…...
Neutralinojs教程项目实战初体验(踩坑指南),干翻 electron
Neutralinojs 项目实战初体验(踩坑指南),干翻 electron Neutralinojs 官方文档 卧槽卧槽,!这个年轻人居然用浏览器把电脑关机了_哔哩哔哩_bilibili正是在下 本教程搭建的是纯原生项目,没有和其它前端框架…...
【轻松拿捏】Java-List、Set、Map 之间的区别是什么?
List、Set、Map 之间的区别是什么? 一、List 二、Set 三、Map 🎈边走、边悟🎈迟早会好 一、List 有序性:List 保持元素的插入顺序,即元素按添加的顺序存储和访问。允许重复:List 可以包含重复的元素。…...
用户史订单查询业务
文章目录 概要整体架构流程技术细节小结 概要 在电商、金融、物流等行业中,用户历史订单查询是一项常见的业务需求。这项功能允许用户查看他们过去的交易记录,包括但不限于购买的商品、服务详情、交易金额、支付状态、配送信息等。对于企业而言…...
第8节课:CSS布局与样式——掌握盒模型与定位的艺术
目录 盒模型:网页布局的基础盒模型的属性盒模型的示例 定位:控制元素位置定位的类型定位的示例 实践:使用CSS布局创建响应式网页结语 CSS布局是网页设计中的基石,它决定了网页元素的排列和分布。盒模型和定位是CSS布局中的两个核心…...
electron 主进程和渲染进程
最近在整理electron 相关的项目问题,对自己来说也是温故知新,也希望能对小伙伴们有所帮助,大家共同努力共同进步。加油!!!! 虽然最近一年前端大环境不好,但是大家还是要加油鸭&#…...
redis的高可用及性能管理和雪崩
redis的高可用 redis当中,高可用概念更宽泛一些。 除了正常服务以外,数据量的扩容,数据安全。 实现高可用的方式: 1、持久化 最简单的高可用方法,主要功能就是备份数据。 把内存当中的数据保存到硬盘当中。 2、主…...
php基础语法
文章目录 1. PHP(1) 安装php 2. 基础语法(1) 格式(2) 输出语法(3) 注释(4) 变量(无变量类型自动识别)(5) 输入获取(6) 定界符(7) 换行 3. 基本数据类型(1) 字符串(2) 整数(3). 浮点数(4). boolean类型(5). 数组(6). null值 4. 运算符(1) 算术运算符(2) 比较运算符(3) 逻辑运算符…...
js抓取短信验证码发送
油猴(Tampermonkey)是一个流行的浏览器扩展,它允许用户在浏览器中运行自定义的JavaScript脚本。下面是一个简单的示例脚本,用于收集网站上发送短信验证码的API请求,并以JSON格式存储这些信息。请注意,这个脚本需要根据实际网站的API请求进行调整,因为不同的网站可能有不…...
视频怎么加密?常见的四种视频加密方法和软件
视频加密是一种重要的技术手段,用于保护视频内容不被未经授权的用户获取、复制、修改或传播。在加密过程中,安企神软件作为一种专业的加密工具,可以发挥重要作用。 以下将详细介绍如何使用安企神软件对视频进行加密,并探讨视频加密…...
聚焦全局应用可用性的提升策略,详解GLSB是什么
伴随互联网的快速发展和全球化趋势的深入,企业对网络应用的需求日渐增长。为满足全球范围内用户大量的访问需求,同时解决容灾、用户就近访问以及全球应用交付等问题,GLSB(全局负载均衡)也因此应运而生。那么GLSB是什么…...
无水印下载视频2——基于tkinter完成头条视频的下载
在数字化时代的浪潮中,视频内容以其丰富性和便捷性,逐渐成为了我们获取信息和娱乐的重要途径。尤其是在短视频平台上,各种创意十足、内容精彩的视频层出不穷,更是吸引了数以亿计的用户。然而,随着视频内容的增加&#…...
Java学习Day17:基础篇7
继承 Java中的继承是面向对象编程中的一个核心概念,它允许我们定义一个类(称为子类或派生类)来继承另一个类(称为父类或基类)的属性和方法。继承提高了代码的复用性,使得我们不必从头开始编写所有的代码&a…...
Vue3 Pinia的创建与使用代替Vuex 全局数据共享 同步异步
介绍 提供跨组件和页面的共享状态能力,作为Vuex的替代品,专为Vue3设计的状态管理库。 Vuex:在Vuex中,更改状态必须通过Mutation或Action完成,手动触发更新。Pinia:Pinia的状态是响应式的,当状…...
手撕数据结构02--二分搜索(附源码)
一、理论基础 二分搜索,也称折半搜索、对数搜索,是一种在有序数组中查找某一特定元素的搜索算法。 二分搜索是一种高效的查找算法,适用于在已排序的数组中查找特定元素。它的基本思想是通过不断将搜索区间对半分割,从而快速缩小…...
单片机工程师继续从事硬件设计还是涉足 Linux 开发?
在开始前刚好我有一些资料,是我根据网友给的问题精心整理了一份「linux的资料从专业入门到高级教程」,点个关注在评论区回复“666”之后私信回复“666”,全部无偿共享给大家!!! 怎么说呢,感觉绝…...
《昇思25天学习打卡营第25天|第28天》
今天是打卡的第二十八天,实践应用篇中的计算机视觉中Vision Transformer图像分类。 从Vision Transformer(ViT)简介开始了解,模型结构,模型特点,实验的环境准备和数据读取,模型解析(…...
Flutter Dio网络请求报错FormatException: Unexpected character
最近开发Flutter项目,网络请求采用的是Dio框架,在发起网络请求的时候报错: 网络请求返回的数据为: var returnCitySN {"cip": "127.0.0.1", "cid": "00", "cname": "未…...