【简单谈谈UCIE PHY LSM链路训练】
UCIE PHY LSM链路训练
- 1 UCIE PHY LSM
- 1.1 RESET
- 1.2 SBINT
- 1.3 MBINT
- 1.3.1 MBINT.PARAM
- 1.3.2 MBINIT.CAL
- 1.3.3 MBINIT.REPAIRCLK
- 1.3.4 MBINIT.REPAIRVAL
- 1.3.5 MBINIT.REVERSALMB
- 1.3.6 MBINIT.REPAIRMB
- 1.4 MBTRAIN
- 1.5 LINKINIT
- 1.6 ACTIVE
- 1.7 L1/L2
- 1.8 PHY.RETRAIN
- 1.9 TRAIN.ERROR
UCIe™ 物理层包括链路初始化、训练、电源管理状态、通道映射、通道反转和加扰。 UCIe™ 控制器包括芯片间适配器层和协议层。适配器层通过链路状态管理以及协议和flit格式的参数协商来确保可靠传输。 UCIe™架构支持多种标准协议,例如PCIe、CXL和Streaming。
今天继续介绍UCIE PHY LSM各状态;
1 UCIE PHY LSM
1.1 RESET
RESET:该状态是起始状态,等待相关PLL Lock稳定后,即进入下一状态;主要有:
- SideBand Clock固定800 MHz稳定;
- MainBand及D2D Adapter的clock稳定;
- MainBand时钟为最低IO速率(2GHz,即对应4 GT/s);
- 触发链路训练条件之一被触发:1.UCIE Link Control寄存器Link Trainning位被置1;2.Adapter触发RDI链路训练;3.Sideband 接口上连续接收到两笔 SBINIT Pattern (64 UI Clock + 32 UI Low);
1.2 SBINT
SBINT状态期间,其中TX侧Module会在SB Clock 和 Data Lane上同时发送clock pattern, RX在检测到连续2个clock pattern后即表示成功。此后,其 Tx 继续发送 4 个 Clock Pattern,然后停止发送 Clock Pattern。继续发送{SBINT Out of Reset} 的massage以及{SBINT done req}和{SBINT done resp}的message;然后即会进入下一状态。
1.3 MBINT
MBINT该状态又具体分为6个子状态,如下图所示,依次执行。在 MBINIT 期间,主要是进行 Mainband 初始化、修复或减宽。Mainband Lane 的检测跟 Sideband 稍有不同,Sideband 是在 Clock、Data Lane (Normal & Redundant for Advanced) 上同时发生 Test Pattern,而 Mainband 是按照 Clock、Track、Valid、Data 依次测试。
1.3.1 MBINT.PARAM
在该状态期间,链路两端的 UCIe Module 进行参数交换,以协商链路速度、链路宽度及其他 PHY 相关参数。协商交换的具体参数有:Voltage Swing、Maximum Data Rate、Clock Mode、Clock Phase、Module ID。这具体参数会直接在SideBand Message上来传输{MBINIT.PARAM Configuration Req}、{MBINIT.PARAM Configuration Resp};
1.3.2 MBINIT.CAL
MBINIT.CAL 进行一些 Calibration 相关操作,比如 Tx 占空比校正、Rx 偏移及 Rx 参考电压 Vref 校正。涉及到的 SB Msg:{MBINIT.CAL Done Req}、{MBINIT.CAL Done Resp};
1.3.3 MBINIT.REPAIRCLK
对于先进封装,该状态下检测 Clock 及 Track 功能,存在问题时进行 Clock 及 Track Lane 修复–即替换redundant lane;对于标准封装,仅检测 Clock 及 Track Lane 的功能。每一根 Clock 或 Track Lane 先后独立进行检测,检测其是否存在短路或断路。这几条 Lane 的检测顺序为:TCKP_L -> TCKN_L -> TRDCK_L -> TTRK_L。
检测过程如下:
1.检测之前,先通过 {MBINIT.REPAIRCLK init req}、{MBINIT.REPAIRCLK init resp} 进行握手。
2.检测的时候,在 Clock 或 Track Lane 上发送 128 次特定格式的 Clock Repair Pattern (16 cycle pattern + 8 cycle low)。Tx 发送完 Clock Repair Pattern 后,发送 {MBINIT.REPAIRCLK result req} 给对方,请求对方反馈检测结果。
3.Rx 该条 Lane 上连续收到 16 次即可认为该 Lane 完好。如若该 Lane 没有检测到,表明该 Lane 发生了断路;若该 Lane 及之外的 Lane 同时检测到了,表明发生了短路。检测完后将检测结果记录在相关寄存器中。
4.Rx 在收到 {MBINIT.REPAIRCLK result req} 后通过 {MBINIT.REPAIRCLK result resp} 反馈结果给对方。
经过以上步骤会得到以下情况:1.Lane功能都正常;2.需要修复且可以修复:如果需要 Lane Repair 且可修复,则进行 Lane Repair 相关操作。Tx 发送 {MBINIT.REPAIRCLK apply req} 给对端,收到对端发来的 {MBINIT.REPAIRCLK apply resp} 后即可在 Tx 进行 Clock Lane Repair。Tx 修复完成后,需要检测下是否修复成功。检测时不检测 Redundant Lane 了,已经被占用了;3.需要修复但无法修复。 考虑到只有一条 Redundant Lane,如果有 2 条及以上的 Clock Lane 有问题,那就不可修复了,则 Rx 进行相关握手跳至 TRAINERROR 状态。
如果无需进行 Clock Lane Repair 或已经修复完毕且检测成功,发送 {MBINIT.REPAIRCLK done req},收到对端反馈的 {MBINIT.REPAIRCLK done resp} 后,状态机进入 MBINIT.REPAIRVAL 修复 Valid Lane。
1.3.4 MBINIT.REPAIRVAL
该过程检测 Mainband Data Valid Lane,若存在短路或短路,则进行修复。检测及修复过程跟 Clock/Track Lane 的过程类似,只是检测的 Lane、Pattern 及 Msg 稍有区别:1.检测的 Lane 有 TVLD_P 及 TRDVLD_P,先后依次检测。2.测试 Pattern 为 4 UI High + 4 UI Low。3.Msg 跟 Clock Repair Msg 类似,所有的 Msg 名称由 REPAIR 换成了 REPAIRVAL。
1.3.5 MBINIT.REVERSALMB
只有在 Mainband 的 Clock 及 Valid Lane 能够正常工作的前提下,MBINIT.REVERSALMB 状态才有效,否则 Lane Reversal 是没有意义的。如有需要,该状态时进行 Lane 序重排。
1.3.6 MBINIT.REPAIRMB
MBINIT.REPAIRMB 状态下,对 Mainband Data Lane 的功能进行检测。若先进封装的 UCIe 出现坏 Lane,在修复能力之内时进行坏 Lane 修复,在修复能力之外时进入 TRAINERROR 状态。若标准封装的 UCIe 出现了坏 Lane,进行减宽操作,比如:即将 X16 减宽为 X8。
1.4 MBTRAIN
MBTRAIN 状态下对 Mainband 进行训练,将 UCIe 链路速度提升到双方协商好的最高速率,并调整 Clock 边沿到最佳采样时刻。UCIe 链路两端的两个 UCIe Module 通过 Sideband 上的 Msg 进行握手来进入和退出各个子状态,如果进入某个子状态后不需要相关操作,可以退出去,但这个子状态还是要进来的。
若在链路训练连续失败次数达到指定上限之后,LSM 回退到 RESET 状态,等待再次触发链路训练。若软件或 RDI 触发的链路训练失败,或 Link Up 转为 Link Down,物理层需要上报 RDI 的 Fatal Error。
1.5 LINKINIT
LINKINIT 是 LSM 进入 ACTIVE 之前的最后一个状态,用以 D2D Adapter 完成初始链路管理。该状态时,进行 RDI Bring Up。RDI Bring Up 成功之后,UCIe Link Control Register 中的 Start UCIe Link Training 字段清零,LFSR 复位。
1.6 ACTIVE
PHY LSM 进入 ACTIVE 状态,表示物理层已经完成了初始化,RDI 已经 Active,上层可以在 UCIe Link 上交换数据了。此时传输的数据是经过 LFSR 加扰的。RDI burig up之后就进入FDI bring up。
1.7 L1/L2
L1 及 L2 是 UCIe 的低功耗状态,其比 ACTIVE 状态下的 Dynamic Clock Gating 功耗更低。本端 Adapter 及对端均可以请求退出低功耗状态。L1 退出后是 MBTRAIN.SPEEDIDLE,L2 则是直接退出到 RESET 状态。
1.8 PHY.RETRAIN
Local Die 的 Adapter、PHY 及 Remote Die 都可以触发 PHY 进入 Retrain。 进入 PHYRETRAIN 状态后,变量 PHY_IN_RETRAIN 置一。
- Local Adapter 发起 Retrain
- Local PHY 发起 Retrain
- Remote Die 发起 Retrain
1.9 TRAIN.ERROR
UCIe 初始化期间发生错误或者需要 LSM 回退到的 RESET 时,LSM 先进入 TRAINERROR 状态。若 Sideband 已经 Active 了(SBINIT 之后的状态),此时 UCIe 链路一端的 UCIe Module 需要进入 TRAINERROR,应跟链路对端进行握手,双双进入该状态。若 Sideband 还没 Active,则不必告诉对端,其自行进入 TRAINERROR 即可。对端长时间得不到相关响应也会自己进入 TRAINERROR。
涉及到的 Sideband Message 握手信号:{TRAINERROR Entry Req}和{TRAINERROR Entry Resp};
如果 Req 发出后 8ms 未等到 Resp,则直接进入 TRAINERROR。
这块是十分偏数模混合,涉及电气参数、时钟等,对于数字工程师来说,更多的还是controller,在这里还只是简单给大家介绍一下;
【REF】
1.https://www.cnblogs.com/wujianming-110117/p/16793479.html
相关文章:
【简单谈谈UCIE PHY LSM链路训练】
UCIE PHY LSM链路训练 1 UCIE PHY LSM1.1 RESET1.2 SBINT1.3 MBINT1.3.1 MBINT.PARAM1.3.2 MBINIT.CAL1.3.3 MBINIT.REPAIRCLK1.3.4 MBINIT.REPAIRVAL1.3.5 MBINIT.REVERSALMB1.3.6 MBINIT.REPAIRMB 1.4 MBTRAIN1.5 LINKINIT1.6 ACTIVE1.7 L1/L21.8 PHY.RETRAIN1.9 TRAIN.ERROR…...
数学二常用公式(高等数学+线性代数)
目录 高等数学第一章 函数、极限和连续第二章 一元函数微分学第三章 一元函数积分学第四章 多元函数微分学第五章 多元函数积分学第六章 常微分方程 线性代数线性代数篇章涉及的知识内容及常用公式第一章 行列式第二章 矩阵第三章 向量第四章 线性方程组第五章 矩阵的相似化简第…...
【Java计算机毕业设计】Springboot+vue动物保护协会管理系统【源代码+数据库+LW文档+开题报告+答辩稿+部署教程+代码讲解】
源代码数据库LW文档(1万字以上)开题报告答辩稿 部署教程代码讲解代码时间修改教程 一、开发工具、运行环境、开发技术 开发工具 1、操作系统:Window操作系统 2、开发工具:IntelliJ IDEA或者Eclipse 3、数据库存储:…...
鸿蒙面试---1208
HarmonyOS 三大技术理念 分布式架构:HarmonyOS 的分布式架构使得设备之间能够无缝协同工作。例如,它允许用户在不同的智能设备(如手机、平板、智能手表等)之间共享数据和功能。比如,用户可以在手机上开始编辑文档&…...
【论文阅读】一名系统研究者的攀登之路
作者:陈海波 陈海波是操作系统、系统结构、并行与分布式系统方向大牛,上海交通大学大牛团队 学习体会: 计算机系统论文准备周期较长,十有八九都是在解决新问题的路上~ 因此学习大佬的学习经验,少踩坑,把主…...
MySQL 索引(B+树)详解
MySQL 索引(B树)详解 MySQL逻辑架构对比InnoDB与MyISAM存储结构存储空间可移植性、备份及恢复事务支持AUTO_INCREMENT表锁差异全文索引表主键表的具体行数CRUD操作外键 sql优化简介什么情况下进行sql优化sql语句执行过程sql优化就是优化索引 索引索引的优…...
【不稳定的BUG】__scrt_is_managed_app()中断
【不稳定的BUG】__scrt_is_managed_app函数中断 参考问题详细的情况临时解决方案 参考 发现出现同样问题的文章: 代码运行完所有功能,仍然会中断 问题详细的情况 if (!__scrt_is_managed_app())exit(main_result);这里触发了一个断点很奇怪,这中断就发生了一次,代…...
护网蓝队日志分析
Windows日志分析 一、事件查看器 在「事件查看器」中,可以查看系统中记录的所有事件日志。操作步骤如下: 1、打开 Windows 事件查看器 1、使用Windows R快捷键打开「运行」对话框,输入eventvwr.msc,然后按回车键打开事件查看…...
滤波器设计(八)-McClellan-Parks design algorithm
步骤 Initialization: Choose an extremal set of frequences {ωi(0)}.Finite Set Approximation: Calculate the best Chebyshev approximation on the present extremal set, giving a value δ(m) for the min-max error on the present extremal set.Interpolation: Calc…...
ElasticSearch常见的索引_集群的备份与恢复方案
方案一:使用Elasticsearch的快照和恢复功能进行备份和恢复。该方案适用于集群整体备份与迁移,包括全量、增量备份和恢复。 方案二:通过reindex操作在集群内或跨集群同步数据。该方案适用于相同集群但不同索引层面的迁移,或者跨集…...
C#对Excel表csv文件的读写操作
C#对Excel表csv文件的读写 一、变量定义二、加载主窗口三、创建表头四、向表中添加数据五、从表中读取数据六、单击按钮向表中添加数据七、测试验证 一、变量定义 #region 变量定义 private string CurAppExeDir System.AppDomain.CurrentDomain.BaseDirectory; private strin…...
【MySQL】mysql服务器架构
目录 1、背景2、mysql服务器架构解释3、总结 1、背景 简单理解一下mysql的服务器架构。 2、mysql服务器架构解释 mysql的架构图如下: 主要分为三部分:客户端、服务端、存储引擎。接下来我们来解释一下各个部分: 客户端 用来连接mysql服务…...
Vue Web开发(三)
1. 添加el-menu样式 将Home.vue文件重新命名为Main.vue文件,本节涉及新的home目录和User目录下的index.js文件,因为侧边导航栏Aside和顶部Header是在每一个页面都存在的,所以重新命名为Main,而home文件夹下的index.js则对应系统首…...
Java项目实战II基于微信小程序的小区租拼车管理信息系统 (开发文档+数据库+源码)
目录 一、前言 二、技术介绍 三、系统实现 四、核心代码 五、源码获取 全栈码农以及毕业设计实战开发,CSDN平台Java领域新星创作者,专注于大学生项目实战开发、讲解和毕业答疑辅导。 一、前言 随着城市化进程的加速,小区居民对于出行方…...
云安全:云计算安全
目录 云安全的定义和重要性 云安全的关键组成部分 云安全技术实现 云安全最佳实践 云安全的定义和重要性 云安全是指在云计算环境中保护数据、应用程序和相关服务不受威胁的一系列策略、技术和控制措施。随着云计算的快速发展,云安全已成为企业和个人用户最关心…...
git clone加速(亲测好用)
用公司网git clone特别卡,本以为宿舍网会好一点,回来下的时候也只有几十kb. 然后找到了一种方法,就是在原始下载命令前加一个gitclone 比如 git clone https://github.com/infiniflow/ragflow.git替换成 git clone https://gitclone.com/gi…...
Python 网络爬虫进阶:突破数据采集的边界
在成功踏入 Python 网络爬虫的入门之境后,我们犹如初窥宝藏的探险家,领略到了数据采集世界的奇妙与潜力。而此刻,进阶之路在脚下徐徐展开,它将引领我们深入这片领域的更深处,挖掘出更为强大和精妙的爬虫技艺࿰…...
【网络安全】网站常见安全漏洞 - 网站基本组成及漏洞定义
文章目录 引言1. 一个网站的基本构成2. 一些我们经常听到的安全事件3. 网站攻击者及其意图3.1 网站攻击者的类型3.2 攻击者的意图 4. 漏洞的分类4.1 按来源分类4.2 按危害分类4.3 常见漏洞与OWASP Top 10 引言 在当今的数字化时代,安全问题已成为技术领域不可忽视的…...
[论文解读]Street Gaussians: Modeling Dynamic Urban Scenes with Gaussian Splatting
Street Gaussians是年初的一篇动态场景重建论文, 在当时是做到了SOTA,至今为止很多自动驾驶或者动态场景重建的文章都会将Street Gaussians作为实验的比较对象,这也表明了这篇文章的重要性,今天就一起来看看这篇文章; …...
在Github上上传大文件的办法(图文版)
在上一篇笔记中,笔者用图文的形式介绍了如何在GITHUB中上传文件夹。 可参考这篇笔记 在GITHUB上传本地文件指南(详细图文版)-CSDN博客 但接下来,笔者在继续上传别的文件的过程中,遇到了新的问题,gitbash…...
关于springBoot+vue项目中配置SSL证书问题
前端可以通过https进行访问 1.前端在访问后端接口时,使用https进行访问,在request.js配置文件中,这个文件是配置axios的基本请求的,在基础请求地址中改为https方式 2.需要在Linux中的nginx中配置ssl证书,具体请参考&…...
GitLab
Git服务器 一、概念 C/S 架构的 Git 服务端是存放代码的公用平台是多人并行协作的核心部分通常单独部署在一台独立的服务器上客户端可以通过网络访问服务器上的仓库 GitLab搭建 一、部署 1、安装依赖包 [rootGitLab ~]# yum -y install policycoreutils-python-utils.noarc…...
TCP客户端服务器端通信(线程池版)
1、什么是监听套接字,和UDP相比,TCP为什么文件描述符变多了? 在网络编程中,TCP和UDP是两种常见的传输协议,它们之间最大的不同之一在于连接的管理方式。为了更好地理解这个区别,我们可以用一个生动的比喻来…...
go语言的成神之路-标准库篇-fmt标准库
目录 一、三种类型的输出 print: println: printf: 总结: 代码展示: 二、格式化占位符 %s:用于格式化字符串。 %d:用于格式化整数。 %f:用于格式化浮点数。 %v࿱…...
高级java每日一道面试题-2024年12月08日-JVM篇-什么是类加载器?
如果有遗漏,评论区告诉我进行补充 面试官: 什么是类加载器? 我回答: 在Java高级面试中,类加载器(ClassLoader)是一个重要的概念,它涉及到Java类的加载和初始化机制。以下是对类加载器的详细解释: 定义与作用 类加…...
数据库之连接池Druid
Druid是一个由阿里巴巴开源的高性能数据库连接池组件,它在许多项目中都是首选的连接池实现。Druid不仅提供了高效的连接管理,还具备丰富的监控和统计功能,以及强大的安全特性。 一、功能介绍 1、高效连接管理 Druid采用了高效的连接管理机…...
【如何审稿】Notes on Constructive and Positive Reviewing
学习体会: 用chatgpt翻译的2005年审稿人如何审稿的一篇文章, 学着用审稿人的角度评审自己写的稿件~ 全文摘录: 作为审稿人,您代表的是您的社区,您的审稿意见应当是专业和建设性的。会议的质量取决于审稿的质量。审稿人的任务是选出高质量、创…...
1.文本方块方法(Spacy Text Splitter 方法)Can‘t find model ‘zh_core_web_sm‘
一、概述 执行如下: def split_spacy(text):import spacynlp spacy.load( "zh_core_web_sm" ) doc nlp(text) for s in doc.sents: print(s) # d:\programdata\anaconda3\envs\python310\lib\site-packages if __name__"__main__":text &q…...
IT类项目实施流程
一、项目启动准备阶段 (一)甲方组建项目委员会 **甲方委员会确立:**指定负责人,全权负责整个项目人员、启动及时间调配、需求确定及需求变更、项目节点的验收、项目款项的支付工作。 (二) 乙方组建项目实施工作组 **乙方实施工作组确立:**工作组主要包括项目经理、需…...
数据分析平台业务落地痛点分析
在当今数字化时代,数据已成为企业决策和运营的核心驱动力。数据分析平台作为数据处理和洞察的重要工具,其业务落地过程中的痛点分析对于企业的数据战略至关重要。本文将通过概述、功能点、背景、业务点、底层原理等多个方面,深入剖析数据分析…...
java语言学习(5)
第九章 目录 类变量和类方法 理解main方法语法 代码块 单列设计模式 final关键字 抽象类 接口 类变量/静态变量 该变量最大的特点就是会被本类的所有对象实例共享,类变量可以通过类名来访问 分析代码,探讨内存的分配 class Child{private Str…...
基于SSM框架点餐管理系统(计算机毕业设计)论文,Java
系统合集跳转 源码获取链接 一、系统环境 运行环境: 最好是java jdk 1.8,我们在这个平台上运行的。其他版本理论上也可以。 IDE环境: Eclipse,Myeclipse,IDEA或者Spring Tool Suite都可以 tomcat环境: Tomcat 7.x,8.x,9.x版本均可 操作系统…...
独家首发 | 基于 KAN、KAN卷积的轴承故障诊断模型
往期精彩内容: Python-凯斯西储大学(CWRU)轴承数据解读与分类处理 基于FFT CNN - BiGRU-Attention 时域、频域特征注意力融合的轴承故障识别模型-CSDN博客 基于FFT CNN - Transformer 时域、频域特征融合的轴承故障识别模型-CSDN博客 P…...
nginx-proxy-manager初次登录502 bad gateway
nginx-proxy-manager初次登录502 bad gateway 按照官方docker-compose安装后,页面如下: 默认账户密码: adminexample.com/changeme点击sign in,提示Bad Gateway 打开调试 重装后依然如此,最后查阅githup issue 找到答案 https://github.com/NginxProxyManager/nginx-proxy-…...
棋牌项目Go的日志打印问题
棋牌项目Go的日志打印问题 项目使用 go work 管理模块 github.com/spf13/viper 通过 application.yml 加载配置 $ tree . ├── README.md ├── common │ ├── application.yml │ ├── config │ │ └── config.go │ ├── go.mod │ ├── go.su…...
基于SpringBoot校园台球厅人员与设备管理系统设计与实现
1.1课题背景与意义 在Internet高速发展的今天,计算机的应用几乎完全覆盖我们生活的各个领域,互联网在经济,生活等方面有着举足轻重的地位,成为人们资源共享,信息快速传递的重要渠道。在中国,网上管理的兴起…...
样品前处理工作站自动化操作
样品前处理工作站通过集成多种技术和自动化模块,实现了对样品的高效、精准处理。以下是实现自动化操作的关键步骤和原理: 1、集成多种技术:工作站通常集成了液体处理、固相萃取、离心、过滤等多种技术。这些技术的结合使得工作站能够完成从样…...
在 Vue 3 中实现点击按钮后禁止浏览器前进或后退
在 Vue 3 中实现点击按钮后禁止浏览器前进或后退,我们可以通过 ref 和 watch 来管理状态,同时使用 onBeforeUnmount 来清理事件监听。 使用 Vue 3 实现: <template><div><button click"disableNavigation">点击…...
【Redis集群】使用docker compose创建docker集群,并暴露外部接口
使用 Docker Compose 创建一个 Redis 集群并暴露外部接口需要配置 docker-compose.yml 文件。以下是一个基本的步骤,包括 Redis 集群的创建和外部接口的暴露。 1、创建 docker-compose.yml 首先,您需要创建一个 docker-compose.yml 文件,配…...
RabbitMq 基础
文章目录 一、初识 MQ1.1 同步调用:1.2 异步调用: 二、RabbitMQ三、SpringAMQP3.1 依赖和配置文件3.2 消息发送和接收:3.2.1 消息发送:3.2.2 消息接收: 3.3 WorkQueues 模型:3.4 交换机类型:3.4…...
类文件结构详解
一、引言 Java 类文件是 Java 虚拟机执行的基本单元。它包含了 Java 程序的字节码以及其他重要的元数据信息。了解类文件结构可以帮助我们更好地理解 Java 程序的编译过程、运行机制以及如何进行优化。 二、类文件结构概述 Java 类文件采用一种紧凑的二进制格式,主…...
01_Linux
一.Linux简介 1.1 Linux介绍 Linux是一套免费使用和自由传播的操作系统。说到操作系 统,大家比较熟知的应该就是Windows和MacOS操作系统, 我们今天所学习的Linux也是一款操作系统 1.2 Linux发展历史 时间:1991年 地点:芬兰赫尔…...
区块链与AI结合:驱动Web3的未来发展
Web3作为下一代互联网的核心理念,强调去中心化、用户主权和透明性。而区块链技术和人工智能(AI)则是推动Web3发展的两大关键力量。两者的结合不仅为Web3带来了新的可能性,还推动了智能化、透明化、自治化等特点的实现。本文将探讨…...
如何解决 docker 容器中 “-bash: ping: command not found” 错误 ?
在 Docker 的世界里,遇到错误是学习曲线的一部分,其中一个常见的错误是: -bash: ping: command not found。当您在 Docker 容器中尝试使用 ping 命令来测试与其他网络机器或服务的连接,但该命令在您的容器环境中不可用时ÿ…...
Leetcode 每日一题 242.有效的字母异位词
目录 问题描述 示例 题目要求 解决方案 算法思路 过题图片 代码实现 算法分析 优化思路 优化后的代码实现 优化后的算法分析 题目链接 问题描述 给定两个字符串 s 和 t,我们需要编写一个函数来判断 t 是否是 s 的字母异位词。字母异位词指的是两个字符串…...
centos7搭建FTP详细讲解
文章目录 1、ftp服务1、工作原理2、工作模式3、身份验证模式4、ftp服务器配置5、ftp客户端操作 1、ftp服务 1、工作原理  是一个cs架构 2个通道,21端口为控制…...
YOLOv8-ultralytics-8.2.103部分代码阅读笔记-build.py
build.py ultralytics\data\build.py 目录 build.py 1.所需的库和模块 2.class InfiniteDataLoader(dataloader.DataLoader): 3.class _RepeatSampler: 4.def seed_worker(worker_id): 5.def build_yolo_dataset(cfg, img_path, batch, data, mode"train"…...
JAVA-动态代理
文章目录 概要两种主要方式JDK 动态代理Proxy 类作用:常用方法: InvocationHandler 接口作用: 目标对象、代理对象、被代理对象JDK 动态代理工作原理 cjlib 动态代理demo 对比 概要 Java 动态代理利用 Java 的反射机制,可以在运行…...
【前端】React_Next.js
定期更新,建议关注、收藏! 安装 要使用react的框架,都应当安装node.js conda install nodejs选择Next.js 并创建项目 npx create-next-applatest可以看到目录结构生成如下 作为网页中的一个子路由 想让其嵌入已经写好的项目中…...
深入理解malloc与vector:内存管理的对比
引言 在编程中,内存管理是一个至关重要的环节。无论是C语言中的malloc函数,还是C标准库中的vector容器,它们都在内存分配和释放上扮演着关键角色。然而,它们的设计理念和用法有着显著的不同。本文将深入探讨malloc和vector的区…...