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

PLC(电力载波通信)网络机制介绍

1. 概述

1.1 什么是PLC

电力载波通讯即PLC,是英文Power line Carrier的简称。 电力载波是电力系统特有的通信方式,电力载波通讯是指利用现有电力线,通过载波方式将模拟或数字信号进行高速传输的技术。最大特点是不需要重新架设网络,只要有电线,就能进行数据传递。

名词解释:

**相位:**CCO在所有相线上工作,STA只在一个相线上工作,不同相位具有不同的过零时间,CCO通过采集STA的过零时间确定STA的相位

TDMA**:**时分多址传输,设备独占间隙,数据包根据指定时间进行发送

CSMA/CA**:**载波侦听多路访问/冲突检测,设备共同占有间隙,判断信道空闲,竞争进行发送

直连站点:

当描述站点B为站点A的直连站点时,一般是指站点B与站点A之间可以直接通信,不需要中继

子站点:

当描述站点C为站点A的子站点时, C一般为需要通过A来与CCO完成通信的A的所有子孙站点中的一个

直连子站点:

当站点D为站点A的直连子站点时,说明站点D既是站点A的直连站点,也是站点A的子站点

2. PLC网络参数

2. 1 PLC网络特性

a7863bee0f414aec8f37da2fd5d5ca4f.png

  1. 单相电路接线

93188074224045fba08966db06028ad4.png

2.三相电路接线

6e3f48ac30e6403dad13648c905682ac.png

2.2 网络时间参数

4bef8f120ddc4a858ecf78cb4c061c5f.png

2.3 数据链路分层

3c1dd5741049414f881347b6e62b220f.png

**应用层:**实现本地和远程通信单元之间的数据交换,并根据数据链路层进行数据传输。

**网络管理子层:**实现宽带载波通信网的组网、网络维护和路由管理;对应用层报文进行聚合和分发。

**MAC****子层:**基于两种信道访问机制竞争物理信道。载波侦听多路访问与冲突避免(CSMA/CA)和时分多路访问(TDMA),提供可靠的数据传输。

**物理层:**对MAC子层报文进行编码、调制后发送到电力线,或者从电力线接收宽带载波信号解调后发送到MAC子层。

3. PLC网络机制

3.1 PLC网络的建立

CCO上电后,首先启动邻居网络监听定时器,进行一段时间的网间协调帧的监听, 以便发现是否存在邻居网络;如果CCO在监听的时间段内,收到邻居网络的网间协调帧,则与邻居网络进行协调, 协调成功后开始发送中央信标,启动组网;

3.2 PLC组网

无论是处于多网络环境还是单网络环境,每个网络的组网过程是一致的,都是一个单独网络的组网过程。
单独组网的过程,主要是CCO通过发送中央信标和安排发现信标发送,以及代理信标的发送,触发逐层级的STA的网络接入请求,来完成整个组网过程, CCO需要给已经入网的STA站点分配TEI, CCO的TEI固定为1,广播报文TEI为0xFFF,本标准CCO分配TEI范围为1~1015,其它地址作为保留,后续扩展使用

CCO在中央信标中,需要安排信标TDMA时隙和CSMA时隙。信标TDMA时隙,是用来指示CCO,PCO,或者STA发送信标。 CSMA时隙,用于让CCO周围的一级站点,向CCO发起关联请求报文,请求接入网络;或者在CSMA时隙中, CCO等发送关联确认,关联汇总指示等报文

3.2.1 PLC组网过程

1、CCO上电后(跟其他网络进行协调,完成后)周期性广播Central Beacon包。

2、第一级设备(能收到Central Beacon包的STA),根据包的内容在对应的CSMA时隙发送关联请求包,CCO会在CSMA时段监听,接收到关联请求后,通过白名单进行身份认证,CCO可以将关联请求的处理结果,通过发送关联确认报文或者关联汇总指示报文告知给STA,形成一级网络。(如果未收到关联确认或者关联汇总指示报文,可以重新发起关联请求;如果入网请求被拒绝,则STA可以根据重新关联时间,等待一段时间间隔后,再次请求入网,也可以选择另外一个网络(切换NID),请求加入网络)

3、第一级网络建立后,CCO会在下次周期的Central Beacon分配Proxy Beacon时隙安排已经入网的第一级设备发送Proxy Beacon 包或者Discover Beacon包(携带中心包的所有时隙分配),第二级设备收到Beacon 包后,也在对应的CSMA发送关联请求,由PCO代发给CCO,CCO的关联确认包也通过PCO进行转发到STA。

e98e1db412c145eb87c6fa8a52a30ef9.png

f907fe1fb5214d8fafd7bcf35b3d6d1e.png

3.2.2 PCO的选定

STA收到并解析信标时隙时,发现CCO安排了信标时隙,指示其发送代理信标,则该STA站点,需要设置自己的角色为PCO,并且需要按照CCO的安排时隙,进行代理信标发送。当一个站点成为PCO后,每个信标周期中, CCO都会安排其发送代理信标

注:关联确认报文, 以及关联汇总指示报文,都只能在CSMA时隙中进行发送。

3.3 单网络如何工作

PLC整个网络参数基于Beacon帧,整个网络通讯以一个Beacon周期为一个单位

CCO上电后广播周期性发送Centrl Beacon包携带整个网络设备的BEACON/TDMA/CSMA时间片以及子设备beacon包转发的时间

BEACON 时间片用于CCO PCO STA发送beacon包的时间

TDMA用于发送特定业务包

CSMA和Bind CSMA用于整个网络下设备竞争帧的时间段(入网请求,入网应答都在CSMA)以及特定业务包(在Bind CSMA)

整帧的周期:

6bf899cd76b54ce1ad736005fc84f750.png

1.Beacon timeslot

06d7d42ae6a146e4add41933bca964e7.png

Central Beacon:

由CCO生成。

1)包含NTB(网络基准时间32位),并使用信标帧中的BTS(时间轴)字段实时通知网络上的STA,

2)包含由CCO决定的时隙分配结果,而CCO决定了sta用于访问信道的模式和时隙在单个IEEE 1901.1网络上,Central Beacon定期发送,发送间隔可以由用户定义。

Proxy beacon:

由PCO生成,包含Central Beacon的所有时隙分配,并携带PCO的子集STA信息,发送的时隙由Central Beacon指定。

Discovery Beacon:

由STA生成,包含Central Beacon的所有时隙分配,发送的时隙由Central Beacon指定。

未入网的的STA收到3种Beacon包后都会根据包里的CSMA时隙发送入网请求包入网,CCO也在CSMA时隙中应答入网结果

2.TDMA timeslot

时间分配序列号跟beacon包复用,特定业务使用

d5635a53cf534fb586a1cb29ff64066a.png

3.CSMA timeslot

信标帧的CSMA时间段为单个相线CSMA时间段,网络层包的发送接收

afe19f340e174f74a7889f1c83a2ac32.png

4.Bind CSMA timeslot

信标帧的CSMA时间段为单个相线CSMA时间段,分割算法同上,特定业务使用

14fd6dbe71c34ab2affe26203b7742ad.png

3.4 时序分配机制

一个宽带载波通信网络中的所有设备必须同步到一个共用的时钟。

CCO必须维护一个32位的计时器,叫做网络基准时间(Network Time Base,NTB)。它的时钟由 CCO的25MHz时钟提供。 NTB由在CCO在中央信标中BTS字段发送给设备,每个STA 设备必须同步到这个NTB。

所有STA设备都应该在本地维护一个32位的计时器,叫做NTB_STA,这个 计时器在频率和绝对值上应该与CCO的NTB保持同步。NTB的同步通过接收CCO的中央信标,或者代 理的代理信标来完成。 同步到CCO的NTB的主要作用是以此为基准,解析CCO的时隙分配,从而能够达到全网站点对时隙分配的统一理解和使用。

同时NTB的同步,可以用于物理层的时钟同步,以便能够正确的发送报文信号和解析报文信号。

整个传输周期中各个时间间隙的基于NTB和时隙大小按序列号往后推移

Beacon帧中的主要参数:

8ed833c185fe44bebe9c4daf673e3476.png

时间间隙分配:

af01c4b0a4d14e1a98871857be68a85d.png

3.5 多网络如何工作

3.5.1多网络中CCO通过白名单对网络进行隔离

协调机制

当存在多个网络时,CCO需要完成NID协商,确定自己的NID防止多个网络使用同一个NID,并确保网络的独立性。(NID一样时,MAC较小的先改变,MAC大的继续保持30分钟,如果30分钟后冲突还在,就改变)

CCO需要协商信标时隙,防止不同网络使用相同的Beacon timeslot

信标帧用于维护IEEE 1901.1网络。当发送不同类型的信标帧时,不同的IEEE 1901.1网络需要占用不同的信标时隙。

协调帧需要在各自网络的CSMA期间发送

9e62d93430634b0d92f09940be4d344b.png

发生冲突时

46392782c136476192ce325d97b034ad.png

分配机制

1. 谁先完成谁优先使用下一次时间

1b798819b22c466e83d26ad467af2e79.png

2.如果B没收到A的协调包,A收到B的协调包,让B优先使用

8a4cb358d1b24d818698546ccb63590e.png

网间协调帧

8897837e65fa4a348508c3ea71b7e2b7.png

**1) 持续时间,**持续时间是一个16比 特的字段,表示本网络需要申请占用的时隙长度,单位:1毫秒。

**2) 带宽开始偏移,**下个带宽时隙开始时 刻的时间偏移,单位:1毫秒,当下个带宽时隙未开始时,该偏移时间表示从当前时刻,到下个带宽时 隙开始时刻的时间偏移,当下个带宽时隙已经开始时,该偏移时间的值为0。

**3) 接收到邻居网络号,**能够 接收到邻居网络的网络号,表示本网络能够接收到该网络的信号,每次发送多网络协调帧时携带一个邻居网络号,通过多次发送,告知周边邻居网络本网络可接收到的邻居网络。

3.6 路由机制

3.6.1 路由的建立

路由的创建,主要依靠发现列表报文,关联请求报文,关联确认报文,代理变更请求报文,代理变更请求确认等报文中携带的信息进行创建。

3.6.1.1 路由表项

  1. IEEE1901标准路由条目

59123f77792148a3977d2c5b42d160e1.png

479211547f4a4f058067147577e79163.png

a3a1cee5221845b88441f497761a9fb6.png

a05501673de54ccdafd79c8b2ecb6189.png

2. 实际PLC拓扑网络的路由表

fd272bf9eb574aa9a2374ba44e270f02.png

从海思提供的工具HiAssistant获取到的路由信息中总结:

  1. 低等级的设备拥有到所有比自身高等级的设备路由
  2. 高等级的设备没有比自己低等级设备的路由除了CCO

注:CCO为最低等级,STA5为最高等级

3.6.1.2 关联请求报文

1.报文格式

ac6e175715d44779aaff2a69df50d68e.png

2. 形成的路由表项

通过关联请求报文, CCO可以形成到达请求入网站点的间接路由

3.6.1.3 关联请求确认报文

1.报文格式

3438a8a6b4104e0a92e7248bfbc88902.png

CCO在关联确认报消息中会携带与关联入网站点相关的路由信息。该信息中包括新入网站点的所有直连STA站点和直连代理站点以及代理站点的所有子站点

528249236ea7444bbc4abed6bdd5b05d.png

38a64077c729468cabbc003a384fdc19.png

4f50df440f3248f386e9dab06c871f03.png

2.形成的路由表项

1)通过关联确认报文,各级代理站点可以形成或者刷新到达请求入网站点的间接路由,同时,也可以形成到达请求入网站点的所有子站点的间接路由,因为关联确认报文中, 路由表信息携带了请求入网站点的所有直连站点和直连站点的子站点。 关联确认报文需要逐级代理进行转发。

注:刚入网的STA为什么会有子节点存在

2) 通过关联确认报文,新入网站点,根据CCO告知的路由表信息表项,可以形成所有子站点的直连路由,以及到达直连子站点的子站点的所有间接路由

3.6.1.4 代理请求报文

3d0552da16cb45d894f395c3f8ac4d5f.png

2. 形成的路由表项

通过代理变更请求报文,代理站点可以形成到达请求变更站点的直连路由;上级代理在处理转发代理变更请求报文的过程中,也可以形成到达请求变更站点的间接路由。同理, CCO和各级代理都能形成到达请求变更站点的间接路由。

注:代理请求变更的设备,路由已经要发生变更了,是否还有必要生成路由

3.6.1.5 代理变更请求确认报文

1. 报文格式

60a9531aa4cd43e29ccd6575c2119e5c.png

包含子站点信息,即代理变更请求发起站点的所有子站点的TEI

56475b2072a64feeb69ba6100c9aa75b.png

2. 形成的路由表项

代理变更确认报文和关联确认报文的原理一样,可以使得各级代理站点形成到达其所有子站点的路由

3.6.1.6 发现列表报文

1.报文格式

c2b278d0a92a4263a58da33b5ddd8182.png

fcff9460311e45c1a04685a86dfeae01.png

2. 形成的路由表项

通过发现列表报文,既可以形成直连路由表项,因为能够接收到某站点的发现列表报文,意味着该站点就可能是本站点的直接邻居;也可以形成间接路由表项,因为发现列表报文中,携带着发送发现列表报文站点的所有邻居站点,这些站点未必是本站点的邻居

注:各级站点到达CCO的路由表项形成原理相对简单,当选定一个代理时,那么到达CCO的路由下一跳就可以缺省是代理站点,代理站点会把子站点的报文尽力的转发到CCO,通过代理站点的代理。

3.6.2 路由的维护

在组网过程中以及网络维护的过程中,全网站点最关键的目标就是维护实时的路由表项。路由包括STA站点到达CCO的路由,也包括从CCO或者低层级站点到达最大层级的STA站点的路由。

3.6.2.1 动态路由维护

动态路由维护,主要是指网络中的站点,需要实时的判断周边邻居站点的信道情况,选择更好的代理站点。
组网过程中:站点可以通过信标帧判断周围站点的信道质量

组网完成后:网络中主要的维护报文就是发现列表报文和信标帧,各级站点可以通过判断接收邻居站点的发现列表报文和信标帧的情况,以及邻居站点的变化情况选择更好的代理

1. 代理变更流程

f1f1754634634f74a38b62ad84c72ddf.png

1)当STA站点评估出一个新的代理站点时,可以通过代理变更请求报文,向CCO发起代理变更请求。

2)CCO根据网络拓扑的组成,可以在STA站点申请的备选代理中指定一个站点,作为STA站点的新代理(当CCO判断变更后的网络拓扑层级会超过层级上限(最大支持15个层级)时,不会响应代理变更请求,并且不会发送代理变更请求确认报文)

3)当一个新代理PCO被确认后, CCO需要发送代理变更确认报文,将STA站点以及新代理PCO的情况,通过逐级代理转发给请求代理变更的站点

4)逐级代理在转发代理变更确认等报文的过程中,可以通过该报文中的“子站点条目”等信息,实时的刷新到达“子站点条目”中站点的间接路由

5)STA站点最终也可以根据“子站点条目”信息,刷新本地的直接路由和间接路由

注:在组网完成后,网络维护的过程中,全网站点的路由表项,主要通过代理变更的过程来完成实时刷新

3.6.2.2 数据的路由过程

1. 树形网络路由过程

实际搭建的PLC网络拓扑如下:

1872250d83f5448887247b666d7a540b.png

1)STA7发送数据到STA5

根据文档和海思沟通且经过实际测试:互相处于同一发现列表的STA可以直接进行通信无需中继(直接路由)

获取到的STA7的发现列表如下:

26e19f69cda54708ba021fb3aa264073.png

获取到的PCO3的发现列表如下:

d6d61bf3a2a04bf4b923c184320c2d28.png

根据以上信息STA7->STA5的数据传输路径:

STA7-> PCO3 ->PCO4->STA5

注:STA5虽然能收到STA7的数据但是MAC地址为0

2)STA5发送数据到STA7

根据文档和海思说法,高层级的设备数据要发送到低层级的设备只需要往代理节点转发(高层级设备没有低层级设备的路由)就可到达CCO再由CCO进行转发,但是经实际测试STA7收不到STA5发过来的数据。针对此问题我们做了PCO3<->STA5的双向数据传输测试

3)PCO3发送数据到STA5

跟STA7->STA5测试结果一样

4)STA5发送数据到PCO3

PCO3无法收到STA5的数据,针对此问题海思解答STA5和PCO3上下行通信成功率比较差,但是我们分别过PCO3/PCO4的双向数据传输和PCO4/STA5的双向数据传输都是正常的且上下行通信成功率分别为46%,13%。

综上:STA5的数据完全可以通过代理转发到达PCO3,所以怀疑海思SDK可能有问题

2. mesh网络路由过程

在PLC网络组网完成后将CCO拿掉,系统会自动组成mesh网络,经测试在上述拓扑中将CCO拿掉STA5与STA7就可以正常通行,恢复时间为0-3分钟左右

3.6.2.3 路由实时修复

站点在转发业务数据时,如果周期性评估的路由无效或者无路由时,可根据业务报文的触发,发起实时的路由修复,以便发现到达业务报文的最终目的地址的实时路由

1. 路由修复相关帧格式

1)路由请求报文

9b7518dbfc80406885cd15c7845293d8.png

18c0827a64ff4d2f8eec031f89055b67.png

2)路由请求确认报文

49c686f5da5446a8b67ae918207f0b0f.png

3)路由应答报文

c96a5e5f8eee4d0389b953f799803176.png

4)链路确认请求报文

aaf6656a94434f428285cdffab8b1bb0.png

5)链路确认回应报文

83be98d3319d41d48e9a701884f87bef.png

2.路由修复过程

1)站点O发起路由修复时,以洪泛的形式发送路由请求报文(MMeRouteRequest),对最终目的节点进行搜索

bd4f2219d5d04ef180cc0c0afe03dd97.png

2)被路由请求报文所搜索的最终站点,在接收到路由请求报文后,需要组织路由回复报文 (MMeRouteReply),并将路由回复报文,以单播报文的形式发送至路由请求报文的发起站点。

988c9d836a0f467e9bacdb53b033a74d.png

站点在转发路由回复报文时,可以使用链路确认请求报文(MMeLinkConfirmRequest),发起链路评估,以便确定路由回复报文的下一个目的站点,过程如下图:

5a87cbac56fa4bc1a6ad9df023ca4267.png

a)STA7发送链路确认请求报文,发起链路评估

b)STA4/STA5/STA6收到链路确认请求报文后,在评估本地的相关路由数据后,确定是否发送链路确认回应报文(MMeLinkConfirmResponse),通过链路回应报文, 携带相关的链路信息, 回应给链路确认报文的发起站点

c)STA7接收到链路确认回复报文后,选择STA5为下一跳的站点,并将路由回复报文转发给下一跳的STA5

d)STA5重复STA7的过程形成新的路由路径

注:报文是广播还是单播

**3)**发起路由请求的站点在预定时间内收到了相应的路由回复报文,则该站点将向被搜索的最终目的站 点发送路由应答报文(MMeRouteAck),通知该最终目的节点。

2df9b8bb0c74482cb77c9b80530b8786.png

3. 路由修复相关测试

系统拓扑如下图所示:

889c6f1c504c4a1fad677811951dbe32.png

PCO3的发现列表:

db5bdca66167470bae1f29d18a8d44ce.png

STA5的发现列表

5bb812e4ae2f4e32832feb6017ca702d.png

从PCO3和STA5的发现列表可知,STA5和PCO3互不为邻居节点,所以需要通过路由通信。

情况1测试:

  1. PCO3每个1秒向STA5发送数据
  2. 断开PCO4,STA5无法收到PCO3的数据,3-6分钟后STA5重新收到PCO3的数据

情况2测试:

  1. PCO3每个1秒向STA5发送数据
  2. 断开PCO2,STA5无法收到PCO3的数据,0-2分钟后STA5重新收到PCO3的数据

结论:从上述现象可知,STA6是STA5的邻居节点,所以通过路由修复是可以比较快速的恢复路由的,而PCO2不是STA5的邻居列表所以是没法比较快的恢复路由的

3.6.3网络状态维护

CCO需要实时的维护网络的状态,以便回收TEI资源,根据网络规模调整信标发送等。 CCO判断STA的状态有三种,已入网、离线、未入网

3.6.3.1CCO 判断 STA 离线

  1. 如果在一个完整的心跳周期(两个路由周期)时间内, CCO发现某个STA站点的活跃次数为0,则CCO判断该STA站点离线。 CCO如果接收到来自判断为离线的STA站点的报文,可重新判定该STA站点在线
  2. 如果STA站点被CCO通知离线,则STA在离线后,可以重新申请加入网络

3.6.3.2CCO 判断 STA 未入网

  1. STA站点处于离线状态,并且连续四个完整的心跳周期(八个路由周期)时间内, CCO接收到该STA站点的报文个数为0,则CCO判断STA处于未入网状态
  2. CCO如果接收到来自已经判定为未入网的STA站点的报文,需要主动指示该STA站点离线,可以创建离线指示报文,将离线STA站点的信息填充到报文中,进行广播发送,通知网络中的所有站点该STA站点离线。该STA站点执行离线动作后,可再次申请入网

注:STA离线再去申请入网网关不会收到入网事件

3.6.3.3STA 离线与未入网区别

STA处于离线状态时,如果CCO收到该STA站点任何一个SOF帧,或其他站点携带上来的该STA的心跳报文,则CCO立即将该站点置为已入网状态(不在白名单内的站点除外)。
STA处于未入网状态时, CCO会将该STA站点的TEI等资源回收,该STA站点必须重新进行关联请求才能再次入网

3.6.3.4STA 判断自己离线

STA站点自己也需要判断自己是否离线。如果STA判断自己离线后,则必须重新申请加入网络。
在以下情形中, STA站点可判断自己离线:
a) STA 站点在加入网络后,如果在一个完整的心跳周期(两个路由周期)内,收不到任何信标帧;
b) STA 站点在连续 4 个路由周期内,如果与代理站点的通信成功率为 0;
c) STA 站点收到 CCO 的“组网序列号”与自身记录的“组网序列号”不同;
d) STA 站点接收到离线指示报文,指示自己离线;
e) 一级 STA 站点,如果检测到 CCO 的 MAC 地址发生变化,且已经连续一个周期;
f) STA 站点发现本站点的代理站点角色变为了发现站点已经连续一个路由周期;
g) 本站点的层级超过最大层级限制(15 级),站点需要离线

相关文章:

PLC(电力载波通信)网络机制介绍

1. 概述 1.1 什么是PLC 电力载波通讯即PLC&#xff0c;是英文Power line Carrier的简称。 电力载波是电力系统特有的通信方式&#xff0c;电力载波通讯是指利用现有电力线&#xff0c;通过载波方式将模拟或数字信号进行高速传输的技术。最大特点是不需要重新架设网络&#xf…...

Qt监控系统远程回放/录像文件远程下载/录像文件打上水印/批量多线程极速下载

一、前言说明 在做这个功能的时候&#xff0c;着实费了点心思&#xff0c;好在之前做ffmpeg加密解密的时候&#xff0c;已经打通了极速加密保存文件&#xff0c;主要就是之前的类中新增了进度提示信号&#xff0c;比如当前已经处理到哪个position位置&#xff0c;发个信号出来…...

自学微信小程序的第八天

DAY8 1、使用动画API即可完成动画效果的制作,先通过wx.createAnimation()方法获取Animation实例,然后调用Animation实例的方法实现动画效果。 表40:wx.createAnimation()方法的常用选项 选项 类型 说明 duration number 动画持续时间,单位为毫秒,默认值为400毫秒 timing…...

【java】@Transactional导致@DS注解切换数据源失效

最近业务中出现了多商户多租户的逻辑&#xff0c;所以需要分库&#xff0c;项目框架使用了mybatisplus所以我们自然而然的选择了同是baomidou开发的dynamic.datasource来实现多数据源的切换。在使用初期程序运行都很好&#xff0c;但之后发现在调用com.baomidou.mybatisplus.ex…...

003 SpringBoot集成Kafka操作

4.SpringBoot集成Kafka 文章目录 4.SpringBoot集成Kafka1.入门示例2.yml完整配置3.关键配置注释说明1. 生产者优化参数2. 消费者可靠性配置3. 监听器高级特性4. 安全认证配置 4.配置验证方法5.不同场景配置模板场景1&#xff1a;高吞吐日志收集场景2&#xff1a;金融级事务消息…...

Android SystemUI开发(一)

frameworks/base/packages/SystemUI/src/com/android/systemui/SystemUI.java frameworks/base/packages/SystemUI/src/com/android/systemui/SystemUIService.java 关键文件 SystemUI 关键服务 简介 Dependency.class&#xff1a;处理系统依赖关系&#xff0c;提供资源或服…...

C#贪心算法

贪心算法&#xff1a;生活与代码中的 “最优选择大师” 在生活里&#xff0c;我们常常面临各种选择&#xff0c;都希望能做出最有利的决策。比如在超市大促销时&#xff0c;面对琳琅满目的商品&#xff0c;你总想用有限的预算买到价值最高的东西。贪心算法&#xff0c;就像是一…...

Vue程序下载

Vue是一个基于JavaScript&#xff08;JS&#xff09;实现的框架&#xff0c;想要使用它&#xff0c;就得先拿到Vue的js文件 Vue官网 Vue2&#xff1a;Vue.js Vue3&#xff1a;Vue.js - 渐进式 JavaScript 框架 | Vue.js 下载并安装vue.js 第一步&#xff1a;打开Vue2官网&a…...

【UCB CS 61B SP24】Lecture 17 - Data Structures 3: B-Trees学习笔记

本文以 2-3-4 树详细讲解了 B 树的概念&#xff0c;逐步分析其操作&#xff0c;并用 Java 实现了标准的 B 树。 1. 2-3 & 2-3-4 Trees 上一节课中讲到的二叉搜索树当数据是随机顺序插入的时候能够使得树变得比较茂密&#xff0c;如下图右侧所示&#xff0c;时间复杂度也就…...

机器学习决策树

一、香农公式 熵&#xff1a; 信息增益&#xff1a; 信息增益信息熵-条件熵 前者是初始信息熵大小&#xff0c;后者是因为条件加入后带来的确定性增加 信息增益表示得知特征X的信息而使得类Y的信息的不确定性减少的程度 信息增益越大说明影响越大 二、代码 ""&…...

Spring Boot + MyBatis 实现 RESTful API 的完整流程

后端开发&#xff1a;Spring Boot 快速开发实战 引言 在现代后端开发中&#xff0c;Spring Boot 因其轻量级、快速开发的特性而备受开发者青睐。本文将带你从零开始&#xff0c;使用 Spring Boot MyBatis 实现一个完整的 RESTful API&#xff0c;并深入探讨如何优雅地处理异…...

通过 ANSYS Discovery 进行 CFD 分析,增强工程设计

概括 工程师使用计算流体动力学 (CFD) 分析来研究和优化各种应用中的流体流动和传热分析。ANSYS Discovery 是一个用户友好的软件平台&#xff0c;使工程师能够轻松设置和解决 CFD 模型&#xff0c;并能够通知设计修改 在这篇博文中&#xff0c;我们将重点介绍在 Ansys Disc…...

家用可燃气体探测器——家庭燃气安全的坚实防线

随着社会的发展和变迁&#xff0c;天然气为我们的生活带来了诸多便利&#xff0c;无论是烹饪美食&#xff0c;还是温暖取暖&#xff0c;都离不开它的支持。然而&#xff0c;燃气安全隐患如影随形&#xff0c;一旦发生泄漏&#xff0c;可能引发爆炸、火灾等严重事故&#xff0c;…...

ListControl双击实现可编辑

为Edit Control控件添加丢失输入焦点事件,可见设为false 为List Control控件添加双击事件 控件和成员变量之间交换数据 CListCtrl ListPrint1; //列表输出 CEdit...

ave-form.vue 组件中 如何将产品名称发送给后端 ?

如何将产品名称发送给后端。 在这段代码中&#xff0c;产品名称&#xff08;productName&#xff09;的处理和发送主要发生在 save() 方法中。让我逐步分析&#xff1a; 产品ID的选择&#xff1a; <w-form-selectv-model"form.productId"label"涉及产品&q…...

DeepSeek行业应用实践报告-智灵动力【112页PPT全】

DeepSeek&#xff08;深度搜索&#xff09;近期引发广泛关注并成为众多企业/开发者争相接入的现象&#xff0c;主要源于其在技术突破、市场需求适配性及生态建设等方面的综合优势。以下是关键原因分析&#xff1a; 一、技术核心优势 开源与低成本 DeepSeek基于开源架构&#xf…...

【Markdown 语法简洁讲解】

Markdown 语法简洁语法讲解 什么是 Markdown1. 标题2. 列表3.文本样式4. 链接与图片5. 代码6. 表格7. 分割线8. 流程图9. 数学公式10. 快捷键11. 字体、字号与颜色 什么是 Markdown Markdown 是一种轻量级标记语言&#xff0c;通过简单的符号实现排版格式化&#xff0c;专注于…...

250301-OpenWebUI配置DeepSeek-火山方舟+硅基流动+联网搜索+推理显示

A. 最终效果 B. 火山方舟配置&#xff08;一定要点击添加&#xff09; C. 硅基流动配置&#xff08;最好要点击添加&#xff0c;否则会自动弹出所有模型&#xff09; D. 联网搜索配置 E. 推理过程显示 默认是没有下面的推理过程的显示的 设置步骤&#xff1a; 在Functions函…...

【3天快速入门WPF】12-MVVM

目录 1. 什么是MVVM2. 实现简单MVVM2.1. Part 12.2. Part 21. 什么是MVVM MVVM 是 Model-View-ViewModel 的缩写,是一种用于构建用户界面的设计模式,是一种简化用户界面的事件驱动编程方式。 MVVM 的目标是实现用户界面和业务逻辑之间的彻底分离,以便更好地管理和维护应用…...

查找Excel包含关键字的行(の几种简单快速方法)

需求&#xff1a;数据在后缀为xlsx的Excel的sheet1中且量比较大&#xff0c;比如几十万行几百列&#xff1b;想查找一个关键字所在的行,比如"全网首发"&#xff1b; 情况①知道关键字在哪一列 情况②不确定在哪一列&#xff0c;很多列相似又不同&#xff0c;本文演…...

Linux简单的操作

ls ls 查看当前目录 ll 查看详细内容 ls -a 查看所有的内容 ls --help 查看方法文档 pwd pwd 查看当前路径 cd cd 转路径 cd .. 转上一级路径 cd 名 转换路径 …...

高危文件识别的常用算法:原理、应用与企业场景

高危文件识别的常用算法&#xff1a;原理、应用与企业场景 高危文件识别旨在检测可能导致安全威胁的文件&#xff0c;如包含恶意代码、敏感数据或欺诈内容的文档&#xff0c;在企业协同办公环境中&#xff08;如Teams、Google Workspace&#xff09;尤为重要。结合大模型技术&…...

聊一聊接口测试的意义有哪些?

目录 一、隔离性 & 早期测试 二、保障系统集成质量 三、验证业务逻辑的核心层 四、提升测试效率与覆盖度 五、系统稳定性的守护者 六、驱动团队协作与契约管理 七、性能与扩展性的前置评估 八、持续交付的核心支撑 接口测试的意义可以从四个维度展开&#xff0c;首…...

Rapidio门铃消息FIFO溢出机制

关于RapidIO门铃消息FIFO的溢出机制及其与中断抖动的关系&#xff0c;以下是深入解析&#xff1a; 门铃FIFO溢出的本质 在RapidIO系统中&#xff0c;门铃消息FIFO是硬件控制器内部的缓冲区&#xff0c;用于临时存储接收到的门铃消息&#xff08;Doorbell Message&#xff09;。…...

智能分布式爬虫的数据处理流水线优化:基于深度强化学习的数据质量控制

在数字化浪潮席卷全球的今天&#xff0c;数据已成为企业和研究机构的核心资产。智能分布式爬虫作为高效的数据采集工具&#xff0c;在大规模数据获取中发挥着关键作用。然而&#xff0c;传统的数据处理流水线在面对复杂多变的网络环境和海量异构数据时&#xff0c;常出现数据质…...

GC1808高性能24位立体声音频ADC芯片解析

1. 芯片概述 GC1808是一款24位立体声音频模数转换器&#xff08;ADC&#xff09;&#xff0c;支持8kHz~96kHz采样率&#xff0c;集成Δ-Σ调制器、数字抗混叠滤波器和高通滤波器&#xff0c;适用于高保真音频采集场景。 2. 核心特性 高精度&#xff1a;24位分辨率&#xff0c…...

基于Java Swing的电子通讯录设计与实现:附系统托盘功能代码详解

JAVASQL电子通讯录带系统托盘 一、系统概述 本电子通讯录系统采用Java Swing开发桌面应用&#xff0c;结合SQLite数据库实现联系人管理功能&#xff0c;并集成系统托盘功能提升用户体验。系统支持联系人的增删改查、分组管理、搜索过滤等功能&#xff0c;同时可以最小化到系统…...

基于Java+MySQL实现(GUI)客户管理系统

客户资料管理系统的设计与实现 第一章 需求分析 1.1 需求总体介绍 本项目为了方便维护客户信息为了方便维护客户信息&#xff0c;对客户进行统一管理&#xff0c;可以把所有客户信息录入系统&#xff0c;进行维护和统计功能。可通过文件的方式保存相关录入数据&#xff0c;对…...

接口自动化测试:HttpRunner基础

相关文档 HttpRunner V3.x中文文档 HttpRunner 用户指南 使用HttpRunner 3.x实现接口自动化测试 HttpRunner介绍 HttpRunner 是一个开源的 API 测试工具&#xff0c;支持 HTTP(S)/HTTP2/WebSocket/RPC 等网络协议&#xff0c;涵盖接口测试、性能测试、数字体验监测等测试类型…...

Linux nano命令的基本使用

参考资料 GNU nanoを使いこなすnano基础 目录 一. 简介二. 文件打开2.1 普通方式打开文件2.2 只读方式打开文件 三. 文件查看3.1 打开文件时&#xff0c;显示行号3.2 翻页查看 四. 文件编辑4.1 Ctrl K 复制 和 Ctrl U 粘贴4.2 Alt/Esc U 撤回 五. 文件保存与退出5.1 Ctrl …...