软件测试 —— jmeter(2)
软件测试 —— jmeter(2)
- HTTP默认请求头(元件)
- 元件作用域和取样器作用域
- HTTP Cookie管理器
- 同步定时器
- jmeter插件
- 梯度压测线程组(Stepping Thread Group)
- 参数解析
- 总结
- Response Times over Time
- Active Threads Over time
- 聚合报告
- 测试报告
- 性能分析
- 响应时间
- 错误率(可靠性)
- 吞吐量
上一次我们简单介绍了一下jmeter和简单使用了一下jmeter,今天我们继续介绍一下jmeter中的其他插件:
HTTP默认请求头(元件)
我们之前创建了一个HTTP请求,我们的手动输入信息:
如果我们有很多的HTTP请求,每一个我们都要手动输入的话,那就太麻烦了,所以我们可以默认配置HTTP的默认请求:
在测试计划上右击:
里面填上相应的信息:
这个时候我们可以把原来HTTP请求中信息抹掉:
这个时候点击运行:
并且我再添加HTTP请求,都是会按照我们默认请求值里面的信息配置:
元件作用域和取样器作用域
如果我们此时再创建一个线程组,添加HTTP请求:
这个时候,HTTP请求3会报错:
我们发现HTTP请求3没有按照之前的配置填入信息,但此时我把HTTP请求默认值给它拉到外面:
此时请求通过了,这就说明我们改变了HTTP请求默认值元件的作用范围。
这就要谈到元件和取样器的作用范围了
元件作用域只对它的子节点有作用,
取样器(sampler)元件内组件不依赖其他元件就可执行,因此取样器不存在作用问题:
HTTP Cookie管理器
我们还有另外一个元件,HTTP Cookie管理器:
HTTP Cookie管理器像Web浏览器⼀样存储和发送Cookie。如果HTTP请求并且响应包含cookie,则Cookie管理器会⾃动存储该cookie,并将其用来于将来对该特定网站的所有请求。每个JMeter线程都有自己的"cookie存储区"。因此,正在测试使用cookie存储会话信息的⽹站,则每个JMeter线程都将拥有自己的会话。此类Cookie不会显⽰在Cookie管理器显⽰屏上,可以使⽤"查看结果树监听器"查看。
缓存配置可选择standard(标准)或compatibility(兼容的),当然也可以手工添加⼀些cookie.添加了HTTP Cookie管理器后,会自动存储并发送Cookie。
同步定时器
我们看到右上角的黄色三角形符号:
点击之后会进入到界面,这个时候,我们再次运行:
我们就可以看到各个线程的执行情况,我们看到所有的线程并不是同一时间准备好的,这样我们无法模拟并发的场景,这个时候我们要添加同步计时器:
模拟用户组的数量和线程组的数量是一致的。这里注意一下,配置好之后放到全局范围我们再来看:
我们发现两个线程组是同时启动的,这样就可以模拟并发场景了。
jmeter插件
如果我们还想要安装其他的插件,我们就要安装一下小蝴蝶:
点击这个跳到对应官网:
https://jmeter-plugins.org/install/Install/
下载好了之后,把插件移动到lib下的ext下:
关闭jmeter之后,再次打开,右上角就会多了一个小蝴蝶的标志:
点击进去就可以搜索下载对应的插件:
我们先安装一个线程组的插件:
点击下方的Apply,就会安装好了重启,之后我们右击查看关于线程组的元件多了两个:
然后我们安装一下extra,帮助我们看到结果:
梯度压测线程组(Stepping Thread Group)
右击,添加梯度压测线程组(Stepping Thread Group)
我们来解释一下这几个参数是啥意思:
这张图显示了JMeter中线程组(Thread Group)的调度参数配置。以下是各个参数的详细解析:
参数解析
- This group will start [number] threads:
- 设置为
100
:表示这个线程组将启动100个虚拟用户(threads)。
- First, wait for [number] seconds:
- 设置为
0
:表示在启动任何线程之前,等待0秒。这意味着线程会立即开始执行。
- Then start [number] threads:
- 设置为
0
:表示在等待时间结束后,立即启动0个线程。这里设置为0,意味着不会立即启动任何线程。
- Next, add [number] threads every [number] seconds, using ramp-up [number] seconds:
- 设置为
20
threads every3
seconds, using ramp-up3
seconds:
- 表示每3秒增加20个线程,并且每个线程的启动间隔为3秒。
- 例如,在第3秒时启动第一个线程,在第6秒时启动第二个线程,以此类推,直到所有20个线程都启动完毕。
- Then hold load for [number] seconds:
- 设置为
6
:表示在所有线程启动后,保持负载(即所有线程都在运行)6秒。
- Finally, stop [number] threads every [number] seconds:
- 设置为
20
threads every10
seconds:- 表示在保持负载6秒后,每10秒停止20个线程。
- 例如,在第7秒时停止前20个线程,在第17秒时停止接下来的20个线程,以此类推,直到所有线程都停止。
总结
- 初始阶段:
- 立即启动0个线程。
- 每3秒增加20个线程,每个线程的启动间隔为3秒。
- 负载保持阶段:
- 在所有线程启动后,保持负载6秒。
- 停止阶段:
- 每10秒停止20个线程,直到所有线程都停止。
为了能够看到启动了梯度压测线程组的变化,我们也得添加一些监听器:
Response Times over Time
右击添加,Response Times over Time:
这样我们在启动的时候,就会在这上面看到实际的情况,记得往线程组中添加请求:
Active Threads Over time
我们还可以添加Active Threads Over time来查看线程的活动情况:
聚合报告
从聚合报告可以看到性能测试过程中整体的数据变化:
指标 | 说明 |
---|---|
Samples | 发起的 HTTP 请求调用数 |
Average | 平均响应时间,单位为毫秒 |
Median | 请求调用响应时间的中间值,也就是 50% 请求调用的响应时间,单位为毫秒 |
90%Line | 90% 请求调用的响应时间,单位为毫秒 |
95%Line | 95% 请求调用的响应时间,单位为毫秒 |
99%Line | 99% 请求调用的响应时间,单位为毫秒 |
Min | 请求调用的最小响应时间,单位为毫秒 |
Max | 请求调用的最大响应时间,单位为毫秒 |
Error% | 调用失败的请求占比。调用失败一般指响应断言失败或者请求调用出错 |
Throughput | TPS/QPS,每秒处理的事务数 |
KB/sec | 每秒网络传输的流量大小,单位为 KB。这个指标是以网络传输的大小来衡量网络的吞吐量 |
测试报告
JMeter测试报告是⼀个全面而详细的文档,它提供了关于测试执行结果的详细信息,帮助用户全面评估系统的性能并进行性能优化。
生成性能测试报告的命令:
Jmeter -n -t 脚本文件 -l 日志文件 -e -o ⽬录
-n : 无图形化运⾏
-t : 被运行的脚本
-l : 将运行信息写入志文件,后缀为jtl的日志文件
-e : 生成测试报告
-o : 指定报告输出目录
执行成功之后会有对应的报告文件:
性能分析
通过三大指标来分析性能问题:
响应时间
定义:响应时间是指从客户端发出请求到接收到服务器响应的整个过程所需的时间。
瓶颈指示:如果响应时间超过了要求,这可能意味着系统已经到达了其处理能力的极限或存在其他性能瓶颈。
注意事项:
- 分析在多少线程的情况下发生了响应时间超标的情况。
- 注意响应时间的变化趋势,以确定是否存在系统不稳定的问题。
响应时间变化的原因:
- 系统不稳定:系统有时快有时慢,可能是由于资源竞争、负载不均等因素导致。
- 并发压力增大:随着并发用户的增加,响应时间可能会逐渐变长,表明系统在高负载下的性能下降。
错误率(可靠性)
定义:错误率衡量的是系统在高并发场景下能否正常处理业务请求的能力。通常要求达到极高的可靠性标准,如99.99%或更高。
错误率高的原因:
- 接口请求错误:API调用失败,可能是由于参数错误、网络问题等。
- 服务器无法继续处理:当服务器达到其处理极限时,可能导致错误率上升。这可能是由于代码质量问题、内存泄漏或其他硬件资源限制。
- 后端系统限流、熔断、降级:为了保护系统的稳定性,可能会对某些服务实施限流措施,或者在检测到异常时采取熔断和降级策略。
什么是熔断、降级?
- 熔断:防止系统因某个服务的故障而整体崩溃。例如,在电商平台上用户支付时,若发现某支付渠道(如微信支付)失败率突增或超时严重,可以临时将该支付方式熔断,即停止使用这一渠道以保护系统的其余部分。
- 降级:主动关闭一些非核心功能,确保核心功能的正常运行。例如,腾讯视频在出现问题时,用户名默认显示为“腾讯用户”,这是一种降级方式,使用兜底名称进行展示以保证基本服务的可用性。
吞吐量
定义:吞吐量指的是单位时间内系统能够处理的请求数量。一般而言,吞吐量越大,性能越好。
吞吐量变化规律:
- 波动很大:这代表系统性能不稳定,可能存在资源分配不合理等问题。
- 慢慢变高,再趋于稳定:这种模式通常与并发量强相关。随着并发量从小到大逐渐增加,吞吐量也会相应增长,直到达到一个稳定的水平。
- 慢慢变低,并发量也减少了:这可能是性能测试接近尾声,人为减少并发量的结果;但也可能是系统变得卡顿,响应时间变慢,从而导致单个线程发起的并发量减少。
相关文章:
软件测试 —— jmeter(2)
软件测试 —— jmeter(2) HTTP默认请求头(元件)元件作用域和取样器作用域HTTP Cookie管理器同步定时器jmeter插件梯度压测线程组(Stepping Thread Group)参数解析总结 Response Times over TimeActive Thre…...
[java] 面向对象进阶篇1--黑马程序员
目录 static 静态变量及其访问 实例变量及其访问 静态方法及其访问 实例方法及其访问 总结 继承 作用 定义格式 示例 总结 子类不能继承的内容 继承后的特点 成员变量 成员变量不重名 成员变量重名 super访问父类成员变量 成员方法 成员方法不重名 成员方法…...
openstack单机安装
openstack单机安装 网卡配置安装依赖开启虚拟环境修改配置文件 部署openstack部署openstack客户端访问可视化界面Horizon补充 本篇主要讲述Ubuntu2204单机安装openstackstable/2024.2。其他版本的Linux系统或者openstack版本,请参考openstack官网。 网卡配置 需要配…...
OFD、PDF 电子签章系统处理流程
在C#中实现电子签章系统的处理流程,可以参考以下步骤和技术实现: 1. 电子签章系统的基本流程 电子签章系统的核心流程包括以下几个步骤: 密钥生成:生成公钥和私钥对,私钥由签章人保管,公钥用于验证签名。…...
「 机器人 」系统辨识实验浅谈
前言 系统辨识实验是一种通过实验和数据分析的方法,用于建立物理系统的数学模型的技术。系统辨识是控制工程和系统科学中的重要环节,尤其是在模型未知或复杂的情况下。以下是系统辨识实验的详细介绍: 1. 系统辨识实验的目的 1.1 建模 为动态系统(如机械系统、电气系统或生…...
15.7k!DISM++一款快捷的系统优化工具
软件介绍 链接 软件介绍 dism是一款由初雨团队开发的win系统优化工具,可当作是微软系统命令行工具dism的GUI版本。可用作系统垃圾清除、启动项管理、程序卸载、驱动管理、系统优化等 该工具个人感觉最重要的就是系统优化选项,它将一些实用、无用或者没…...
Windows10安装MySQL找不到MSVCR120.dll和MSVCP120.dll问题解决
个人博客地址:Windows10安装MySQL找不到MSVCR120.dll和MSVCP120.dll问题解决 | 一张假钞的真实世界 msvcp120.dll、msvcr120.dll、vcomp120.dll属于VC2013版中的动态链接库,如果丢失重新安装VC2013即可。下载地址:https://www.microsoft.com…...
Vue 3 30天精进之旅:Day 03 - Vue实例
引言 在前两天的学习中,我们成功搭建了Vue.js的开发环境,并创建了我们的第一个Vue项目。今天,我们将深入了解Vue的核心概念之一——Vue实例。通过学习Vue实例,你将理解Vue的基础架构,掌握数据绑定、模板语法和指令的使…...
被遮挡QT窗口置顶
问题描述 开发环境:windows QT 需求: 单击托盘将桌面窗口在被遮挡的情况下置顶解决方案 方案1 资料链接 代码实现 Qt::WindowFlags flags windowFlags(); this->setWindowFlags((flags | Qt::WindowStaysOnTopHint)); this->showMaximized();…...
Apache Flink 概述学习笔记
一、引言 在大数据处理领域,Apache Flink 是一个极具影响力的开源流批一体化计算框架,它以其独特的架构和强大的功能,为大规模数据处理提供了高效、灵活的解决方案。 二、基本概念 Flink 是什么:Flink 是一个分布式流批处理框架…...
系统思考—复杂问题的根源分析
在企业中,许多问题看似简单,背后却潜藏着复杂的因果关系。传统的思维方式往往只能看到表面,而无法深入挖掘问题的真正根源。我们常常通过“表面解决”来应对眼前的症状,但这往往只是治标不治本。 比如,销量下降时&…...
Python 之 Excel 表格常用操作
示例文件 test.xlsx 将各个表单拆分成单独的 Excel 文件 import os.pathimport openpyxl import pandasdef handle_excel(file_path):dirname os.path.dirname(file_path)basename os.path.basename(file_path).split(".")[0]wb openpyxl.load_workbook(file_pat…...
《用DOTS解决实际需求》集锦
去年作者发布了一篇《DOTS-ECS系列课程》,深受同学们的好评!前期课程是基于0.51版本录制的,DOTS升级至1.0版本后,同学们纷纷希望能使用DOTS 1.0版本录制实战课程。 今年作者带着DOTS 1.0版本的实战课程回来啦!&#x…...
【MySQL】存储引擎有哪些?区别是什么?
频率难度60%⭐⭐⭐⭐ 这个问题其实难度并不是很大,只是涉及到的相关知识比较繁杂,比如事务、锁机制等等,都和存储引擎有关系。有时还会根据场景选择不同的存储引擎。 下面笔者将会根据几个部分尽可能地讲清楚 MySQL 中的存储引擎࿰…...
ios打包:uuid与udid
ios的uuid与udid混乱的网上信息 新人开发ios,发现uuid和udid在网上有很多帖子里是混淆的,比如百度下,就会说: 在iOS中使用UUID(通用唯一识别码)作为永久签名,通常是指生成一个唯一标识…...
Jadx动态调试安卓逆向
adb shell su ls 找到default.prop cat default.prop ro.debuggable0(代表没有调试权限) adb shell getprop ro.debuggable # 检查设备是否可调试(1可调试) adb shell getprop ro.product.cpu.abi # 获取设备 CPU 架构(如 arm64-v…...
在Ubuntu上使用Apache+MariaDB安装部署Nextcloud并修改默认存储路径
一、前言 Nextcloud 是一款开源的私有云存储解决方案,允许用户轻松搭建自己的云服务。它不仅支持文件存储和共享,还提供了日历、联系人、任务管理、笔记等丰富的功能。本文将详细介绍如何在 Ubuntu 22.04 LTS 上使用 Apache 和 MariaDB 安装部署 Nextcl…...
FPGA实现任意角度视频旋转(二)视频90度/270度无裁剪旋转
本文主要介绍如何基于FPGA实现视频的90度/270度无裁剪旋转,关于视频180度实时旋转,请见本专栏前面的文章,旋转效果示意图如下: 为了实时对比旋转效果,采用分屏显示进行处理,左边代表旋转前的视频在屏幕中…...
六、深入了解DI
依赖注入是⼀个过程,是指IoC容器在创建Bean时,去提供运⾏时所依赖的资源,⽽资源指的就是对象. 在上⾯程序案例中,我们使⽤了 Autowired 这个注解,完成了依赖注⼊的操作. 简单来说,就是把对象取出来放到某个类的属性中。 关于依赖注…...
kotlin内联函数——let,run,apply,also,with的区别
一、概述 为了帮助您根据使用场景选择合适的作用域函数(scope function),我们将对它们进行详细描述并提供使用建议。从技术上讲,许多情况下范围函数是可以互换使用的,因此示例中展示了使用它们的约定俗成的做法。 1.…...
火语言RPA—超级鹰打码
🚩【组件功能】:通过传入图像返回图像中的文字或结果信息 针对不同类型图片形式的验证码,提交至平台api,以字符串形式返回图片识别结果。 配置预览 配置说明 文件路径 支持T或# 默认FLOW输入项 待识别本地图片的完整路径。 用…...
C#新语法
目录 顶级语句(C#9.0) using 全局using指令(C#10.0) using资源管理问题 using声明(C#8.0) using声明陷阱 错误写法 正确写法 文件范围的命名空间声明(C#10.0) 可空引用类型…...
Cloudflare通过代理服务器绕过 CORS 限制:原理、实现场景解析
第一部分:问题背景 1.1 错误现象复现 // 浏览器控制台报错示例 Access to fetch at https://chat.qwenlm.ai/api/v1/files/ from origin https://ocr.doublefenzhuan.me has been blocked by CORS policy: Response to preflight request doesnt pass access con…...
lightgbm做分类
python import pandas as pd#导入csv文件的库 import numpy as np#进行矩阵运算的库 import json#用于读取和写入json数据格式#model lgb分类模型,日志评估,早停防止过拟合 from lightgbm import LGBMClassifier,log_evaluation,early_stopping #metric from sklearn.metrics …...
下载Visual Studio Community 2019
官方链接如下:Visual Studio Community 2019下载链接 https://learn.microsoft.com/zh-cn/visualstudio/releases/2019/system-requirements#download 目前官方仅建议2022版,已经关闭vs2019等旧版本,哪天开放了,记得踢我一下。 …...
深入理解MySQL事务(万字详)
文章目录 什么是事务为什么会出现事务事务的版本支持事务的提交方式事务常见操作方式正常演示 - 证明事务的开始与回滚非正常演示1 - 证明未commit,客户端崩溃,MySQL自动会回滚(隔离级别设置为读未提交)非正常演示2 - 证明commit了…...
FFPlay命令全集合
FFPlay是以FFmpeg框架为基础,外加渲染音视频的库libSDL构建的媒体文件播放器。 ffplay工具下载并播放视频,可以辅助卡看流信息。 官网下载地址:http://ffmpeg.org/download.html#build-windows 下载build好的exe程序: 此处下载…...
AI编程工具使用技巧:在Visual Studio Code中高效利用阿里云通义灵码
AI编程工具使用技巧:在Visual Studio Code中高效利用阿里云通义灵码 前言一、通义灵码介绍1.1 通义灵码简介1.2 主要功能1.3 版本选择1.4 支持环境 二、Visual Studio Code介绍1.1 VS Code简介1.2 主要特点 三、安装VsCode3.1下载VsCode3.2.安装VsCode3.3 打开VsCod…...
开源的Text-to-SQL工具WrenAI
WrenAI是一个开源的Text-to-SQL工具,旨在通过自然语言交互界面,帮助用户更便捷地查询数据库。以下是对WrenAI的详细介绍: 一、主要功能 自然语言交互:用户可以通过对话方式提出问题,WrenAI能够理解和解析复杂的查询需…...
python创建一个httpServer网页上传文件到httpServer
一、代码 1.server.py import os from http.server import SimpleHTTPRequestHandler, HTTPServer import cgi # 自定义请求处理类 class MyRequestHandler(SimpleHTTPRequestHandler):# 处理GET请求def do_GET(self):if self.path /:# 响应200状态码self.send_response(2…...
Linux中page、buffer_head、bio的关系
在Linux中,page、buffer_head、bio这三个概念紧密相关,共同构成了块设备I/O和内存管理的重要部分,它们的联系主要体现在以下方面: page与buffer_head 基于page构建:buffer_head通常是基于page来构建的,一…...
C++11新特性之decltype
1.decltype的作用 decltype是C11新增的一个关键字,与auto的功能一样,都是在编译期间推导变量类型的。不了解auto的可以转到——C11新特性之auto。 为什么引入decltype?看过上边那篇博客的读者应该知道auto在有些场景中并不适用,所以引入declt…...
对神经网络基础的理解
目录 一、《python神经网络编程》 二、一些粗浅的认识 1) 神经网络也是一种拟合 2)神经网络不是真的大脑 3)网络构建需要反复迭代 三、数字图像识别的实现思路 1)建立一个神经网络类 2)权重更新的具体实现 3&am…...
后端开发Web
Maven Maven是apache旗下的一个开源项目,是一款用于管理和构建java项目的工具 Maven的作用 依赖管理 方便快捷的管理项目依赖的资源(jar包),避免版本冲突问题 统一项目结构 提供标准、统一的项目结构 项目构建 标准跨平台(…...
QT 通过ODBC连接数据库的好方法:
效果图: PWD使用自己的,我的这是自己的,所以你用不了。 以下是格式。 // 1. 设置数据库连接 QSqlDatabase db QSqlDatabase::addDatabase("QODBC");// 建立和QMYSQL数据库的连接 // 设置数据库连接名称(DSN&am…...
【Feature Scaling】:加速梯度下降法的利器
目录 特征缩放的目的常见的特征缩放方法1. 最小-最大缩放(Min-Max Scaling)2. 标准化(Standardization 或 Z-Score Normalization)3. 最大绝对值缩放(Max Abs Scaling) Rescale的使用场景结论 在机器学习中…...
QT:控件属性及常用控件(3)-----输入类控件(正则表达式)
输入类控件既可以进行显示,也能让用户输入一些内容! 文章目录 1.Line Edit1.1 用户输入个人信息1.2 基于正则表达式的文本限制1.3 验证两次输入的密码是否一致1.4 让输入的密码可以被查看 2.Text Edit2.1 输入和显示同步2.1 其他信号出发情况 3.ComboBox…...
计算机网络 (59)无线个人区域网WPAN
前言 无线个人区域网(WPAN,Wireless Personal Area Network)是一种以个人为中心,采用无线连接方式的个人局域网。 一、定义与特点 定义:WPAN是以个人为中心,实现活动半径小、业务类型丰富、面向特定群体的无…...
Python Typing: 实战应用指南
文章目录 1. 什么是 Python Typing?2. 实战案例:构建一个用户管理系统2.1 项目描述2.2 代码实现 3. 类型检查工具:MyPy4. 常见的 typing 用法5. 总结 在 Python 中,静态类型检查越来越受到开发者的重视。typing 模块提供了一种方式…...
Redis存储③Redis基本命令+内部编号和架构
目录 1. Redis 命令行客户端 1.1 与 Redis 服务器交互 1.2 set 和 get 命令 2. 基本全局命令 2.1 keys 2.2 exists 2.3 del 2.4 expire 2.5 ttl 2.6 type 3. 数据结构和内部编码 4. 单线程架构 本篇完。 1. Redis 命令行客户端 1.1 与 Redis 服务器交互 根据上篇…...
Vivado生成X1或X4位宽mcs文件并固化到flash
1.生成mcs文件 01.在vivado里的菜单栏选择"tools"工具栏 02.在"tools"里选择"生成内存配置文件" 03.配置参数 按照FPGA板上的flash型号进行选型,相关配置步骤可参考下图。 注意:Flash数据传输位宽如果需要选择X4位宽&am…...
07 区块链安全技术
概述 区块链的安全特性 区块链解决了在不可靠网络上可靠地传输信息的难题,由于不依赖与中心节点的认证和管理,因此防止了中心节点被攻击造成的数据泄露和认证失败的风险。 区块链安全防护的三大特点 共识机制代替中心认证机制数据篡改“一发动全身”…...
第84期 | GPTSecurity周报
GPTSecurity是一个涵盖了前沿学术研究和实践经验分享的社区,集成了生成预训练Transformer(GPT)、人工智能生成内容(AIGC)以及大语言模型(LLM)等安全领域应用的知识。在这里,您可以找…...
柔性数组与c/c++程序中内存区域的划分
1.柔性数组 1.1柔性数组的定义 柔性数组是指在结构体中定义的,其大小在编译时未确定,而在运行时动态分配的数组。这种数组允许结构体的大小根据需要动态变化。语法如下: struct D {int a;int arry1[0]; };struct F {int a;int arry2[]; };…...
react页面定时器调用一组多个接口,如果接口请求返回令牌失效,清除定时器不再触发这一组请求
为了实现一个React页面使用定时器调用一组多个接口,并在任意一个接口请求返回令牌失效时清除定时器且不再触发这一组请求,可以遵循以下步骤: 1. 定义API调用函数:创建一个函数来处理一组API调用。每个API调用都应该检查响应状态以…...
使用 .NET Core 6.0 Web API 上传单个和多个文件
示例代码: https://download.csdn.net/download/hefeng_aspnet/90138968 介绍 我们将在 IFormFile 接口和 .NET 提供的其他接口的帮助下,逐步讨论单个和多个文件上传。 .NET 提供了一个 IFormFile 接口,代表 HTTP 请求中传输的文件。 此外…...
AJAX笔记入门篇
黑马程序员视频地址: 黑马程序员前端AJAX入门到实战全套教程https://www.bilibili.com/video/BV1MN411y7pw?vd_source0a2d366696f87e241adc64419bf12cab&spm_id_from333.788.videopod.episodes&p2 目录 AJAX 概念和axios 使用 什么是AJAX? …...
RoHS 简介
RoHS(Restriction of Hazardous Substances Directive,限制有害物质指令)是欧盟制定的一项环保法规,旨在限制电气和电子设备中某些有害物质的使用,以减少这些产品对环境和人体健康的危害。 RoHS限制的有害物质及其限量…...
C# 中 default 使用详解
总目录 前言 在C#中,default 关键字用于表示类型默认值。它可以根据上下文推断出适用的类型,并返回该类型的默认值。随着C#版本的发展,default 的用法也变得更加丰富和灵活。本文将详细介绍 default 在不同场景下的使用方法及其最佳实践。 一…...
无人机在城市执法监管中的应用:技术革新与监管挑战
随着科技的不断进步,无人机技术在城市管理中的应用越来越广泛。无人机以其灵活性、高效性和低成本的优势,正在逐渐成为城市执法监管的得力助手。本文将探讨无人机在城市执法监管中的应用现状、技术优势以及面临的挑战。 无人机技术在城市执法监管中的应用…...