SMMU相关知识
1. 使用smmu的作用
- 支持具有DMA能力设备的虚拟化实现
- 解决32位系统访问超过4G空间的地址
- 解决系统动态分配大块连续内存
2. 为什么需要使用2级页表
SMMU(系统内存管理单元)采用二级页表架构的核心原因可归结为地址空间管理效率、内存资源优化以及虚拟化场景的适配需求。以下是具体分析:
a. 减少内存占用与提升灵活性
- 单级页表的缺陷:
若采用单级页表管理64位地址空间,页表条目数量将指数级增长(例如32位系统下单级页表需4MB连续内存24)。对于SMMU连接的多个设备而言,每个设备独立维护单级页表将导致内存资源浪费。 - 二级页表的优势:
二级页表通过分层设计,仅在实际需要时分配下级页表。例如:
-
- 一级页表(目录):占用固定4KB内存,按设备或进程划分大块地址范围(如1MB段),仅记录是否存在有效二级页表47。
- 二级页表(实际映射):按需分配,每个二级页表仅管理更小的地址块(如4KB或1KB页),避免无效内存占用27。
这种设计显著降低内存开销,尤其适合资源受限的嵌入式系统26。
b. 支持虚拟化与多阶段地址转换
- 两阶段地址转换需求:
在虚拟化场景中,SMMU需同时处理Stage-1(VA→IPA)和Stage-2(IPA→PA)转换8。
-
- Stage-1:设备DMA请求的虚拟地址(VA)需转换为中间物理地址(IPA),对应Guest OS管理的页表。
- Stage-2:Hypervisor需将IPA转换为实际物理地址(PA),确保虚拟机隔离18。
二级页表架构天然适配这种分层机制,允许独立管理不同阶段的页表基址与权限38。
- 多设备隔离与安全:
每个设备通过StreamID和SubstreamID索引到独立的二级页表(CD表),实现地址空间隔离。例如,GPU的读写操作可指向不同安全域(Secure/Normal)的页表,确保数据安全36。
c. 硬件加速与性能优化
- TLB与缓存效率:
二级页表的分块结构(如1MB段→4KB页)与TLB(转换旁路缓冲器)的局部性原理契合,减少TLB失效概率。SMMU通过缓存常用页表项,加速地址转换38。 - 并行处理与动态扩展:
多级页表允许并行查询不同层级(如一级页表通过StreamID快速定位,二级页表按SubstreamID细化),适应高吞吐量设备(如GPU、视频编解码器)的需求68。
d. 兼容性与标准化设计
- 与MMU架构对齐:
ARM的MMU同样采用多级页表(如L1/L2),SMMU的设计与其保持一致,简化软件栈(如Linux内核驱动)的开发和维护17。 - 动态页表切换:
二级页表支持通过Command Queue动态更新页表基址,例如在进程切换时快速重配置设备地址空间,而无需重建整个页表8。
e. 总结
SMMU采用二级页表的核心逻辑在于:通过分层管理平衡内存效率与灵活性,适配虚拟化场景的多阶段转换需求,并通过硬件加速优化性能。这一设计在ARM生态中与MMU协同,成为实现设备DMA高效、安全的关键基础设施
3. STE的两种模式(Linear、2-Level)
SMMU中的Stream Table用于根据设备的StreamID查找对应的Stream Table Entry(STE),进而配置地址转换规则。Stream Table支持两种格式:Linear Stream Table和2-level Stream Table,两者在内存占用、查找效率和适用场景上有显著差异。以下是具体解释:
a. Linear Stream Table(线性流表)
ⅰ. 1结构与查找方式
- 结构:将所有STE按顺序存储在连续内存中,形成一个数组。每个STE固定为64B,StreamID直接作为数组索引。
- 地址计算:
STE地址 = STRTAB_BASE基地址 + StreamID × 64
。
ⅱ. 优点与缺点
- 优点:
-
- 查找速度快:仅需一次内存访问,适用于实时性要求高的场景。
- 实现简单:无需分层管理,硬件和软件逻辑简化。
- 缺点:
-
- 内存浪费:若StreamID稀疏(如仅使用少量高ID值),需分配整个连续内存空间,导致资源浪费29。
- 扩展性差:最大支持StreamID数量受限于连续内存分配能力。
ⅲ. 适用场景
- 设备数量少且StreamID密集分布(如嵌入式系统)。
- 需要低延迟访问的场景(如实时数据处理)。
b. 2-level Stream Table(二级流表)
ⅰ. 结构与查找方式
- 层级划分:
-
- 第一级表(L1 STD):存储指向第二级表的指针,每个表项8B。
- 第二级表(L2 STE):存储实际STE的数组,每个STE仍为64B。
- 索引分配:
-
- StreamID高位(如高8位)用于索引L1 STD,获取第二级表的基地址。
- StreamID低位(如低8位)用于索引第二级表,获取最终STE。
- 地址计算示例:
若StreamID为16位且分割点SPLIT=82:
L1 STD地址 = STRTAB_BASE基地址 + (StreamID[15:8] × 8)
STE地址 = L2基地址(来自L1 STD) + StreamID[7:0] × 64
。
ⅱ. 优点与缺点
- 优点:
-
- 内存高效:仅分配实际使用的第二级表,减少连续内存需求。
- 扩展性强:支持大范围StreamID(如32位),适合虚拟化等复杂场景。
- 缺点:
-
- 查找延迟高:需两次内存访问,性能略低于Linear格式。
- 实现复杂:需管理多级表结构和动态分配逻辑。
ⅲ. 适用场景
- StreamID范围大且稀疏分布(如云计算中的多租户设备)。
- 内存资源受限但需支持大量设备(如数据中心)。
c. 对比总结
维度 | Linear Stream Table | 2-level Stream Table |
内存占用 | 高(需连续分配) | 低(按需分配二级表) |
查找速度 | 快(单次访问) | 慢(两次访问) |
实现复杂度 | 低 | 高(需多级管理) |
适用StreamID范围 | 小规模(如≤64) | 大规模(如≥64) |
d. 配置与兼容性
- 寄存器控制:通过
SMMU_STRTAB_BASE_CFG
配置格式,SPLIT
字段定义分割点。 - 强制条件:当StreamID超过6位(即>64个设备)时,必须使用2-level格式。
- 安全扩展:支持Secure/Non-secure双安全状态时,需独立配置各自的Stream Table48。
通过合理选择Stream Table格式,可在内存效率与性能之间实现平衡,满足不同应用场景的需求
4. ASID与VMID
在ARM SMMU(系统内存管理单元)中,ASID(Address Space Identifier)和VMID(Virtual Machine Identifier)是用于地址空间隔离与虚拟化支持的核心标识符,其作用与实现机制如下:
a. ASID(地址空间标识符)
ⅰ. 核心定义与功能
- 作用:ASID用于区分同一虚拟机或物理机中不同进程的地址空间,类似于CPU MMU中的进程隔离机制。每个进程被操作系统分配唯一的ASID,确保其虚拟地址映射仅在自身上下文中生效。
- TLB标记:在SMMU的TLB(转换后备缓冲器)中,非全局页表项(
nG
位标记)会附加ASID标签。当设备发起DMA请求时,SMMU根据当前ASID匹配TLB条目,防止不同进程的映射冲突。 - 配置来源:
-
- ASID存储于TTBRn_EL1寄存器(如TTBR0_EL1用于用户空间进程),通过更新寄存器可同时切换ASID和页表基址12。
- 在SMMU中,ASID通过Context Descriptor(CD)关联设备的上下文,CD由Stream Table Entry(STE)中的
S1ContextPtr
和SubstreamID索引定位。
ⅱ. 应用场景
- 进程隔离:同一虚拟机内的多个进程可通过ASID共享TLB缓存,避免上下文切换时TLB刷新开销。例如,进程A(ASID=1)与进程B(ASID=2)的映射可共存于TLB中。
- 共享虚拟地址(SVA):在设备与CPU进程共享地址空间的场景中,SMMU使用与CPU相同的ASID,实现设备直接访问进程的虚拟地址。
b. VMID(虚拟机标识符)
ⅰ. 核心定义与功能
- 作用:VMID用于区分不同虚拟机的地址空间,确保虚拟机的中间物理地址(IPA)到实际物理地址(PA)的转换相互隔离。每个虚拟机由Hypervisor分配唯一的VMID。
- TLB标记:在虚拟化场景中,TLB条目同时附加VMID和ASID标签。例如,VM1(VMID=1)与VM2(VMID=2)即使使用相同的ASID,其TLB条目也不会混淆。
- 配置来源:
-
- VMID存储于VTTBR_EL2寄存器,由Hypervisor管理。ARMv8.1-A后支持16位VMID以扩展虚拟机数量45。
- SMMU的STE(Stream Table Entry)中通过
VMID
字段指定虚拟机关联的Stage-2页表(IPA→PA转换)。
ⅱ. 应用场景
- 虚拟机隔离:不同虚拟机的设备通过VMID绑定独立的Stage-2页表,防止跨虚拟机内存访问。例如,直通设备访问的IPA需通过VMID对应的页表转换为PA。
- TLB缓存复用:多个虚拟机的TLB条目可共存,VMID作为关键标识,避免虚拟机切换时TLB刷新。
c. ASID与VMID的协同机制
- 组合标记:
在虚拟化环境中,TLB条目通过VMID + ASID唯一标识映射关系。例如,VM1(VMID=1)的进程A(ASID=1)与VM2(VMID=2)的进程A(ASID=1)的映射在TLB中独立存储 - 多级地址转换:
-
- Stage-1转换(VA→IPA):由ASID关联的进程页表完成。
- Stage-2转换(IPA→PA):由VMID关联的虚拟机页表完成78。
两者结合实现完整的VA→IPA→PA
转换流程(见图1)。
- 跨处理器一致性(CnP位):
在ARMv8.2-A及更高版本中,CnP(Common not Private)
位允许ASID和VMID在多个处理器间统一分配,使TLB条目跨核共享,减少多核系统的同步开销
d. 实际配置与限制
- ASID分配:SMMU通过
Xaarray
数据结构动态分配ASID,与CPU的ASID空间独立(除非SVA场景)。 - VMID管理:Hypervisor通过位图(bitmap)分配VMID,确保不同虚拟机的唯一性。
- TLB广播与隔离:
-
- CPU发起的TLB失效指令(TLBI)默认不影响SMMU的TLB条目,除非通过
CD.ASET
字段显式共享ASID37。 - VMID的隔离性天然阻止跨虚拟机TLB干扰。
- CPU发起的TLB失效指令(TLBI)默认不影响SMMU的TLB条目,除非通过
e. 总结
- ASID是进程级隔离的核心标识,用于TLB缓存复用与进程上下文切换优化。
- VMID是虚拟机级隔离的核心标识,保障虚拟化环境中的内存安全与资源隔离。
- 两者协同工作,通过多级页表转换与TLB标记机制,实现从设备到物理内存的端到端地址空间管理
5. STE与PTE
在ARM SMMU(系统内存管理单元)中,STE(Stream Table Entry)和PTE(Page Table Entry)是地址转换过程中两个关键的数据结构,分别承担不同的角色,具体定义与功能如下:
a. STE(Stream Table Entry,流表条目)
ⅰ. 核心定义
STE是SMMU用于管理设备地址转换配置的核心数据结构,每个设备(通过唯一的StreamID标识)对应一个STE。它存储在内存的Stream Table中,是SMMU实现多设备地址空间隔离的基础。
ⅱ. 功能与结构
- 配置内容:
- Stage-1配置:指向Context Descriptor(CD)的指针(
S1ContextPtr
),CD中存储了阶段1(VA→IPA)的页表基地址(如TTBR0/TTBR1)和转换参数(如TCR、ASID)。 - Stage-2配置:阶段2(IPA→PA)的页表基地址(
S2TTB
)和转换参数(如VTCR、VMID)78。 - 转换模式控制:决定是否启用阶段1、阶段2或两者(如
STE.Config
字段)。 - 安全属性:区分安全与非安全上下文(Secure/Non-secure STE),控制设备对安全内存的访问权限。
- 存储格式:
STE固定为64字节,可通过Linear Stream Table(连续数组)或2-level Stream Table(两级索引)格式组织,以适配不同规模的StreamID空间。
ⅲ. 应用场景
- 设备隔离:每个StreamID对应独立的STE,确保不同设备使用不同的页表和安全策略。
- 虚拟化支持:通过VMID关联Stage-2页表,实现虚拟机间的物理地址隔离。
b. PTE(Page Table Entry,页表条目)
ⅰ. 1核心定义
PTE是页表中存储地址映射关系的最小单元,存在于SMMU的多级页表结构(如ARMv8的4级页表)中,用于将虚拟地址(VA或IPA)转换为物理地址(PA)。
ⅱ. 功能与结构
- 地址映射:
- 虚拟地址段划分:通过PTE中的
next-level table address
或output address
字段,逐级解析地址。例如:
Level 0 PTE:解析VA[47:39] → Level 1页表基地址。
Level 3 PTE:解析VA[20:12] → 物理页帧基地址。 - 权限与属性:包含读写权限(AP)、内存类型(MAIR)、安全属性(NS位)等。
- 存储格式:
PTE大小通常为8字节,页表层级结构与CPU的MMU一致,支持多种页大小(如4KB、2MB、1GB)。
ⅲ. 应用场景
- 地址转换:通过页表遍历(Page Table Walk)逐级查询PTE,完成虚拟地址到物理地址的转换。
- TLB加速:PTE缓存于TLB(转换后备缓冲器),减少页表遍历的延迟。
c. STE与PTE的协同工作流程
- 设备发起请求:
设备通过StreamID发起DMA请求,SMMU根据StreamID查找对应的STE。 - STE解析配置:
若启用Stage-1,STE指向CD表,结合SubstreamID获取CD,从中读取Stage-1页表基地址(TTBR0/TTBR1)。
若启用Stage-2,STE直接提供Stage-2页表基地址(S2TTB)。 - 页表遍历与PTE查询:
Stage-1:通过CD中的TTBRx逐级查询PTE,将VA转换为IPA。
Stage-2:通过S2TTB逐级查询PTE,将IPA转换为PA。 - 物理地址输出:
最终PA发送至内存总线,完成设备对物理内存的访问。
d. 对比总结
维度 | STE | PTE |
作用层级 | 设备级配置(StreamID隔离) | 地址级映射(虚拟→物理转换) |
存储位置 | Stream Table(内存中的流表) | 多级页表(内存中的页表结构) |
核心功能 | 配置转换模式、页表基址、安全策略 | 存储地址映射关系与内存属性 |
查询方式 | StreamID索引(Linear/2-level流表) | 虚拟地址分段索引(多级页表遍历) |
e. 典型配置示例
- 单阶段转换(Stage-1):
- STE启用Stage-1并指向CD,CD中TTBR0定义进程的页表,PTE完成VA→PA转换。
- 双阶段转换(Stage-1 + Stage-2):
- STE同时启用Stage-1和Stage-2,Stage-1的PTE将VA→IPA,Stage-2的PTE将IPA→PA(用于虚拟机隔离)。
- 安全扩展场景:
- Secure STE指向安全页表(NS=0),Non-secure STE指向非安全页表(NS=1),PTE中NS位控制内存访问权限。
通过STE与PTE的协同,SMMU实现了灵活的设备地址空间管理与高效的虚拟化支持,是异构计算与IO虚拟化的关键技术基础。
相关文章:
SMMU相关知识
1. 使用smmu的作用 支持具有DMA能力设备的虚拟化实现解决32位系统访问超过4G空间的地址解决系统动态分配大块连续内存 2. 为什么需要使用2级页表 SMMU(系统内存管理单元)采用二级页表架构的核心原因可归结为地址空间管理效率、内存资源优化以及虚拟化…...
2025年数字创意设计与图像处理国际会议 (DCDIP 2025)
2025 International Conference on Digital Creative Design and Image Processing 【一】、大会信息 会议简称:DCDIP 2025 大会地点:中国济南 收录检索:提交Ei Compendex,CPCI,CNKI,Google Scholar等 【二…...
39.RocketMQ高性能核心原理与源码架构剖析
1. 源码环境搭建 1.1 主要功能模块 RocketMQ的官方Git仓库地址:GitHub - apache/rocketmq: Apache RocketMQ is a cloud native messaging and streaming platform, making it simple to build event-driven applications. RocketMQ的官方网站上下载指定版…...
SVTAV1 编码函数 svt_aom_is_pic_skipped
一 函数解释 1.1 svt_aom_is_pic_skipped函数的作用是判断当前图片是否可以跳过编码处理。 具体分析如下 函数逻辑 参数说明:函数接收一个指向图片父控制集的指针PictureParentControlSet *pcs, 通过这个指针可以获取与图片相关的各种信息,用于判断是否跳…...
C++负载均衡远程调用学习之基础TCP服务
目录 1.LARS课程模块介绍 2.LARS的功能演示机场景作用 3.LARS的reactor框架的组成部分 4.Lars_reactor的项目目录构建 5.Lars_tcp_server的基础服务开发 6.Lars_tcp_server的accept实现 7.LarsV0.1总结 1.LARS课程模块介绍 2.LARS的功能演示机场景作用 # Lars系统开发 …...
WebRtc09:网络基础P2P/STUN/TURN/ICE
网络传输基本知识 NATSTUN(Session Traversal Utilities for NAT)TURNICE NAT 产生的原因 IPV4地址不够出于网络安全的原因 NAT种类 完全锥型NAT(Full Cone NAT)地址限制型NAT(Address Restricted Cone NAT)端口限制型NAT(Port Restricted Cone NAT…...
UDP/TCP协议知识及相关机制
一.UDP协议 UDP是一种无连接、不可靠、面向报文、全双工传输层的协议~ 1.无连接 : 知道对端的端口号和IP可以直接传输,不需要建立连接 2..不可靠:没有确认机制,没有重传机制,不知道数据包能否能正确到达对端࿰…...
windows 下 oracle 数据库的备份与还原
1、备份 创建备份出来的文件存放的位置。 创建目录对象,在数据库中创建一个目录对象,该对象指向文件系统中用于存储导出文件的实际目录( sql 命令,可以在 plsql 中执行)。 -- 创建目录对象,\D:\Oracle19c\…...
LeetCode41☞缺失的第一个正数
关联LeetCode题号41 本题特点 数组,哈希表 本题思路 找缺失的最小正数,看举例说明缺失的正数,一种情况是连续的最小的正数,一种是缺失连续但不是最小的正数验证数组内数组是否连续,可以通过 nums[i]1 是否存nums组…...
毕业论文 | 基于STM32的自动烟雾报警系统设计
基于STM32的烟雾报警系统 一、系统设计原理1. **系统架构**2. **工作原理**二、核心公式与算法1. **MQ-2传感器浓度计算**2. **温度传感器数据处理**3. **校准与滤波**三、关键代码实现1. **ADC初始化与数据读取(以MQ-2为例)**2. **报警逻辑与阈值设置**3. **EEPROM存储阈值*…...
iOS 性能调优实战:三款工具横向对比实测(含 Instruments、KeyMob、Xlog)
iOS 性能调优实战:三款工具横向对比实测(含 Instruments、KeyMob、Xlog) 在日常 iOS 开发中,性能问题往往是最难排查、最影响体验的部分。无论是 CPU 峰值、内存飙升,还是偶发卡顿、异常崩溃,背后都隐藏着…...
flutter 专题 五十八 关于Flutter提示Your Xcode project requires migration的错误
最近,升级了Flutter后,运行之前的项目报了一个如下的错误: Your Xcode project requires migration. See https://flutter.dev/docs/development/ios-project-migration for details. Error launching application on iPhone 11 Pro.想到之前…...
【c++】【STL】list详解
目录 list的作用list的接口构造函数赋值运算符重载迭代器相关sizeemptyfrontbackassignpush_frontpop_frontpush_backpop_backinserteraseswapresizeclearspliceremoveremove_ifuniquemergesortreverse关系运算符重载(非成员函数) list的模拟实现结点类迭…...
redis 数据类型新手练习系列——List类型
redis 数据类型 Redis 主要支持以下几种数据类型: (1)string(字符串): 基本的数据存储单元,可以存储字符串、整数或者浮点数。 (2)hash(哈希):一个键值对集…...
文章记单词 | 第52篇(六级)
一,单词释义 grasp:英 [ɡrɑːsp] 美 [ɡrsp],v. 抓住;紧握;理解;领会;n. 紧握;控制;理解glue:英 [ɡluː] 美 [ɡluː],n. 胶水;胶…...
【今日三题】kotori和气球(排列) / 走迷宫(BFS最短路) / 主持人调度(二)(贪心+优先级队列)
⭐️个人主页:小羊 ⭐️所属专栏:每日两三题 很荣幸您能阅读我的文章,诚请评论指点,欢迎欢迎 ~ 目录 kotori和气球(排列)走迷宫(BFS最短路)主持人调度(二)(贪心优先级队列) kotori和气球(排列) kotori和…...
Mysql数据库高可用解决方案-Mysql Router
目录 一.MySQL Router介绍 1. 什么是 MySQL Router? 2. MySQL Router 的主要用途 3. MySQL Router 的工作原理 4. MySQL Router 的核心组件 5. MySQL Router 的部署和配置 6. MySQL Router 的优势 7. 注意事项 8. MySQL Router 与其他工具的对比 9. 总结 …...
windows系统 压力测试技术
一、CPU压测模拟 工具:CpuStres v2.0 官网:https://learn.microsoft.com/en-us/sysinternals/downloads/cpustres 功能:是一个工具类,用来模拟在一个进程中启动最多64个线程,且可以独立控制任何一个线程的启动/暂停、…...
汽车免拆诊断案例 | 2015款奔驰C200L车发动机起动延迟
故障现象 一辆2015款奔驰C200L车,搭载274发动机,累计行驶里程约为15.6万km。该车发动机起动延迟,且发动机故障灯异常点亮。 故障诊断 用故障检测仪检测,发动机控制单元中存储有故障代码“P001685 进气凸轮轴(气缸…...
Python AI图像艺术创作:核心技术与实践指南
Python与AI技术的结合为图像艺术创作开辟了全新维度,通过生成对抗网络(GANs)、扩散模型(如Stable Diffusion)和神经风格迁移等技术,创作者可以轻松生成具有高度创意和艺术性的图像作品。 这些技术不仅突破了传统艺术创作的局限性,还大幅降低了专业创作门槛,使艺术创作…...
比亚迪再获国际双奖 以“技术为王”书写中国汽车出海新篇章
近日,全球汽车行业权威奖项“2025世界汽车大奖”(World Car Awards)在纽约国际车展举行颁奖典礼,比亚迪海鸥(BYD SEAGULL/BYD DOLPHIN MINI)摘得“2025世界城市车(World Urban Car)”…...
虚幻商城 Quixel 免费资产自动化入库(2025年版)
文章目录 一、背景二、问题讲解1. Quixel 免费资产是否还能一键入库?2. 是不是使用了一键入库功能 Quixel 的所有资产就能入库了?3. 一键入库会入库哪些资产?三、实现效果展示四、实现自动化入库五、常见问题1. 出现401报错2. 出现429报错3. 入库过于缓慢4. 入库 0 个资产一…...
斯坦福RGA软件 老版本和兼容Windows 11版本可选
斯坦福RGA软件 老版本和兼容Windows 11版本可选...
RHCSA Linux 系统 文件系统权限
1. 文件的一般权限 (1)文件权限标识解读 drwxr - xr - x. 12 root root 144 Feb 17 16:51 usr ➤d:文件类型(d 表示目录) ➤rwx:文件所有者权限(读 r,写 w,执行 x&am…...
【补题】Codeforces Global Round 20 D. Cyclic Rotation
题意:偷懒 思路: D. Cyclic Rotation - Yaqu - 博客园 1.有个观察,如果操作过的序列,一定是连续相同的数字,当然这不代表一定操作过了,由于操作过1次后连续就没有意义,可以假设全都操作…...
2025年“深圳杯”数学建模挑战赛C题-分布式能源接入配电网的风险分析
布式能源接入配电网的风险分析 小驴数模 背景知识: 随着我国双碳目标的推进,可再生分布式能源在配电网中的大规模应用不可避免,这对传统配电网运行提出挑战。为了量化分析配电网中接入分布式能源的风险,需要对其进行建模与分析…...
微调 LLaMA 2:定制大型语言模型的分步指南
微调 LLaMA 2:定制大型语言模型的分步指南 深入了解如何运用新技术在 Google Colab 平台上对 Llama-2 进行微调操作,从而有效克服内存与计算方面的限制,让开源大型语言模型变得更加易于获取和使用。自从 Meta 发布了 LLaMA 的首个版本后&…...
react-11使用vscode开发react相关扩展插件(相关的快捷生成)
1.快速搭建react组件模板 2.相关搭建命令 2.1 导入导出 前缀方法imp→import moduleName from moduleimn→import moduleimd→import { destructuredModule } from moduleime→import * as alias from moduleima→import { originalName as aliasName} from moduleexp→expo…...
人工智能数学基础(六):数理统计
数理统计是人工智能中数据处理和分析的核心工具,它通过收集、分析数据来推断总体特征和规律。本文将系统介绍数理统计的基本概念和方法,并结合 Python 实例,帮助读者更好地理解和应用这些知识。资源绑定附上完整资源供读者参考学习࿰…...
组网技术知识点
1.port-isloate enable命令用于实现两个接口之间的二层数据隔离,三层数据互通。 2.交换机最多支持4096个VLAN,编号为1-4094 3.display bfd session all:查看BFD会话状态是否UP 4.RJ45通过双绞线连接以太网; AUI端口࿱…...
常用电机类型及其特点对比
1. 直流电机 直流电机里边固定有环状永磁体,电流通过转子上的线圈产生安培力,当转子上的线圈与磁场平行时,再继续转受到的磁场方向将改变,因此此时转子末端的电刷跟转换片交替接触,从而线圈上的电流方向也改变&#x…...
SVTAV1源码-set_all_ref_frame_type
set_all_ref_frame_type函数的主要作用是为当前图像设置所有可能用到的参考帧类型,并将这些参考帧类型存储到一个数组中,同时记录总共有多少个参考帧类型,以下是该函数的各部分解释: 初始化和准备 MvReferenceFrame rf[2]; *tot_r…...
Can‘t create thread to handle bootstrap
MySQL在docker里面启动失败 关键性报错Cant create thread to handle bootstrap rootubuntu:/data# docker logs 6835ec900d8c 2025-04-30 23:29:4308:00 [Note] [Entrypoint]: Entrypoint script for MySQL Server 8.0.42-1.el9 started. 2025-04-30 23:29:4308:00 [Note] […...
用Power shell脚本批量发布rdl文件到SQL Server Reporting Service
本文用于介绍如何用Power shell脚本批量发布rdl文件到SQL Server Reporting Service. 用户可根据自己的需要创建类似Publish_All_SSRS.ps1的脚本。 目录 1. 目录结构 2. 创建Base_PublishSSRS.ps1 3. 创建Publish_All_SSRS.ps1 4.注意事项 1. 目录结构 目录结构ÿ…...
2025-03 机器人等级考试四级理论真题 4级
1 2025年蛇年春晚,节目《秧BOT》机器人舞蹈表演节目点燃了全国观众的热情,请问参加节目表演的机器人是由哪家公司研发?( ) A.大疆 B.华为 C.优必选 D.宇树科技 【参考答…...
12.SpringDoc OpenAPI 功能介绍(用于生成API接口文档)
12.SpringDoc OpenAPI 功能介绍(用于生成API接口文档) SpringDoc OpenAPI 是一个基于 OpenAPI 3.0/3.1 规范的工具,用于为 Spring Boot 应用生成 API 文档。它是 springfox(Swagger 2.x)的现代替代方案,完全支持 Spring Boot 3.x…...
Java 实用时间工具类:DateUtils 与 DurationFormatUtils
前言 在 Java 项目中,处理日期时间相关的操作极为常见。Apache Commons Lang 提供了两个非常实用的时间工具类:DateUtils 和 DurationFormatUtils,它们分别负责简化日期处理和格式化时间间隔,帮助开发者更高效地进行时间操作。 一…...
Unity3D仿星露谷物语开发40之割草动画
1、目标 当Player选择Scythe后,鼠标悬浮在草上,会显示绿色光标。鼠标左击,会触发割草的动画。 2、优化Settings.cs脚本 添加以下两行代码: // Reaping(收割) public const int maxCollidersToTestPerRe…...
量化交易之数学与统计学基础2.4——线性代数与矩阵运算 | 矩阵分解
量化交易之数学与统计学基础2.4——线性代数与矩阵运算 | 矩阵分解 第二部分:线性代数与矩阵运算 第4节:矩阵分解:奇异值分解(SVD)在数据压缩和风险分解的应用 一、奇异值分解(SVD)基础…...
ES使用之查询方式
文章目录 ES中的数据查询返回字段含义track_total_hits 精准匹配(term)单值匹配多值匹配 全文检索(match)range查询高级查询布尔查询 ES中的数据查询 返回字段含义 track_total_hits track_total_hits是 Elasticsearch 中用于 控制匹配文档总数统计行为 的关键参数。就算…...
力扣-数组-41缺失的第一个正数
思路 关键有两点 原地哈希 把1-len的数分别映射到下标为0 - len-1的地方中 交换后,接着查看下标i被交换过来的数,直到他到了该到的位置或者超出范围 使用while,把不满足映射关系的点一直交换,直到下标指向的位置符合要求 代…...
Nginx — http、server、location模块下配置相同策略优先级问题
一、配置优先级简述 在 Nginx 中,http、server、location 模块下配置相同策略时是存在优先级的,一般遵循 “范围越小,优先级越高” 的原则,下面为你详细介绍: 1. 配置继承关系 http 块:作为全局配置块&…...
管家婆易指开单如何设置零售开单
一,零售设置 1,登录管理员账号-基本信息--职员信息-新建职员及其属于哪个门店。 2,系统维护-系统管理-用户配置-系统配置-切换为“触摸屏模式或者普通零售模式” 3,用户及权限设置-给该员工开通零售及开单等相关的权限 4ÿ…...
深入浅出循环神经网络(RNN):原理、应用与实战
1、引言 在深度学习领域,循环神经网络(Recurrent Neural Network, RNN)是一种专门用于处理**序列数据**的神经网络架构。与传统的前馈神经网络不同,RNN 具有**记忆能力**,能够捕捉数据中的时间依赖性,广泛应…...
【Java】打印运行环境中某个类引用的jar版本路径
背景 正式环境出现jar版本不匹配问题,不知道正式环境用的哪个jar版本。通过一下可以打印出类调用的jar // 获取 POIFSFileSystem 类的加载器并打印其来源路径 ClassLoader classloaderPOIFS org.apache.poi.poifs.filesystem.POIFSFileSystem.class.getClassLoade…...
【效率提升】Vibe Coding时代如何正确使用输入法:自定义短语实现Prompt快捷输入
AI时代的效率神器:用搜狗拼音自定义短语实现Prompt快捷输入 在日益依赖AI工具的今天,我们经常需要输入各种复杂的prompt来指导AI完成特定任务。有些同学完全忽视了这一层工作的意义,实际上不同质量的prompt对模型的表现影响是巨大的。&#…...
C# 类的基本概念(从类的内部访问成员和从类的外部访问成员)
本章内容: 类的概述 程序和类:一个简单的示例 声明类 类成员 创建变量和类的实例 为数据分配内存 实例成员 访问修饰符 从类的内部访问成员 从类的外部访问成员 综合应用 从类的内部访问成员 如前所述,类的成员仅用其他类成员的名称就可以访…...
端到端观测分析:从前端负载均衡到后端服务
前言 我们在做系统运维保障的时候,关注从前端负载均衡到后端服务的流量情况是很有必要的,可以了解每个后端服务实例接收的流量大小,这有助于确定资源分配是否合理,能够帮助找出后端服务中的性能瓶颈。同时,当系统出现…...
Axure疑难杂症:全局变量跨页面赋值、中继器交互(玩转全局变量)
亲爱的小伙伴,在您浏览之前,烦请关注一下,在此深表感谢! Axure产品经理精品视频课已登录CSDN可点击学习https://edu.csdn.net/course/detail/40420 课程主题:全局变量高级交互 主要内容:数据跨页面传递、赋值、中继器交互 应用场景:页面间值的传递、赋值 案例展示:…...
css 数字从0开始增加的动画效果
项目场景: 提示:这里简述项目相关背景: 在有些时候比如在做C端项目的时候,页面一般需要一些炫酷效果,比如数字会从小值自动加到数据返回的值 css 数字从0开始增加的动画效果 分析: 提示:这里填…...