LIN 入门(1)

1、概述

LIN 是什么

LIN 是 Local Interconnect Network 的缩写,是基于 UART/SCI(Universal Asynchronous Receiver-Transmitter / Serial Communication Interface,通用异步收发器/串行通信接口)的低成本串行通信协议。可用于汽车、家电、办 公设备等多种领域。本文主要针对 LIN 在分布式的汽车电子网络系统中的应用。 1996 年,Volvo和Volcano通讯(VCT)为Volvo S80 系列开发了一种基于UART/SCI的协议,即Volcano Lite。 1997 年,Motorola与Volvo和VCT合作,帮助它们改进Volcano Lite协议以满足各种不同需求(比如无需晶振的从 机设备自动同步),并制定可以支持各种半导体产品的开放标准。1998 年 12 月,Audi、BMW、Daimler Chrysler 和Volkswagen也加入进来,由此形成了LIN协会(http://www.lin-subbus.org)。开发LIN标准的目的在于适应分层次 车内网络在低端(速度和可靠性要求不高、低成本的场合)的需求。LIN经历了几个版本的发布和更新,如表 1.1 所示。

 1.1 LIN 子网(Cluster)与节点(Node)

图 1.2 为一典型的车载 LIN 通信子网(注 1),黄色方块为 LIN 的从机节点,蓝色方块为 LIN 的主机节点, 一个节点即一个 LIN 接口(注 2)。LIN 网络与主干线 CAN(Controller Area Network,控制器局域网)总线相连时, 需要加入 CAN-LIN 网关,一般由主机节点来充当。LIN 与上层网络相连时的示意图参照图 1.3。

注:1. 由于 LIN 网络在汽车中一般不独立存在,经常与上层网络(如 CAN)相连,因此子网的概念是相对于上层 网络而言。在不强调与上层网络相连的情况下,后面也称作 LIN 网络。 2. 一个节点不一定对应一个 ECU(Electronic Control Unit,电子控制单元),因为一个 ECU 可能提供多个 LIN 接口,并且这些接口可能连接到不同的 LIN 通信子网中。

节点应用层向下层传输信号和消息。信号和消息位于帧中的数据段,是节点向其他节点传达的实质信息。 它们之间的区别在于信号封装于信号携带帧 (帧 ID 范围在 0x00~0x3B 之间,参照 3.1.3 节表 3.1)中,用于在运 行状态传递上层发生的事件,如温度传感器的测量结果等。消息封装于诊断帧(帧 ID 为 0x3C 或 0x3D,参照 3.1.3 节表 3.1)中,是有固定格式、最大长度不超过 4095 字节的信息,例如第 5 章介绍的服务请求。应用程序通过信 号处理实现信号的传递,通过传输层实现消息的传递。

1.2 主/从机节点与主/从机任务

LIN 的拓扑结构为单线总线,应用了单一主机多从机的概念。总线电平为 12V,传输位速率(Bitrate)最高为 20kbps。由于物理层限制,一个 LIN 网络最多可以连接 16 个节点,典型应用一般都在 12 个节点以下,主机节 点有且只有一个,从机节点有 1 到 15 个。 主机节点(Master Node)包含主机任务(Master Task)和从机任务(Slave Task),从机节点(Slave Node)只包含从 机任务,如图 1.5 所示。

主机任务负责: (1) 调度总线上帧的传输次序; (2) 监测数据,处理错误; (3) 作为标准时钟参考; (4) 接收从机节点发出的总线唤醒命令。 从机任务不能够主动发送数据,需要接收主机发送的帧头(帧的起始部分,参照 3.1 节的图 3.1),根据帧头 所包含的信息(这里指帧 ID,详细内容参照 3.1.3 节)判断: (1) 发送应答(帧中除帧头外剩下的部分,参照 3.1 节的图 3.1); (2) 接收应答; (3) 既不接收也不发送应答。

2、LIN 的特点

LIN 具有以下特点:

(1) 网络由一个主机节点和多个从机节点构成。

(2) 使用 LIN 可以大幅度的削减成本,表现在以下方面: ● 开放型规范:规范可以免费从官方网站获得。 ● 硬件成本削减:基于普通 UART/SCI 接口的低成本硬件实现,无需单独的硬件模块支持;从机节点无需 高精度时钟就可以完成自同步;总线为一根单线电缆。 ● 装配成本削减:LIN 采用了工作流(Work Flow)和现成节点(Off-the-shelf Node)的概念,将网络装配标准 化,并可通过 LIN 传输层进行再配置。 ● 缩短软件开发周期:LIN 协议将 API(Application Programming Interface,应用编程接口)标准化。

(3) 信号传输具有确定性,传播时间可以提前计算出,参照 3.1.6 节。

(4) LIN 具有可预测的 EMC(ElectroMagnetic Compatibility,电磁兼容性)性能,参照 4.7 节。为了限制 EMI(ElectroMagnetic Interference,电磁干扰)强度,LIN 协议规定最大位速率为 20kbps。 (5) LIN 提供信号处理、配置、识别和诊断四项功能,参照 5.2.1 节的图 5.2

3、LIN 协议层

本章内容介绍了帧、进度表、主/从机的状态机实现、LIN 网络的休眠(Sleep)/唤醒(Wakeup)和状态管理等, 对应着 LIN 规范的以下部分: ● LIN Protocol Specification

3.1 帧的结构

帧(Frame)包含帧头(Header)和应答(Response)两部分主机任务负责发送帧头从机任务接收帧头并对帧头 所包含信息进行解析,然后决定是发送应答,还是接收应答,还是不作任何反应。帧在总线上的传输如图 3.1 所示。

帧头包括同步间隔段、同步段以及PID(Protected Identifier,受保护ID)段

应答包括数据段和校验和段,如 图 3.2 所示,其中值“0”为显性电平(Dominant),值“1”为隐性电平(Recessive),总线上实行“线-与”:当总线上有 大于等于一个节点发送显性电平时,总线呈显性电平;所有的节点都发送隐性电平或不发送信息(不发送任何信 息时总线默认呈隐性电平)时,总线才呈现隐性电平,即显性电平起主导作用。图中帧间隔为帧之间的间隔;应 答间隔为帧头和应答之间的间隔;字节间间隔包括同步段和受保护ID段之间的间隔、数据段各字节间之间的间 隔以及数据段最后一个字节和校验和段之间的间隔。下面对帧头和应答的各部分进行详细说明。

 3.1.1 同步间隔段(Break Field)

同步间隔段由同步间隔(Break)和同步间隔段间隔符(Break Delimiter)构成,如图3.3所示。同步间隔是至少(注 1)持续 13 位(以主机节点的位速率为准)的显性电平,由于帧中的所有间隔或总线空闲时都应保持隐性电平,并 且帧中的任何其它字段都不会发出大于 9 位的显性电平,因此同步间隔可以标志一个帧的开始。同步间隔段的 间隔符是至少持续 1 位的隐性电平。

 从机任务接收帧头的同步间隔段时,以该从机任务所在节点的位速率为准,当检测总线上出现持续 11 位(注 2)的显性电平时,认为是帧的开始。当从机节点使用精度较高的时钟时,识别阈值可以选择 9.5 位(注 3)。

协议没有规定同步间隔段的发送和检测方法。

注:1. 发送显性电平的下限为 13 位,上限应保证帧的最大传输时间THeader_Maximum(参照 3.1.6 节)在规定范围之 内。

2. 参照 4.6 节的表 4.3,当从机节点选择的时钟(精度不高的时钟)在容限范围内(±14%)时,(13 - 11.18) / 13 = 14%,即是说当处于最差情况下(时钟相差 14%)时,从机任务按照自身时钟测量的主机节点发送的 13 位显性电平不会低于 11.18 位,若识别阈值高于 11.18 位,那么当选用 14%的时钟时,就会出现主机发 送同步间隔,而从机检测不到的情形。由于在除同步间隔段以外,帧中任何其余部分都不会发送超过 9 位的显性电平(可以参照本章后面几节的内容),(10.26 - 9) / 9 = 14%,即是说判断阈值必须大于 10.26 位,否则可能把帧中其余部分误判作为同步间隔段。综上,识别阈值为 11 位显性电平。

3. 参照 4.6 节的表 4.3,当从机节点选择的时钟(精度较高的时钟)在容限范围内(±1. 5%)时,按照上面注 2 的计算,识别阈值应在 9.135 位(由(9.135 - 9) / 9 = 1.5%计算而来)到 12.805 位(由(13 – 12.805) / 13 = 1.5%计算而来)之间。具体设定阈值会随着所选时钟的精度,取值范围在 9.135 位到 12.805 位之间浮动

3.1.2 同步段(Sync Byte Field)

在介绍同步段之前,首先介绍一下字节域(Byte Field)的概念,字节域包括 1 位起始位(Start Bit,显性) + 8 位数据位 + 1 位停止位(Stop Bit,隐性),是一种标准 UART 数据传输格式,如图 3.4 所示。在 LIN 的一帧当中, 除了上一节讲述的同步间隔段,后面的各段都是通过字节域的格式传输的。在 LIN 帧中,数据传输都是先发送 LSB(Least Significant Bit,最低有效位),最后发送 MSB(Most Significant Bit,最高有效位)。

 LIN 同步以下降沿为判断标志,采用字节 0x55(转换为二进制为 01010101b)。同步段的字节域如图 3.5 所示。

 从机节点可以不采用精度高的时钟,而采用片上振荡器等精度和成本相对较低的时钟,由此带来的与主机 节点时钟产生的偏差,需要通过同步段进行调整,调整的结果是使从机节点数据的位速率与主机节点一致。同 步段用于同步的基准时钟为主机节点的时钟。从机节点通过接收主机节点发出的同步段,计算出主机节点位速 率,根据计算结果对自身的位速率重新作调整。计算公式如下:

通过计算,可以得到主机节点实际传输 1 位所用的时间,即位速率。

3.1.3 受保护 ID 段(Protected Identifier Field)

 受保护 ID 段的前 6 位叫作帧 ID(Frame ID),加上两个奇偶校验位后称作受保护 ID。如图 3.6 所示。

 帧 ID 的范围在 0x00~0x3F 之间,共 64 个。帧 ID 标识了帧的类别和目的地。从机任务对于帧头作出的反 应(接收/发送/忽略应答部分)都是依据帧 ID 判断的。如果帧 ID 传输错误,将会导致信号无法正确到达目的地, 因此引入奇偶校验位。校验公式如下,其中“⊕”代表“异或”运算,“¬”代表“取非”运算。

 由公式可以看出,PID 不会出现全 0 或全 1 的情况,因此,如果从机节点收到了“0xFF”或“0x00”,可判断 为传输错误。 依据帧 ID 不同将帧进行分类,如表 3.1 所示,对各种类型的详细说明参照 3.2 节

 3.1.4 数据段(Data Field)

节点发送的数据位于数据段,包含 1 到 8 个字节(注 1),先发送编号最低的字节 DATA1,编号依次增加, 如图 3.7 所示。 数据段包含了两种数据类型信号(Signal)和诊断消息(Diagnostic messages)。 信号(Signal)由信号携带帧传递,一个帧 ID 对应的数据段可能包含一个或多个信号。信号更新时要保证其 完整性,不能只更新一部分。一个信号通常由一个固定的节点发出,此节点称为该信号的发布节点(Publisher); 其余的一个或多个节点接收,它们称为信号的收听节点(Subscriber)(注 2)。

诊断消息(Diagnostic message)由诊断帧传递,对消息内容的解析由数据自身和节点状态决定。

 3.1.5 校验和段(Checksum Field)

校验和段是对帧中所传输的内容进行校验,如图 3.8 所示。

采用标准型校验和还是增强型校验和由主机节点管理,发布节点和各收听节点根据帧 ID 来判断采用哪种 校验和。 校验方法为将校验对象的各字节作带进位二进制加法(每当结果大于等于 256 时就减去 255),并将所得最 终的和逐位取反,以该结果作为要发送的校验和。接收方根据校验和类型,对接收数据作相同的带进位二进制 加法,最终的和不取反,并将该和与接收到的校验和作加法,如果结果为 0xFF,则校验和无误,这在一定程度 上保证了数据传输的正确性。 例如:采用标准型校验和,Data1 = 0x4A,Data2 = 0x55,Data3 = 0x93,Data4 = 0xE5,计算方法如表 3.3 所示:

 

 3.1.6 帧传输时间的计算

 

 3.1.7 帧在总线上的传输波形

 帧在总线上的传输波形示例如图 3.9 所示

3.2 帧的类型

下面对 3.1.3 节表 3.1“帧的类型”中各种帧进行详细说明

 3.2.1 无条件帧(Unconditional Frame)

  无条件帧是具有单一发布节点,无论信号是否发生变化,帧头都被无条件应答的帧。 无条件帧在主机任务分配给它的固定的帧时隙(参照 3.3 节)中传输。总线上一旦有帧头发送出去,必须有从 机任务作应答(即无条件发送应答),如图 3.10 所示,其中列出的帧 ID 的值只是为了举例说明,协议并未强制规 定。

 帧 ID = 0x30 应答部分的发布节点为从机节点 1,收听节点为主机节点。典型应用如从机节点 1 向主机节点 报告自身某信号的状态。 帧 ID = 0x31 应答部分的发布节点为主机节点,收听节点为从机节点 1 和从机节点 2。典型应用如主机节点 向从机节点发布信息。 帧 ID = 0x32 应答部分的发布节点为从机节点 2,收听节点为从机节点 1。典型应用如从机节点之间彼此通 信。

3.2.1 事件触发帧(Event Triggered Frame)

  事件触发帧主机节点在一个帧时隙(参照 3.3 节)中查询各从机节点的信号是否发生变化时使用的帧,当存 在多个发布节点时,通过冲突解决进度表(参照 3.3 节)来解决冲突。

从机节点信号发生变化的频率较低时,主机任务一次次地轮询各个信号会占用一定的带宽。为了减小带 宽的占用,引入了事件触发帧的概念。

事件触发帧的典型应用就是轮询四个车门的开关情况。与其利用无条件帧每个车门轮询一遍,不如同时对 四个车门进行询问,如果其中一个车门打开了(事件发生),该车门要对询问作应答,即事件触发的含义。这样 做可以减小带宽,但同时会导致两种现象,其一就是没有车门被打开,即无节点应答——事件触发帧允许一帧 中只有帧头无应答;另外一种情况就是冲突,即同时有大于等于两个车门被打开,对该问题同时作答——事件 触发帧允许两个以上的节点对帧头作应答而不视为错误。当发生冲突时,主机节点需要重新作轮询,这样会增 加一些响应时间,但由于事件触发帧本身就用来处理低概率事件,总的来说还是节省了带宽。 原先用作轮询的无条件帧,称为与该事件触发帧关联的无条件帧,即事件触发帧的应答部分是与其关联的 无条件帧所提供的应答。当发生冲突时,需要立刻中断当前的进度表(参照 3.3 节),启动冲突解决进度表(Collision Resolving Schedule),重新调用这些关联的无条件帧。其中,冲突解决进度表要求包含所有的关联的无条件帧。 图 3.11 示例描述了事件触发帧的传输状况。事件触发帧的帧 ID 为 0x10,与其关联的两个无条件帧的帧 ID 分 别是 0x11 和 0x12,这些帧 ID 的值只是为了举例说明,协议并未强制规定。

与事件触发帧关联的多个无条件帧需要满足以下 5 个条件: (1) 数据段包含的数据字节数等长; (2) 使用相同的校验和类型; (3) 数据段的第一个字节为该无条件帧的受保护 ID,这样才能够知道应答是哪个关联的无条件帧发送出来的; (4) 由不同的从机节点发布; (5) 不能与事件触发帧处于同一个进度表(参照 3.3 节)中。

3.2.3 偶发帧(Sporadic Frame)

  偶发帧是主机节点在同一帧时隙(参照 3.3 节)中当自身信号发生变化时向总线启动发送的帧。当存在多个关 联的应答信号变化时,通过事先设定的优先级来仲裁

与事件触发帧一样,偶发帧的应答也关联了一组无条件帧。规定偶发帧只能由主机节点作为发布节点。

偶 发帧的传输可能出现三种状况:

1)当关联的无条件帧没有信号发生变化时,该时隙(参照 3.3 节)保持沉默,如图 3.12 第一个帧时隙所示,主机节点连帧头都不需要发送;

2)当其中一个关联的无条件帧包含的信号发生了变化, 则发送该关联的无条件帧的应答部分;

3)如果有两个或两个关联的无条件帧包含的信号发生了变化,则按照事 先规定好的优先级,优先级较高的关联的无条件帧获得发送权,优先级较低的要等到下一个偶发帧的帧头到来 时才能发送应答。由于主机节点是唯一的发布节点,所以主机节点事先就知道各个关联信号的优先级别,这样 在传输时就不会产生冲突。 引入偶发帧的目的在于为进度表(参照 3.3 节)增加一些动态特性——当主机节点的信号发生变化时才有通 信发生。事件触发帧和偶发帧反映了帧在不同时机(信号变化或未发生变化)的传输状况,引入它们的目的是为 了增加通信的灵活性.

3.2.4 诊断帧(Diagnostic Frame)

诊断帧包括主机请求帧和从机应答帧,主要用于配置、识别和诊断用。主机请求帧(Master Request Frame, MRF),帧 ID = 0x3C,应答部分的发布节点为主机节点;从机应答帧(Slave Response Frame,SRF),帧 ID = 0x3D, 应答部分的发布节点为从机节点。数据段规定为 8 个字节,一律采用标准型校验和。诊断帧的具体用法参照第 5 章。

3.2.5 保留帧(Reserved Frame)

保留帧的帧 ID 为 0x3E 和 0x3F,为将来扩展用

3.3 进度表

进度表是帧的调度表规定总线上帧的传输次序以及各帧在总线上的传输时间进度表位于主机节点主 机任务根据应用层需要进行调度。进度表可以有多个,一般情况下,轮到某个进度表执行的时候,从该进度表 规定的入口处开始顺序执行,到进度表的最后一个帧时,如果没有新的进度表启动,则返回到当前的进度表第 一个帧循环执行;也有可能在执行某个进度表当中发生中断,执行另一个进度表后再返回,如事件触发帧的冲 突解决过程就是一个典型的例子,如图 3.13 所示。

进度表除规定了帧 ID 的传输次序外,还规定了帧时隙(Frame Slot)的大小。帧时隙是进度表规定的一个帧 的帧头起始到下一个的帧的帧头起始的时间。每个帧的帧时隙都可以不同,一个帧时隙对应了进度表的一个入 口,如图 3.14 所示,其中 i = 1~8。

3.4 状态机(State Machine)实现

 3.4.1 主机任务的状态机

当进度表启动后,主机任务依次发送同步间隔段、同步段和受保护 ID 段,如图 3.15 所示

 3.4.2 从机任务的状态机

从机任务负责发布或者接听帧的应答。包括两个状态机:

1. 同步间隔段和同步段检查器

2. 帧处理器 从机任务状态机如表 3.5 所示,其中帧处理的状态机如图 3.16 所示。

 

 

3.5 网络管理

网络管理主要指的是网络的休眠和唤醒管理,如图 3.17 所示。

 3.5.1 唤醒

当总线处于休眠状态时,主/从机节点都可以向总线上发送唤醒信号,唤醒信号持续 250μs~5ms其余节 点(除发送唤醒信号以外的节点)以大于 150μs 为阈值判定唤醒信号。每个从机节点必须在唤醒信号显性脉冲的 结束处算起 100ms 以内准备接收来自主机的命令(帧头);主机节点也必须被唤醒,100ms 之内主机节点发送帧 头开始通信。主机节点的同步间隔段也可以充当唤醒信号,由于从机节点需要作初始化处理,因此主机节点所 发的这个帧有可能不会被正常接收。 如果节点发送出唤醒信号后,在 150ms~250ms 之内没有接收到总线上的任何命令(帧头),则可以重新发送 一次唤醒信号。唤醒信号最多可以发送 3 次,3 次之后,必须等待至少 1.5s 之后才可以再次发送唤醒信号,如 图 3.18 所示。

 3.5.2 休眠

总线可以在两种情况下进入休眠: (1) 利用诊断帧中的主机请求帧 0x3C 作休眠命令,要求数据段的第一个字节为 0x00,其余字节为 0xFF。 休眠命令由主机节点发出,总线上的从机节点只判断数据段的第一个字节,其余字节忽略。从机节点在接 收到休眠命令后,不一定要进入低功耗模式,根据应用层需要设置,如图 3.19 所示

 (2) 当总线静默(没有显性和隐性电平之间的切换)4s~10s 时,节点自动进入休眠状态。

3.6状态管理

状态管理是为了检测运行中的错误。错误一旦被发现,根据设计需要采取不同的措施进行排除,一种方法 是简单替换掉错误节点,另一种方法是让发生问题的节点进入到自我保护/安全模式(Limp Home Mode)。

 3.6.1 网络报告

协议强制规定,每个从机节点都要在它发布的某个无条件帧中包含一个长度为一位的标量信号 response_error,向主机节点报告自身状态。主机节点负责接收这个信号并且执行分析,如表 3.6 所示。事件触 发帧由于允许总线冲突,需特殊处理。

 3.6.2 节点内部报告

节点自身需要设定两个状态位:Error_in_response 和 Successful_transfer。当发送或接收应答的时候发现错 误,将置位 Error_in_response;成功传输则置位 Successful_transfer。节点需要将这两个状态位报告给应用层。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/703435.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

代码随想录-二叉树 | 111 二叉树的最小深度

代码随想录-二叉树 | 111 二叉树的最小深度 LeetCode 111 二叉树的最小深度解题思路代码难点总结 LeetCode 111 二叉树的最小深度 题目链接 代码随想录 题目描述 给定一个二叉树,找出其最小深度。 最小深度是从根节点到最近叶子节点的最短路径上的节点数量。 说…

讯飞星火模型-语音转文字实现

目录 项目结构 准备音频 接口Demo 准备代码(完整修改后) 测试提取中文文字代码 结果 下载链接: 这是上周打算试试,提取视频文字之后,制作视频字幕,从而想用大模型来实现,基本的demo可以在…

图像的混合与渐进变换

1.实验目的 平常我们看到的美图秀秀等两个图片混合是怎么生成的呢,今天我们看看图像处理关于这部分怎么做的? 2.实验条件 pycharm python编译器 3.实验代码 # File: 图像混合与渐进变换.py # Author: chen_song # Time: 2024/6/11 下午6:08 "…

CorelDRAW® Graphics Suite 全新 2024 专业图形设计软件

CorelDRAW Graphics Suite 是配备齐全的专业设计工具包,可以非常高的效率提供令人惊艳的矢量插图、布局、照片编辑和排版项目。价格实惠的订阅获得令人难以置信的持续价值,即时、有保障地获得独家的新功能和内容、一流的性能,以及对最新技术的…

【C语音 || 数据结构】二叉树--堆

文章目录 前言堆1.1 二叉树的概念1.2 满二叉树和完美二叉树1.3 堆的概念1.4 堆的性质1.4 堆的实现1.4.1堆的向上调整算法1.4.1堆的向下调整算法1.4.1堆的接口实现1.4.1.1堆的初始化1.4.1.2堆的销毁1.4.1.3堆的插入1.4.1.4堆的删除1.4.1.4堆的判空1.4.1.4 获取堆的数据个数 前言…

轻松玩转新商业模式:工会排队!

在当今数字化时代,互联网的蓬勃发展不仅重塑了商业模式,也深刻改变了消费者的购物习惯。传统的实体零售店面与在线销售平台正面临着巨大的市场挑战。然而,正是这些变革为品牌提供了新的发展机遇。通过创新的商业模式和有效的私域流量管理&…

弱监督语义/实例/全景分割综述2022

摘要 我们从一个统一的角度总结了现有的高效标签图像分割方法,讨论了一个重要的问题:如何弥合弱监督和密集预测之间的差距——目前的方法大多是基于启发式先验,如跨像素相似性、跨标签约束、跨视图一致性和跨图像关系。最后,对标签高效深度图…

纷享销客海外合规观点与方案:个人隐私数据保护与数据出入境

出海,已不再是企业的“备胎”,而是必须面对的“大考”!在这个全球化的大潮中,有的企业乘风破浪,勇攀高峰,也有的企业在异国他乡遭遇了“水土不服”。 面对“要么出海,要么出局”的抉择&#xf…

大功率回馈式负载:行业竞争态势

随着科技的不断发展,大功率回馈式负载在各个行业中的应用越来越广泛。大功率回馈式负载是一种能够将电能回馈到电网的设备,具有节能、环保、高效等优点。然而,随着市场竞争的加剧,大功率回馈式负载行业也面临着诸多挑战。 首先&am…

同城信息房产出租小程序源码系统 完全开源可二次开发 带完整的安装代码包以及搭建教程

系统概述 在数字化转型的浪潮中,房产租赁市场也迎来了新的发展机遇。随着移动互联网的普及,越来越多的用户倾向于通过手机应用或小程序来寻找合适的租房信息。为了满足这一需求,小编给大家分享一款“同城信息房产出租小程序源码系统”&#…

低价和低俗

无底线的低价可不就是低俗了吗? O(∩_∩)O哈哈~ AI说的(引导他说的) 以下几个角度可以进行论证: 低价竞争可能导致质量下降:为了达到极低的价格,商家可能会降低产品或服务的质量标准,使用劣质材料或减少投入。这样可能会影响产品的功能、安全性和使用体验,给消费…

智能合约漏洞类型

Are We There Yet? Unraveling the State-of-the-Art Smart Contract Fuzzers | Proceedings of the IEEE/ACM 46th International Conference on Software Engineering

MySQL-连接查询

049-内连接之等值连接 案例:查询每个员工所在的部门名称,要求显示员工名、部门名。 select e.ename, d.dname from emp e inner join dept d on e.deptnod.deptno;注意:inner可以省略 select e.ename, d.dname from emp e join dept d on…

docker registry-harbor私有镜像仓库安装

本博文将引导您安装和配置Harbor私有镜像仓库。安装前,请确保您已安装Docker和Docker Compose。 前置环境 需要安装docker和docker-compose 下载Harbor Harbor的最新版本可以从GitHub下载。这里以2.9.4版本为例: 下载地址:https://github…

大模型学习之GLM结构

探索GLM:一种新型的通用语言模型预训练方法 随着人工智能技术的不断进步,自然语言处理(NLP)领域也迎来了革命性的发展。OpenAI的ChatGPT及其后续产品在全球范围内引起了广泛关注,展示了大型语言模型(LLM&a…

服务器配置(初始化)

一:什么是云服务器及用途: 云服务器(Elastic Compute Service, ECS)是一种简单高效、安全可靠、处理能力可弹性伸缩的计算服务。其管理方式比物理服务器更简单高效。用户无需提前购买硬件,即可迅速创建或释放任意多台云服务器。 我个人感觉就…

25年后回顾融智学新范式(感受人机互助新时代到了的愉悦,体验人机互助新时代的理解和表达的深入浅出)

25年后回顾融智学新范式 (不仅感受人机互助新时代到了的愉悦,更体验人机互助新时代的理解和表达的深入浅出) 一句话概述: 《融智学新范式》是一种创新的理论框架,它提出了协同智能主体的概念框架,通过严…

数据结构之链表的经典笔试题

找往期文章包括但不限于本期文章中不懂的知识点: 个人主页:我要学编程(ಥ_ಥ)-CSDN博客 所属专栏:数据结构(Java版) 目录 203. 移除链表元素 206. 反转链表 876. 链表的中间节点 面试题 02.02. 返回倒数第k个节点 …

想让AI 驱动 UI 测试?墙裂推荐这个自动化工具!

文章概述 本文介绍了什么是视觉测试,功能测试对于视觉测试来说的局限性,视觉测试的重要意义及视觉测试结合python/java两种脚本的案例。 现如今公司不断部署新版本,有些甚至每天都会发布。这种持续部署意味着定期更新或现有代码行正在更改&a…

RabbitMQ概述

RabbitMQ RabbitMQ概述 RabbitMQ是一个开源的消息代理(message broker)系统,最初由Rabbit Technologies Ltd开发,并在开源社区的支持下不断发展和完善。它提供了强大的消息传递机制,被广泛应用于构建分布式系统和应用…