计算机系统---UEFI(统一可扩展固件接口)
一、UEFI定义与历史背景
UEFI(Unified Extensible Firmware Interface) 是替代传统BIOS的新一代固件接口标准,由UEFI论坛(前身是Intel的EFI论坛)制定,旨在解决BIOS在现代硬件和操作系统下的局限性。
- 设计目标:
- 突破BIOS的16位实模式限制,支持64位计算和更大地址空间(理论支持2^64字节内存)。
- 提供更灵活的启动流程、图形化界面、模块化驱动支持,以及更强的安全性。
- 发展历程:
- 2005年发布首个UEFI 1.0规范,逐步替代BIOS;2020年后,x86平台新主板基本标配UEFI。
- 兼容模式:UEFI固件通常支持传统BIOS(通过CSM模块),实现新旧系统过渡。
二、UEFI核心架构与关键组件
1. 技术架构对比(UEFI vs BIOS)
特性 | BIOS | UEFI |
---|---|---|
引导模式 | MBR(最大2TB硬盘,主引导记录) | GPT(支持超过2TB硬盘,分区表) |
地址空间 | 16位实模式(1MB限制) | 32/64位保护模式(无内存上限) |
固件存储 | ROM/EPROM(容量小,更新困难) | Flash存储器(容量大,支持UEFI Shell更新) |
驱动支持 | 依赖BIOS中断(固化功能) | 模块化.efi驱动(动态加载) |
界面交互 | 文本菜单(键盘操作) | 图形界面(支持鼠标、触摸) |
2. 核心组件
- EFI系统分区(ESP,EFI System Partition):
- 格式必须为FAT32,用于存放UEFI引导程序(.efi文件)和配置数据。
- 单个硬盘可存在多个ESP,但通常只创建一个(容量建议≥100MB)。
- UEFI启动管理器(Boot Manager):
- 动态扫描ESP中的引导程序(如Windows的
bootmgfw.efi
、Linux的grubx64.efi
),生成可选择的启动项。 - 用户可在UEFI界面中添加、删除、排序启动项,无需像BIOS一样依赖固定启动顺序。
- 动态扫描ESP中的引导程序(如Windows的
- UEFI驱动(.efi文件):
- 遵循UEFI驱动模型,支持动态加载(如USB驱动、网卡驱动),无需在启动阶段固化在固件中。
- 例如:NVMe SSD的UEFI驱动允许系统在启动阶段识别高速存储设备。
三、UEFI启动流程详解
1. 启动阶段划分(对比BIOS)
阶段 | BIOS流程 | UEFI流程 |
---|---|---|
1. 加电初始化 | POST自检→硬件初始化→启动设备检测 | 预启动执行环境(PEI)→驱动执行环境(DXE)→启动服务(Boot Services) |
2. 引导程序加载 | 从启动设备读取MBR→执行主引导程序 | 从ESP读取.efi引导文件→启动管理器加载并执行 |
3. 系统交接 | 直接跳转至操作系统内核 | 通过“启动服务”释放资源→移交控制权给操作系统 |
2. 详细流程步骤
- 预启动执行环境(PEI):
- 初始化CPU微码、早期内存控制器,加载最小化驱动(如显示控制器),建立基本运行环境。
- 驱动执行环境(DXE):
- 加载UEFI驱动(如硬盘、USB、网络驱动),初始化硬件设备,检测并配置启动设备。
- 启动服务(Boot Services):
- 提供临时接口供引导程序使用(如内存分配、文件访问),扫描ESP中的.efi文件生成启动项。
- 运行时服务(Runtime Services):
- 系统启动后持续提供服务(如读取时间、修改NVRAM配置),供操作系统调用。
- 启动管理器(Boot Manager):
- 显示图形化启动菜单(如“Windows Boot Manager”“UEFI USB设备”),用户选择后加载对应.efi引导程序。
- 安全启动验证(若启用):
- 检查引导程序签名是否符合UEFI数据库中的可信证书,阻止未签名或签名无效的程序运行。
四、UEFI核心功能与技术优势
1. 硬件与存储支持
- GPT分区表:
- 突破BIOS的MBR限制,支持单个硬盘超过2TB,最多128个主分区,自带错误校验机制。
- 示例:SSD(尤其是PCIe NVMe硬盘)必须通过UEFI+GPT模式才能发挥全部性能。
- 动态驱动加载:
- 支持在启动阶段加载第三方驱动(如RAID控制器、新型显卡驱动),无需像BIOS一样依赖固件内置功能。
- 例如:通过UEFI驱动,Linux可在启动阶段识别最新的USB 3.2设备。
2. 用户界面与交互
- 图形化界面(GUI):
- 支持高分辨率显示、鼠标操作,甚至触摸交互(如笔记本电脑),替代BIOS的纯文本菜单。
- 示例:华硕主板的UEFI界面提供可视化硬件监控(CPU温度、风扇转速)和超频调节滑块。
- UEFI Shell:
- 类似命令行的交互式环境,支持执行.efi程序、管理文件系统(如格式化ESP分区、手动启动引导程序)。
3. 安全性强化
- 安全启动(Secure Boot):
- 原理:UEFI固件内置CA根证书,仅允许运行经过微软、Linux发行版等签名的引导程序(如Windows的
bootmgfw.efi
、Ubuntu的shimx64.efi
)。 - 作用:防止恶意软件(如引导扇区病毒)篡改启动流程,抵御“bootkit”攻击。
- 争议:部分用户需禁用Secure Boot以安装未签名系统(如旧版Linux或自定义系统)。
- 原理:UEFI固件内置CA根证书,仅允许运行经过微软、Linux发行版等签名的引导程序(如Windows的
- 固件密码与访问控制:
- 管理员密码限制UEFI设置修改,用户密码限制系统启动,比BIOS的单层密码保护更精细。
4. 可扩展性与模块化
- 插件化设计:
- 固件功能通过独立的.efi模块实现(如显卡初始化模块、网络启动模块),方便更新和维护。
- 厂商可自定义UEFI界面(如品牌LOGO、独家功能菜单),而不影响核心架构。
- 跨平台兼容性:
- 支持x86、ARM、RISC-V等架构,广泛应用于PC、服务器、移动设备(如Surface Pro的UEFI固件)。
五、UEFI兼容性与过渡技术
1. CSM(兼容性支持模块)
- 作用:允许UEFI固件模拟传统BIOS环境,支持旧系统(如Windows 7 32位、DOS)和MBR分区启动。
- 限制:启用CSM会禁用部分UEFI特性(如Secure Boot、GPT大硬盘支持),且可能导致启动速度变慢。
- 使用场景:升级旧电脑时,若操作系统不支持UEFI,需开启CSM;新设备建议关闭CSM以启用完整UEFI功能。
2. 双启动与多引导支持
- UEFI启动管理器可识别多个ESP中的引导程序,轻松实现Windows+Linux双系统(每个系统有独立的.efi引导文件)。
- 示例:GRUB2引导程序支持同时管理多个UEFI启动项,用户可在启动菜单中选择进入不同系统。
六、UEFI固件更新与管理
1. 更新方式
- 厂商工具:通过主板厂商提供的软件(如华硕E-Z Flash、技嘉Q-Flash)在UEFI界面或系统内更新固件。
- UEFI Shell:将固件文件(.cap或.bin格式)存入U盘,通过命令行手动刷新(适用于高级用户)。
- 操作系统集成:Windows 10/11的“设置→更新与安全”可自动安装厂商推送的UEFI更新(需硬件支持)。
2. 注意事项
- 确保电源稳定(避免断电导致固件损坏),使用官方提供的固件文件(非第三方修改版)。
- 更新可能提升硬件兼容性(如支持新CPU型号)或修复安全漏洞(如应对“熔断”“幽灵”漏洞)。
七、UEFI与现代操作系统的深度整合
1. Windows快速启动(Hybrid Boot)
- 结合UEFI的“运行时服务”,将系统内核状态保存到硬盘,启动时跳过部分硬件初始化,提升启动速度(比传统BIOS快30%-50%)。
- 依赖条件:UEFI固件支持、GPT分区、Windows电源管理设置正确。
2. Linux引导流程
- 引导加载器:GRUB2、systemd-boot等支持UEFI,通过读取ESP中的
grubx64.efi
或systemd-bootx64.efi
启动。 - 安全启动适配:部分Linux发行版(如Fedora、Ubuntu)提供经过签名的“shim”引导程序,确保通过UEFI签名验证。
3. 苹果系统的UEFI实现
- 苹果称其固件为“EFI”(本质是UEFI的定制版),不支持CSM,仅支持GPT分区和自家引导程序(如
boot.efi
)。 - 安全性强化:启用Secure Boot且不允许用户修改信任证书(除非通过特殊工具解锁)。
八、UEFI常见问题与故障排除
- 无法进入UEFI界面:
- 原因:快速启动功能启用(Windows下需在电源选项中关闭)、启动快捷键错误(不同品牌主板按键不同,如Del、F2、F12)。
- 启动项丢失:
- 检查ESP分区是否存在且未被格式化,手动在UEFI中添加引导程序路径(如
\EFI\Windows\bootmgfw.efi
)。
- 检查ESP分区是否存在且未被格式化,手动在UEFI中添加引导程序路径(如
- Secure Boot导致系统无法启动:
- 确认引导程序已正确签名,或临时禁用Secure Boot(需进入UEFI的“安全”选项卡)。
九、UEFI未来发展与挑战
- 替代技术:未来可能被更先进的固件架构(如ACPI 6.0、OPAL安全标准)整合,但UEFI的核心启动逻辑仍会保留。
- 安全性争议:Secure Boot的“闭源签名”被批评限制用户自由,UEFI论坛正推动更开放的签名机制。
- 硬件加速:支持PCIe设备热插拔、动态资源分配,为云计算和边缘计算提供底层支持。
总结:UEFI为何是现代计算的基石?
UEFI通过模块化设计、安全启动、大容量存储支持、图形化交互,彻底解决了BIOS的历史局限性,成为连接硬件与操作系统的核心枢纽。从普通用户的系统安装、启动项管理,到企业级的服务器安全启动、固件远程更新,UEFI已渗透到计算设备的每个角落。理解UEFI,不仅是解决启动故障的关键,更是掌握现代IT架构底层逻辑的必经之路。
相关文章:
计算机系统---UEFI(统一可扩展固件接口)
一、UEFI定义与历史背景 UEFI(Unified Extensible Firmware Interface) 是替代传统BIOS的新一代固件接口标准,由UEFI论坛(前身是Intel的EFI论坛)制定,旨在解决BIOS在现代硬件和操作系统下的局限性。 设计…...
2025年渗透测试面试题总结-某四字大厂面试复盘扩展 二面 (题目+回答)
网络安全领域各种资源,学习文档,以及工具分享、前沿信息分享、POC、EXP分享。不定期分享各种好玩的项目及好用的工具,欢迎关注。 目录 某四字大厂面试复盘 二面 一、文件上传绕过WAF的15种深度技巧 二、SSRF利用与WAF绕过的8种高阶手法 …...
基于BP神经网络的杂草智能识别系统(杂草识别、Python项目)
基于BP神经网络的杂草智能识别系统 项目介绍 本项目是一个基于PyQt5和BP神经网络的杂草智能识别系统。系统通过图像处理和神经网络技术, 能够识别8种不同的杂草类别。用户可以通过上传图片,系统会自动识别图片中的杂草类别,并显示识别结果和…...
Java的Selenium的特殊元素操作与定位之时间日期控件
分为两种情况: 控件没有限制手动输入,则直接调用sendKeys方法写入时间数据 //时间日期控件处理 chromeDriver.get ("https://www,fliggy,com/?ttidsem.000000736&hlreferidbaidu.082076&route sourceseo"); chromeDriver.findElement (By.xpat…...
深入理解矩阵乘积的导数:以线性回归损失函数为例
深入理解矩阵乘积的导数:以线性回归损失函数为例 在机器学习和数据分析领域,矩阵微积分扮演着至关重要的角色。特别是当我们涉及到优化问题,如最小化损失函数时,对矩阵表达式求导变得必不可少。本文将通过一个具体的例子——线性…...
基于大数据的美团外卖数据可视化分析系统
【大数据】基于大数据的美团外卖数据可视化分析系统 (完整系统源码开发笔记详细部署教程)✅ 目录 一、项目简介二、项目界面展示三、项目视频展示 一、项目简介 该系统通过对海量外卖数据的深度挖掘与分析,能够为美团外卖平台提供运营决策支…...
TypeScript 类型系统详解
基础类型 TypeScript 支持丰富的基础数据类型,涵盖number、string、boolean、null、undefined、symbol以及bigint。这些类型为构建可靠的代码提供了基石。 数值类型(number):在 TypeScript 里,所有数字均为浮点数…...
【学Rust写CAD】33 近似 Alpha 混合函数(argb.rs补充方法)
源码 #[inline]pub fn over(self, dst: Argb) -> Argb {let a 256 - self.alpha32();let rb (dst.rb() * a) >> 8;let ag dst.ag() * a;Argb(self.0 (rb & Argb::MASK) | (ag & !Argb::MASK))}源码分析 这段代码实现了一个近似 Alpha 混合(“…...
4.3-4.6学习总结 Java:Set系列集合+双列集合+Map
Set系列集合: 元素是唯一的。 HashSet: 哈希值: 如果没有重写hashcode方法和equals方法,那么哈希值是根据地址值计算的。 LinkedHashSet: TreeSet底层为红黑树。 红黑树:两个红色节点不能相连。 双列集合&…...
深信服护网蓝初面试题
《网安面试指南》https://mp.weixin.qq.com/s/RIVYDmxI9g_TgGrpbdDKtA?token1860256701&langzh_CN 5000篇网安资料库https://mp.weixin.qq.com/s?__bizMzkwNjY1Mzc0Nw&mid2247486065&idx2&snb30ade8200e842743339d428f414475e&chksmc0e4732df793fa3bf39…...
2011-2019年各省地方财政商业服务业等事务支出数据
2011-2019年各省地方财政商业服务业等事务支出数据 1、时间:2007-2019年 2、来源:国家统计局、统计年鉴 3、指标:行政区划代码、地区、年份、地方财政商业服务业等事务支出 4、范围:31省 5、指标说明:地方财政在商…...
InfoSec Prep: OSCP靶场渗透
InfoSec Prep: OSCP InfoSec Prep: OSCP ~ VulnHubInfoSec Prep: OSCP, made by FalconSpy. Download & walkthrough links are available.https://www.vulnhub.com/entry/infosec-prep-oscp,508/ 1,将两台虚拟机网络连接都改为NAT模式 2,攻击机上做…...
【Kubernetes】Kubernetes 如何管理存储?PV 和 PVC 是如何工作的?
在 Kubernetes 中,存储管理是通过 Persistent Volume (PV) 和 Persistent Volume Claim (PVC) 来实现的。 它们为容器化应用提供持久化存储,使得应用在重启或重新调度时仍然能够访问数据。 1. 存储管理概述 Kubernetes 的存储管理是基于 持久化卷 (Pe…...
CasaOS小主机本地安装1Panel运维面板结合内网穿透移动端远程运维
文章目录 前言1. 添加镜像源2. 部署1Panel3. 本地访问测试4. 安装内网穿透工具5. 配置公网地址6. 配置固定公网地址 前言 小伙伴们,是不是一想到要远程管理服务器就头大如斗?特别是没有公网IP或路由器设置复杂时,简直让人抓狂!但…...
BGP路由协议之属性2
Orgin 起源 公认必遵属性 起源名称标记描述IGPi如果路由是由始发的 BGP 路由器使用 network 命令注入到 BGP 的,那么该 BGP 路由的 origin 属性为 IGPEGPe如果路由是通过 EGP 学习到的,那么该 BGP 路由的 Origin 属性为 EGPIncomplete?如果路由是通过…...
HttpClient(笔记)
介绍: 发送请求的步骤: 发送get类型的请求: 发送post类型的请求:...
【简历全景认知】简历的历史演变与当代定位:从羊皮卷到算法博弈的艺术
引言:时间维度下的求职凭证。 当古埃及工匠在莎草纸上记录自己的技能时,他们不会想到这份"技能清单"会在四千年后演变成LinkedIn上的数字档案。简历作为个人职业身份的载体,其演变史就是一部微观的人力资源配置史。从手写推荐信到ATS系统解析的PDF,每一次形式变…...
ERP系统五大生产模式概述
制造业中,选择合适的生产模式是企业高效运营的关键。 以下是ERP系统支持的五大核心生产模式及其特点总结: 1. MTS(按库存生产) - 定义:先生产后销售,基于需求预测提前备货。 - 适用场景:需求稳定、标准化程度高的产品(如日用品、家电)。 - 优点:交货快、生产…...
003 vue生命周期和钩子函数
文章目录 1.Vue实例有一个完整的生命周期,也就是说从开始创建、初始化数据、编译模板、挂载DOM、渲染-更新-渲染、卸载等一系列过程,称之为Vue实例的生命周期 2.钩子函数(监听函数):Vue实例在完整的生命周期过程中&…...
学透Spring Boot — 016. 魔术师 - Spring MVC Conversion Service 类型转换
本文是我的《学透Spring Boot》专栏的第16篇文章,了解更多请移步我的专栏: Postnull的专栏《学透Spring Boot》 目录 遇到问题 日期格式的转换 实现需求 创建转换器 注册转换器 编写Controller 访问测试 存在的问题 解决问题 源码分析 总结 …...
Ubuntu 22 Linux上部署DeepSeek R1保姆式操作详解(Xinference方式)
一、安装步骤 1.基础环境安装 安装显卡驱动、cuda,根据自己硬件情况查找相应编号,本篇不介绍这部分内容,只给出参考指令,详情请读者自行查阅互联网其它参考资料。 sudo apt install nvidia-utils-565-server sudo apt install…...
C语言查漏补缺:占位符篇
占位符篇 1. 整数类型2. 字符类型3. 浮点数类型4. 指针类型5. 字符串6. 修饰符 1. 整数类型 %d / %i:用于 int(有符号十进制整数)。int num -42; printf("%d", num); // 输出: -42%u:用于 unsigned int(无…...
springcloud现常用的组件都有哪些,如何使用
Spring Cloud是一个用于构建分布式系统的开源框架,它提供了多个常用的组件来简化分布式系统的开发和部署。以下是Spring Cloud中常用的一些组件: Spring Cloud Config:用于集中式管理配置,并提供配置的动态刷新功能。Spring Clou…...
Vue3响应式引擎解密:从依赖追踪到性能调优的深度之旅
一、响应式内核架构演进 1.1 响应式范式升级 1.2 新旧架构性能对比 操作类型Vue2(ms)Vue3(ms)提升幅度深对象初始化8502203.86x数组操作响应120186.67x嵌套属性访问340655.23x批量更新响应210326.56x 二、依赖追踪机制剖析 2.1 依赖收集实战案例 // 数据模型const state r…...
主流程发起,去除子流程的时长计算问题
问题: 有三个流程,流程1.2.3,流程2.3是流程1的子流程,若在流程1的过程中发起流程2.3,计算流程1的时长要排除流程2.3的时间,流程2.3之间可能是包含、交集、无交集三种。 实现 代码: import jav…...
Java 8 到 Java 21 系列之 新日期时间API:精确的时间管理(Java 8)
Java 8 到 Java 21 系列之 新日期时间API:精确的时间管理(Java 8) 系列目录 Java8 到 Java21 系列之 Lambda 表达式:函数式编程的开端(Java 8)Java 8 到 Java 21 系列之 Stream API:数据处理的…...
【LeetCode】在每个树行中找最大值(DFS 深度优先搜索)
📌题目链接:LeetCode 515. 在每个树行中找最大值 题目描述 给定一棵二叉树的根节点 root,请找出该二叉树中每一层的最大值。 示例 示例 1 输入: root [1,3,2,5,3,null,9] 输出: [1,3,9]示例 2 输入: root [1,2,3] 输出: [1,3]思路分析 …...
深度学习中模型量化那些事
在深度学习中模型量化可以分为3块知识点,数据类型、常规模型量化与大模型量化。本文主要是对这3块知识点进行浅要的介绍。其中数据类型是模型量化的基本点。常规模型量化是指对普通小模型的量化实现,通常止步于int8的量化,绝大部分推理引擎都…...
手写JSX实现虚拟DOM
🤍 前端开发工程师、技术日更博主、已过CET6 🍨 阿珊和她的猫_CSDN博客专家、23年度博客之星前端领域TOP1 🕠 牛客高级专题作者、打造专栏《前端面试必备》 、《2024面试高频手撕题》、《前端求职突破计划》 🍚 蓝桥云课签约作者、…...
Redis的Spring客户端的使用
Redis 的 Spring 客户端使用 前面使用 Jedis 时, 是借助 Jedis 对象中的各种方法来对 Redis 进行操作. 而在 Spring 框架中, 则是通过 StringRedisTemplate 来操作 Redis. 最开始提供的类是 RedisTemplate, StringRedisTemplate 是 RedisTemplate 的子类, 专门用于处理文本数据…...
7.4 SVD 的几何背景
一、SVD 的几何解释 SVD 将矩阵分解成三个矩阵的乘积: ( 正交矩阵 ) ( 对角矩阵 ) ( 正交矩阵 ) (\pmb{正交矩阵})\times(\pmb{对角矩阵})(\pmb{正交矩阵}) (正交矩阵)(对角矩阵)(正交矩阵),用几何语言表述其几何背景: ( 旋转 ) ( 伸缩 )…...
WEB安全--内网渗透--LMNTLM基础
一、前言 LM Hash和NTLM Hash是Windows系统中的两种加密算法,不过LM Hash加密算法存在缺陷,在Windows Vista 和 Windows Server 2008开始,默认情况下只存储NTLM Hash,LM Hash将不再存在。所以我们会着重分析NTLM Hash。 在我们内…...
BN 层做预测的时候, 方差均值怎么算
✅ 一、Batch Normalization(BN)回顾 BN 层在训练和推理阶段的行为是不一样的,核心区别就在于: 训练时用 mini-batch 里的均值方差,预测时用全局的“滑动平均”均值方差。 🧪 二、训练阶段(Trai…...
【AI热点】meta新发布llama4深度洞察(快速认知)
以下是一份针对新发布的 Llama 4 模型的深度洞察报告。报告将从模型家族整体概览、技术创新与架构特点、功能与性能表现、多模态与超长上下文、与主流竞品比较、应用场景与未来展望六大部分进行分析和总结。 一、Llama 4 家族整体概览 家族成员 Llama 4 Scout 总参数量约 10…...
大厂机考——各算法与数据结构详解
目录及其索引 哈希双指针滑动窗口子串普通数组矩阵链表二叉树图论回溯二分查找栈堆贪心算法动态规划多维动态规划学科领域与联系总结 哈希 学科领域:计算机科学、密码学、数据结构 定义:通过哈希函数将任意长度的输入映射为固定长度…...
前端面试的ACM模式笔试输入模式
在前端面试的ACM模式笔试中,输入参数的读取是核心技能之一,以下是常见场景的代码实现及注意事项: 一、JavaScript的两种输入模式 1. V8模式(浏览器环境/部分OJ平台) • 核心方法:通过 read_line() 或 rea…...
AIP-215 API特定proto
编号215原文链接AIP-215: API-specific protos状态批准创建日期2018-10-01更新日期2018-10-01 API通常使用API特定proto定义,偶尔依赖通用组件。保持API相互隔离可以避免版本问题和客户端库打包问题。 指南 所有特定于某个API的protos 必须 位于带有主版本号的包…...
计算机毕业设计指南
哈喽各位大四的小伙伴们,以下是一份详细的计算机专业毕业设计指南,涵盖选题、流程、技术选型、开发建议和常见问题解决方案,帮助你高效完成毕业设计,如有其他问题,欢迎点击文章末尾名片进行咨询,可免费赠送…...
内网渗透-Linux提权之suid提权
Linux提权之suid提权 suid简介 在Linux系统中的文件,通常有rwx也就是读、写、执行三种权限,但其实还有第四种权限,也就是suid权限。在执行拥有suid权限的文件的过程中,会获得文件属主的权限。例如,当cat命令具有suid…...
FreeCAD傻瓜教程-钣金工作台SheetMetal的安装和简单使用
起因: 因为需要在平面上固定一段比较短的铝型材,角码太占用横向空间,所以想做两个Z字固定片,将型材从两端进行螺丝固定。在绘图的时候想到,板材折弯后的长度。开孔位置等都会有所变化,如何确定相关的尺寸&a…...
语法: ptr=malloc(size)
MALLOC( ) 语法: ptrmalloc(size) 参数: size是一个整数,表示被分配的字节个数; 返回值: 如果允许的话,返回值是一个指向被分配存储器的指针;否则的话, 返回值是一个非指针; 功能: 该函数用来分配一定大小的空间给一个对象,其大小为size,但该空间的值为不确定值; 有…...
(五)安卓开发中的滚动布局(ScrollView / HorizontalScrollView)使用详解
在安卓开发中,滚动布局是一种非常重要的布局方式,它允许用户在屏幕上滚动查看超出屏幕范围的内容。本文将详细讲解滚动布局的基本概念、主要属性、代码示例以及具体的使用场景,帮助开发者深入理解并灵活运用。 基本概念 滚动布局本质上是一个…...
Matlab:三维绘图
目录 1.三维曲线绘图命令:plot3 实例——绘制空间直线 实例——绘制三角曲线 2.三维曲线绘图命令:explot3 3.三维网格命令:mesh 实例——绘制网格面 实例——绘制山峰曲面 实例——绘制函数曲线 1.三维曲线绘图命令:plot3 …...
Java中String、Array、List的相互转换工具类
Java中的数组与集合类的使用,系列文章: 《Java数组》 《Java集合类》 《Java中String、Array、List的相互转换工具类》 《Java8使用Stream流实现List列表的查询、统计、排序、分组》 《Java实现List集合的排序:Comparable接口、Comparator接口、stream().sorted()方法的使用…...
【HFP】蓝牙HFP应用层核心技术研究
免提配置文件(Hands-Free Profile, HFP)作为实现设备间音频通信的关键协议,广泛应用于车载系统、蓝牙耳机等场景。本文将基于最新技术规范,深入剖析HFP应用层的功能要求、协议映射及编解码器支持,为蓝牙开发工程师提供详尽的技术指南。 一、HFP应用层功能全景图 HFP定义…...
P1734 最大约数和(dp)
题目描述 选取和不超过 S 的若干个不同的正整数,使得所有数的约数(不含它本身)之和最大。 输入格式 输入一个正整数 S。 输出格式 输出最大的约数之和。 输入输出样例 输入 #1复制 11 输出 #1复制 9 说明/提示 【样例说明】 取数…...
P1596 [USACO10OCT] Lake Counting S(DFS)
题意翻译 由于近期的降雨,雨水汇集在农民约翰的田地不同的地方。我们用一个 NM(1≤N≤100,1≤M≤100) 的网格图表示。每个网格中有水(W) 或是旱地(.)。一个网格与其周围的八个网格相连,而一组相连的网格视…...
ROS Bag 数据裁剪教程
ROS Bag 数据裁剪教程 文章目录 ROS Bag 数据裁剪教程1. Bag 数据显示2. Bag 数据裁剪2.1 基本命令2.2 过滤更多条件2.3 注意事项 在使用 ROS 进行机器人开发和调试时,我们经常需要使用 rosbag 工具来记录和回放传感器数据、日志等信息。本文将介绍如何使用 rosba…...
AF3 OpenFoldDataLoader类解读
AlphaFold3 data_modules 模块的 OpenFoldDataLoader 类继承自 PyTorch 的 torch.utils.data.DataLoader。该类主要对原始 DataLoader 做了批数据增强与控制循环迭代次数(recycling)相关的处理。 源代码: class OpenFoldDataLoader(torch.utils.data.DataLoader):def __in…...
基于内容的课程推荐网站的设计与实现00(SSM+htmlL)
基于内容的课程推荐网站的设计与实现(SSMhtml) 该系统是一个基于内容的课程推荐网站,旨在为用户提供个性化的课程推荐。系统包含多个模块,如教学视频、教学案例、课程信息、系统公告、个人中心和后台管理。用户可以通过首页访问不同的课程分类ÿ…...