IEC61850实现方案和测试-2
IEC61850实现方案和测试-1作为介绍实现方案和测试的第二篇文章,后续会继续更新,欢迎关注。
第一篇是:IEC61850实现方案和测试-1-CSDN博客
UCA详细测试用例下载:
链接: https://pan.baidu.com/s/1TTMlYRfzKITgrkWwwtcrDg 提取码: wrwx
本篇主要介绍IEC61850的UCA测试用例,该篇主要介绍对服务器server的测试用例。
1、应用关联测试用例
sAss1,配置好正确的连接和认证参数,建立连接,释放链接,重复建立和释放链接250次
sAss2,配置好正确的连接和认证参数,建立连接,中断链接,重复建立和中断链接250次
sAss3,配置好正确的连接和认证参数,建立 max个连接,释放max个链接,重复建立和释放max个链接250次
sAss4,主要测试协商参数
sAssN1,server开启认证服务,配置错误的认证参数建立连接失败,server关闭认证服务,错误的认证参数建立连接成功
sAssN2,配置正确的认证参数请求连接成功,释放也成功,分别配置如下不正确的认证参数
• called / calling transport selector
• called / calling session selector
• called / calling presentation selector
• called / calling AP title
• called / calling AE qualifier
建立连接失败
sAssN3,测试支持同时连接的最大个数,配置正确的认证参数,建立n个连接,直到建立链接失败,重复250次
sAssN4,测试连接超时和超时检测,配置正确的认证参数,建立连接,读一个数据,client等待数倍超时时间,等待server发送keep alive心跳,确认超时时间,
断开网络连接时间长于连接检测时间在恢复网络,通过向之前建立的连接发送一个请求数据的命令,server不会应答,检测server已经检测到连接丢失
再次建立max个连接,释放max个连接
sAssN5,电源中断,配置正确的认证参数请求连接成功,中断电源供电,等待server断电,恢复供电,经过上电时间后,client再次请求建立连接,连接成功
sAssN6,测试释放的连接资源可重用,client1建立max个连接成功,然后释放1个连接,使用client2 建立连接,可以成功;断开client2的网络,大于超时时间,在恢复网络
,client2重新建立连接成功,请求数据也成功
2、模型和数据服务
sSrv1,获取服务目录测试,client建立连接成功,请求GetServerDirectory,server响应成功(包含逻辑设备的列表),继续sSrv2测试
sSrv2,获取逻辑设备目录测试,对sSrv1返回的每个逻辑设备请求GetLogicalDeviceDirectory,server响应成功(包含逻辑节点的列表),继续sSrv3测试
sSrv3,获取逻辑节点目录测试,对sSrv2返回的每个逻辑节点请求GetLogicalNodeDirectory,server响应成功(包含数据对象的列表),继续sSrv4测试
sSrv4,获取数据对象目录测试,对sSrv3返回的每个数据对象请求GetDataDirectory、GetDataDefinition、GetDataValues,server对各个请求响应成功
sSrv5,对数据分层进行读数据测试,至少读取如下数据
• Functional constrained data: LLN0$ST$Beh
• Functional constrained data attribute: LLN0$ST$Beh$stVal
• Functional constrained data attribute type attribute
sSrv6,设置数据测试
对功能约束为 FC=ST, MX or EX的数据对象发送当前值的设置请求,server应答为response- with data access error “object-access-denied”
对功能约束为 FC=BL, CF ,SP or DC的数据对象发送当前值的设置请求(写使能类型数据对象),只读数据回复response-,写使能回复response+(只读标志为valKind=”RO,写使能标志为valKind="Set”或者为设置),设置新值并读出对比
sSrv7,测试设置数据时最大数据对象个数
sSrv8,测试获取全部数据,针对每个逻辑节点和支持的功能约束fc,client发送获全部取数据值(至少包含一个FC=ST, MX, CF, SP, DC, EX, BL, OR)
对于每个逻辑节点,使用数据对象引用(<IED><LD>/<LN>$<FC>)的方式发送获全部取数据值
sSrv9,测量值含义测试
sSrv10,单点和双点信息含义测试
sSrv11,闭锁测试,针对支持blkEna的数据对象进行测试,当blkEna为真时,即使通过模拟器改变过程值,该闭锁对象的数据也不会变化,当blkEna为假时,通过模拟器改变过程值,该闭锁对象的数据会变化
sSrv12,mode测试, off, test and/or blocked
mode=off,请求mode、behaviour,health和过程值,mode和behaviour值更新,过程值品质为无效
mode=test,请求mode、behaviour,health和过程值,mode和behaviour值更新,过程值品质为test
mode=test/blocked,请求mode、behaviour,health和过程值,mode和behaviour值更新,过程值品质为test
mode=blocked,请求mode、behaviour,health和过程值,mode和behaviour值更新,过程值品质保持mode=on时的状态
mode=on,请求mode、behaviour,health和过程值,mode和behaviour值更新,过程值品质的值被clear
Mod、Beh、Health不是过程值,他们的品质总是validity=good
sSrv13,逻辑设备层次测试,引用一个不是无线循环的引用,引用格式GrRef.setSrcRef value in SCL is: “@<LDevice.inst>” or “<IED.name><LDevice.inst>” and in the online datamodel:
“<IED.name><LDevice.inst>” or <LDevice.ldName>
在mod的上级请求GetDataValues所有下层级数据,server响应成功
sSrv14,同sSrv11
sSrvN1,逻辑设备、节点、数据服务参数错误测试
对于GetLogicalDeviceDirectory、GetLogicalDeviceDirectory、GetDataDirectory / GetDataDefinition、GetDataValues、SetDataValues、GetAllDataValues 回复error “object-non-existent”
sSrvN2,设置数据值超出枚举值范围,回复data access error “object-value-invalid”
sSrvN3,设置数据值数据类型不匹配(如整数和浮点数),回复data access error “type-inconsistent”
sSrvN4,对只读数据进行设置,回复 data access error “object-access-denied”
3、数据集服务
sDs1,获取数据集信息测试,对每个逻辑节点,请求逻辑节点目录(DATA-SET),正常响应;对数据集请求数据集目录,正常响应;对数据集的数据请求值,正常响应
sDs2,创建永久数据集测试,创建包含一个成员的永久数据集,client1进行GetLogicalNodeDirectory(DATA-SET)操作,响应包含创建的数据集名字;client2进行GetLogicalNodeDirectory(DATA-SET)操作,响应包含创建的数据集名字;创建最大个数成员的永久数据集,操作同上
sDs3,创建非永久数据集测试,创建包含一个成员的非永久数据集,client1进行GetLogicalNodeDirectory(DATA-SET)操作,响应包含创建的数据集名字,client2进行GetLogicalNodeDirectory(DATA-SET)操作,响应不包含创建的数据集名字;创建最大个数成员的永久数据集,操作同上
sDs4,创建和删除永久数据集测试,创建一个永久数据集,至少包含2个成员,请求数据集数据,返回包含成员的数据集数据,删除刚才创建的数据集,删除成功
创建一个永久数据集,至少包含1个扩展成员,请求数据集数据,返回包含成员的数据集数据,删除刚才创建的数据集,删除成功
再次创建刚才创建的永久数据集,包含两个成员,但两个成员的顺序重新排列,请求数据集数据,返回包含成员的数据集数据(顺序与创建时候排序一致)
sDs5,创建和删除非永久数据集测试,测试同sDs4
sDs6,非永久数据集链接断开后类似于删除,变为不可用状态
sDs7,永久数据集链接断开后不删除,数据集依然可用状态
sDs8,多次创建和删除永久数据集测试,数据集为多成员数据集
sDs9,多次创建和删除非永久数据集测试,数据集为多成员数据集
sDs10,数据集获取数值和设置数值
sDs11,创建永久数据集(最大成员)最大个数
sDs12,创建非永久数据集(最大成员)最大个数
sDs13,创建永久数据集(最大名称长度32 char)最大个数
sDs14,创建非永久数据集(最大名称长度32 char)最大个数
sDs15,创建从少到多层级的FCDA元素
• MMXU.PhV
• MMXU.A.phsA
• MMXU.A.phsB.cVal
• MMXU.A.phsC.cVal.mag
• MMXU.A.neut.cVal.mag.f
sDsN1,数据集服务非法参数测试
sDsN2,重复创建两个完全相同的永久数据集测试,第二次创建时提示error with errorClass=definition errorCode=object-exists
sDsN3,重复创建两个完全相同的非永久数据集测试,第二次创建时提示error with errorClass=definition errorCode=object-exists
sDsN4,持续创建永久数据集,直到提示创建否定应答,response- with errorClass=resource and errorCode=capability-unavailable,已创建数据集总个数大于或等于支持的最大数据集个数
sDsN5,持续创建非永久数据集,直到提示创建否定应答,response- with errorClass=resource and errorCode=capability-unavailable,已创建数据集总个数大于或等于支持的最大数据集个数
sDsN6,使用未知的数据引用创建永久数据集,否应应答,response- with errorClass=definition and errorCode=object-undefined
sDsN7,使用未知的数据引用创建非永久数据集,否应应答,response- with errorClass=definition and errorCode=object-undefined
sDsN8,删除预配置的数据集(不可删除的,未被报告控制块引用的),response+ with numberMatched=1 and numberDeleted = 0
sDsN9,删除2次永久数据集,第一次应答 response+ with numberMatched=1 and numberDeleted = 1,第二次应答response+ with numberMatched=0 and numberDeleted = 0
sDsN10,删除2次非永久数据集,第一次应答 response+ with numberMatched=1 and numberDeleted = 1,第二次应答response+ with numberMatched=0 and numberDeleted = 0
sDsN11,删除被引用的永久数据集
引用数据集的URCB使能,删除数据集时响应 response- with MMS service error with errorClass “service”, errorCode “object-constraint-conflict”
and serviceSpecificInformation deleteNamedVarList 0
引用数据集的URCB禁能,删除数据集时响应response- with MMS service error with errorClass “service”, errorCode “object-constraint-conflict”
and serviceSpecificInformation deleteNamedVarList 0
引用数据集的URCB与数据集分离,响应response+ with numberMatched=1 and NumberDeleted=1
sDsN12,删除被引用的非永久数据集,测试同sDsN11
sDsN13,对只读数据属性进行SetDataSetValues设置数据集值操作,响应response- with errorCode=object-access-denied
4、服务追踪
sTrk1, 缓存报告控制块BRCB跟踪测试
client1为LTRK.BrcbTrk[SR]配置引用数据集的一个BRCB或URCB或LCB,配置触发选项为数据更新以及上报原因
server上报的报告包含跟踪的数据集成员对象或者创建了日志条目
client2配置另一个BRCB,配置触发选项、上报原因,使能上报,并执行总召GI请求
server上报的报告包含跟踪的数据集成员对象或者创建日志条目并记录原因
sTrk2, 非缓存报告控制块URCB跟踪测试,同sTrk1
sTrk3,日志控制块跟踪测试
sTrk4,goose控制块跟踪测试
sTrk5,多路采样值SV控制块跟踪测试、
sTrk6,单路采样值SV控制块跟踪测试
sTrk7,定值组控制块跟踪测试
client1为LTRK.SgcbTrk[SR] 配置引用数据集的一个BRCB或URCB或LCB,配置触发选项为数据更新以及上报原因
client2改变定制组状态,包括选择定值组,编辑定制组,设置定值组值,server发送给client1的报告包含跟踪的数据集成员或者创建日志条目并记录原因
sTrk8,单点控制跟踪测试
client1为LTRK.SpcTrk[SR]配置引用数据集的一个BRCB或URCB或LCB,配置触发选项为数据更新以及上报原因
client2进行单点控制,包括选择、执行、取消等操作,server发送给client1的报告包含跟踪的数据集成员或者创建日志条目并记录原因
sTrk9,双点控制跟踪测试,参考sTrk8
sTrk10,整形控制跟踪测试,参考sTrk8
sTrk11,枚举控制跟踪测试,参考sTrk8
sTrk12,整数步进控制跟踪测试,参考sTrk8
sTrk13,二进制步进控制跟踪测试,参考sTrk8
sTrk14,浮点型模拟设点控制跟踪测试,参考sTrk8
sTrk15,整型模拟设点控制跟踪测试,参考sTrk8
sTrk16,二进制模拟设点控制跟踪测试,参考sTrk8
sTrk17,其他支持服务跟踪测试,参考sTrk8
5、取代测试用例
sSub1,测试subEna为假时,subVal、subMag等取代值不会立即对过程值进行取代,subEna为真时,subVal、subMag等会立即取代过程值
sSub2,测试subEna为假时,设置subVal、subMag等取代值,再设置subEna为真,立即取代过程值,然后断开连接并重新连接,确认subVal、subMag等取代值未改变
sSub3,测试subEna为假时,设置subVal、subMag等取代值,再设置subEna为真,立即取代过程值,再继续设置subVal、subMag等取代值,确认subVal、subMag等取代值已取代了上次的取代值
6、控制测试用例
sCtl1,检查控制对象路径以及控制模式
sCtl2,改变控制模式测试,分别设置为direct-with-normal-security、SBO-with-normal-security、direct-with-enhanced-security、SBO-with-enhanced-security
正确响应
sCtl3,激活第二次激活的控制对象
client给控制对象1和控制对象2发送相同的时间激活时间operTm,两个都应答且到执行时间能够执行操作命令
sCtl4,stSeld状态测试,client发送选择(或选择带值)和执行,server响应并置stSeld状态
sCtl5,test flag和test mode测试,LN.Beh=on,client发送带有test flag的正确控制命令,命令无法下发
sCtl6,选择取消多个SBO控制对象
client选择多个SBO控制对象,无内联的多个控制对象响应正常,内联的多个控制对象响应异常
client 取消已经选择的控制对象,响应正确
sCtl7,Check条件检查
sCtl8,对SBO对象直接控制
sCtl9,对SBO对象连续选择2次
sCtl10,选择值或者操作值与当前值一样
sCtl11,对SBO对象从2个client进行选择2次测试
sCtl13,对直控对象进行选择
sCtl14,对直控对象从2个client进行操作2次测试
sCtl15,对不可控制的逻辑节点对象进行控制
逻辑节点Beh=off(设置Mod为Off,LLN0.Mod=Off)
sCtl16,对本地模式的控制对象操作
(LLN0.Loc=True or CSWI.Loc=True)
sCtl17 DOns,对本地模式的控制对象进行站控操作
(LLN0.Loc=True or CSWI.Loc=True)
sCtl17 SBOns,对本地模式的控制对象进行站控操作
(LLN0.Loc=True or CSWI.Loc=True)
sCtl17 SBOes,对本地模式的控制对象进行站控操作
(LLN0.Loc=True or CSWI.Loc=True)
sCtl18,当命令被闭锁的时候控制对象
(CmdBlk.stVal=TRUE, Mod.stVal = on)
sCtl20,选择后参数改变
sCtl21,改变达到极限测试
sCtl23,APC超越测试
sCtl24,APC测量值偏移
sCtl25,取消未选择测试
sCtl26,取消测试
sCtl27,对SBOns对象选择带值得测试
sCtl28,
DOns,Verify FC=OR attributes opOk, opRcvd, tOpOk
DOes,Verify FC=OR attributes opOk, opRcvd, tOpOk
SBOns,Verify FC=OR attributes opOk, opRcvd, tOpOk
SBOes,Verify FC=OR attributes opOk, opRcvd, tOpOk
7、文件传输
UCA详细测试用例下载:
链接: https://pan.baidu.com/s/1TTMlYRfzKITgrkWwwtcrDg 提取码: wrwx
欢迎关注!!
相关文章:

IEC61850实现方案和测试-2
IEC61850实现方案和测试-1作为介绍实现方案和测试的第二篇文章,后续会继续更新,欢迎关注。 第一篇是:IEC61850实现方案和测试-1-CSDN博客 UCA详细测试用例下载: 链接: https://pan.baidu.com/s/1TTMlYRfzKITgrkWwwtcrDg 提取码:…...

flume-将日志采集到hdfs
看到hdfs大家应该做什么? 是的你应该去把集群打开, cd /export/servers/hadoop/sbin 启动集群 ./start-all.sh 在虚拟机hadoop02和hadoop03上的conf目录下配置相同的日志采集方案,‘ cd /export/servers/flume/conf 切换完成之后&#…...
一文学习开源框架LeakCanary
LeakCanary 简介 LeakCanary 是一个由 Square 开发的开源工具,主要用于检测和诊断 Android 应用中的内存泄漏问题。它通过自动化的方式帮助开发者捕捉和分析可能导致内存泄漏的对象,简化了内存问题的排查过程。 LeakCanary 的功能 自动检测内存泄漏&a…...

jetson orin系列开发版安装cuda的gpu版本的opencv
opencv安装包下载地址: https://github.com/opencv/opencv/扩展库下载地址: https://github.com/opencv/opencv_contrib1. 删除jetpack包中的opencv版本 原先的opencv库安装在目录/usr/lib/aarch64-linux-gnu/下(一般其他的第三方库也都安…...

数据结构-8.Java. 七大排序算法(中篇)
本篇博客给大家带来的是排序的知识点, 由于时间有限, 分两天来写, 中篇主要实现后三种排序算法: 冒泡排序,快速排序,下一篇讲 归并排序. 文章专栏: Java-数据结构 若有问题 评论区见 欢迎大家点赞 评论 收藏 分享 如果你不知道分享给谁,那就分享给薯条. 你们的支持是我不断创作…...

数据结构C语言描述4(图文结合)--栈的实现,中序转后序表达式的实现
前言 这个专栏将会用纯C实现常用的数据结构和简单的算法;有C基础即可跟着学习,代码均可运行;准备考研的也可跟着写,个人感觉,如果时间充裕,手写一遍比看书、刷题管用很多,这也是本人采用纯C语言…...
python基本数据类型 -- 元组tuple
在 Python 中,元组(Tuple)是一种轻量级的、不可变的数据结构。与列表类似,元组用于存储有序的数据集合,但它一旦创建,其内容就无法更改。这种特性让元组在某些场景下更加安全和高效。本文将从定义、操作、应…...

tcpdump交叉编译
TCPDUMP在Libpcap上开发。 首先需要编译libcap。 网上那么多教程,下载地址都只给了一个英文的官网首页, 你尽可以试试,从里面找到下载地址都要费半天时间。 \color{red}网上那么多教程,下载地址都只给了一个英文的官网首页&#…...
Spring IOC注入方式、Bean作用域
Spring IOC注入 手动注入 set方法注入 需要提供set方法 public class UserService {private UserDao userDao; public void setUserDao(UserDao userDao) {this.userDao userDao;} } 设置属性字段的值 <bean id"userService" class"com.shsxt.servi…...

uniapp微信小程序转发跳转指定页面
onShareAppMessage 是微信小程序中的一个重要函数,用于自定义转发内容。当用户点击右上角的菜单按钮,并选择“转发”时,会触发这个函数。开发者可以在这个函数中返回一个对象,用于定义分享卡片的标题、图片、路径等信息。 使用场…...

利用uniapp开发鸿蒙:运行到鸿蒙模拟器—踩坑合集
从uniapp运行到鸿蒙模拟器上这一步,就有非常多的坑,一些常见的坑,官网都有介绍,就不再拿出来了,这里记录一下官网未记录的大坑 1.运行路径从hbuilderx启动鸿蒙模拟器 解决方法: Windows系统,官…...

【Vue】Vue3.0(二十五)Vue3.0中的具名插槽 的概念和使用场景
上篇文章 【Vue】Vue3.0(二十四)Vue3.0中 r e f s 、 refs 、 refs、parent 的概念和使用场景 🏡作者主页:点击! 🤖Vue专栏:点击! ⏰️创作时间:2024年11月20日16点30分 …...
【pytorch-02】:张量的索引、形状操作和常见运算函数
文章目录 1 张量索引1.1 简单行列索引和列表索引1.2 布尔索引和多维索引 2 张量的形状操作2.1 reshape函数2.2 transpose和permute函数的使用2.3 view和contiguous函数2.4 squeeze和unsqueeze函数用法2.5 张量更改形状小结 3 常见运算函数 1 张量索引 1.1 简单行列索引和列表索…...

C语言-指针作为函数返回值及二级指针
1、指针作为函数返回值 c语言允许函数的返回值是一个指针(地址)我们将这样的函数称为指针函数,下面的例子定义一了一个函数strlong(),用来返回两个字符串中较长的一个: 1. #include <stdio…...

css 使用图片作为元素边框
先看原始图片 再看效果 边框的四个角灭有拉伸变形,但是图片的中部是拉伸的 代码 border-style: solid;/* 设置边框图像的来源 */border-image-source: url(/static/images/mmwz/index/bk_hd3x.png);/* 设置如何切割图像 */border-image-slice: 66;/* 设置边框的宽度 */border…...
Linux无sudo权限将zsh作为默认shell
由于我只有用户权限,没有sudo权限,将zsh作为用户默认shell需要密码,所以没法在系统层面进行操作,下面另寻他法。 安装zsh 可以根据网上教程去安装zsh,一般电脑上会带有zsh,可以使用下述命令查看是否安装z…...
【React 进阶】掌握 React18 全部 Hooks
一、数据更新驱动 1. useState 1. 基础介绍 useState主要用于声明和操作状态变量,可以使函数组件像类组件一样拥有state const [state, setState] useState(initialState);state:状态,作为渲染视图的数据源 setState:改变st…...

【卡尔曼滤波】数据预测Prediction观测器的理论推导及应用 C语言、Python实现(Kalman Filter)
【卡尔曼滤波】数据预测Prediction观测器的理论推导及应用 C语言、Python实现(Kalman Filter) 更新以gitee为准: 文章目录 数据预测概念和适用方式线性系统的适用性 数据预测算法和卡尔曼滤波公式推导状态空间方程和观测器先验估计后验估计…...

【SQL50】day 2
目录 1.每位经理的下属员工数量 2.员工的直属部门 3.判断三角形 4.上级经理已离职的公司员工 5.换座位 6.电影评分 7.修复表中的名字 8.患某种疾病的患者 9.删除重复的电子邮箱 1.每位经理的下属员工数量 # Write your MySQL query statement below #e1是经理,…...
【内存管理】理解 `WeakReference` 以更好地管理 Android 应用中的内存
在 Android 应用开发中,内存管理至关重要。糟糕的内存管理可能导致“内存泄漏”,即一些不再需要的对象仍然留在内存中,最终导致性能下降,甚至应用崩溃。WeakReference 就是帮助解决这个问题的一种工具。在本文中,我们将…...

深入剖析AI大模型:大模型时代的 Prompt 工程全解析
今天聊的内容,我认为是AI开发里面非常重要的内容。它在AI开发里无处不在,当你对 AI 助手说 "用李白的风格写一首关于人工智能的诗",或者让翻译模型 "将这段合同翻译成商务日语" 时,输入的这句话就是 Prompt。…...

【Redis技术进阶之路】「原理分析系列开篇」分析客户端和服务端网络诵信交互实现(服务端执行命令请求的过程 - 初始化服务器)
服务端执行命令请求的过程 【专栏简介】【技术大纲】【专栏目标】【目标人群】1. Redis爱好者与社区成员2. 后端开发和系统架构师3. 计算机专业的本科生及研究生 初始化服务器1. 初始化服务器状态结构初始化RedisServer变量 2. 加载相关系统配置和用户配置参数定制化配置参数案…...

2.Vue编写一个app
1.src中重要的组成 1.1main.ts // 引入createApp用于创建应用 import { createApp } from "vue"; // 引用App根组件 import App from ./App.vue;createApp(App).mount(#app)1.2 App.vue 其中要写三种标签 <template> <!--html--> </template>…...
工业自动化时代的精准装配革新:迁移科技3D视觉系统如何重塑机器人定位装配
AI3D视觉的工业赋能者 迁移科技成立于2017年,作为行业领先的3D工业相机及视觉系统供应商,累计完成数亿元融资。其核心技术覆盖硬件设计、算法优化及软件集成,通过稳定、易用、高回报的AI3D视觉系统,为汽车、新能源、金属制造等行…...

VM虚拟机网络配置(ubuntu24桥接模式):配置静态IP
编辑-虚拟网络编辑器-更改设置 选择桥接模式,然后找到相应的网卡(可以查看自己本机的网络连接) windows连接的网络点击查看属性 编辑虚拟机设置更改网络配置,选择刚才配置的桥接模式 静态ip设置: 我用的ubuntu24桌…...

GO协程(Goroutine)问题总结
在使用Go语言来编写代码时,遇到的一些问题总结一下 [参考文档]:https://www.topgoer.com/%E5%B9%B6%E5%8F%91%E7%BC%96%E7%A8%8B/goroutine.html 1. main()函数默认的Goroutine 场景再现: 今天在看到这个教程的时候,在自己的电…...

打手机检测算法AI智能分析网关V4守护公共/工业/医疗等多场景安全应用
一、方案背景 在现代生产与生活场景中,如工厂高危作业区、医院手术室、公共场景等,人员违规打手机的行为潜藏着巨大风险。传统依靠人工巡查的监管方式,存在效率低、覆盖面不足、判断主观性强等问题,难以满足对人员打手机行为精…...

(一)单例模式
一、前言 单例模式属于六大创建型模式,即在软件设计过程中,主要关注创建对象的结果,并不关心创建对象的过程及细节。创建型设计模式将类对象的实例化过程进行抽象化接口设计,从而隐藏了类对象的实例是如何被创建的,封装了软件系统使用的具体对象类型。 六大创建型模式包括…...
华为OD最新机试真题-数组组成的最小数字-OD统一考试(B卷)
题目描述 给定一个整型数组,请从该数组中选择3个元素 组成最小数字并输出 (如果数组长度小于3,则选择数组中所有元素来组成最小数字)。 输入描述 行用半角逗号分割的字符串记录的整型数组,0<数组长度<= 100,0<整数的取值范围<= 10000。 输出描述 由3个元素组成…...

Vue3 PC端 UI组件库我更推荐Naive UI
一、Vue3生态现状与UI库选择的重要性 随着Vue3的稳定发布和Composition API的广泛采用,前端开发者面临着UI组件库的重新选择。一个好的UI库不仅能提升开发效率,还能确保项目的长期可维护性。本文将对比三大主流Vue3 UI库(Naive UI、Element …...