当前位置: 首页 > news >正文

【学习笔记】A2X通信的协议(四)- A2X PC5通信(二)

目录

6.1.2.4 A2X PC5单播链接释放程序

6.1.2.4.1 概述

6.1.2.4.2 发起UE启动A2X PC5单播链接释放程序

6.1.2.4.3 目标UE接受的A2X PC5单播链接释放程序

6.1.2.4.4 发起UE完成的A2X PC5单播链接释放程序

6.1.2.4.5 异常情况

6.1.2.4.5.1 发起UE的异常情况

6.1.2.5 A2X PC5单播链接标识符更新程序

6.1.2.5.1 概述

6.1.2.5.2 发起UE启动A2X PC5单播链接标识符更新程序

6.1.2.5.3 目标UE接受的A2X PC5单播链接标识符更新程序

6.1.2.5.4 发起UE确认的A2X PC5单播链接标识符更新程序

6.1.2.5.5 目标UE完成的A2X PC5单播链接标识符更新程序

6.1.2.5.6 目标UE未接受的A2X PC5单播链接标识符更新程序

6.1.2.5.7 异常情况

6.1.2.5.7.1 发起方UE的异常情况

6.1.2.5.7.2 目标UE的异常情况


3GPP TS 24.577 V18.1.0的技术规范,主要定义了5G系统中A2X通信的协议方面,特别是在PC5接口和Uu接口上的A2X服务。以下是文件的核心内容分析:

6.1.2.4 A2X PC5单播链接释放程序
6.1.2.4.1 概述

A2X PC5单播链接释放程序用于释放两个UE之间的A2X PC5单播链接。链接可以从任一端点释放。发送A2X直接链接释放请求消息的UE被称为“发起UE”,另一个UE被称为“目标UE”。
如果UE从下层接收到无线电链路故障的指示,UE应在本地释放A2X PC5单播链接,并可能在实现特定的时间后删除与此链接关联的KNRP ID。

6.1.2.4.2 发起UE启动A2X PC5单播链接释放程序

如果收到来自上层的请求,要求释放与目标UE的A2X PC5单播链接,而该目标UE使用已知的第2层ID(用于单播通信),并且这两个UE之间存在现有的A2X PC5单播链接,则发起UE应启动该程序。
如果目标UE未响应,例如,在A2X PC5单播链接修改程序、A2X PC5单播链接标识符更新程序、A2X PC5单播链接重新密钥程序或A2X PC5单播链接保持活动程序中没有响应,则发起UE可以启动该程序。
如果UE已达到已建立的A2X PC5单播链接的最大数量,并且需要建立新的A2X PC5单播链接,则发起UE可以启动程序以释放已建立的A2X PC5单播链接。在这种情况下,要释放哪个A2X PC5单播链接取决于UE的实现。
发起UE可以在计时器T5303到期时启动程序以释放已建立的A2X PC5单播链接。
为了启动A2X PC5单播链接释放程序,发起UE应创建一个A2X直接链接释放请求消息,其中包含PC5信令协议原因IE,指示以下原因之一的值:
#1 不允许与目标UE进行直接通信;
#2 不再需要与目标UE进行直接通信;
#4 直接连接不再可用;
#5 A2X PC5单播链接资源不足;或
#111 协议错误,未指定。
发起UE应在A2X直接链接释放请求消息中包含KNRP ID的新的2个最高有效位(MSBs)。
生成A2X直接链接释放请求消息后,发起UE应将该消息连同发起UE用于单播通信的第2层ID和目标UE用于单播通信的第2层ID一起传递给下层以进行传输,并且如果正在运行,应停止T5305。发起UE应启动计时器T5302。

图6.1.2.4.2.1:A2X PC5单播链接释放程序

6.1.2.4.3 目标UE接受的A2X PC5单播链接释放程序

在接收到A2X直接链接释放请求消息后,目标UE应停止此A2X PC5单播链接的所有正在运行的计时器,并中止此A2X PC5单播链接上的任何其他正在进行的PC5信令协议程序。目标UE应以A2X直接链接释放接受消息作为响应。目标UE应在A2X直接链接释放接受消息中包含KNRP ID的新的2个最低有效位(LSBs)。消息发送后,目标UE应通过执行以下行为来释放A2X PC5单播链接:

a) 通知下层以及PC5链接标识符,A2X PC5单播链接已释放;以及

b) 在实现特定的时间后删除A2X PC5单播链接的上下文。

目标UE应使用在A2X直接链接释放请求消息中接收到的KNRP ID的新的2个MSBs和在A2X直接链接释放接受消息中包含的新的2个LSBs来形成新的KNRP ID。目标UE应使用新的KNRP ID替换现有的KNRP ID。目标UE可以按照6.1.2.2.2条款的规定,在A2X直接链接建立请求消息中包含新的KNRP ID,并与发起UE进行通信。

6.1.2.4.4 发起UE完成的A2X PC5单播链接释放程序

在收到A2X直接链接释放接受消息后,发起UE应停止计时器T5302,并通过执行以下操作来释放A2X PC5单播链接:

a) 通知下层以及PC5链接标识符,A2X PC5单播链接已释放;以及

b) 在实现特定的时间后删除A2X PC5单播链接的上下文。

发起UE应使用在A2X直接链接释放请求消息中包含的KNRP ID的2个MSBs和在A2X直接链接释放接受消息中接收到的KNRP ID的2个LSBs来形成新的KNRP ID。发起UE应使用新的KNRP ID替换现有的KNRP ID。发起UE可以按照6.1.2.2.2条款的规定,在A2X直接链接建立请求消息中包含新的KNRP ID,并与目标UE进行通信。

6.1.2.4.5 异常情况
6.1.2.4.5.1 发起UE的异常情况

如果重传计时器T5302到期,并且A2X直接链接释放请求消息中的PC5信令协议原因IE包含的PC5信令协议原因为#4“直接连接不再可用”,则发起UE应在本地释放A2X PC5单播链接,并删除与此链接关联的KNRP ID。从此刻起,发起UE不再通过此链接发送或接收任何消息。

如果重传计时器T5302到期,并且A2X直接链接释放请求消息中的PC5信令协议原因IE包含的PC5信令协议原因不是#4“直接连接不再可用”,则发起UE应再次启动A2X直接链接释放请求消息的传输,并重新启动计时器T5302。

如果在达到允许的最大重传次数后仍未收到目标UE的响应,则发起UE应在本地释放A2X PC5单播链接,并删除与此链接关联的KNRP ID。从此刻起,发起UE不再通过此链接发送或接收任何消息。

注:允许的最大重传次数取决于UE的实现。

6.1.2.5 A2X PC5单播链接标识符更新程序
6.1.2.5.1 概述

A2X PC5单播链接标识符更新程序用于在使用新标识符之前,在两个UE之间更新和交换A2X PC5单播链接的新标识符(例如应用层ID、第2层ID、安全信息和IP地址/前缀)。发送A2X直接链接标识符更新请求消息的UE被称为“发起UE”,另一个UE被称为“目标UE”。

6.1.2.5.2 发起UE启动A2X PC5单播链接标识符更新程序

如果满足以下条件,发起UE应启动该程序:

a) 发起UE从上层接收到更改应用层ID的请求,并且存在与此应用层ID关联的现有A2X PC5单播链接;或者

b) 发起UE的第2层ID的隐私定时器(见5.2.3条款)对现有A2X PC5单播链接过期。

如果A2X PC5单播链接标识符更新程序是由发起UE的应用层ID更改触发的,则发起UE应创建一个A2X直接链接标识符更新请求消息。在此消息中,发起UE应:

a) 包含从上层接收到的发起UE的新应用层ID;

b) 包含由自己分配的发起UE的新第2层ID;

c) 包含KNRP-sess ID的新MSB,或者如果选择的完整性保护算法是空完整性保护算法,则设置为全零;以及

d) 如果使用IP通信,则应包含新的IP地址/前缀。

如果A2X PC5单播链接标识符更新程序是由5.2.3条款中规定的发起UE的隐私定时器T5305过期触发的,则发起UE应创建一个A2X直接链接标识符更新请求消息。在此消息中,发起UE应:

a) 包含由自己分配的发起UE的新第2层ID;

b) 包含KNRP-sess ID的新MSB;

c) 如果从上层接收到,则可能包含发起UE的新应用层ID;以及

d) 如果使用IP通信并且已更改,则应包含新的IP地址/前缀。

生成A2X直接链接标识符更新请求消息后,发起UE应将该消息传递给下层进行传输,同时附上发起UE的旧第2层ID用于单播通信和目标UE的第2层ID用于单播通信,并启动定时器T5306。在定时器T5306运行期间,UE不得向同一目标UE发送新的A2X直接链接标识符更新请求消息。

图6.1.2.5.2.1:A2X PC5单播链接标识符更新程序

6.1.2.5.3 目标UE接受的A2X PC5单播链接标识符更新程序

在接收到A2X直接链接标识符更新请求消息后,如果目标UE确定:
a) 与此请求消息关联的A2X PC5单播链接仍然有效;并且
b) 由此请求消息标识的A2X PC5单播链接的定时器T5307没有运行,
那么目标UE接受此请求,并以A2X直接链接标识符更新接受消息作为响应。

目标UE应创建A2X直接链接标识符更新接受消息。在此消息中,目标UE:
a) 应包含由自己分配的目标UE的新第2层ID;
b) 应包含KNRP-sess ID的新LSB;
c) 应包含发起UE的KNRP-sess ID的新MSB;
d) 应包含发起UE的新第2层ID;
e) 如果从上层接收到,则应包含目标UE的新应用层ID;
f) 如果从发起UE接收到且使用IP通信,则应包含发起UE的新IP地址/前缀;
g) 如果从发起UE接收到,则应包含发起UE的新应用层ID;以及
h) 如果使用IP通信并且已更改,则应包含目标UE的新IP地址/前缀。

生成A2X直接链接标识符更新接受消息后,目标UE应将该消息传递给下层进行传输,同时附上发起UE的旧第2层ID用于单播通信和目标UE的旧第2层ID用于单播通信,并启动定时器T5307。在定时器T5307运行期间,UE不得向同一发起UE发送新的A2X直接链接标识符更新接受消息。

在目标UE使用新的第2层ID接收流量之前,目标UE应继续使用旧的第2层ID(即发起UE的旧第2层ID和目标UE的旧第2层ID)从发起UE接收流量。

在目标UE从发起UE接收到A2X直接链接标识符更新确认消息之前,目标UE应继续使用旧的第2层ID(即用于单播通信的发起UE的旧第2层ID和用于单播通信的目标UE的旧第2层ID)向发起UE发送流量。

6.1.2.5.4 发起UE确认的A2X PC5单播链接标识符更新程序

在接收到A2X直接链接标识符更新接受消息后,发起UE应停止定时器T5306,并回复A2X直接链接标识符更新确认消息。在此消息中,发起UE:
a) 应包含目标UE的新第2层ID;
b) 应包含目标UE的KNRP-sess ID的新LSB;
c) 如果收到,则应包含目标UE的新应用层ID;以及
d) 如果收到,则应包含目标UE的新IP地址/前缀。

生成A2X直接链接标识符更新确认消息后,发起UE应将该消息传递给下层进行传输,同时附上发起UE的旧第2层ID用于单播通信和目标UE的旧第2层ID用于单播通信,并且如果定时器T5305正在运行,则应停止,如果至少有一个满足5.2.3条规定的隐私要求的A2X PC5单播链接的A2X服务标识符,则按配置启动定时器T5305。

在发送A2X直接链接标识符更新确认消息后,发起UE应使用新标识符更新相关的A2X PC5单播链接上下文,并将新的第2层ID(即,如果已更改,则用于单播通信的发起UE的新第2层ID和目标UE的新第2层ID)以及PC5链接标识符一起传递给下层。然后,发起UE应使用新的第2层ID(即,如果已更改,则用于单播通信的发起UE的新第2层ID和目标UE的新第2层ID)来传输A2X PC5信令消息和A2X PC5用户平面数据。

发起UE应继续从目标UE接收带有旧第2层ID(即用于单播通信的发起UE的旧第2层ID和目标UE的旧第2层ID)的流量,直到从目标UE接收到带有新第2层ID(即如果已更改,则为发起UE的新第2层ID和目标UE的新第2层ID)的流量。

6.1.2.5.5 目标UE完成的A2X PC5单播链接标识符更新程序

在接收到A2X直接链接标识符更新确认消息后,目标UE应使用新标识符更新相关的A2X PC5单播链接上下文,将新的第2层ID(即如果已更改,则为发起UE的新第2层ID和目标UE的新第2层ID)传递给下层,如果定时器T5307和定时器T5305正在运行,则应停止,并且如果至少有一个满足5.2.3条规定的隐私要求的A2X PC5单播链接的A2X服务标识符,则按配置启动定时器T5305。然后,目标UE应使用新的第2层ID(即如果已更改,则用于单播通信的发起UE的新第2层ID和目标UE的新第2层ID)来传输A2X PC5信令消息和A2X PC5用户平面数据。

6.1.2.5.6 目标UE未接受的A2X PC5单播链接标识符更新程序

如果无法接受A2X直接链接标识符更新请求消息,目标UE应发送A2X直接链接标识符更新拒绝消息。A2X直接链接标识符更新拒绝消息包含一个PC5信令协议原因IE,该IE设置为以下原因之一:
#3 检测到用于单播通信的第2层ID冲突;或
#111 协议错误,未指定。

对于从用于单播通信的第2层ID接收到的A2X直接链接标识符更新请求消息,如果目标UE已经使用此第2层ID建立了现有链接,或者正在处理来自同一第2层ID的A2X直接链接标识符更新请求消息,但其中的用户信息与这条新传入的消息中包含的用户信息IE不同,则目标UE应发送带有PC5信令协议原因值#3“检测到用于单播通信的第2层ID冲突”的A2X直接链接标识符更新拒绝消息。

注:在接收到A2X直接链接标识符更新拒绝消息后,发起UE是否发起A2X PC5单播链接释放程序或使用新的第2层ID发起另一个A2X PC5单播链接标识符更新程序,取决于UE的实现。

对于导致链接标识符更新失败的其他原因,目标UE应发送带有PC5信令协议原因值#111“协议错误,未指定”的A2X直接链接标识符更新拒绝消息。

在接收到A2X直接链接标识符更新拒绝消息后,发起UE应停止定时器T5306,并中止此A2X PC5单播链接标识符更新程序。

6.1.2.5.7 异常情况
6.1.2.5.7.1 发起方UE的异常情况

可以识别以下异常情况:
a) 如果定时器T5306到期,则发起方UE应重新传输A2X DIRECT LINK IDENTIFIER UPDATE REQUEST消息并重新启动定时器T5306。在达到允许的最大重传次数后,发起方UE应中止A2X PC5单播链路标识符更新程序,并可能通知上层目标UE无法访问。
注1:允许的最大重传次数取决于UE的实现。
注2:在达到允许的最大重传次数后,发起方UE是否释放此A2X PC5单播链路取决于其实现。
b) 对于同一A2X PC5单播链路,如果在A2X PC5单播链路标识符更新过程中,发起方UE接收到A2X DIRECT LINK IDENTIFIER UPDATE REQUEST消息,则发起方UE应停止定时器T5306并中止A2X PC5单播链路标识符更新程序。随后的处理取决于实现,例如,如果需要,发起方UE会等待一个实现相关的时间来启动新的A2X PC5单播链路标识符更新程序。
注3:需要设置依赖于实现的定时器值以避免进一步的冲突(例如,随机定时器值)。
c) 对于同一A2X PC5单播链路,如果发起方UE在启动A2X PC5单播链路标识符更新程序后收到A2X DIRECT LINK REKEYING REQUEST消息,则发起方UE应忽略A2X DIRECT LINK REKEYING REQUEST消息,并继续进行A2X PC5单播链路标识符更新程序。
d) 对于同一A2X PC5单播链路,如果在启动A2X PC5单播链路标识符更新程序后,发起方UE收到A2X DIRECT LINK RELEASE REQUEST消息,则发起方UE应停止定时器T5306,中止A2X PC5单播链路标识符更新程序,并继续进行A2X PC5单播链路释放程序。

6.1.2.5.7.2 目标UE的异常情况

可以识别以下异常情况:
a) 如果定时器T5307到期,则目标UE应重新传输A2X DIRECT LINK IDENTIFIER UPDATE ACCEPT消息并重新启动定时器T5307。在达到允许的最大重传次数后,目标UE应中止A2X PC5单播链路标识符更新程序,并可能通知上层发起方UE无法访问。
注1:允许的最大重传次数取决于UE的实现。
注2:在达到允许的最大重传次数后,目标UE是否释放此A2X PC5单播链路取决于其实现。
b) 如果在定时器T5307运行时接收到A2X DIRECT LINK IDENTIFIER UPDATE REQUEST,则目标UE应停止定时器T5307并中止正在进行的A2X PC5单播链路标识符更新程序。目标UE应按照第6.1.2.5.3条的规定处理新的A2X DIRECT LINK IDENTIFIER UPDATE REQUEST。
c) 在向目标UE发送A2X DIRECT LINK IDENTIFIER UPDATE ACK消息后,如果在从目标UE接收到具有新层2 ID的流量之前,从目标UE接收到另一条A2X DIRECT LINK IDENTIFIER UPDATE ACCEPT消息,则发起方UE应连同发起方UE的旧层2 ID和目标UE的旧层2 ID一起重新传输A2X DIRECT LINK IDENTIFIER UPDATE ACK消息。
注3:如果在发起方UE重新传输A2X DIRECT LINK IDENTIFIER UPDATE ACK消息之前已经发送了此类流量,则处理新层2 ID的流量传输失败取决于实现。
d) 在向目标UE发送A2X DIRECT LINK IDENTIFIER UPDATE ACK消息后,如果发起方UE持续从目标UE接收带有旧层2 ID的流量,并且在大于定时器T5307值的特定于实现的时间内未接收到来自目标UE的带有新层2 ID的流量,则发起方UE应中止A2X PC5单播链路标识符更新程序,并可能释放A2X PC5单播链路。

相关文章:

【学习笔记】A2X通信的协议(四)- A2X PC5通信(二)

目录 6.1.2.4 A2X PC5单播链接释放程序 6.1.2.4.1 概述 6.1.2.4.2 发起UE启动A2X PC5单播链接释放程序 6.1.2.4.3 目标UE接受的A2X PC5单播链接释放程序 6.1.2.4.4 发起UE完成的A2X PC5单播链接释放程序 6.1.2.4.5 异常情况 6.1.2.4.5.1 发起UE的异常情况 6.1.2.5 A2X …...

注意!!可能这是《网络管理员》旧教程最后一次考试,赶紧学起来

网络管理员是软考初级资格热门科目之一。近日在国家版本数据中心,小编查到网络管理员官方教程已经有2024最新版出来了,现在这一版教程说实话有些内容已经过时了,尤其新版教材也已经出现,小编推测明年大概率依据新版考试大纲出题&a…...

array postgre gsql 剔除

进行某种过滤或比较操作,判断不匹配的,数组 array 中列出的所有字符串 and a.Repunittree not like all (array[‘%0001003549950003%’,‘%000100460041%’,‘%000100460047%’,‘%000105880001%’ ,‘%000100020007%’,‘%000105830009%’,‘%0001058…...

【Matlab】零阶保持法:连续状态空间方程(含噪声,非线性)离散化处理方法

常用的离散化方法:零阶保持器(zero-order hold,ZOH)、欧拉法(Euler)、一阶保持器(First-order hold,FOH)。最常用的是前两种。 0.零阶保持器(ZOH&#xff09…...

web自动化6-pytest⑦一些基本情况

命名规则 1)import pytest 测试文件名要以test_ 开头或 _test结尾 2)类名需要以Test开头(T),不能带有init方法 3)函数名以test_开头(t) 符合规则框架才能找到用例,一条用例代表一条函…...

apache 漏洞

影响版本 Apache HTTP Server 2.4.49 某些Apache HTTPd 2.4.50也存在此漏洞 环境搭建 docker pull blueteamsteve/cve-2021-41773:no-cgid 漏洞复现 http://1.15.136.212:8080 1.使⽤poc curl http://1.15.136.212:8080/cgi-bin/.%2e/.%2e/.%2e/.%2e/etc/passwd...

简单的docker学习 第11章 镜像中心

第11章 镜像中心 Docker Hub 与阿里云都是 Docker 的公网镜像中心,用户可以将自己的镜像 push 到公网镜像中心中自己的镜像仓库,并可将仓库设置为私有库,使他人无法看到,更无法 pull,以保证镜像的安全性。不过&#x…...

PostgreSQL 15 使用物理复制槽 实现主从

一、系统环境 IP操作系统用途192.168.140.153CentOS 7.9.2009pg-主节点192.168.140.159CentOS 7.9.2009pg-从节点 二、单节点安装 2.1 主节点安装 参考前一篇文章 2.2 从节点安装 只需要先将rpm包安装即可,无需初始化数据库,无需启动服务。 三、主从…...

C# 中引用类型的探讨

引用类型的变量不直接包含其数据;它包含对其数据的引用。 如果按值传递引用类型参数,则可能更改属于所引 用对象的数据,例如类成员的值。 但是,不能更改引用本身的值;例如,不能使用相同引用为新对象分配内存…...

技术分享| 前端性能优化——虚拟滚动(Virtual Scroll)

前端遇到大量数据(尤其是大数据表)的DOM 渲染时,通常会卡顿,需要考虑优化性能问题,这里针对DOM 渲染引出“虚拟滚动”方案, 详细请在以下各文章中详细了解: vue插件 vue-virtual-scroll-list解决…...

Flink 实时数仓(四)【DWD 层搭建(二)流量域事实表】

前言 昨天刚搬到新校区,新校区小的可怜,好在之后出去实习交通可以方便点;待在学院太受限了,早点离开! 今天开始完成 DWD 层剩余的需求,上一节我们把日志数据根据不同类型分流写入到了不同的主题&#xff1b…...

Go 1.19.4 接口-Day 10

1. 接口 1.1 基本介绍 接口中到底应该定义些什么? 在Go语言中,接口是声明函数的集合,但只有函数签名,没有具体的功能。 属于是面向对象中,行为的约束,面向对象中的类有自己的属性(可以当成数据…...

智能编程新纪元:腾讯AI代码助手的高效编程体验

智能编程新纪元:腾讯AI代码助手的高效编程体验 智能编程新纪元:腾讯AI代码助手的高效编程体验引言一、配置开发环境二、AI助手实现高效编程2.1 AI助手自动补全2.2 AI助手实现编程思维2.3 AI助手高效注解2.4 AI助手打破语言壁垒 三、帮助和提升四、优化和…...

使用snap安装docker配置阿里云镜像加速

使用snap安装docker非常的简单,一条命令即可 snap install docker 但是通过这个命令安装的docker, 配置阿里云镜像跟常规安装的配置起来不太一样, 下面讲一下配置流程 修改docker配置文件/var/snap/docker/current/config/daemon.json 这个文件应该是已经创建好…...

安全编程的代码示例

一、python代码示例 一个安全编程的示例是对输入进行严格的验证和过滤。比如,当用户在网页上输入用户名和密码时,应该对这些输入进行验证,防止恶意用户输入恶意代码或进行 SQL 注入等攻击。下面是一个简单的示例代码: import…...

【实现100个unity特效之15】最简单的方法使用shader graphs实现2d非像素和像素树叶草的随风摇摆效果

文章目录 前言非像素树叶草飘动效果新建材质效果像素树叶草飘动效果参考完结 前言 本文只是实现一个简单版本的2d树叶草随风摇摆的效果,如果你想要实现更加复杂的效果,包括2d互动草,你可以参考我之前的文章: 【推荐100个unity插件…...

Vue3+TS+element plus实现一个简单列表页面

期望完成效果 1.创建一个api api内容: 根据接口: 修改 url 和 函数的参数 以及 params里的内容 import { request } from "/utils/service" /** 查 */ export function getDyLogDataApi(page: any, limit: any, campaign_id: any, adgroup_id…...

Go语言中gin+gorm开发前端端分离博客时遇到的问题,gorm执行查询时如何选中特定字段?

代码获取 本篇文章的代码放在了Github上,可以免费获取。 https://github.com/zhangdapeng520/zdpgo_gin_examples 概述 在查询用户信息的时候,由于密码这个字段比较敏感,需要进行处理,不要返回给前端。 我一开始的解决方案是直…...

计算机网络11——数据库语法2

1、变量 (1)局部变量 函数里面定义的,变量名 类型 (2)会话变量 本次连接会话有效,不需要定义声明,直接使用,@变量名 类型 set @x=10; select @x;(3)系统变量 又叫全局变量,只有root变量才能使用,一直有效。因为全局变量影响服务器运行,所以Mysql不允许自定…...

华为USG6000E-S12防火墙Key exchange failed.无法SSH解决方案

由于目前防火墙算法太新,导致crt和xshell的版本无法登陆,按以下方法解决 一、下载华为本地加载除弱安全算法组件包之外的组件包 二、先改后缀名为.cfg,上传文件到防火墙 三、在用户视图下改后缀名为.mod 四、move 文件到$_install_mod文件夹 五、执行…...

stm32G473的flash模式是单bank还是双bank?

今天突然有人stm32G473的flash模式是单bank还是双bank?由于时间太久,我真忘记了。搜搜发现,还真有人和我一样。见下面的链接:https://shequ.stmicroelectronics.cn/forum.php?modviewthread&tid644563 根据STM32G4系列参考手…...

在rocky linux 9.5上在线安装 docker

前面是指南,后面是日志 sudo dnf config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo sudo dnf install docker-ce docker-ce-cli containerd.io -y docker version sudo systemctl start docker sudo systemctl status docker …...

django filter 统计数量 按属性去重

在Django中,如果你想要根据某个属性对查询集进行去重并统计数量,你可以使用values()方法配合annotate()方法来实现。这里有两种常见的方法来完成这个需求: 方法1:使用annotate()和Count 假设你有一个模型Item,并且你想…...

微信小程序 - 手机震动

一、界面 <button type"primary" bindtap"shortVibrate">短震动</button> <button type"primary" bindtap"longVibrate">长震动</button> 二、js逻辑代码 注&#xff1a;文档 https://developers.weixin.qq…...

C++.OpenGL (10/64)基础光照(Basic Lighting)

基础光照(Basic Lighting) 冯氏光照模型(Phong Lighting Model) #mermaid-svg-GLdskXwWINxNGHso {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-GLdskXwWINxNGHso .error-icon{fill:#552222;}#mermaid-svg-GLd…...

CMake控制VS2022项目文件分组

我们可以通过 CMake 控制源文件的组织结构,使它们在 VS 解决方案资源管理器中以“组”(Filter)的形式进行分类展示。 🎯 目标 通过 CMake 脚本将 .cpp、.h 等源文件分组显示在 Visual Studio 2022 的解决方案资源管理器中。 ✅ 支持的方法汇总(共4种) 方法描述是否推荐…...

关键领域软件测试的突围之路:如何破解安全与效率的平衡难题

在数字化浪潮席卷全球的今天&#xff0c;软件系统已成为国家关键领域的核心战斗力。不同于普通商业软件&#xff0c;这些承载着国家安全使命的软件系统面临着前所未有的质量挑战——如何在确保绝对安全的前提下&#xff0c;实现高效测试与快速迭代&#xff1f;这一命题正考验着…...

MySQL 部分重点知识篇

一、数据库对象 1. 主键 定义 &#xff1a;主键是用于唯一标识表中每一行记录的字段或字段组合。它具有唯一性和非空性特点。 作用 &#xff1a;确保数据的完整性&#xff0c;便于数据的查询和管理。 示例 &#xff1a;在学生信息表中&#xff0c;学号可以作为主键&#xff…...

【 java 虚拟机知识 第一篇 】

目录 1.内存模型 1.1.JVM内存模型的介绍 1.2.堆和栈的区别 1.3.栈的存储细节 1.4.堆的部分 1.5.程序计数器的作用 1.6.方法区的内容 1.7.字符串池 1.8.引用类型 1.9.内存泄漏与内存溢出 1.10.会出现内存溢出的结构 1.内存模型 1.1.JVM内存模型的介绍 内存模型主要分…...

DiscuzX3.5发帖json api

参考文章&#xff1a;PHP实现独立Discuz站外发帖(直连操作数据库)_discuz 发帖api-CSDN博客 简单改造了一下&#xff0c;适配我自己的需求 有一个站点存在多个采集站&#xff0c;我想通过主站拿标题&#xff0c;采集站拿内容 使用到的sql如下 CREATE TABLE pre_forum_post_…...