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

AI Rack架构高速互连的挑战:损耗设计与信号完整性的设计框架

 

在AI驱动的时代,系统设计已经从单一PCB的视角,逐步转向以整个rack为单位来考量。 对于信号完整性而言,焦点以不再局限于单一PCB上的损耗,而是扩展到芯片与芯片之间的端到端互连损耗(end-to-end interconnect loss)。 这种转变反映了现代高性能系统设计的新需求与挑战,也让互连损耗成为设计者无法忽视的核心课题。

比如最近大家一直在关注的GB200,Compute Tray即透过Cable Cartridge与Switch Tray高速连通,这种End-End loss(Blackwell to NVswitch)大概落在40~45dB,也是目前SerDes做Equalization的上限。

 

晶片到芯片的互连损耗可以细分为以下三个主要部分,每一部分都对整体系统性能产生重要影响:

1. 封装载板与PCB损耗

载板与PCB损耗这部分是整体讯号互连损耗的重要组成,主要包括以下几个方面:

金属损耗

金属损耗主要分成金属(通常是铜)本身的电阻效应以及表面粗糙度

铜箔电阻损耗

PCB上绝大多数的金属是铜,本身就带有些许电阻,低频时电流较为平均分布在铜箔内部,损耗较小; 高频时会有集肤效应,电流会分布在铜箔表面,电流截面积下降,导致高频电阻升高的情况下高频时损耗会上升。

 

表面粗糙度

再加上PCB铜箔的表面不会是一个完整的平面,微观来讲可以看到些许的颗粒,铜箔的这些颗粒会增加其与树脂的表面接触面积,使其结合强度变高,铜皮会较不易脱落,不过在高频时的损耗会急剧增加!

 

透过改善铜皮的表面粗糙的行为,可以改善表面粗糙度,通常以Ra或是Rz呈现,对SI工程师而言,我们较常关心的是Rz。 而依不同铜皮的表现又分成不同等级,其中有RTF(Reverse Treated Foil)、VLP(Very Low-Profile)、HVLP(Highly Very Low-Profile)、ANP(Any No-Profile)等等。

目前产业界最高档的铜箔是HVLP5,几乎已经是没有任何的Rz,可以将表面粗糙度降低许多! 不过CCL与PCB厂还在努力克服没有颗粒的铜箔对于材料拉力(Peeling)的影响,预计今年(Y2025)会有好消息。

 

 

介质损耗

PCB介质有所谓的损耗正切参数(Loss Tangent)或是所谓DF(Dissipation Factor),这两者指的是同一件事,代表材料在高频信号通过时,会有多少能量损耗(消耗成热能等)。

从电磁学的角度,介电材料会有「实部 \( \mathrm{Re}(\varepsilon) \)」与「虚部 \( \mathrm{Im}(\varepsilon) \)」的介电常数:

• 实部代表电场储存能量的能力;

• 虚部代表材料吸收并转换这些能量的损耗能力。

而 DF可以写成:

tan(δ)≈Im(ε)Re(ε)

这里 \( \delta \) 是介电损耗角。 数值越大,表示「虚部」在整个介电常数所占比重越高,也就是介质损耗越显著。

来个比喻:我们可以将介质损耗则可以比拟为水流过程中管壁吸收能量、造成水流衰减的效果。 若管壁很粗糙、吸水量大(损耗大),水流一路过去就会衰减得很厉害; 反之,若管壁光滑且不吸水(损耗小),水能保有更多原本的流量与压力。

 

辐射损耗

将输出信号电压扣除信号的反射与系统内的损耗后,剩余的能量可以视为辐射信号。 辐射讯号实际上是一种损耗,因为这些能量会直接散布到环境中。 然而,从系统SI的角度来看,我们通常不特别关注这部分损耗。 原因在于,只要系统的阻抗设计得当,辐射能量通常会被控制在非常小的范围内,对整体性能的影响可以忽略不计。

\( \text{Radiation Loss} \; =\; 1 \; -\; |S_{11}|^2 \; -\; |S_{21}|^2 \)

镀穿孔与雷射孔

在PCB设计中,我们习惯将互连(Interconnect)分为2D与3D走线两类。 2D走线通常指的是传输线,这些线路可以使用2D软件进行高效的模型化,例如 Keysight ADS 的 CILD 模块或常见的 Polar 软件,都能很好地处理这类结构。 而3D结构则包括镀穿孔(Plating Through Hole, PTH)与激光孔(Laser Via),这些结构需要借助3D电磁场模拟软件来建模,如 Cadence 的 Clarity 或 Ansys 的 HFSS。 相较于2D软件,3D模拟的分析时间更长,对技术要求也更高,并且需要较长的学习与建模周期,才能确保模型与软件设定的准确性。

 

随着产业迈向 224G-PAM4 的时代,Via 已成为设计中无法忽略的关键因素。 由于服务器或交换机主板的厚度不断增加(目前厚度即将超过6mm),Via的长度也随之变长。 同时,频率已攀升至53GHz,在这样的条件下,单一Via的损耗可能高达1.5dB至2dB,所有Via的损耗就占掉了整个通道损耗的15%左右。 更为关键的是,在目前PCB材料升级受限的情况下,Via所带来的损耗显得格外突出,对整体通道性能的影响不容忽视。 (P.S. 所有Cable损耗均包含与其连接的Connector损耗)

 

2. 连接器损耗

开头已经提到,现今的AI system是不同机柜间的连结,讯号路径上会有许多的连接器,例如GB200的Compute Tray对外就有一个Backplane连接器跟Cable cartridge对接,再利用铜缆线接到Switch Tray。 (图为Samtec的Backplane连接器,或称BP Connector)

 

这些连接器是3D的架构,设计上很仰赖3D建模的技术,且与PCB via类似,缺乏完整的reference plane,因此连接器的高频特性不容易控制,从图可以看到高频损耗抖动的非常严重! 最好的做法就是做的精小,可是会遇到机械结构较为薄弱,焊接或是组装不良的议题,相当不好搞!

 

3. 铜缆损耗

以现在的AI system来说,这部分又分成两种

  • 内部飞线(Internal Flyover Cable):例如GB200的Switch Tray内部即是用这种Amphenol的飞线。

 

  • 外部系统间连接(External Cable):例如交换机网络对连需要用到的DAC cable(Direct-Access Cable)或是类似GB200 Compute Tray与Switch Tray外部的Cable,都是属于这类型的外部连接媒介。

因为Cable具有稳定的阻抗特性、良好的reference path以及较低的材料DF,所以比PCB CCL材料的损耗还来的小很多。 对比M8等级的材料来看(例如台光电的EM892K+HVLP4铜箔),在224G-PAM4的应用上,30AWG的Cable的损耗大约是0.35dB/inch而PCB的损耗大约是1.3dB/inch,两者差别极大!

 

然而没有这么美好的事情,有好就有坏,用Cable会有几个Trade-off:

  • 成本较高:Cable本身就已经很贵了,还需要加上连接Cable的连接器的成本,所以使用内部 Cable的机台成本都较高。
  • 散热问题:因为需要内部连接器组装Cable,这些连接器会有一定的高度(通常20mm),这会影响内部的风流,使得ASIC或是GPU的散热效果变差。 当然如果走水冷(Liquid Cooling),可能是比较没差?

 

  • 组装与维修:多了内部连接器,对于系统组装一定会有所影响,毕竟多了一道工序。 且这种连接器为了做在内部,会比较精小,所以机械强度比较弱,很容易掉件,且维修时整台机台都需要开盖检查,较为麻烦!
  • 模态转换损耗:Cable结构的不均匀性(P/N Skew)会引发额外的模态转换损耗(Mode Conversion Loss),这个损耗随着数据传输速度越来越快而越难被忽视,这不只牵扯到Cable本身制造上的稳定度,还得分析当Cable转折时是否会影响到差动对两条线的均匀性, 抑或是Cable与Connector在焊接过程中的不匹配性,相当地复杂!

 

总结

随着数据传输速度不断提升,对损耗的要求也越来越严苛,讯号完整性的重要性日益凸显! 这不仅仅是对SI工程师的专业要求,从业人士也需要具备基础的理解能力。 无论是如何解读供应商提供的损耗规格,还是熟悉零组件的技术迭代,这些都成为不可或缺的能力。 此外,能够凭借专业知识提出针对性问题,例如询问Cable的P/N Skew等被设计「包装」的细节,也是未来工作的核心能力之一。

未来,我们将有机会逐一剖析如何有效控制与设计这些损耗,敬请期待!

 

相关文章:

AI Rack架构高速互连的挑战:损耗设计与信号完整性的设计框架

在AI驱动的时代,系统设计已经从单一PCB的视角,逐步转向以整个rack为单位来考量。 对于信号完整性而言,焦点以不再局限于单一PCB上的损耗,而是扩展到芯片与芯片之间的端到端互连损耗(end-to-end interconnect loss&…...

React useCallback函数

应用场景:父组件向子组件传递函数类型的props时...

【CTFer成长之路】XSS的魔力

XSS闯关 level1 访问url: http://c884a553-d874-4514-9c32-c19c7d7b6e1c.node3.buuoj.cn/level1?usernamexss 因为是xss,所以对传参进行测试,修改?username1,进行访问 会发现username参数传入什么,welcome之后就…...

多模态RAG演进-MRAG1.0->MRAG2.0->MRAG3.0

MRAG1.0 MRAG1.0是MRAG框架的初始阶段,通常被称为“伪MRAG”。它是对RAG范式的简单扩展,支持多模态数据。MRAG1.0通过利用现有的基于文本的检索和生成机制,实现了从RAG到MRAG的平稳过渡。 MRAG1.0的架构包括三个关键组件: 文档解…...

超预期!淘宝闪购提前开放全国全量,联合饿了么扭转外卖战局

饿了么由守转攻。 作者|景行 编辑|杨舟 淘宝饿了么,终于落子,“淘宝闪购”,横空出世,仅仅2天,业务加速。 4月30日上午,当外卖战场陷入沉寂时,淘宝宣布将即时零售业务“小时达”升级为“淘宝闪…...

Proxmox VE 8.4 显卡直通完整指南:NVIDIA 2080 Ti 实战

背景: PCIe Passthrough 技术允许虚拟机直接访问物理GPU设备,绕过宿主机系统,从而获得接近原生性能的图形处理能力. 参照:从Proxmox VE开始:安装与配置指南。在R740服务器完成了proxmox的安装,并且安装了一…...

算法技巧——打表

什么是打表? 打表,是一个信息学专用术语,意指对一些题目,通过打表技巧获得一个有序表或常量表,来执行程序某一部分,优化时间复杂度。这种算法也可用于在对某种题目没有最优解法时,用来得到分数的…...

JavaScript基础-逻辑运算符

在JavaScript编程中,逻辑运算符用于判断表达式的真假,并根据结果执行特定的操作。掌握逻辑运算符是理解条件控制结构的关键之一。本文将详细介绍JavaScript中的三种主要逻辑运算符:&&(逻辑与)、||(…...

P20:Inception v3算法实战与解析

🍨 本文为🔗365天深度学习训练营 中的学习记录博客🍖 原作者:K同学啊 使用InceptionV3实现天气识别 一、模型结构 Inception v3是Google团队在2015年提出的第三代Inception模型,属于卷积神经网络(CNN&…...

C++ - 数据容器之 list(创建与初始化、元素访问、容量判断、元素遍历、添加元素、删除元素)

一、创建与初始化 引入 <list> 并使用 std 命名空间 #include <list>using namespace std;创建一个空 list list<int> my_list;创建一个包含 5 个元素&#xff0c;每个元素初始化为 0 的 list list<int> my_list(5);创建一个包含 5 个元素&#xf…...

deepseek 技巧整理

1、导出word 和excel 功能&#xff0c;在使用以下提示词。 请帮我列出减肥期间可以吃的水果&#xff0c;并分析该水果含有的营养元素&#xff0c;以表格的形式星现。1.要以html的方式输出 2.要可以直接运行 3.页面要提供可以直接下载word和excel功能...

柔性PZT压电薄膜多维力传感器在微创手术机器人的应用

随着医疗技术的迅速发展&#xff0c;微创手术机器人正在成为外科手术的重要助手。与传统开放式手术相比&#xff0c;微创手术创伤小、恢复快、感染率低&#xff0c;对手术器械的精细操控性和感知能力提出了更高要求。多维力传感器作为机器人“触觉”的核心部件&#xff0c;对提…...

Java学习手册:Spring Boot 自动配置与快速开发

一、Spring Boot 自动配置概述 Spring Boot 的自动配置是其核心特性之一&#xff0c;它能够根据项目的依赖和配置自动地进行 Spring 应用程序的配置。自动配置的工作流程如下&#xff1a; SpringBootApplication 注解 &#xff1a;这是自动配置的起点&#xff0c;它是一个组合…...

ValueError: expected sequence of length 8 at dim 2 (got 0)

问题描述 在PyCharm中使用强化学习运行Python代码时报错ValueError: expected sequence of length 8 at dim 2 (got 0)。 问题原因 实际上原因就是gym中的env对象的reset、step等方法的返回值作了改动 解决方法 1、第一步&#xff1a; 将代码块中的&#xff08;记得改的需…...

AI赋能新媒体运营:效率提升与能力突破实战指南

AI赋能新媒体运营&#xff1a;效率提升与能力突破实战指南 在信息爆炸的新媒体时代&#xff0c;运营人员面临着内容产出压力大、数据分析复杂、用户互动需求高等多重挑战。AI技术的迅猛发展为新媒体运营带来了革命性的变革可能。本文将为您揭示如何利用AI工具提升工作效率、培…...

单词规律(简单)

思路和同构字符串那道题一样。、但是这道题要注意的地方就是&#xff0c;检查 pattern 和 s 的单词数量是否一致以及在进行字符串比较的时候应该用equals来进行比较&#xff0c;而不能用“&#xff01;”&#xff0c;“&#xff01;”比较的是对象引用而非内容。 class Soluti…...

QGraphicsView QGraphicsScene QGraphicsItem 的关系

在Qt的图形视图框架中&#xff0c;QGraphicsView、QGraphicsScene和QGraphicsItem 三者协同工作&#xff0c;构成一个分层的结构&#xff0c;用于高效管理和显示复杂的图形界面。以下是它们的关系和职责的详细说明&#xff1a; 1. 核心角色 类名职责类比QGraphicsItem场景中的…...

re题(52)BUUCTF-[FlareOn5]Minesweeper Championship Registration

BUUCTF在线评测 jadx打开if条件就是flag...

c++环境和vscode常用的一些有用插件

环境 WSL需要安装cmake 编译器g14 应该是包含了所有std:c23把好像包含部分c26 vscode 需要插件cmake vscode clangd 方便提示吧 File Watch 插件目的在保存.h/.cpp文件时候自动执行vscode 的cmake吧 error lens 方便每次显示错误和警告的提示懒得每次点击去看错误 Edit Sugge…...

UE自动索敌插件Target System Component

https://www.fab.com/zh-cn/listings/9088334d-3bde-4e10-a937-baeb780f880f ​ 一个完全用 C 编写的 UE插件&#xff0c;添加了对简单相机锁定/瞄准系统的支持。它最初​​在蓝图中开发和测试&#xff0c;然后转换并重写为 C 模块和插件。 特征&#xff1a; 可通过一组可在…...

从括号匹配看栈:数据结构入门的实战与原理

在计算机科学的世界里&#xff0c;数据结构是程序员的 “瑞士军刀”&#xff0c;不同的数据结构适用于不同的场景&#xff0c;能高效解决各类问题。其中&#xff0c;栈作为一种简单却强大的数据结构&#xff0c;在很多实际应用中发挥着关键作用。今天&#xff0c;我们就通过一个…...

ReLU函数及其Python实现

ReLU函数及其Python实现 文章目录 ReLU函数及其Python实现1. ReLU函数定义2. Python实现3. 在深度学习中的应用总结 1. ReLU函数定义 ReLU&#xff08;Rectified Linear Unit&#xff0c;修正线性单元&#xff09;函数是深度学习中常用的激活函数之一。它的定义非常简单&#…...

Rain World 雨世界 [DLC 解锁] [Steam Epic] [Windows SteamOS]

Rain World 雨世界 [DLC 解锁] [Steam & Epic] [Windows & SteamOS] 需要有游戏正版基础本体&#xff0c;安装路径不能带有中文&#xff0c;或其它非常规拉丁字符&#xff1b; DLC 版本 至最新全部 DLC 后续可能无法及时更新文章&#xff0c;具体最新版本见下载文件说明…...

n8n 工作流画布上下左右移动的操作方法

n8n 工作流画布上下左右移动的操作方法 1. n8n 工作流画布上下移动2. n8n 工作流画布左右移动3. n8n 工作流画布扩大和缩小4. n8n 工作流画布缩放到适合 1. n8n 工作流画布上下移动 鼠标滚轮向上滚动是向上移动鼠标滚轮向下滚动是向下移动 2. n8n 工作流画布左右移动 按照Shi…...

Linux 常用命令合集

一、用户权限管理 切换管理员身份 sudo su&#xff1a;普通用户临时获取 root 权限&#xff0c;需输入当前用户密码。管理员提示符&#xff1a;root主机名:路径#。退出管理员&#xff1a;exit&#xff0c;返回普通用户状态。 以管理员身份执行命令 sudo 命令 参数&#xff1a;…...

B站Michale_ee——ESP32_IDF SDK——FreeRTOS_7 流数据缓冲区、消息缓冲区

一、Stream Buffer流数据缓冲区 流数据缓冲区用来处理像音频之类的流数据&#xff1b; 1.API简介 &#xff08;1&#xff09;创建流数据缓冲区 &#xff08;2&#xff09;向流数据缓冲区中发送数据 &#xff08;3&#xff09;从流数据缓冲区中接收数据 2.示例代码及运行结果…...

HCL(HashiCorp Configuration Language)是一种结构化配置语言

HCL&#xff08;HashiCorp Configuration Language&#xff09;是一种结构化配置语言&#xff0c;语法简洁且可读性强&#xff0c;广泛用于 Docker Buildx Bake、Terraform、Nomad 等工具的配置。以下是其核心语法规则和示例&#xff1a; 1. 基础结构 HCL 使用 块&#xff08;…...

k9s 一个基于终端的 Kubernetes 集群管理工具(TUI)

k9s 是一个基于终端的 Kubernetes 集群管理工具&#xff08;TUI&#xff09;&#xff0c;通过快捷键和交互式命令快速操作资源。以下是其核心用法和常见场景&#xff1a; 1. 基本命令 启动 k9s k9s # 默认连接当前 kubeconfig 配置的集群k9s -n <namespace> # 指定命…...

高等数学-第七版-下册 选做记录 习题10-1

1. 4. 5....

DBeaver连接人大金仓数据库V9

1、官网下载驱动jdbc 打开官网地址&#xff0c;找到下面的V9R1-JDBC&#xff0c;点击后面的下载即可&#xff0c;保存到本地 2、解压最新版的驱动程序 3、把***_JDBC文件夹内的驱动程序复制到DBeaver安装目录下的plugins文件夹里 4、打开dbeaver程序&#xff0c;增加kingbase…...

跟韩学AiOps系列之2025学MySQL系列_如何在MySQL中开启和提交事务?!

跟韩学AiOps系列之2025学MySQL系列_如何在MySQL中开启和提交事务&#xff1f;! 文章目录 一、事务的基本操作1. 开启事务2. 执行事务内操作3. 提交事务4. 回滚事务 二、验证示例&#xff08;适用于 MySQL 5.7&#xff09;步骤 1&#xff1a;准备测试表和数据步骤 2&#xff1a…...

【KWDB 创作者计划】利用KWDB解决工业物联网场景中的海量数据管理难题的思考

利用KWDB解决工业物联网场景中的海量数据管理难题 一、什么是KWDB&#xff1f;二、工业物联网场景中的数据管理痛点2.1 数据量大且增长迅速2.2 数据多样性2.3 实时性需求2.4 数据分析复杂性 三、KWDB 的技术优势与架构解读3.1 时间序列数据的高效管理3.2 高吞吐写入性能3.3 灵活…...

分享国产AI工作流集成数据库完成业务处理

在现代企业应用中&#xff0c;业务流程的自动化和数据管理是提高效率的关键。Taskflow 作为一个强大的任务流管理工具&#xff0c;可以通过集成数据库实现复杂业务逻辑的处理。本文将分享如何利用 Taskflow 集成数据库&#xff0c;优化业务流程&#xff0c;并展示一个实际案例。…...

【每日八股】复习 Redis Day5:集群(上)

文章目录 复习昨日内容缓存雪崩、击穿、穿透的问题描述及解决方案如何保证数据库和缓存的一致性普通方案进阶方案 如何保证缓存删除一定成功&#xff1f;针对业务一致性要求高的场景&#xff0c;如何确保缓存与数据库的一致性&#xff1f;如何避免缓存失效&#xff1f;如何实现…...

linux进程的复制和替换

Linux 进程的复制与替换 一、主函数参数 在 C 语言里&#xff0c;main 函数能够接收参数&#xff0c;其标准形式如下&#xff1a; int main(int argc, char* argv[], char* envp[]);argc&#xff1a;代表命令行参数的数量&#xff0c;为整数类型。argv&#xff1a;是一个字符…...

【质量管理】现代TRIZ问题识别中的功能分析——相互接触分析

在文章【质量管理】现代TRIZ中问题识别中的功能分析——组件分析-CSDN博客中我们知道了如何对产品进行组件分析&#xff0c;那么组件分析出来有什么作用呢&#xff1f;组件分析就是为了接下来相互接触分析使用的。 什么是相互接触 相互接触分析是功能分析的一部分&#xff0c;…...

一种快速计算OTA PSRR的方法(Ⅱ)

1.仿真验证 1.1仿真设置 1.1.1 Test-bench原理 1.1.2 管子参数设置 为了公平地比较性能&#xff0c;设置所有OTA 的输入晶体管M1和M2为相同的gm和偏置电流1uA。 具体晶体管宽长比设置参见5.参考资料中的论文2。 1.2仿真验证 1.2.1 CM OTA 1&#xff09;小信号参数 M1 M…...

【C++】通过红黑树封装map和set

前言&#xff1a; 通过之前的学习&#xff0c;我们已经学会了红黑树和map、set。这次我们要实现自己的map和set&#xff0c;对&#xff0c;使用红黑树进行封装&#xff01; 当然&#xff0c;红黑树内容这里就不在赘述&#xff0c;我们会复用红黑树的代码&#xff0c;所以先将…...

【Java IO流】字节输入流FileInputStream、字节输出流FileOutputStream

目录 0.前言 1.FileInputStream 1.1 概述 1.2 构造方法 1.3 成员方法 1.4 FileInputStream读取文件案例演示 2.FileOutputStream 2.1 概述 2.2 构造方法 2.3 成员方法 2.4 写入文本文件案例演示 3.FileInputStream FileOutputStream拷贝文件 0.前言 本文讲解的是…...

信息收集新利器:SSearch Chrome 插件来了

SSearch 下载地址 SSearch &#x1f623;用途 每次谷歌语法搜索时还得自己写&#xff0c;我想省事一点&#xff0c;弄了一个插件&#xff0c;先加了几个常用的语法&#xff0c;点击后会跳转到对应搜索页面&#xff0c;也可以直接在搜索框微调 后续也会加些其他语法 &#…...

【AI面试准备】AI误判案例知识库优化方案

面试题&#xff1a;建立内部知识库&#xff1a;收集AI误判案例训练领域专属模型。 在回答关于“建立内部知识库收集AI误判案例训练领域专属模型”的面试问题时&#xff0c;建议从以下结构化框架展开&#xff0c;既能体现专业性&#xff0c;又能展现解决问题的系统性和实际落地…...

从零开始讲DDR(8)——AXI 接口MIG 使用(1)

一、前言 在之前的系列文章中&#xff0c;我们已经讨论过了MIG ip的接口内容&#xff0c;配置方式和modelsim独立仿真相关的内容&#xff0c;因此&#xff0c;本文对于之前已经讨论过的相关内容只做简单描述&#xff0c;着重介绍AXI 接口MIG使用上与普通ui接口的不同之处。感兴…...

字符和编码(python)

位数&#xff1a;英文字符使用 1 个字节表示&#xff0c;中文字符通常使用 3 个字节。示例&#xff1a;汉字 “汉” 的 UTF-8 编码是 \xE6\xB1\x89。优点&#xff1a;兼容 ASCII&#xff0c;广泛用于网络传输和文件存储。 Python 中的字符串类型 在 Python 中&#xff0c;字…...

【STM32】定时器输入捕获

STM32 定时器输入捕获功能笔记 一、什么是输入捕获&#xff08;Input Capture&#xff09; 输入捕获是利用定时器的输入通道&#xff0c;在检测到信号电平变化&#xff08;如上升沿或下降沿&#xff09;时&#xff0c;立即将当前计数器的值捕获并保存到捕获寄存器&#xff08…...

spring-ai集成langfuse

1、pom文件 <?xml version"1.0" encoding"UTF-8"?> <project xmlns"http://maven.apache.org/POM/4.0.0" xmlns:xsi"http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation"http://maven.apache.org/POM/4.…...

SALOME源码分析: ParaVis

本文分析SALOME中ParaVis模块。 注1&#xff1a;限于研究水平&#xff0c;分析难免不当&#xff0c;欢迎批评指正。注2&#xff1a;文章内容会不定期更新。 一、核心组件 二、关键流程 三、FAQs 网络资料 SALOME Scientific visualisationPARAVIS Module - Architecture …...

Ubuntu 安装 MySQL8

在 Ubuntu 下安装 MySQL 服务&#xff0c;推荐使用 apt install 官方的 APT 仓库安装方式&#xff0c;这种方式最安全、最稳定、能自动处理依赖关系&#xff0c;也支持后续升级。不推荐在官网手动下载 .deb 包的方式。 配置 Ubuntu 服务器 1. 确认 Ubuntu 系统版本 使用如下命…...

MATLAB图像加密案例

下面是一个使用 MATLAB 编写的简单图像块置乱加密/解密程序,主要利用了函数来组织代码。 这个程序通过将图像分割成小块,然后根据一个密钥(用于随机数生成器种子)打乱这些块的顺序来实现加密。解密过程则使用相同的密钥恢复原始块顺序。 核心思想: 分块: 将图像划分为 …...

同构字符串(简单)

新建两个哈希表&#xff0c;构建s到t中的字母的映射以及t到s中的字母的映射。 class Solution {public boolean isIsomorphic(String s, String t) {Map<Character,Character> s2tnew HashMap<Character,Character>();Map<Character,Character> t2snew Hash…...

红米Note9 4G版拆开后盖操作细节

先把sim卡槽整个拔出 然后如下图做试&#xff0c;4个箭头的位置塞塑料片或者指甲插入&#xff0c;弄开&#xff0c;然后从图中右侧抠开&#xff08;左侧不行&#xff0c;有排线连着后面手机主板&#xff09; 如果不按照这种办法&#xff0c;会把后盖很多地方抠烂...