zigbee 绑定表的应用
一、 绑定
本文是作者根据TI Z-Stack开发文档,ZigBee Specification-2007,《Zigbee WirelessNetworking》等英文资料整合和翻译而成,采用中英双语对照方便读者理解,文中翻译不当之处,望广大同行不吝赐教。推广ZigBee技术,提高国内电子行业的国际影响力,是我们无线通讯工程师的愿景。本文欢迎转载,请保留作者信息和出处,作为支持我继续努力前行的动力,谢谢!
E-mail:kuangjunbin@gmail.com
ZigBee2006版本中规定,在全部节点中实现绑定机制,并将其称为源绑定。绑定机制允许一个应用服务在不知道目标地址的情况下向对方(的应用服务)发送数据包。发送时使用的目标地址将由应用支持子层(APS)从绑定表中自动获得,从而能使消息顺利被目标节点的一个或多个应用服务,乃至分组接收。
Binding Table
1.Defined in RAM,but can be saved in Flash if theNV_RESTORE compiler option is used
2.Stored on source node(REFLECTOR compiler optionrequired)
3.Entries map messages to their intended destination
4.Each entry in the binding table contains thefollowing:
typedef struct
{uint16srcIdx;//Source indexuint8srcEP;//Source endpointuint8dstGroupMode;//Specifies normal or group addressinguint16dstIdx;//Destination index or group addressuint8dstEP;//Destination endpointuint8numClusterIds;//Number of cluster IDs in the clusterIdList belowuint16clusterIdList[MAX_BINDING_CLUSTER_IDS];
}BindingEntry_t;
绑定表
1. 绑定表存放的位置是内存中预先定义的RAM块,如果编译选项NV_RESTORE被激活,也能保存在Flash里。
2. 绑定表放置在源节点(需要激活编译选项REFLECTOR)。
3. 绑定表的条目把需要发送的消息映射到它们的目标地址上。
4. 绑定表中每个条目(entry)包括以下内容:
绑定表条目结构体的定义
typedef struct
{uint16srcIdx; //源地址索引uint8srcEP; //源端点uint8dstGroupMode; //指定寻址模式uint16dstIdx; //目标地址索引或者分组号uint8dstEP; //目标端点uint8numClusterIds; //在簇标识符表中簇标识符的个数uint16clusterIdList[MAX_BINDING_CLUSTER_IDS]; //簇标识符表
}BindingEntry_t;
1、 概述—怎样绑定节点
(1) 定义:绑定指的是两个节点在应用层上建立起来的一条逻辑链路。在同一个节点上可以建立多个绑定服务,分别对应不同种类的数据包。此外,绑定也允许有多个目标节点(一对多绑定)。
举个例子,在一个灯光网络中,有多个开关和灯光设备,每一个开关可以控制一个或以上的灯光设备。在这种情况下,需要在每个开关中建立绑定服务。这使得开关中的应用服务在不知道灯光设备确切的目标地址时,可以顺利地向灯光设备发送数据包。
(2) 作用:一旦在源节点上建立了绑定,其应用服务即可向目标节点发送数据,而不需指定目标地址了(调用zb_SendDataRequest(),目标地址可用一个无效值0xFFFE代替)。这样,协议栈将会根据数据包的命令标识符,通过自身的绑定表查找到所对应的目标设备地址。在绑定表的条目中,有时会有多个目标端点。这使得协议栈自动地重复发送数据包到绑定表指定的各个目标地址。同时,如果在编译目标文件时,编译选项NV_RESTORE被打开,协议栈将会把绑定条目保存在非易失性存储器里。因此当意外重启(或者节点电池耗尽需要更换)等突发情况的发生时,节点能自动恢复到掉电前的工作状态,而不需要用户重新设置绑定服务。
(3) 配置设备绑定服务,有两种机制可供选择:
1、 如果目标设备的扩展地址(64位地址)已知,可通过调用zb_BindDeviceRequest()建立绑定条目。
2、 如果目标设·备的扩展地址未知,可实施一个“按键”策略实现绑定。这时,目标设备将首先进入一个允许绑定的状态,并通过zb_AllowBindResponse()对配对请求作出响应。然后,在源节点中执行zb_BindDeviceRequest()(目标地址设为无效)可实现绑定。
此外,使用节点外部的委托工具(通常是协调器)也可实现绑定服务。请注意,绑定服务只能在“互补”设备之间建立。那就是,只有分别在两个节点的简单描述结构体(simpledescriptor structure)中,同时注册了相同的命令标识符(command_id)并且方向相反(一个属于输出指令“output”,另一个属于输入指令“input”),才能成功建立绑定
2、 建立一个绑定表格有四种方法可供选择:
1)自动绑定
-
负责发送消息的设备在网络上广播带有如下参数的“个人公告”(Personal Advertisement):
(1)地址(Address);配置文件标识符(Profile ID);簇集合列表 (Cluster Lists);
(2)描述符匹配请求-ZDP_MatchDescReq()
-
匹配的设备会作出响应。
-
由ZDO处理和验证响应。
-
负责发送消息的设备建立绑定表并保存绑定记录。
-
这种方法有时也称“服务发现”,“自动找寻”或者“自动匹配”。
ZigBee设备对象绑定请求-一种告诉目标设备建立绑定记录的委托工具,也称辅助绑定。
任何一个设备或应用服务,都能通过无线信道向网络上的另一个设备发送一个ZDO消息,帮助其建立一个绑定记录。这称为辅助绑定,在消息发向的设备上会建立一个绑定条目。
2)委托绑定的申请:
任一个应用服务,通过向ZDP_BindReq()[definedin ZDProfile.h]提供绑定记录所需要的应用服务入口参数(地址和端点)以及簇标识号(clusterID),即可启动委托绑定的申请。第一个参数(消息发送目标地址)是绑定源节点的短地址(即保存绑定记录的节点地址,这是因为ZDP需委托应用框架AF辅助实现绑定,如果节点本身是REFLECTOR,并且希望保存绑定记录,则此消息发送的目标地址就是本地的AF,这与目标节点的地址DestinationAddr of Receiving device不同)。
l 注意事项:
l 确保[ZDConfig.h]中ZDO_BIND_UNBIND_REQUEST特性已经打开!
l 你可以通过ZDP_UnbindReq()(使用相同参数)来移除绑定记录。
l 被请求辅助绑定的目标设备会返回的ZDO申请绑定或者解除绑定的应答消息。此ZDO消息会被解析并通过调用ZDApp_BindRsp()或ZDApp_UnbindRsp()告知ZDApp.c此次请求的结果。
l 对于申请绑定的应答消息,从协调器返回的状态可能有ZDP_SUCCESS,ZDP_TABLE_FULL or ZDP_NOT_SUPPORTED。
l 对于解除绑定的应答消息,从协调器返回的状态可能有ZDP_SUCCESS,ZDP_NO_ENTRY or ZDP_NOT_SUPPORTED。
l 绑定是由外部的设备发起(“外部”的意思是发起绑定的不是绑定的对象之一)。
l 外部设备应用程序以两个应用服务(地址和端点)和簇标识符作为参数调用ZDP_BindReq ()发起绑定。第一个参数就是绑定记录保存的设备地址。委托绑定。
l 确保编译选项REFLECTOR已经打开!
3、 函数解析:
a) ZDP_BindReq()
实际上是调用ZDP_BindUnbindReq()的一个宏。这一调用会产生并发送一个绑定的请求,使得ZigBee协调器根据簇标识号clusterID对相应的应用服务实施绑定。
函数原型:
afStatus_t ZDP_BindReq(zAddrType_tdstAddr,byteSourceAddr,
byte SrcEPIntf,byte ClusterID,byte*DestinationAddr,byte DstEPIntf,
byte SecuritySuite);
参数细节:
DstAddr-消息发送地址 (负责绑定的设备地址,本地的AF)-参见上面委托绑定
SourceAddr–源节点的64位IEEE地址
SrcEPIntf–源节点应用服务的端点
ClusterID–需要绑定的簇标识符
DestinationAddr–目标节点的64位IEEE地址
DstEPIntf–目标节点应用服务的端点
SecuritySuite-安全机制模式
返回值:
afStatus_t–此函数需要借助AF发送(AF_DataRequest())生成的消息,因此返回值是AF状态值。
ZigBee设备对象终端节点绑定请求-两个设备可向协调器告知他们想建立一个绑定表记录。协调器通过安排配对并分别在这两个设备上建立绑定表条目,也称集中式绑定。
这一机制规定在指定的时限内,通过按键或者其他类似动作对指定的设备实施绑定。在规定的时限内,协调器负责收集终端设备绑定请求消息,然后根据相同的配置文件标识号(profile id)和簇标识号(cluster id)建立相应的绑定表格条目。默认的终端节点绑定时限(APS_DEFAULT_MAXBINDING_TIME)是16秒(在nwk_globals.h中定义),若要修改可在f8wConfig.cfg中新增数值。
所有例子的应用服务中都有一个响应按键事件的函数(例如,TransmitApp.c中的TransmitApp_HandleKeys())。这一响应函数调用ZDApp_SendEndDeviceBindReq()[在 ZDApp.c中]收集该应用服务端点的所有信息,然后再调用ZDP_EndDeviceBindReq()[在ZDProfile.c中]把信息发送给协调器。或者,像SampleLight和SampleSwitch例程中,按键后直接调用ZDP_EndDeviceBindReq(),仅把与开关灯函数相关的簇标识号发送出去。
这一消息将会被协调器接收ZDP_IncomingData()[inZDProfile.c]和解析ZDO_ProcessEndDeviceBindReq()[inZDObject.c],然后让回调函数ZDApp_EndDeviceBindReqCB()[inZDApp.c]调用ZDO_MatchEndDeviceBind()[inZDObject.c]处理这一请求。
当协调器接收到第一个绑定请求时,他会在一定的时限内保留这一请求并等待第二个请求的出现。(默认的最长时间间隔是16秒)。
一旦协调器接收到两个需要匹配的终端设备绑定请求时,它就会启动绑定过程,为发出请求的设备建立源绑定条目。假设在ZDO终端设备绑定请求中找到匹配,协调器将采取以下步骤:
(1) 协调器发送一个ZDO解除绑定请求给第一个设备。终端设备绑定 是一个切换过程,所以解除绑定请求需要发送给第一个 设备,以便移除一个已有的绑定条目。
(2) 等待ZDO解除绑定的应答,如果返回的状态是ZDP_NO_ENTRY(没有已存在的绑定),协调器可以发送一个ZDO绑定请求,在源设备(ZDP_EndDeviceBindReq()第一个参数指定的地址)中建立绑定条目。假如此时返回的状态是ZDP_SUCCESS,可继续处理第一个设备的簇标识符(解除绑定指令已经移除了绑定条目,即已经切换完成)。
(3) 等待ZDO绑定应答。收到以后,继续处理第一个设备的下一个簇标识符。
(4) 等第一个设备完成了以后,在第二个设备上实行同样的过程。
(5) 等第二个设备也完成了,协调器向两个设备发送ZDO终端设备绑定应答消息。
注意打开编译选项:REFLECTOR和ZDO_COORDINATOR
b) ZDApp_SendEndDeviceBindReq()
优点:
-
绑定信息保存在网络反射设备(例如协调器、路由器)中,可以节省目标设备的内存空间。
-
网络反射设备总是处于监听网络的状态。所以,如果其中一个被绑定的节点广播网络地址改变的消息,网络反射设备就可以马上更新相应的绑定表条目。这样,其他被绑定的节点即使处于休眠状态(没有收到该节点网络地址改变的消息),随后向该节点(网络地址已改变)发送的消息,(在)网络反射设备(协助下)仍能准确定位。
缺点:
-
一个与多个设备绑定的节点不能只向一个或若干个配对的设备发送消息。网络反射设备会向全部已绑定的设备本别发送单播消息。
-
发送消息的设备无法收到目标设备接收情况的通告。(没有像AF_ACK_REQUEST标志位那样返回接收情况的功能!)
-
所有的消息必须经过网络反射设备传输,降低了网络的带宽。
进一步分析:
与六个设备绑定的某个设备,向网络反射器发送一个消息后,会导致反射器发送六个单播消息。假设一个网络被分成两个相等的地理区域A和B,网络反射器在两区之间的中央。如果发送消息的设备在A区的深处,接收消息的(六个)设备在B区的深处,那么每次通过绑定(向反射器)发送一个消息,A区的网络流量将会是对六个接收设备分别发送消息时的六分之一。(这是优点!)但如果发送和接收的设备都邻近在一个区的深处(假设离反射器很远),那么(其中一个设备通过反射器的绑定功能向其他设备发送一个消息)该区的网络流量将会是对六个接收设备分别发送单跳消息的许多倍。(这是缺点!)
设备的应用服务-设备上的一个应用服务可以建立或者维护一个绑定表。进入设备上绑定条目的另一种方法是由应用服务本身去管理绑定表。
这意味着应用服务通过调用以下的绑定表管理函数,可以在本地进入或者移除绑定表的条目。
管理绑定表使用的API:
-
bindAddEntry()–绑定表中加条目
-
bindRemoveEntry()–绑定表中移除条目
-
bindRemoveClusterIdFromList()–从一个已有的绑定表条目中移除一个簇标识符
-
bindAddClusterIdToList()–在一个已有的绑定表条目中加入一个簇标识符
-
bindRemoveDev()–移除某目标地址的所有条目
-
bindRemoveSrcDev()–移除某源地址的所有条目
-
bindUpdateAddr()–更新条目到新的地址
-
bindFindExisting()–查找一个绑定条目
-
bindIsClusterIDinList()–在绑定条目中查找一个已有的簇标识符
-
bindNumBoundTo()–某一地址(源地址或目标地址)绑定条目的个数
-
bindNumOfEntries()–绑定表条目的个数
-
bindCapacity()–允许的最大绑定条目数
-
BindWriteNV()–在NV中保存新的绑定表
我们应该选择哪一种绑定方式?
二、 来自TI E2E社区的进一步讨论:
1、“终端设备绑定请求”这一命名有误导的嫌疑。这一请求不仅仅适用于终端设备,而且适用于对希望在协调器上绑定的两个设备中匹配的簇实施绑定。一旦这个函数被调用,将假设REFLECTOR这一编译选项在所有希望使用这一服务的节点中都已经打开。具体操作如下:
(1) (Bind Req) Device 1 --> Coordinator <— Device 2 (Bind Req)
协调器首先找出包含在绑定请求中的簇,然后对比每一设备的IEEE地址,如果簇可以匹配,而且这几个设备没有已经存在的绑定表,那他将发送一个绑定应答给每一个设备。
(2) Device 1 <— NWK Addr Req ------ Coordinator ------- NWK addrReq ----> Device 2
(3) Device 1 ----> NWK Addr Rsp —> Coordinator <---- NWKaddr Rsp <— Device 2
(4) Device 1 <----- Bind Rsp <----- Coordinator -----> BindRsp ----> Device 2
2、“描述符匹配”为源设备的服务发现提供了一种灵巧的方法。下面是具体的操作,这一过程并没有通过协调器。
(1) Device 1 ----> Match Descriptor request (broadcast or unicast)Device 2
(2) Device 1 <---- Match Descriptor response (if clusters, applicationprofile id match) that includes src endpoint, src address <---- Device 2
1号设备需要维护一个端点和地址的记录。
许多应用服务最终都会使用第二种方法。
如若内容造成侵权/违法违规/事实不符,请联系编程学习网邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
相关文章
- tb6600 两相四线步进电机相关参数计算关系
假设细分数为16细分 ,步距角为1.8,则每个脉冲产生的电机转动角度为 1.8/16 = 0.1125。 电机转 一圈所需的脉冲数量为 S 360/0.1125 = 3200个脉冲。 同理求得64细分 为12800个脉冲 ,128细分为25600个脉冲。如果步距角为0.9则在1.8求得数据上*2倍。 然后假设电机要达到的转速为…...
2024/5/2 10:37:20 - 812 最大三角形面积
题目描述: 给定包含多个点的集合,从其中取三个点组成三角形,返回能组成的最大三角形的面积。 示例: 输入: points = [[0,0],[0,1],[1,0],[0,2],[2,0]] 输出: 2 解释: 这五个点如下图所示。组成的橙色三角形是最大的,面积为2。注意: 3 <= points.length <= 50. 不存在…...
2024/4/24 1:08:42 - 811 子域名访问计数
题目描述: 一个网站域名,如"discuss.leetcode.com",包含了多个子域名。作为顶级域名,常用的有"com",下一级则有"leetcode.com",最低的一级为"discuss.leetcode.com"。当我们访问域名"discuss.leetcode.com"时,也同时…...
2024/4/27 21:32:39 - 806 写字符串需要的行数
题目描述: 我们要把给定的字符串 S 从左到右写到每一行上,每一行的最大宽度为100个单位,如果我们在写某个字母的时候会使这行超过了100 个单位,那么我们应该把这个字母写到下一行。我们给定了一个数组 widths ,这个数组 widths[0] 代表 ‘a’ 需要的单位, widths[1] 代表…...
2024/4/26 3:43:55 - 数组与链表的区别
逻辑 内存数组 必须事先定义固定的长度 从栈中分配空间,自由度小,插入、删除数据项时,需要移动其它数据项,非常繁琐链表 动态进行存储分配,数据结构包括队列,栈,双向链表等 从堆中分配空间,自由度小大,可以适应数据动态地增减的情况,且可以方便地插入、删除数据项php…...
2024/4/25 21:59:11 - 如何去梳理代码
我们很多参加工作的朋友们 , 进入一家企业 , 肯定会接触各种项目 , 然而项目都没有文档 , 接口等各种东西写的乱七八糟 , 然而 , 我们即使知道很坑 , 但是迫于生活压力 , 还是得硬着头皮往下干 , 那么, 我们应该如何进梳理像乱麻一样的代码呢 ? 下面我来讲解一种我用的办法 :…...
2024/4/24 12:47:28 - Struts2中拦截器的定义及配置
Struts2的拦截器的定义及配置 1、什么是拦截器 Interceptor:拦截器,起到拦截Action的作用。 Filter:过滤器,过滤从客户端向服务器发送的请求。 Interceptor:拦截器,拦截是客户端对Action的访问。 更细粒度化的拦截。(拦截Action中的具体的方法)。 Struts2框架核心的功能…...
2024/4/26 5:29:03 - java-2020-9-9练习
1. 根据年龄, 来打印出当前年龄的人是少年(低于18), 青年(19-28), 中年(29-55), 老年(56以上) import java.util.*; public class work981 {public static void main (String[] args){System.out.println("请输入年龄");Scanner sc = new Scanner(System.in);int age…...
2024/4/25 17:20:49 - 804 唯一摩尔斯密码词
题目描述: 国际摩尔斯密码定义一种标准编码方式,将每个字母对应于一个由一系列点和短线组成的字符串, 比如: “a” 对应 “.-”, “b” 对应 “-…”, “c” 对应 “-.-.”, 等等。 为了方便,所有26个英文字母对应摩尔斯密码表如下: [".-","-…",&quo…...
2024/4/24 22:02:13 - 可重入锁的意义
其实就是为了避免死锁。是对非可重入锁的增强,避免非可重入锁在嵌套使用时产生死锁。举例:methodA(){lock();methodB();unlock();}methodB(){lock();xxxxx;unlock();}如果lock是非可重入锁,则methodA加锁后调用methodB,methodB尝试加锁会失败(因为methodA在占用),导致me…...
2024/4/25 6:36:07 - 《python语言程序设计基础》—— 第2章
开始学习之前,先做一个编程小练习。 ####摄氏度、华氏度的转换 input_str = input() if input_str[-1] in [F, f]:print((float(input_str[:-1]) - 32) / 1.8) elif input_str[-1] in [C, c]:print(1.8 * float(input_str[:-1]) + 32) else:print(输入格式错误)python3 的33个…...
2024/4/24 18:01:50 - Django 视图 - FBV 与 CBV
文章目录Django 视图 - FBV 与 CBVFBVurls.py 文件views.py 文件CBVurls.py 文件views.py 文件 Django 视图 - FBV 与 CBV FBV(function base views) 基于函数的视图,就是在视图里使用函数处理请求。 CBV(class base views) 基于类的视图,就是在视图里使用类处理请求。 F…...
2024/4/26 1:34:09 - java中的递归和重载以及递归和重载的案例
ackage twojava; public class _yzq_dg { //递归 //方法内部调用自身的过程 //1.求前n项和 //2.求阶乘你!=n*(n-1)*(n-2)*(n-3)..........1 //斐波那契数列 1 1 2 3 4 5 8 13 21 第n项是? //求前n项和请使用递归运算// public static int Sum(int n) { // int sum=0; //…...
2024/4/26 6:09:17 - REST-Assured,接口自动化的 “瑞士军刀“- 初识篇
REST-Assured 简介REST-Assured 是一套基于 Java 语言实现的开源 REST API 测试框架,由作者 Johan Haleby 开发并维护,目前该项目在 GitHub 上已收获 4.9K star从官方描述可以看到 REST-Assured 使得通过 Java 语言测试 REST API 变得更加简单和容易REST-Assured 除了语法简洁…...
2024/4/12 23:28:23 - 最短路——最小花费(spfa)
题目链接 最短路——最小花费(spfa) 题目描述 在 n 个人中,某些人的银行账号之间可以互相转账。这些人之间转账的手续费各不相同。给定这些人之间转账时需要从转账金额里扣除百分之几的手续费,请问A最少需要多少钱使得转账后 B 收到 100 元。 输入格式 第一行输入两个正整数…...
2024/4/27 20:24:45 - QCustomPlot之层和布局、轴矩形和轴(九)
层和层元素在QCustomPlot中,一切可显示的对象都是继承自层元素QCPLayerable,层QCPLayer则管理着层元素,QCustomPlot利用层决定了不同元素的绘制顺序 层有两种刷新模式:lmLogical 只用于渲染的顺序,并且与相邻的lmLogical层共享绘图缓存(注意这里的相邻,如果前一个层是lm…...
2024/4/20 20:56:02 - SpringBoot详解(五) 从入门到入土 (整合Mybatis)
七、整合MyBatis 1.导入依赖<dependency><groupId>org.mybatis.spring.boot</groupId><artifactId>mybatis-spring-boot-starter</artifactId><version>2.1.2</version></dependency><!-- <dependency><groupId&g…...
2024/3/15 12:10:38 - 你知道ArrayList和LinkedList之间有什么区别吗?
写在前面众所周知,在面试Java岗位的时候,面试官最常问的问题之一就是,你常用哪些Java集合框架啊?可以说一说ArrayList和LinkedList之间有什么区别吗?我们今天就来聊一聊到底有什么样的区别。不同点ArrayListArrayList的底层实现是基于动态数组的数据结构,所以它可以以O(1…...
2024/4/28 11:14:15 - Rabbitmq的安装与启动(Mac)
Rabbitmq的安装与启动:(1)下载安装包: http://www.rabbitmq.com/releases/rabbitmq-server/v3.5.3/rabbitmq-server-mac-standalone-3.5.3.tar.gz(2)手动解压安装包,或者用命令解压(tar -zxvf rabbitmq-server-mac-standalone-3.5.3.tar.gz)(3)切换到sbin目录(下载…...
2024/4/25 23:37:21 - 建模前总结
难点读不懂题目 找不到数据 完全没有思路相似:如拍照赚钱的题——众包问题,这里可以想到,如出租车或者外卖这种问题,都是类似的。 普通问题:最后让我做什么?优化?评价?预测????. 思路需要查阅资料,结合已知知识, 工作:怎么处理数据,处理信息模型的信息 数据 解…...
2024/4/27 20:07:39
最新文章
- 【c++】反向迭代器的探究实现
🔥个人主页:Quitecoder 🔥专栏:c笔记仓 在list中我们实现了正向的迭代器,学习完优先级队列后,我们也对适配器模式有了一个深刻的理解,这篇文章基于这种模式下,实现各类容器的反向迭…...
2024/5/2 15:14:49 - 梯度消失和梯度爆炸的一些处理方法
在这里是记录一下梯度消失或梯度爆炸的一些处理技巧。全当学习总结了如有错误还请留言,在此感激不尽。 权重和梯度的更新公式如下: w w − η ⋅ ∇ w w w - \eta \cdot \nabla w ww−η⋅∇w 个人通俗的理解梯度消失就是网络模型在反向求导的时候出…...
2024/3/20 10:50:27 - 【Redis】安装Redis后报ERR Client sent AUTH, but no password is set
一、问题描述 安装Redis后使用auth验证是否安装成功(或者其它应用访问redis时报错),报ERR Client sent AUTH, but no password is set 127.0.0.1:6379> auth 123456 (error) ERR Client sent AUTH, but no password is set二、问题解决 …...
2024/5/1 12:59:02 - CrossOver玩游戏会损害电脑吗 CrossOver玩游戏会卡吗 Mac玩游戏 crossover24免费激活
CrossOver是一款可以在macOS上运行Windows应用程序的软件,它利用了Wine技术,无需安装虚拟机或双系统,可以直接在苹果系统下运行Windows游戏。那么,使用CrossOver玩游戏会损害电脑吗?CrossOver玩游戏会卡吗?…...
2024/5/2 13:26:54 - 416. 分割等和子集问题(动态规划)
题目 题解 class Solution:def canPartition(self, nums: List[int]) -> bool:# badcaseif not nums:return True# 不能被2整除if sum(nums) % 2 ! 0:return False# 状态定义:dp[i][j]表示当背包容量为j,用前i个物品是否正好可以将背包填满ÿ…...
2024/5/2 11:19:01 - 【Java】ExcelWriter自适应宽度工具类(支持中文)
工具类 import org.apache.poi.ss.usermodel.Cell; import org.apache.poi.ss.usermodel.CellType; import org.apache.poi.ss.usermodel.Row; import org.apache.poi.ss.usermodel.Sheet;/*** Excel工具类** author xiaoming* date 2023/11/17 10:40*/ public class ExcelUti…...
2024/5/1 13:20:04 - Spring cloud负载均衡@LoadBalanced LoadBalancerClient
LoadBalance vs Ribbon 由于Spring cloud2020之后移除了Ribbon,直接使用Spring Cloud LoadBalancer作为客户端负载均衡组件,我们讨论Spring负载均衡以Spring Cloud2020之后版本为主,学习Spring Cloud LoadBalance,暂不讨论Ribbon…...
2024/5/1 21:18:12 - TSINGSEE青犀AI智能分析+视频监控工业园区周界安全防范方案
一、背景需求分析 在工业产业园、化工园或生产制造园区中,周界防范意义重大,对园区的安全起到重要的作用。常规的安防方式是采用人员巡查,人力投入成本大而且效率低。周界一旦被破坏或入侵,会影响园区人员和资产安全,…...
2024/5/2 9:47:31 - VB.net WebBrowser网页元素抓取分析方法
在用WebBrowser编程实现网页操作自动化时,常要分析网页Html,例如网页在加载数据时,常会显示“系统处理中,请稍候..”,我们需要在数据加载完成后才能继续下一步操作,如何抓取这个信息的网页html元素变化&…...
2024/5/2 9:47:31 - 【Objective-C】Objective-C汇总
方法定义 参考:https://www.yiibai.com/objective_c/objective_c_functions.html Objective-C编程语言中方法定义的一般形式如下 - (return_type) method_name:( argumentType1 )argumentName1 joiningArgument2:( argumentType2 )argumentName2 ... joiningArgu…...
2024/5/2 6:03:07 - 【洛谷算法题】P5713-洛谷团队系统【入门2分支结构】
👨💻博客主页:花无缺 欢迎 点赞👍 收藏⭐ 留言📝 加关注✅! 本文由 花无缺 原创 收录于专栏 【洛谷算法题】 文章目录 【洛谷算法题】P5713-洛谷团队系统【入门2分支结构】🌏题目描述🌏输入格…...
2024/5/2 9:47:30 - 【ES6.0】- 扩展运算符(...)
【ES6.0】- 扩展运算符... 文章目录 【ES6.0】- 扩展运算符...一、概述二、拷贝数组对象三、合并操作四、参数传递五、数组去重六、字符串转字符数组七、NodeList转数组八、解构变量九、打印日志十、总结 一、概述 **扩展运算符(...)**允许一个表达式在期望多个参数࿰…...
2024/5/1 11:24:00 - 摩根看好的前智能硬件头部品牌双11交易数据极度异常!——是模式创新还是饮鸩止渴?
文 | 螳螂观察 作者 | 李燃 双11狂欢已落下帷幕,各大品牌纷纷晒出优异的成绩单,摩根士丹利投资的智能硬件头部品牌凯迪仕也不例外。然而有爆料称,在自媒体平台发布霸榜各大榜单喜讯的凯迪仕智能锁,多个平台数据都表现出极度异常…...
2024/5/2 5:31:39 - Go语言常用命令详解(二)
文章目录 前言常用命令go bug示例参数说明 go doc示例参数说明 go env示例 go fix示例 go fmt示例 go generate示例 总结写在最后 前言 接着上一篇继续介绍Go语言的常用命令 常用命令 以下是一些常用的Go命令,这些命令可以帮助您在Go开发中进行编译、测试、运行和…...
2024/5/1 20:22:59 - 用欧拉路径判断图同构推出reverse合法性:1116T4
http://cplusoj.com/d/senior/p/SS231116D 假设我们要把 a a a 变成 b b b,我们在 a i a_i ai 和 a i 1 a_{i1} ai1 之间连边, b b b 同理,则 a a a 能变成 b b b 的充要条件是两图 A , B A,B A,B 同构。 必要性显然࿰…...
2024/5/2 9:47:28 - 【NGINX--1】基础知识
1、在 Debian/Ubuntu 上安装 NGINX 在 Debian 或 Ubuntu 机器上安装 NGINX 开源版。 更新已配置源的软件包信息,并安装一些有助于配置官方 NGINX 软件包仓库的软件包: apt-get update apt install -y curl gnupg2 ca-certificates lsb-release debian-…...
2024/5/2 9:47:27 - Hive默认分割符、存储格式与数据压缩
目录 1、Hive默认分割符2、Hive存储格式3、Hive数据压缩 1、Hive默认分割符 Hive创建表时指定的行受限(ROW FORMAT)配置标准HQL为: ... ROW FORMAT DELIMITED FIELDS TERMINATED BY \u0001 COLLECTION ITEMS TERMINATED BY , MAP KEYS TERMI…...
2024/5/2 0:07:22 - 【论文阅读】MAG:一种用于航天器遥测数据中有效异常检测的新方法
文章目录 摘要1 引言2 问题描述3 拟议框架4 所提出方法的细节A.数据预处理B.变量相关分析C.MAG模型D.异常分数 5 实验A.数据集和性能指标B.实验设置与平台C.结果和比较 6 结论 摘要 异常检测是保证航天器稳定性的关键。在航天器运行过程中,传感器和控制器产生大量周…...
2024/5/2 8:37:00 - --max-old-space-size=8192报错
vue项目运行时,如果经常运行慢,崩溃停止服务,报如下错误 FATAL ERROR: CALL_AND_RETRY_LAST Allocation failed - JavaScript heap out of memory 因为在 Node 中,通过JavaScript使用内存时只能使用部分内存(64位系统&…...
2024/5/2 9:47:26 - 基于深度学习的恶意软件检测
恶意软件是指恶意软件犯罪者用来感染个人计算机或整个组织的网络的软件。 它利用目标系统漏洞,例如可以被劫持的合法软件(例如浏览器或 Web 应用程序插件)中的错误。 恶意软件渗透可能会造成灾难性的后果,包括数据被盗、勒索或网…...
2024/5/2 9:47:25 - JS原型对象prototype
让我简单的为大家介绍一下原型对象prototype吧! 使用原型实现方法共享 1.构造函数通过原型分配的函数是所有对象所 共享的。 2.JavaScript 规定,每一个构造函数都有一个 prototype 属性,指向另一个对象,所以我们也称为原型对象…...
2024/5/1 14:33:22 - C++中只能有一个实例的单例类
C中只能有一个实例的单例类 前面讨论的 President 类很不错,但存在一个缺陷:无法禁止通过实例化多个对象来创建多名总统: President One, Two, Three; 由于复制构造函数是私有的,其中每个对象都是不可复制的,但您的目…...
2024/5/1 11:51:23 - python django 小程序图书借阅源码
开发工具: PyCharm,mysql5.7,微信开发者工具 技术说明: python django html 小程序 功能介绍: 用户端: 登录注册(含授权登录) 首页显示搜索图书,轮播图࿰…...
2024/5/2 7:30:11 - 电子学会C/C++编程等级考试2022年03月(一级)真题解析
C/C++等级考试(1~8级)全部真题・点这里 第1题:双精度浮点数的输入输出 输入一个双精度浮点数,保留8位小数,输出这个浮点数。 时间限制:1000 内存限制:65536输入 只有一行,一个双精度浮点数。输出 一行,保留8位小数的浮点数。样例输入 3.1415926535798932样例输出 3.1…...
2024/5/1 20:56:20 - 配置失败还原请勿关闭计算机,电脑开机屏幕上面显示,配置失败还原更改 请勿关闭计算机 开不了机 这个问题怎么办...
解析如下:1、长按电脑电源键直至关机,然后再按一次电源健重启电脑,按F8健进入安全模式2、安全模式下进入Windows系统桌面后,按住“winR”打开运行窗口,输入“services.msc”打开服务设置3、在服务界面,选中…...
2022/11/19 21:17:18 - 错误使用 reshape要执行 RESHAPE,请勿更改元素数目。
%读入6幅图像(每一幅图像的大小是564*564) f1 imread(WashingtonDC_Band1_564.tif); subplot(3,2,1),imshow(f1); f2 imread(WashingtonDC_Band2_564.tif); subplot(3,2,2),imshow(f2); f3 imread(WashingtonDC_Band3_564.tif); subplot(3,2,3),imsho…...
2022/11/19 21:17:16 - 配置 已完成 请勿关闭计算机,win7系统关机提示“配置Windows Update已完成30%请勿关闭计算机...
win7系统关机提示“配置Windows Update已完成30%请勿关闭计算机”问题的解决方法在win7系统关机时如果有升级系统的或者其他需要会直接进入一个 等待界面,在等待界面中我们需要等待操作结束才能关机,虽然这比较麻烦,但是对系统进行配置和升级…...
2022/11/19 21:17:15 - 台式电脑显示配置100%请勿关闭计算机,“准备配置windows 请勿关闭计算机”的解决方法...
有不少用户在重装Win7系统或更新系统后会遇到“准备配置windows,请勿关闭计算机”的提示,要过很久才能进入系统,有的用户甚至几个小时也无法进入,下面就教大家这个问题的解决方法。第一种方法:我们首先在左下角的“开始…...
2022/11/19 21:17:14 - win7 正在配置 请勿关闭计算机,怎么办Win7开机显示正在配置Windows Update请勿关机...
置信有很多用户都跟小编一样遇到过这样的问题,电脑时发现开机屏幕显现“正在配置Windows Update,请勿关机”(如下图所示),而且还需求等大约5分钟才干进入系统。这是怎样回事呢?一切都是正常操作的,为什么开时机呈现“正…...
2022/11/19 21:17:13 - 准备配置windows 请勿关闭计算机 蓝屏,Win7开机总是出现提示“配置Windows请勿关机”...
Win7系统开机启动时总是出现“配置Windows请勿关机”的提示,没过几秒后电脑自动重启,每次开机都这样无法进入系统,此时碰到这种现象的用户就可以使用以下5种方法解决问题。方法一:开机按下F8,在出现的Windows高级启动选…...
2022/11/19 21:17:12 - 准备windows请勿关闭计算机要多久,windows10系统提示正在准备windows请勿关闭计算机怎么办...
有不少windows10系统用户反映说碰到这样一个情况,就是电脑提示正在准备windows请勿关闭计算机,碰到这样的问题该怎么解决呢,现在小编就给大家分享一下windows10系统提示正在准备windows请勿关闭计算机的具体第一种方法:1、2、依次…...
2022/11/19 21:17:11 - 配置 已完成 请勿关闭计算机,win7系统关机提示“配置Windows Update已完成30%请勿关闭计算机”的解决方法...
今天和大家分享一下win7系统重装了Win7旗舰版系统后,每次关机的时候桌面上都会显示一个“配置Windows Update的界面,提示请勿关闭计算机”,每次停留好几分钟才能正常关机,导致什么情况引起的呢?出现配置Windows Update…...
2022/11/19 21:17:10 - 电脑桌面一直是清理请关闭计算机,windows7一直卡在清理 请勿关闭计算机-win7清理请勿关机,win7配置更新35%不动...
只能是等着,别无他法。说是卡着如果你看硬盘灯应该在读写。如果从 Win 10 无法正常回滚,只能是考虑备份数据后重装系统了。解决来方案一:管理员运行cmd:net stop WuAuServcd %windir%ren SoftwareDistribution SDoldnet start WuA…...
2022/11/19 21:17:09 - 计算机配置更新不起,电脑提示“配置Windows Update请勿关闭计算机”怎么办?
原标题:电脑提示“配置Windows Update请勿关闭计算机”怎么办?win7系统中在开机与关闭的时候总是显示“配置windows update请勿关闭计算机”相信有不少朋友都曾遇到过一次两次还能忍但经常遇到就叫人感到心烦了遇到这种问题怎么办呢?一般的方…...
2022/11/19 21:17:08 - 计算机正在配置无法关机,关机提示 windows7 正在配置windows 请勿关闭计算机 ,然后等了一晚上也没有关掉。现在电脑无法正常关机...
关机提示 windows7 正在配置windows 请勿关闭计算机 ,然后等了一晚上也没有关掉。现在电脑无法正常关机以下文字资料是由(历史新知网www.lishixinzhi.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!关机提示 windows7 正在配…...
2022/11/19 21:17:05 - 钉钉提示请勿通过开发者调试模式_钉钉请勿通过开发者调试模式是真的吗好不好用...
钉钉请勿通过开发者调试模式是真的吗好不好用 更新时间:2020-04-20 22:24:19 浏览次数:729次 区域: 南阳 > 卧龙 列举网提醒您:为保障您的权益,请不要提前支付任何费用! 虚拟位置外设器!!轨迹模拟&虚拟位置外设神器 专业用于:钉钉,外勤365,红圈通,企业微信和…...
2022/11/19 21:17:05 - 配置失败还原请勿关闭计算机怎么办,win7系统出现“配置windows update失败 还原更改 请勿关闭计算机”,长时间没反应,无法进入系统的解决方案...
前几天班里有位学生电脑(windows 7系统)出问题了,具体表现是开机时一直停留在“配置windows update失败 还原更改 请勿关闭计算机”这个界面,长时间没反应,无法进入系统。这个问题原来帮其他同学也解决过,网上搜了不少资料&#x…...
2022/11/19 21:17:04 - 一个电脑无法关闭计算机你应该怎么办,电脑显示“清理请勿关闭计算机”怎么办?...
本文为你提供了3个有效解决电脑显示“清理请勿关闭计算机”问题的方法,并在最后教给你1种保护系统安全的好方法,一起来看看!电脑出现“清理请勿关闭计算机”在Windows 7(SP1)和Windows Server 2008 R2 SP1中,添加了1个新功能在“磁…...
2022/11/19 21:17:03 - 请勿关闭计算机还原更改要多久,电脑显示:配置windows更新失败,正在还原更改,请勿关闭计算机怎么办...
许多用户在长期不使用电脑的时候,开启电脑发现电脑显示:配置windows更新失败,正在还原更改,请勿关闭计算机。。.这要怎么办呢?下面小编就带着大家一起看看吧!如果能够正常进入系统,建议您暂时移…...
2022/11/19 21:17:02 - 还原更改请勿关闭计算机 要多久,配置windows update失败 还原更改 请勿关闭计算机,电脑开机后一直显示以...
配置windows update失败 还原更改 请勿关闭计算机,电脑开机后一直显示以以下文字资料是由(历史新知网www.lishixinzhi.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!配置windows update失败 还原更改 请勿关闭计算机&#x…...
2022/11/19 21:17:01 - 电脑配置中请勿关闭计算机怎么办,准备配置windows请勿关闭计算机一直显示怎么办【图解】...
不知道大家有没有遇到过这样的一个问题,就是我们的win7系统在关机的时候,总是喜欢显示“准备配置windows,请勿关机”这样的一个页面,没有什么大碍,但是如果一直等着的话就要两个小时甚至更久都关不了机,非常…...
2022/11/19 21:17:00 - 正在准备配置请勿关闭计算机,正在准备配置windows请勿关闭计算机时间长了解决教程...
当电脑出现正在准备配置windows请勿关闭计算机时,一般是您正对windows进行升级,但是这个要是长时间没有反应,我们不能再傻等下去了。可能是电脑出了别的问题了,来看看教程的说法。正在准备配置windows请勿关闭计算机时间长了方法一…...
2022/11/19 21:16:59 - 配置失败还原请勿关闭计算机,配置Windows Update失败,还原更改请勿关闭计算机...
我们使用电脑的过程中有时会遇到这种情况,当我们打开电脑之后,发现一直停留在一个界面:“配置Windows Update失败,还原更改请勿关闭计算机”,等了许久还是无法进入系统。如果我们遇到此类问题应该如何解决呢࿰…...
2022/11/19 21:16:58 - 如何在iPhone上关闭“请勿打扰”
Apple’s “Do Not Disturb While Driving” is a potentially lifesaving iPhone feature, but it doesn’t always turn on automatically at the appropriate time. For example, you might be a passenger in a moving car, but your iPhone may think you’re the one dri…...
2022/11/19 21:16:57