JMeter学习第一、二、三天
首先,我们来了解一下到底什么是接口测试与性能测试:
接口测试
定义
接口测试主要关注系统组件之间的交互,确保各个接口按预期工作。这包括验证传递的数据、数据格式、调用的频率和其他与接口调用相关的任何限制。
目的
- 确保系统的各个组件可以正确、高效地进行通信。
- 检查数据传输、数据完整性和行为是否满足要求。
- 验证错误情况下的处理和异常管理。
主要特点
- 通常与系统的功能测试分开。
- 可使用模拟或存根来模拟外部系统和接口。
- 通常使用专门的工具,如 Postman、SoapUI 或 JMeter 进行。
- 涵盖RESTful API、SOAP Web服务、数据库接口和其他第三方服务。
性能测试
定义
性能测试主要关注软件应用的响应时间、稳定性和可靠性,特别是在各种负载和压力条件下。
目的
- 确定系统在各种负载下的行为。
- 评估系统的吞吐量、最大负载、响应时间等。
- 找出可能的性能瓶颈。
- 验证系统是否满足性能标准和基准。
主要特点
- 包括多种测试类型,如负载测试、压力测试、耐久测试和容量测试。
- 通常使用专门的工具,如 JMeter、LoadRunner 或 Gatling 进行。
- 需要特定的环境和设置以模拟实际用户行为和流量。
- 结果分析可能涉及硬件和软件的多个层面。
本篇我们学习接口测试!
JMeter介绍
Apache JMeter 是一个开源软件,它最初被设计为用来进行压力测试和性能测试,但后来添加了更多的测试功能,如功能测试和服务测试等。JMeter 可以用于分析和衡量各种服务的性能,包括网络服务、数据库、FTP服务器、HTTP服务等。
通常来说,性能测试的过程是针对于某一个接口进行压力施加。而JMeter本身能够模拟很多人同时访问。所以通常来说使用JMeter做性能测试。但是JMeter有点老,作者因为想打好基础,就跟着学习JMeter了,学完这个应该可以再学一下国产的apipost,也不错。
接口测试
进行接口测试的最为重要的总结:提取有效信息!所有的知识都是有最小知识点的,只要我们抓到核心逻辑,就能够快速学会一样东西。
接口的本质,就是请求,给对应的IP地址访问一次(也就是回车一次),再返回相对应的内容。所以无论是Postman,还是JMeter,本质上都是寻找到这样一个服务器,给它发送请求,再接收到回应的数据,仅此而已。
其中,有一些需要注意的点:
1.服务器返回的内容通常以JSON格式为主。
2.也有可能返回其他格式的东西,比如纯文本内容、xml或表单数据。
接口四要素
URL地址
请求方式(GET/POST)
请求参数(400参数类型报错,比如字符串传成数字了,最常见的错误)
响应结果
一旦发现一个请求的返回值或者应答不对,就立马检查这四要素。这四要素能够检查80%的错误,剩下20%错误:检查请求头的Accept/Token部分、常见的500错误,只要5开头就一定是个bug,一定是服务器错误。
安装使用注意点
1.别tm下载5.6.2的JMeter,文件目录根本不一样,下载5.5的版本!下载5.5的版本!下载5.5的版本!下载5.5的版本!下载5.5的版本!下载5.5的版本!下载5.5的版本!下载5.5的版本!下载5.5的版本!下载5.5的版本!下载5.5的版本!下载5.5的版本!下载5.5的版本!下载5.5的版本!
2.很有可能遇到无法保存的情况:
2.1 首先,关闭JMeter(不能保存就是不能保存了,所以读者使用的时候先随便写几个,看能不能保存),然后以管理员身份运行jmeter可执行文件。
2.2 如果这样还不行,就说明jdk版本很有可能高了,请下载jdk11版本(配 jmeter5.5 完全没有问题),然后配置环境变量稍微改改就行了,作者看到一篇文章居然要求卸载原先的jdk,无法理解……
简单使用
简单来说,就是先在测试计划中添加线程组,然后再在线程组中添加“取样器——HTTP请求”:
然后再在线程组中创建“监听器——查看结果树”,然后点击运行就能看到测试结果。
注意,这里的网站接口信息都是来自于某一商城开源网站(供学习),如果没有完全的把握明白其他网站的HTTP请求,读者就先用这个作为样例。到时候作者使用Springboot+Vue这就很容易测试自己网站的接口,主要就是看有没有接口文档!
其他
1.创建线程组,相当于创建一批用户。
2.JMeter控件很多,但都只是特殊情况需要的时候才使用,不是全都要用的。而且是基础中的基础,通过学习JMeter能够为测试能力打下良好的基础。
3.工作中经常出现协同测试。往往存在具有共用性的接口,会存在潜在的问题。
模块化测试——共用性接口
大型工程中,总是使用模块化测试方案。所以,面对常用的模块化测试,需要合理解决共用性接口所带来的问题,那么,什么是共用性接口呢?
在协同测试或自动化测试中,接口的共用性是一个重要概念,它指的是一些接口(或功能、方法)被多个测试案例或场景共同使用。这些公用的接口通常被设计为可重用的组件或方法,以简化测试过程,并提高测试的效率和一致性。
例子:登录接口
登录接口是一个经常被提及的共用性接口的例子。很多应用的功能都需要用户登录后才能访问,这意味着在执行大部分的测试场景之前,都需要先调用登录接口。
假设你要测试一个在线购物网站。你可能会有以下几个测试场景:
- 用户登录并浏览商品。
- 用户登录、选择商品并加入购物车。
- 用户登录、下单并完成支付。
- 用户登录并查看订单状态。
在上述所有的测试场景中,登录都是第一个要执行的步骤。因此,登录接口具有很高的共用性。
为什么共用性接口重要?
提高测试效率:对于共用性接口,只需要编写一次,然后在多个测试场景中重复调用,这大大提高了测试的效率。
确保一致性:如果登录接口出现问题,那么所有依赖于登录的测试场景都可能会受到影响。确保共用性接口的正确性非常重要。
简化测试设计:对于共用性接口,可以单独编写并维护,减少了每个测试场景中的重复代码。
处理共用性接口的策略
模块化:将共用性接口封装成可重复使用的模块或函数,确保其稳定性,并在多个测试场景中重复调用。在JMeter中,将其封装为测试片段的模块,然后调用这个模块即可。(测试片段就是对用例的描述,一段测试片段代表一段逻辑,可以共用)
先行测试:由于共用性接口是很多测试场景的基础,建议首先对其进行详细的测试,确保其稳定和可靠。
错误处理:共用性接口应具备健壮的错误处理机制,以确保在调用失败时可以提供清晰的错误信息。
测试片段处理共用性接口
上图为协作测试的时候常用的JMeter结构。具体流程为在线程组中添加逻辑控制器(如include、模块控制器),然后导出测试片段,再将任意导出的测试片段添加到逻辑控制器中,这样线程组就可以直接调用控制器中的公共接口测试了!所有人都可以共用这一个片段。
重复数据的定义
一件非常恶心且没有效率的一件事:配了一堆接口测试,结果环境变了,之前写的所有URL地址、端口、http请求都要修改!这些被称为公共重复数据。太麻烦了,需要提效,而提效就是自动化最为核心的概念!
一变皆变,突然就能和变量联系起来,变量不就是为了解决这样的情况吗?JMeter为此提供“用户定义的变量”这个功能选项。从上到下将我们的重复数据变量化。所有的公共内容,都可以存!
还有一点我们需要注意,使用定义好的变量时,需要使用${ 变量名 }这一格式引用。
多组数据测试
一个接口一般不可能一组数据就测完了。你要测登录接口,还要改一改用户名、密码等,需要多组数据进行测试。那如果一次一次修改数据,就很麻烦啊,一点都不是自动化的测试,效率很低。
我们可以创建.csv测试数据文件,里面每组data都是一行,每个参数用“,”相隔。
然后使用JMeter里的导入CSV文件功能,告诉JMeter我们的csv文件中每一行的数据都对应着哪些变量(csv都是通过“,”分割的)。
然后设置CSV文件格式,重点是第三行的变量名称,一定要与CSV文件对应。
其次,将原本的登录测试数据从固定值变为CSV文件中设置的变量。
为了方便直观获取某一测试用到的测试数据,可以直接在这次HTTP请求名字中添加CSV文件中的变量。
最后利用循环控制器重复读取.csv文件中的数据再赋值给变量,就能实现简单的多组数据测试。注意循环控制器一定是把需要重复的HTTP请求和CSV文件读取包含在一起。(操作是重复的,但是每次读取都是从第一行开始,所以应该放在循环控制器内部)
这种测试有其专业术语定义:DDT数据驱动。
DDT数据驱动测试
DDT(Data-Driven Testing)是一种软件测试模型,它允许测试人员以参数化输入数据的形式创建测试用例。这意味着测试人员可以使用不同的输入数据(通常存储在表格或文件中)来执行相同的测试用例,而无需为每个输入数据手动创建测试用例。核心:测试的逻辑可以复用!比如接口的逻辑
DDT的主要优势
提高效率:
- 可以快速生成多个测试用例。
- 减少代码重复和减少维护工作量。
更易于管理:测试数据可以独立于测试脚本进行管理和修改。
提升测试覆盖率:使用多种数据集测试相同的功能可以更全面地覆盖测试场景。
便于非技术人员理解和使用:测试数据和测试逻辑分离,更易于阅读和编辑。
如何实现DDT
选择工具和库:
- 选择支持数据驱动测试的测试框架和工具。
- 例如,在Python中可以使用
pytest
库进行数据驱动测试。准备测试数据:
- 创建包含不同测试数据的文件(例如,CSV,Excel,或XML文件)。
编写测试脚本:
- 编写测试用例,并将测试数据参数化。
- 使用框架或工具读取测试数据文件,并将数据应用到测试用例中。
执行测试:
- 使用选定的测试框架执行测试脚本。
- 测试框架将自动使用不同的测试数据重复执行测试用例。
无人值守测试
数据驱动测试、无人值守测试、自动化测试
-
数据驱动测试 (Data-Driven Testing, DDT):
- 是一种测试方法,通过将测试脚本和数据分离,允许测试脚本从外部数据源(如Excel、CSV文件等)获取数据。通过使用不同的数据集执行相同的测试脚本,可以方便地进行大规模和复杂的测试。
- 在JMeter中使用: 可以使用CSV Data Set Config配置元素或使用自定义脚本来从外部数据源读取数据。
-
无人值守测试 (Unattended Testing):
- 指的是测试脚本可以在没有人工干预的情况下自动执行。这通常用于回归测试,确保软件在开发周期中的更改没有引入新的错误。
- 在JMeter中使用: 可以使用命令行模式来运行JMeter,这样可以轻松地集成到持续集成/持续部署(CI/CD)管道中,实现无人值守测试。
-
自动化测试 (Automated Testing):
- 是一种测试方法,它使用自动化工具来编写和执行测试用例,无需人工干预。自动化测试可以快速、可靠地执行大量复杂的测试任务。
- 在JMeter中使用: 使用JMeter的图形用户界面或命令行工具来创建和执行自动化测试脚本。
虽然这三个概念有所重叠(例如,数据驱动测试、无人值守测试通常也是自动化的),但它们不完全是相同的东西:
- 数据驱动测试主要关注使用不同的测试数据来执行相同的测试脚本。
- 无人值守测试主要关注在没有人工干预的情况下执行测试。通常用于执行时间较长、资源消耗较大的测试任务,例如性能测试、负载测试和稳定性测试等。
- 自动化测试是一个更广泛的术语,涵盖了所有使用自动化工具执行的测试。可以包括功能测试、性能测试、加载测试、单元测试、集成测试、系统测试和验收测试等。
在JMeter中,您可以轻松实现这三种类型的测试。例如,使用CSV Data Set Config或数据库连接来进行数据驱动测试;使用命令行模式来进行无人值守和自动化测试。
断言
在JMeter中可以设置断言(Assertions)来自动验证请求的响应是否符合预期。断言是自动化和无人值守测试的重要组成部分,它们可以在没有人工干预的情况下自动检查和验证响应数据。
添加断言
- 在JMeter中,选择你想要添加断言的Sampler,本例为用户登录Sampler。
- 右键点击它,然后选择“添加” -> “断言”。这里你可以选择不同类型的断言。
配置断言
选中添加的断言,并在右侧的面板中进行配置。本文以JSONPath返回中的code部分为例,实现自动验证,首先看一下检查的code的位置:
以code的JSONPATH格式作为断言的判断对象:
我们发现,登陆成功时的code=0,所以先如下设置:
运行测试并查看结果
- 运行你的测试。
- 如果响应不符合断言的条件,JMeter将标记该请求为失败,显示为红色,非常刺眼:
但是,其实测试这个东西,并不应该是只给它登陆成功的code值(0)作为验证,并把没有登录成功的情况判断为错误。读者可能会想,没登录不就是错误了吗?其实,没有登陆时会有很多情况,每个情况都会返回不同的code值,而这些code值也应该被断言检测其正确性。对于原来的测试,我们是否成功分辨并测试到所有情况了呢?没有!
真正的思路应该是:一组测试数据下的返回值code,就应该把这个返回值作为本次测试的断言的判断标准,即使是没有登录上。如果code正确返回了“-1”等应该返回的code值,那么也应该认为正确。所以这个应该怎么改进呢?
诶个实现,这个对于JMeter来讲,一直在断言部分修改对应的code值也不是办法,所以咱可以从测试数据入手:
将每种情况下正确的code值作为测试数据的一部分,然后将其设置为第三个变量code:
然后,将断言中的期望值从0变成${code},也就是我们在测试数据中添加的第三列code:
最后,获得测试结果(右图),发现测试的所有情况下的code都成功对应了应该返回的值。
下一篇文章讲解一下JMeter与性能测试! 也是作者目前最需要学习的部分!
相关文章:
JMeter学习第一、二、三天
首先,我们来了解一下到底什么是接口测试与性能测试: 接口测试 定义 接口测试主要关注系统组件之间的交互,确保各个接口按预期工作。这包括验证传递的数据、数据格式、调用的频率和其他与接口调用相关的任何限制。 目的 确保系统的各个组件可…...
常用的分布式ID解决方案原理解析
目录 前言 一:分布式ID的使用场景 二:分布式ID设计的技术指标 三:常见的分布式ID生成策略 3.1 UUID 3.2 数据库生成 3.3 数据库的多主模式 3.4 号段模式 3.5 雪花算法 前言 分布式ID的生成是分布式系统中非常核心的基础性模块&#…...
echarts3D地图打点
1、echarts地图打点加鼠标移上去显示文字 2、1-3和前面的一样echart3D地图 if (res.code 0) {const resData res.data || [];if (resData.length > 0) {for (var i 0; i < resData.length; i) {let arr new Array(2);arr[0] resData[i].longitude || ""…...
分布式主键算法
目录 一、引言二、常见算法介绍雪花算法(Snowflake Algorithm)特性详解优势劣势 UUID(Universally Unique Identifier)特性详解优势劣势 数据库自增主键特性详解优势劣势 分布式数据库的序列(Sequence)特性…...
暴力破解及验证码安全
1.暴力破解注意事项 1、破解前一定要有一个有郊的字典(Top100 TOP2000 csdn QQ 163等密码) https://www.bugku.com/mima/ 密码生成器 2、判断用户是否设置了复杂的密码 在注册页面注册一个,用简单密码看是否可以注册成功 3、网站是…...
程序无法启动,提示“找不到msvcp140.dll”或“msvcp140.dll缺失报错”解决方法
大家好!今天我来给大家分享一下msvcp140.dll丢失的解决方法。我们都知道,在运行一些软件或游戏时,经常会遇到“找不到msvcp140.dll”的错误提示,这会让我们非常苦恼。那么,这个问题该怎么解决呢?下面我将为…...
【Python查找算法】二分查找、线性查找、哈希查找
目录 1 二分查找算法 2 线性查找算法 3 哈希查找算法 1 二分查找算法 二分查找(Binary Search)是一种用于在有序数据集合中查找特定元素的高效算法。它的工作原理基于将数据集合分成两半,然后逐步缩小搜索范围,直到找到目标元素…...
【MySQL实战45讲-基础篇】
基础篇 基础架构 MySQL的基本架构示意图:MySQL可以分为Server层和存储引擎层两部分。 Server层包括连接器、查询缓存、分析器、优化器、执行器等,涵盖MySQL的大多数核心服务功能,以及所有的内置函数(如日期、时间、数学和加密函…...
asp.net core中间件预防防止xss攻击
using System; using System.Text.Json; using System.Text.Json.Serialization;namespace CommonUtils {/// <summary>/// newtonsoft的转化器/// 防止xss攻击/// </summary>public class AntiXssNewtonsoftConverter : Newtonsoft.Json.JsonConverter<string&…...
jvm概述
1、JVM体系结构 2、JVM运行时数据区 3、JVM内存模型 JVM运行时内存 共享内存区 线程内存区 3.1、共享内存区 共享内存区 持久带(方法区 其他) 堆(Old Space Young Space(den S0 S1)) 持久代: JVM用持久带(Permanent Space)实现方法…...
C++简单上手helloworld 以及 vscode找不到文件的可能性原因
helloworld #include <iostream>int main() {std::cout << "hello world!" << std::endl;return 0; }输入输出小功能 #include <iostream> using namespace std; /* *主函数 *输出一条语句 */int main() {// 输出一条语句cout << &q…...
掌动智能:性能压力测试的重要性
采用性能压力测试可以帮助企业预估系统容量、提升用户体验以及降低风险和成本。在软件开发过程中,将性能压力测试纳入测试策略的重要一环,将为企业的成功和用户满意度打下坚实的基础。 性能压力测试的重要性: 一、发现性能瓶颈 性能压力测试能…...
kafka日志文件详解及生产常见问题总结
一、kafka的log日志梳理 日志文件是kafka根目录下的config/server.properties文件,配置log.dirs/usr/local/kafka/kafka-logs,kafka一部分数据包含当前Broker节点的消息数据(在Kafka中称为Log日志),称为无状态数据,另外一部分存在…...
Linux-Centos中配置docker
1.安装yum工具 yum install -y yum-utils 2.配置yam源头 yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo 3.安装docker yum install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin 4. 查看d…...
IDEA-2023-jdk8 HelloWorld的实现
目录 1 新建Project - Class 2 编写代码 3 运行 1 新建Project - Class 选择"New Project": 指名工程名、使用的JDK版本等信息。如下所示: 接着创建Java类: 2 编写代码 public class HelloWorld {public static void main(S…...
【1++的Linux】之进程(五)
👍作者主页:进击的1 🤩 专栏链接:【1的Linux】 文章目录 一,什么是进程替换二,替换函数三,实现我们自己的shell 一,什么是进程替换 我们创建出来进程是要其做事情的,它可…...
用url类来访问服务器上的文件
场景一: package com.guonian.miaosha;import java.io.BufferedReader; import java.io.File; import java.io.IOException; import java.io.InputStreamReader; import java.net.HttpURLConnection; import java.net.MalformedURLException; import java.net.URL;…...
【重拾C语言】六、批量数据组织(二)线性表——分类与检索(主元排序、冒泡排序、插入排序、顺序检索、对半检索)
目录 前言 六、批量数据组织——数组 6.1~3 数组基础知识 6.4 线性表——分类与检索 6.4.1 主元排序 6.4.2 冒泡排序 6.4.3 插入排序 6.4.4 顺序检索(线性搜索) 6.4.5 对半检索(二分查找) 算法比较 前言 线性表是一种常…...
24 Python的sqlite3模块
概述 在上一节,我们介绍了Python的shutil模块,包括:shutil模块中一些常用的函数。在这一节,我们将介绍Python的sqlite3模块。sqlite3模块是Python中的内置模块,用于与SQLite数据库交互。SQLite是一个轻量级的磁盘数据库…...
ARM-流水灯
.text .global _start _start: 1、设置GPIOE寄存器的时钟使能 RCC_MP_AHB$ENSETR[4]->1 0x50000a28LDR R0,0X50000A28 LDR R1,[R0] 从R0起始地址的4字节数据取出放在R1 ORR R1,R1,#(0X3<<4) 第4位设置为1 STR R1,[R0] 写回2、设置PE10、PE8、PF10管脚为输出模式 …...
【虚拟机】NAT 模式下访问外网
目录 一、NAT 模式的作用原理 二、配置 NAT 模式实现外网访问 1、配置NAT模式的网段 2、虚拟机选择 VMnet8 网卡 3、IP地址设为自动分配 一、NAT 模式的作用原理 NAT模式下,虚拟机的系统会把宿主机当作一个大路由器,发送的网络请求和数据都是先发给…...
React 入门笔记
前言 国庆值班把假期拆了个稀碎, 正好不用去看人潮人海, 趁机会赶个晚集入门一下都火这么久的 React 前端技术. 话说其实 n 年前也了解过一丢丢来着, 当时看到一上来就用 JS 写 DOM 的套路直接就给吓退了, 扭头还去看 Vue 了🤣, 现在从市场份额 社区活度来看, 确实…...
Ubuntu MySQL
在安装前,首先看你之前是否安装过,如果安装过,但是没成功,就要先卸载。 一、卸载 1.查看安装 dpkg --list | grep mysql 有东西,就说明您之前安装过mysql。 2.卸载 先停掉server sudo systemctl stop mysql.servic…...
大数据软件系统开发框架
大数据处理框架是用于处理大规模数据集的软件工具和平台,它们可以帮助分析、存储和处理庞大的数据量。以下是一些常见的大数据处理框架,希望对大家有所帮助。北京木奇移动技术有限公司,专业的软件外包开发公司,欢迎交流合作。 1.A…...
rust变量
一 、变量定义 (一)语法格式 使用let关键字定义变量 let varname: type value; 如,let a: i32 78;也可以不显式指定类型 let varname value; 如,let a 78;一些例子 1.布尔 let t true; let f: bool false;2.整数 let a …...
蓝桥杯---第一讲 递归与递推
文章目录 前言Ⅰ. 递归实现指数型枚举0x00 算法思路0x00 代码书写0x00 思考总结 Ⅱ. 递归实现排列型枚举0x00 算法思路0x01代码书写0x02 思考总结 Ⅲ. 简单斐波那契0x00 算法思路0x01 代码书写 Ⅳ. 费解的开关0x00 算法思路0x01 代码书写 Ⅴ. 递归实现组合型枚举0x00 算法思路0…...
OpenCV 15(SIFT/SURF算法)
一、SIFT Harris和Shi-Tomasi角点检测算法,这两种算法具有旋转不变性,但不具有尺度不变性,以下图为例,在左侧小图中可以检测到角点,但是图像被放大后,在使用同样的窗口,就检测不到角点了。 尺度…...
前端二维码图片解析图片识别/网络图片解析成链接/图片网络链接转本地链接(Js/Vue/Jquery)
注:需要用到canvas/jsqr/jquery! 1、远程图片链接本地化 页面: <!-- 识别二维码用的 canvas--> <canvas class"canvas" ref"canvas" style"display: none"></canvas> 1.创建图片 get2: fu…...
模板中的依赖类型使用 --- typename
依赖类型,顾名思义就是依赖于模板参数的类型,在使用这种类型时,必须使用 typename,否则编译器是无法知道是在使用类型,还是类的成员(因为类的静态成员的使用方法也是T::xxx,这跟某个类中的类型的…...
git 同时配置 gitee github
git 同时配置 gitee github 1、 删除C:\Users\dell\.ssh目录。 在任意目录右击——》Git Bash Here,打开Git Bash窗口,下方命令在Git Bash窗口输入。 2、添加git全局范围的用户名和邮箱 git config --global user.email "609612189qq.com" …...
郑州做网站大量网站被关/企业网页设计制作
圆圈舞蹈 [问题描述] 熊大妈的奶牛在时针的带领下,围成了一个圆圈跳舞。由于没有严格的教育,奶牛们之间的间隔不一致。 奶牛想知道两只最远的奶牛到底隔了多远。奶牛A到B的距离为A顺时针走和逆时针走,到达B的较短路程。告诉你相邻两个奶牛间的…...
表白视频制作网站/长沙百度快速排名优化
简介 这节课NeHe课程主要向我们展示了将物理运动规律引入到三维场景中,模拟真实物体的位置变化过程。这节课分别模拟了如下几种运动方式: (1)在重力作用下的抛物线运动; (2)匀速运动 ÿ…...
wordpress. 评论插件/怎么弄属于自己的网站
1. 前言从2020年10月开始,基于亚马孙云科技 Graviton2 的缓存实例逐步推出,客户可以在使用 Amazon ElastiCache for Redis上使用这些实例。Graviton2 处理器由 Amazon Web Services 使用 64 位 ARM Neoverse 内核定制,对第一代亚马逊云科技 G…...
做网站卖东西赚钱么/百度导航怎么下载
PHP的网站主要攻击方式: 1、命令注入(Command Injection)2、eval注入(Eval Injection)3、客户端脚本攻击(Script Insertion)4、跨网站脚本攻击(Cross Site Scripting, XSS)5、SQL注入攻击(SQL injection)6、跨网站请求伪造攻击(Cross Site Request Forgeries, CSRF)…...
asp.net 网站管理工具/seo综合查询网站源码
MySQL8 创建用户,设置修改密码,授权 MySQL5.7可以 (创建用户,设置密码,授权) 一步到位 👇 GRANT ALL PRIVILEGES ON *.* TO 用户名% IDENTIFIED BY 密码 WITH GRANT OPTION👆这样的语句在MySQL8.0中行不通, 必须 创设和授权 分步执行👇 CR…...
盖州网站优化/网站开发的公司
一面 一面就做了一道算法题,要求两小时内完成,给了长度为N的有重复元素的数组,要求输出第10大的数。典型的TopK问题,快排算法搞定。 算法题要注意的是合法性校验、边界条件以及异常的处理。另外,如果要写测试用例&am…...