Aurora 协议学习理解与应用——Aurora 8B10B协议学习
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档
Aurora 8B10B协议学习之一,理解协议
- 概述
- 8B10B数据发送和接收
- Symbol-Pairs
- 传输调度
- 用户PDU传输过程
- 用户PDU接收过程
- 流控
- 自然流量控制操作
- 自然流量控制延迟
- 自然流量控制PDU格式
- 用户流量控制操作
- 用户流量控制格式
- 初始化和错误处理
- 8B10B链路初始化
- 8B10B通道绑定
- 8B10B通道验证
- 8B10B错误处理
- Aurora 8B/10B Ordered Sets
- Idle Sequence
- 时钟补偿
- 单条lane的传输规则
- Multi-Lane Striping and Transmission Rules
- 电气特性
概述
Aurora 8B/10B 协议描述了通过 Aurora 8B/10B Channel传输用户数据。一个 Aurora 8B/10B Channel由一个或多个 Aurora 8B/10B lanes组成。每个 Aurora 8B/10B lane都是全双工串行数据连接。通信的双方称为Partners。与其他例如SRIO称为Master和Slave不同,这里Partners说明双方是对等的关系。
Aurora 8B/10B 协议接口通过用户接口与用户应用程序传输数据和控制。用户接口不在协议的规定范围内,可选用任一种接口。
用户应用和Aurora 8B/10B 接口之间的数据流包含user protocol data units (user PDUs)和user flow control,用户PDU可以是任意长度,它的格式不在协议定义范围内。有2种流控PDU在协议中进行了定义。
8B10B数据发送和接收
Symbol-Pairs
通过Aurora 8B/10B channel传输的最小信息单元是2个字符(symbols),叫做Symbol-Pairs。信息总是由多个字符对组成的。
传输调度
有6种数据通过Aurora 8B/10B channel进行传输:
1、时钟补偿序列:用于防止Partner时间的的时钟速率差异而导致接收器溢出的控制符号序列。
2、初始化序列:四个有序集作为空闲序列来使用,为初始化期间的数据传输准备 Aurora 8B/10B 通道。
3、自然流量控制PDU:由 Aurora 8B/10B 接口生成并解释的链路层流量控制 PDU
4、用户流量控制PDU:流量控制消息由用户应用程序生成和解释,并封装成用户流量控制 PDU 来传输。
5、通道PDU(Channel PDUs):用户数据PDU
6、空闲序列:没有数据发送的时候发送的控制符号序列。
这六种序列的优先级如下:
当发送器正在处理流量控制请求时,数据类型优先级应该改变。在自然流量控制倒计时或用户流量控制倒计时期间,空闲序列比通道 PDU 具有更高的优先级。由于当没有更高优先级的数据类型可用时总是传输空闲序列,因此这种优先级的转变有效地阻止了帧传输,直到流量控制倒计时完成。
用户PDU传输过程
用户PDU的传输要求如下流程:
1、填充(Padding)
2、使用通道 PDU 分隔符进行封装
3、8B10B编码通道PDU载荷
4、串化和时钟编码
1、填充
Aurora 8B/10B通道要求传输内容是偶数个字符组成,用户PDU如果是奇数个需要填充一个字节,填充字节为0x9C.
2、链路层封装
用户 PDU 用控制符号序列(称为有序集)封装,以产生完整的信道 PDU。这些有序集划分了串行数据流内通道 PDU 的开始和结束。 Aurora 8B/10B 协议使用 /SCP/ (/K28.2/K27.7/) 有序集来标记通道 PDU 的开始,并使用 /ECP/ (/K29.7/K30.7/) 有序集标记通道 PDU 的结束。
3、8B10B编码
高速收发器包含该功能
4、串行化和时钟编码
高速收发器包含该功能
用户PDU接收过程
用户PDU的接收有如下流程:
1、解串
2、8B10B解码
3、链路层剥离
4、填充位剥离
1、解串
高速收发器包含该功能
2、8B10B解码
高速收发器包含该功能
3、链路层剥离
链路层剥离过程移除信道 PDU 封装以及传输期间可能插入的任何嵌入的空闲有序集。
通道 PDU 封装的移除包括用于标记通道 PDU 开始的 /SCP/ (/K28.2/K27.7/) 有序集,以及用于标记通道 PDU 结束的 /ECP/ (/K29.7/K30.7/) 有序集。
删除空闲有序集涉及删除 /K/ (/K28.5/)、/R/ (/K28.0/) 和 /A/ (/K28.3/) 符号。任意数量的这些符号可以出现在通道 PDU 中的任何位置,但具有以下限制:
(1)必须插入偶数个空闲符号
(2)空闲序列的开始必须在通道 PDU 中的偶数个符号之后开始
4、填充剥离
如果在 8B/10B 解码过程中检测到 /P/ (/K28.4/) 控制符号后跟 /ECP/ (/K29.7/K30.7/),这是传输过程为了满足信道对齐要求而添加的字节(传输要偶数个字节)。该八位字节在解码后值为 0x9C,应在将其传递给用户应用程序之前从数据流的末尾剥离。
流控
本章介绍 Aurora 8B/10B 协议支持的可选流量控制机制。这些机制提供低延迟流量控制,以防止由于通道双方之间的数据来源和接收速率差异而导致数据丢失。由于流量控制 PDU 可以嵌入通道 PDU 中,延迟得以最小化。
Aurora 8B/10B协议支持以下两种流控机制:
Native Flow Control:自然流量控制,NFC。由Aurora 8B/10B 接口的接收端自行调整链路的接收速率。
User Flow Control:该机制可用于在任意层实现用户定义的流量控制方案。用户流控制消息由用户应用程序生成并解释。Aurora 8B/10B 接口将这些消息封装到用户流控制 PDU 中,并为其跨通道传输提供低延迟机制。
自然流量控制 PDU 通常在接收方的弹性缓冲器耗尽时生成。请注意,这些 PDU 必须足够早地生成,以便它们发出的时间和流量停止之间的延迟不会导致弹性存储溢出。
用户流控制消息通过 Aurora 8B/10B 通道从一个用户应用程序转发到另一个用户应用程序,并且不会由任一 Aurora 8B/10B 接口解释。
(这两种流控相当于一种是被动流控,一种是主动流控)
关于流量控制机制需要注意的一些事项:
1、自然流量控制的断言不会阻塞用户流控PDU的转发
2、用户流量控制 PDU 一旦开始传输,就不能被任何其他序列中断
自然流量控制操作
RX 自然流量控制状态机监视 RX FIFO 的状态,并在存在 RX FIFO 溢出风险时生成自然流量控制 PDU。这些 PDU 请求通道Partner将用户 PDU 的传输暂停指定的符号次数。如何定义 RX FIFO 的状态用于进行自然流控的算法与实现有关,不在协议规定的范围。
TX 自然流量控制状态机通过在请求的时间间隔内暂停用户 PDU 的传输来响应来自通道partner的自然流量控制 PDU。请注意,除了空闲序列之外,暂停还可以包括自然流量控制 PDU 或用户流量控制 PDU 的传输,因为这些 PDU 都不存储在 RX FIFO 中。
如果 Aurora 8B/10B 接口正在传输用户 PDU,则 TX 本机流控制状态机可以通过两种方式之一响应本机流控制 PDU。
Completion Mode:完成模式,完成模式只允许在用户PDU之间插入空闲字符
Immediate Mode:立即模式,立即模式允许在数据帧内插入空闲字符。
所有 Aurora 8B/10B 协议实现如果支持流量控制,则必须能够支持任一行为。操作模式必须是可编程的,但本规范没有定义如何选择操作模式。
自然流量控制延迟
当在立即模式下运行时,双方的最大往返延迟被定义,用于限制用户 RX FIFO 的深度。通道引入的延迟并不包含在此定义中,但在为特定通道设计用户 RX FIFO 时也必须考虑在内。
自然流控控制PDU请求的往返延迟不得超过 256 个符号时间。
自然流量控制PDU格式
一共2个字节长度。第一个字节是SNF(start of native flow control),第二个字节是命令字节。命令字节包含 PAUSE 字段,该字段指定空闲字符必须发送的时钟周期数,以响应通道Partner的 PDU。
在同一周期传输的所有自然流控 PDU 必须携带相同的 PAUSE 代码和 XOFF 位设置。当多个本机流控制 PDU 在同一时钟周期到达时,接收器必须仅处理一个 PDU,并选择其中任何一个 PDU 进行处理。
用户流量控制操作
一旦开始传输,用户流控制 PDU 就不会被时钟补偿序列、本机流控制 PDU 或空闲序列中断。 Aurora 8B/10B 协议实现可能需要缓冲用户流控制 PDU,以确保它们不被中断,并满足时钟补偿规则。任何缓冲方案均取决于实现,并且在本规范中未定义。
用户流量控制格式
用户流量控制 PDU 的长度为 4 到 18 个字节。第字节是 SUF(用户流控制开始)字符,后面跟着一个称为命令字节的数据字符。该命令字节后面紧跟着来自用户应用程序的 2 到 16 个字节的流量控制消息。
注意:/K28.4/ 符号用于通道 PDU 的 SUF 字符和填充字符。然而,填充字符后面只能跟控制字符,而不能跟数据字符。这区分了用作填充字符的 /K28.4/ 和用于标记用户流控制 PDU 开始的 /K28.4/
用户流量控制消息的长度在SIZE字段中指定。用户流量控制消息大小可以是 2 到 16 之间的任意偶数个字节
初始化和错误处理
Aurora 8B/10B 通道的初始化是一个三阶段过程。这些阶段是:
Lane Initialization:此过程在每个通道上单独执行,以激活链路并将接收到的数据对齐到正确的边界。
Channel Bonding:此过程将各个lane绑定到单个数据通道中。如果实现的功能仅使用单个链路,则不需要通道绑定并且将被绕过。通道绑定消除了各种来源引入的偏差,包括走线长度、连接器和 IC 变化。
Channel Verification:此过程执行将接收到的数据映射到用户接口所需的任何对齐,并验证通道传输有效数据的能力。
在channel verification,期间,所有lane必须准备好通过channel接收数据。当Aurora 8B/10B接口完成channel verification后,可以立即开始传输数据。
8B10B链路初始化
各个lane初始化过程在复位或通道故障时将每个通道收发器与其Partner同步。通道故障定义为以下任一条件:
1、通道数据错误过多
2、过度违反协议规定
8B10B通道绑定
通道绑定过程对齐每个通道接收的所有数据。在每个通道完成通道初始化过程之前,通道绑定无法开始。
通道绑定分两个阶段进行。第一阶段对应于图 4-3 中的状态 CB0,由收发器特定的数据对齐组成。第二阶段对应于状态CB1,验证收发器是否已正确对准并同时传送/I/有序集内的/A/有序集。
8B10B通道验证
通道验证过程用于跨用户接口对齐数据,并验证通道完整性。它本质上包括在每个方向的所有通道上发送通道验证序列。使用这种已知的数据模式,接收通道partner可以在用户接口上正确对齐数据,并验证通道完整性。该过程的示意图如图
验证序列由以下模式组成:60 个 /I/ 符号,后跟四个符号 /V/ 有序集
当所有通道接收器已从其通道Partner接收到第三个/V/有序集时,接收器的通道接收器部分(如果尚未启用)必须启用以防止数据丢失。
8B10B错误处理
在正常传输数据的过程中,通道有可能出现故障。必须单独监控所有通道是否有错误。在串行收发器正确地对数据进行字节对齐之前,会在输出上看到许多错误。因此,重要的是,在通道稳定之前,不会激活任何错误检测电路。当 K 计数器达到 3 时,即达到该稳定点。一旦 K 计数器达到 3,所有错误检测电路均应激活
有两种类型的错误:硬错误和软错误。
在以下情况下会发生硬错误:
• 发送或接收弹性缓冲区中存在上溢/下溢
• 软错误太多,请参阅下图
• Partner复位,收到了初始序列
• 与Partner之间的物理连接断开
硬错误被视为灾难性错误,之后应立即重新初始化通道。发生硬错误时接收到的任何数据单元都会被损坏,应被丢弃。
软错误通常是由于通道上的瞬时位错误造成的。软错误不一定需要重置通道。 Aurora 8B/10B 协议没有显式的数据错误检查;由软错误引起的数据错误应通过用户的错误处理能力来检测和纠正。软错误的示例包括:
• 极性错误
• 符号错误
在多 Gbps 系统中,对于通道完整性较差的系统,误码的发生时间可能为几分钟,而对于通道完整性良好的系统,误码的发生时间可能为数天或数年。因此,Aurora 8B/10B 接口必须实现软错误监控逻辑,以验证持续的通道完整性。该逻辑由软错误计数器和每个通道的相关控制逻辑组成。下图说明了软错误监控逻辑所需的行为
Aurora 8B/10B Ordered Sets
Idle Sequence
空闲有序集(idle)用于在初始化期间执行字边界对齐和通道绑定。在操作期间,空闲用于指示没有数据。空闲插入发生在等待状态期间以及通道 PDU 之间。空闲有序集由三个代码组组成:/A/、/K/和/R/。 /K/ 和 /R/ 代码组必须以伪随机序列(在 /A/ 代码组之间)应用,以通过不产生离散频谱来降低 EMI。适用以下条件:
1、/A/ 间距随机化,任意两个 /A/ 代码组之间至少有 16 个代码组,但不超过 32 个代码组。
2、/K/s 和 /R/s 以随机方式放置在 /A/s 之间。
3、最小传输模式是一个符号对。只要遵守前面两条规则,就可以发送这三个字符中的任何一个。如果发送/A/,则仍必须遵守间距规则。
4、对于多通道通道,必须需要空闲的所有通道上同时传输相同的空闲符号对。
5、不产生离散频谱
一个空闲序列的例子:
用于产生空闲序列的逻辑实现方法:
时钟补偿
Aurora 8B/10B 协议为发送器和接收器之间的时钟速率差异提供了补偿机制。这种机制称为时钟补偿,可以适应发送器和接收器之间高达 ± 100 ppm 的时钟速率差异。 Aurora 8B/10B协议通过周期性地将时钟补偿序列插入到空闲模式或用户数据中来实现时钟补偿。时钟补偿序列不应插入到用户流控制 PDU 中。
时钟补偿序列由时钟补偿有序集/CC/的六个副本组成。即使有 PDU 或其他代码组可供传输,时钟补偿序列也应至少每 10,000 个代码组传输一次。对于多通道通道,完整的时钟补偿序列在组成通道的每个通道上同时传输。
单条lane的传输规则
单通道通道在每个方向上都有一个差分对。单通道通道应进行编码,并按照从上层接收字符的顺序,通过差分对传输从上层接收到的控制有序集和 PDU 的字符流。当上层没有控制命令集和 PDU 传输时,空闲序列应被馈送到编码器的输入以进行编码和传输。
接收时,代码组流被解码并传递到上层。图中需要注意的主要特征是:
1、第一个示例显示如何填充具有奇数个有效负载字节的通道 PDU 以保持 /ECP/ 符号的对齐
2、第三个示例显示了被时钟补偿序列和空闲序列中断的通道 PDU
Multi-Lane Striping and Transmission Rules
Aurora 8B/10B 协议定义了跨由任意数量通道组成的通道的用户数据条带化(striping)和控制有序集。条带化(striping)方案平衡了通道效率和实施简单性.
条带化在多个通道上分配符号对。条带化是用于在多通道通道的所有 n 个通道上同时发送数据的方法。例如,第一个符号对被条带化到通道 0,第二个符号对被条带化到通道 1,第 n 个符号对被条带化到通道 n-1。第 n+1 个符号对被条带化到通道 0 上。
唯一的特殊要求如下:
• 符号对/SCP/、/ECP/、/SNF/、/SUF/ 中的各个符号不得在通道之间分割,但可以在任何通道上发送和接收
• 传输/I/ 序列时,必须在需要/I/ 序列的通道中的每个通道上传输相同的数据模式
电气特性
(略)
相关文章:

Aurora 协议学习理解与应用——Aurora 8B10B协议学习
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 Aurora 8B10B协议学习之一,理解协议 概述8B10B数据发送和接收Symbol-Pairs传输调度用户PDU传输过程用户PDU接收过程 流控自然流量控制操作自然流量控制延迟自然流…...
Vue基础使用之V-Model绑定单选、复选、动态渲染选项的值
这里要说明一下,在v-model 绑定的值是id还是value是和<option>中的v-bind保持一致的,如第四个,如果是 <option :value"op[1]" 那v-model绑定的就是数组第二项的值2,4,6 如果是 <option :va…...

分析ARP解析过程
1、实验环境 主机A和主机B连接到交换机,并与一台路由器互连,如图7.17所示,路由器充当网关。 图7.17 实验案例一示意图 2、需求描述 查看 ARP 相关信息,熟悉在PC 和 Cisco 设备上的常用命令,设置主机A和主机B为同一个网段网关设置为路由接…...

为硬刚小米SU7,华为智界S7整出了「梅开二度」操作
如今国产中大型新能源轿车市场,在小米 SU7 加入后,可算彻底活了过来。 过去几年,咱们自主新能源品牌在 20-30 万元级轿车上发力明显不足,老牌车厂比亚迪汉几乎以一己之力扛起销量担当。 随着新能源汽车消费升级、竞争加剧&#x…...

408数据结构,怎么练习算法大题?
其实考研的数据结构算法题是有得分技巧的 得分要点 会写结构定义(没有就自己写上)写清楚解题的算法思想描述清楚算法实现最后写出时间和空间复杂度 以上这四步是完成一道算法题的基本步骤,也是其中得分的主要地方就是后面两步。但是前面两…...

imgcat 工具
如果经常在远程服务器或嵌入式设备中操作图片,要查看图片效果,就要先把图片dump到本地,比较麻烦。可以使用这个工具,直接在终端上显示。类似于这种效果。 imgcat 是一个终端工具,使用 iTerm2 内置的特性,允…...
Anaconda换清华源
1. 查看conda配置文件 sudo vim ~/.condarc2. 删除~/.condarc文件内容 使用vim中的dd命令 3. 打开并复制清华源的地址粘贴到~/.condarc文件中 https://mirrors4.tuna.tsinghua.edu.cn/help/anaconda/ channels:- defaults show_channel_urls: true default_channels:- https…...

react使用npm i @reduxjs/toolkit react-redux
npm i reduxjs/toolkit react-redux 创建一个 store文件夹,里面创建index.js文件和子模块文件夹 index,js文件写入以下代码 import {configureStore} from reduxjs/toolkit // 导入子模块 import counterReducer from ./modules/one import two from ./modules/tw…...

Nessus【部署 03】Docker部署漏洞扫描工具Nessus详细过程分享(下载+安装+注册+激活)文末福利
Docker部署漏洞扫描工具Nessus 1.安装2.配置2.1 添加用户2.2 获取Challenge code2.3 获取插件和许可证2.4 注册 3.使用4.进阶 整体流程: 1.安装 # 1.查询镜像 docker search nessus# 2.拉取镜像 docker pull tenableofficial/nessus# 3.启动镜像【挂载目录用于放置…...

2023年看雪安全技术峰会(公开)PPT合集(11份)
2023年看雪安全技术峰会(公开)PPT合集,共11份,供大家学习参阅。 1、MaginotDNS攻击:绕过DNS 缓存防御的马奇诺防线 2、从形式逻辑计算到神经计算:针对LLM角色扮演攻击的威胁分析以及防御实践 3、TheDog、0…...

Docker仅需3步搭建免费私有化的AI搜索引擎-FreeAskInternet
简介 FreeAskInternet 是一个完全免费、私有且本地运行的搜索引擎,并使用 LLM 生成答案,无需 GPU。用户可以提出问题,系统会进行多引擎搜索,并将搜索结果合并到ChatGPT3.5 LLM中,并根据搜索结果生成答案。 什么是 Fr…...
线程安全的单例模式
使用 synchronized 修饰 getInstance 方法 确保了只有一个线程可以同时访问 getInstance 方法。这意味着在任何时候只有一个线程可以执行 getInstance() 方法,从而避免了多个线程同时创建多个实例的情况,因此是线程安全的。 public class ClientUtil {…...

OpenHarmony实战开发-Grid和List内拖拽交换子组件位置。
介绍 本示例分别通过onItemDrop()和onDrop()回调,实现子组件在Grid和List中的子组件位置交换。 效果图预览 使用说明: 拖拽Grid中子组件,到目标Grid子组件位置,进行两者位置互换。拖拽List中子组件,到目标List子组件…...

设计模式:时序图
设计模式:时序图 设计模式:时序图时序图元素(Sequence Diagram Elements)角色(Actor)对象(Object)生命线(Lifeline)控制焦点(Focus of Control&am…...

前端性能监控(面试常见)
1. 用户体验优化 2. Web Vitals提取了几个核心网络指标 哇一头死 FCL 三大指标 FID被 INP干点 Largest Contentful Paint (LCP):最大内容绘制 衡量加载性能。 为了提供良好的用户体验,LCP 必须在网页首次开始加载后的 2.5 秒内发生。Interaction to Ne…...

react17 + antd4 如何实现Card组件与左侧内容对齐并撑满高度
在使用antd进行页面布局时,经常会遇到需要将内容区域进行左右分栏,并在右侧区域内放置一个或多个Card组件的情况。然而,有时我们会发现右侧的Card组件并不能与左侧的栏目对齐,尤其是当左侧栏目高度动态变化时。本文将介绍如何使用…...
Rust入门-Hello World
1、安装 在 Linux 或 macOS 上安装 rustup 打开终端并输入下面命令: $ curl --proto https --tlsv1.2 https://sh.rustup.rs -sSf | sh如果安装成功,将出现下面这行: Rust is installed now. Great!2、更新 $ rustup self uninstall3、卸…...

堆放砖块-第12届蓝桥杯选拔赛Python真题精选
[导读]:超平老师的Scratch蓝桥杯真题解读系列在推出之后,受到了广大老师和家长的好评,非常感谢各位的认可和厚爱。作为回馈,超平老师计划推出《Python蓝桥杯真题解析100讲》,这是解读系列的第47讲。 堆放砖块…...

019——IIC模块驱动开发(基于EEPROM【AT24C02】和I.MX6uLL)
目录 一、 IIC基础知识 二、Linux中的IIC(韦东山老师的学习笔记) 1. I2C驱动程序的层次 2. I2C总线-设备-驱动模型 2.1 i2c_driver 2.2 i2c_client 三、 AT24C02 介绍 四、 AT24C02驱动开发 实验 驱动程序 应用程序 一、 IIC基础知识 总线类…...

【开发篇】十三、JVM基础参数设置与垃圾回收器的选择
文章目录 1、-Xmx 和 –Xms2、-XX:MaxMetaspaceSize 和 –XX:MetaspaceSize3、-Xss4、不建议改的参数5、其他参数6、选择GC回收器的调试思路7、CMS的并发模式失败现象的解决8、调优案例 GC问题解决方式: 优化JVM基础参数,避免频繁Full GC减少对象的产生…...

LBE-LEX系列工业语音播放器|预警播报器|喇叭蜂鸣器的上位机配置操作说明
LBE-LEX系列工业语音播放器|预警播报器|喇叭蜂鸣器专为工业环境精心打造,完美适配AGV和无人叉车。同时,集成以太网与语音合成技术,为各类高级系统(如MES、调度系统、库位管理、立库等)提供高效便捷的语音交互体验。 L…...

中南大学无人机智能体的全面评估!BEDI:用于评估无人机上具身智能体的综合性基准测试
作者:Mingning Guo, Mengwei Wu, Jiarun He, Shaoxian Li, Haifeng Li, Chao Tao单位:中南大学地球科学与信息物理学院论文标题:BEDI: A Comprehensive Benchmark for Evaluating Embodied Agents on UAVs论文链接:https://arxiv.…...
【Java学习笔记】Arrays类
Arrays 类 1. 导入包:import java.util.Arrays 2. 常用方法一览表 方法描述Arrays.toString()返回数组的字符串形式Arrays.sort()排序(自然排序和定制排序)Arrays.binarySearch()通过二分搜索法进行查找(前提:数组是…...

vscode(仍待补充)
写于2025 6.9 主包将加入vscode这个更权威的圈子 vscode的基本使用 侧边栏 vscode还能连接ssh? debug时使用的launch文件 1.task.json {"tasks": [{"type": "cppbuild","label": "C/C: gcc.exe 生成活动文件"…...
Python爬虫实战:研究feedparser库相关技术
1. 引言 1.1 研究背景与意义 在当今信息爆炸的时代,互联网上存在着海量的信息资源。RSS(Really Simple Syndication)作为一种标准化的信息聚合技术,被广泛用于网站内容的发布和订阅。通过 RSS,用户可以方便地获取网站更新的内容,而无需频繁访问各个网站。 然而,互联网…...

关于iview组件中使用 table , 绑定序号分页后序号从1开始的解决方案
问题描述:iview使用table 中type: "index",分页之后 ,索引还是从1开始,试过绑定后台返回数据的id, 这种方法可行,就是后台返回数据的每个页面id都不完全是按照从1开始的升序,因此百度了下,找到了…...

汽车生产虚拟实训中的技能提升与生产优化
在制造业蓬勃发展的大背景下,虚拟教学实训宛如一颗璀璨的新星,正发挥着不可或缺且日益凸显的关键作用,源源不断地为企业的稳健前行与创新发展注入磅礴强大的动力。就以汽车制造企业这一极具代表性的行业主体为例,汽车生产线上各类…...
C++中string流知识详解和示例
一、概览与类体系 C 提供三种基于内存字符串的流,定义在 <sstream> 中: std::istringstream:输入流,从已有字符串中读取并解析。std::ostringstream:输出流,向内部缓冲区写入内容,最终取…...

【数据分析】R版IntelliGenes用于生物标志物发现的可解释机器学习
禁止商业或二改转载,仅供自学使用,侵权必究,如需截取部分内容请后台联系作者! 文章目录 介绍流程步骤1. 输入数据2. 特征选择3. 模型训练4. I-Genes 评分计算5. 输出结果 IntelliGenesR 安装包1. 特征选择2. 模型训练和评估3. I-Genes 评分计…...

嵌入式学习笔记DAY33(网络编程——TCP)
一、网络架构 C/S (client/server 客户端/服务器):由客户端和服务器端两个部分组成。客户端通常是用户使用的应用程序,负责提供用户界面和交互逻辑 ,接收用户输入,向服务器发送请求,并展示服务…...