计算机组成原理—— 外围设备(十三)
记住,伟大的成就往往诞生于无数次尝试和失败之后。每一次跌倒,都是为了让你学会如何更加坚定地站立;每一次迷茫,都是为了让你找到内心真正的方向。即使前路漫漫,即使困难重重,心中的火焰也不应熄灭。它代表着你的热情、你的勇气以及对未来的无限希望。
无论世界如何变化,请保持那份最初的纯真与好奇。让每一个小小的进步成为通向伟大目标的阶梯,用每一次的努力编织成通往梦想的道路。在这个过程中,你会发现最强大的力量来源于自己内心的坚持与不懈追求。
因此,勇敢地迎接每一个挑战,积极面对生活中的每一次起伏。相信自己,你可以超越任何界限,实现心中所愿。因为你不仅仅是在为自己的梦想奋斗,更是在用自己的行动诠释着生命的意义。未来充满了无限可能,而你正是那个能够开启这些可能性的人。
所以,请继续怀揣着希望前行,用你的行动证明给世界看,你是独一无二的存在,拥有改变世界的力量。在你追求梦想的路上,每一步都将绽放出属于你的光芒,照亮你前进的方向,也激励着周围的人去追寻他们自己的星辰大海。未来正等待着你去书写,而你就是那支描绘辉煌篇章的笔。
计算机组成原理资源网
https://www.wenjingketang.com/这里面有ppt课后习题及答案,需要的可以自行下载
目录
8.1 外围设备概述
8.1.1 什么是外围设备
8.1.2 外围设备的分类和功能
8.2 磁盘存储设备详解
8.2.1 磁记录原理与记录方式
1. 磁记录物理原理
2. 常见磁记录方式
3. 编码示例(RLL(2,7))
8.2.2 磁盘的基本组成和分类
1. 机械结构组成
2. 分类标准
8.2.3 硬磁盘驱动器和控制器
1. HDD硬件架构
2. 控制器核心功能
8.2.4 磁盘上信息的分布
1. 物理结构参数
2. 低级格式化示例
8.2.5 磁盘存储器的技术指标
1. 关键性能指标
2. 可靠性指标
8.2.6 磁盘阵列(RAID)
1. RAID级别对比
2. Linux下RAID5配置示例
扩展1:磁头飞行高度控制技术(空气轴承原理)
1. 空气轴承工作原理
2. 飞行高度控制技术
扩展2:叠瓦式(SMR) vs 垂直记录(PMR)对比
1. 结构对比示意图
2. 性能对比表
扩展3:振动补偿系统原理
1. 系统组成框图
2. 振动补偿算法伪代码
扩展4:ZBR(区域位记录)详细算法
1. ZBR分区原理
**2. 分区配置示例代码
扩展5:纠错码数学推导(以Reed-Solomon码为例)
1. 伽罗华域(GF)基础
2. RS编码过程
扩展6:RAID重构过程状态机分析
1. 状态转移图
2. 重构过程伪代码
扩展7:Facebook冷存储架构设计案例
1. 架构拓扑图
2. 关键设计参数
3. 纠删码存储示例
8.1 外围设备概述
8.1.1 什么是外围设备
外围设备(Peripheral Devices)是计算机系统中除中央处理器(CPU)和内存外,所有与主机进行数据交换的硬件设备。它们通过接口与主板连接,扩展计算机的功能边界。
核心特征:
- 非核心计算组件
- 需通过标准接口(USB/PCIe/SATA等)连接
- 具有独立电源需求(部分设备)
8.1.2 外围设备的分类和功能
按功能分类的完整体系:
类别 | 功能描述 | 典型设备示例 |
---|---|---|
输入设备 | 将外部信息转换为数字信号 | 键盘、扫描仪、麦克风 |
输出设备 | 将数字信号转换为人类可感知形式 | 显示器、打印机、扬声器 |
存储设备 | 持久化数据存储 | HDD、SSD、光盘驱动器 |
通信设备 | 实现系统间数据交换 | 网卡、调制解调器、蓝牙适配器 |
混合设备 | 综合多种功能 | 触摸屏(输入+输出)、多功能打印机 |
8.2 磁盘存储设备详解
8.2.1 磁记录原理与记录方式
1. 磁记录物理原理
- 基本原理:利用磁性材料的剩磁特性存储二进制数据(0/1)
- 关键组件:
- 磁头:实现电信号→磁场→磁化翻转
- 磁介质:如钴基合金盘片,划分磁道和扇区
- 写入过程:电流通过磁头线圈产生磁场,磁化盘片表面
- 读取过程:磁头感应磁化方向变化,转化为电信号
2. 常见磁记录方式
记录方式 | 编码规则 | 优点 | 缺点 |
---|---|---|---|
归零制(RZ) | 正脉冲表1,负脉冲表0,脉冲后归零 | 简单 | 低密度,高误码 |
不归零制(NRZ) | 电平翻转表1,保持表0 | 密度高 | 时钟同步困难 |
调频制(FM) | 每位起始处跳变,中间跳变表1 | 时钟同步方便 | 效率低 |
改进调频制(MFM) | 仅当连续0时插入同步跳变 | 密度提升25% | 复杂度增加 |
游程长度受限码(RLL) | 限制连续0的数量,提升密度 | 高密度,高效 | 编码复杂 |
3. 编码示例(RLL(2,7))
# RLL(2,7)编码表片段示例 encoding_table = {'00': '1010','01': '1000','10': '0010','11': '0000' }
8.2.2 磁盘的基本组成和分类
1. 机械结构组成
+-----------------------+ | 主轴电机 → 旋转盘片 | | 磁头臂 → 音圈电机控制 | | 空气过滤系统 | | 接口电路板(PCB) | +-----------------------+
2. 分类标准
分类维度 | 类型 |
---|---|
介质类型 | 硬盘(HDD)、软盘(Floppy)、磁带 |
可移动性 | 固定盘、可换盘 |
接口类型 | SATA III (6Gbps), SAS (12Gbps), NVMe(SSD专用) |
应用场景 | 企业级(15K RPM)、桌面级(7.2K RPM)、监控专用 |
8.2.3 硬磁盘驱动器和控制器
1. HDD硬件架构
+------------+| 主机接口 || (SATA/SAS)|+-----+------+|+-----v------+| 控制器 || (ARM SoC) |+-----+------+|+-----v------+ +-----------------+| 缓存芯片 <-----> 读写缓冲 (256MB) |+-----+------+ +-----------------+|+-----v-------------------+| 前置放大器/读写通道 |+-----+-------------------+|+-----v-------------------+| 磁头堆栈组件 (HSA) |+-------------------------+
2. 控制器核心功能
- 坏道管理:G-LIST(增长缺陷表)和P-LIST(原始缺陷表)
- 命令队列:NCQ(Native Command Queuing)优化IO顺序
- 纠错编码:Reed-Solomon码处理扇区错误
8.2.4 磁盘上信息的分布
1. 物理结构参数
+------------------------+| 柱面 (Cylinder) || → 磁道 (Track) || → 扇区 (Sector) || → 512/4K字节 |+------------------------+
2. 低级格式化示例
// 模拟磁盘低级格式化过程 struct DiskGeometry {int cylinders;int heads;int sectors_per_track; };void low_level_format(struct DiskGeometry dg) {for (int cyl = 0; cyl < dg.cylinders; cyl++) {for (int head = 0; head < dg.heads; head++) {for (int sec = 0; sec < dg.sectors_per_track; sec++) {write_sector(cyl, head, sec, BLANK_DATA);}}} }
8.2.5 磁盘存储器的技术指标
1. 关键性能指标
指标 | 计算公式 | 典型值 |
---|---|---|
平均寻道时间 | 机械运动时间 | 3-15ms |
旋转延迟 | 0.5*(60/RPM) | 2ms(15K RPM) |
数据传输率 | (转速×字节/磁道)/60 | 250MB/s(SATA III) |
IOPS | 1000/(寻道+旋转+传输时间) | 150-200(随机读) |
2. 可靠性指标
- MTBF(平均无故障时间):1,000,000小时↑
- 年故障率(AFR):0.5%-2%
- UBER(不可恢复误码率):<10^-15
8.2.6 磁盘阵列(RAID)
1. RAID级别对比
级别 | 冗余性 | 最少盘数 | 利用率 | 典型应用场景 |
---|---|---|---|---|
RAID0 | 无 | 2 | 100% | 视频编辑临时存储 |
RAID1 | 镜像 | 2 | 50% | 系统盘 |
RAID5 | 分布式校验 | 3 | (n-1)/n | 数据库存储 |
RAID6 | 双校验 | 4 | (n-2)/n | 归档存储 |
RAID10 | 镜像+条带 | 4 | 50% | 金融交易系统 |
2. Linux下RAID5配置示例
# 使用mdadm创建RAID5 mdadm --create /dev/md0 --level=5 --raid-devices=3 /dev/sd[abc]1 --spare-devices=1 /dev/sdd1# 查看RAID状态 mdadm --detail /dev/md0# 输出示例: # Version : 1.2 # Creation Time : Wed Aug 21 10:17:14 2024 # Raid Level : raid5 # Array Size : 209584128 (199.88 GiB 214.60 GB) # Used Dev Size : 104792064 (99.94 GiB 107.30 GB)
注:以上为精简核心内容,下面是扩展知识:
扩展1:磁头飞行高度控制技术(空气轴承原理)
1. 空气轴承工作原理
其中:
- hh:磁头与盘面间隙(典型值1-3nm)
- pp:气膜压力
- μμ:空气粘度
- UU:盘面线速度(~20m/s)
2. 飞行高度控制技术
- 热膨胀调节:
# 磁头加热器控制算法示例 def adjust_flying_height(current_height, target=2.5e-9):error = target - current_heightheater_power = PID_controller(error) # PID控制输出apply_thermal_expansion(heater_power) # 通过加热改变磁头形状return new_height
- 关键技术参数:
参数 典型值 飞行高度 1-3 nm 动态调节精度 ±0.1 nm 响应时间 <10 μs
扩展2:叠瓦式(SMR) vs 垂直记录(PMR)对比
1. 结构对比示意图
PMR结构: +---+---+---+---+---+ | | | | | | ← 独立磁道 +---+---+---+---+---+SMR结构: +-------------------+ | 磁道N | ← 覆盖下层磁道N-1 +-------------------+
2. 性能对比表
特性 | SMR | PMR |
---|---|---|
存储密度 | 提高15-25% | 标准密度 |
随机写性能 | 差(需缓存区重组) | 优秀 |
适用场景 | 冷数据/顺序写入 | 通用存储 |
典型容量 | 20TB+ | 18TB |
写放大率 | 2-5倍 | 1倍 |
管理复杂度 | 需要专用主机支持 | 即插即用 |
扩展3:振动补偿系统原理
1. 系统组成框图
+---------------------+ | 加速度传感器 | → 检测振动信号 +----------+----------+| +----------v----------+ | 自适应滤波算法 | → 消除机械共振频率 +----------+----------+| +----------v----------+ | 音圈电机(VCM) | → 动态调整磁头位置 +---------------------+
2. 振动补偿算法伪代码
class VibrationCompensator:def __init__(self):self.buffer = CircularBuffer(size=100) # 存储振动历史数据self.filter = KalmanFilter() # 卡尔曼滤波器def update(self, acceleration):# 1. 数据预处理filtered = self.filter.apply(acceleration)# 2. 补偿量计算compensation = 0for i in range(self.buffer.size):weight = 0.5**(i+1) # 指数衰减权重compensation += self.buffer[i] * weight# 3. 驱动VCM执行补偿adjust_head_position(compensation)# 更新缓冲区self.buffer.push(filtered)
扩展4:ZBR(区域位记录)详细算法
1. ZBR分区原理
数据密度公式:D(r)=B/2πr⋅s(其中:r=半径,s=扇区数,B=每扇区字节数)数据密度公式:D(r)=2πr⋅sB(其中:r=半径,s=扇区数,B=每扇区字节数)
**2. 分区配置示例代码
// 典型ZBR分区表 struct ZBR_Zone {int start_sector;int end_sector;int sectors_per_track; // 外圈扇区数多于内圈int bit_density; // bits/inch };struct ZBR_Zone zones[] = {{0, 10000, 250, 2_800_000}, // 外圈区域{10001, 20000, 200, 2_200_000},{20001, 30000, 180, 1_900_000}, // 内圈区域 };
扩展5:纠错码数学推导(以Reed-Solomon码为例)
1. 伽罗华域(GF)基础
2. RS编码过程
扩展6:RAID重构过程状态机分析
1. 状态转移图
[正常] --检测到磁盘故障--> [降级] [降级] --插入新磁盘--> [重构中] [重构中] --完成校验--> [正常]--超时/错误--> [失败]
2. 重构过程伪代码
def raid_rebuild(raid_array, new_disk):state = "PREPARING"try:state = "READ_PARITY"parity_data = calculate_parity(raid_array.healthy_disks)state = "WRITE_DATA"for stripe in raid_array.stripes:rebuild_data = xor_operation(parity_data, stripe.healthy_blocks)new_disk.write(stripe.position, rebuild_data)state = "VERIFY"if verify_integrity(new_disk):state = "NORMAL"return Trueelse:state = "FAILED"return Falseexcept Exception as e:log_error(f"重构失败于状态 {state}: {str(e)}")state = "FAILED"return False
扩展7:Facebook冷存储架构设计案例
1. 架构拓扑图
+----------------+ +----------------+ | Web服务器 | | 热存储集群 | | (处理元数据) |<---->| (SSD, RAID10) | +----------------+ +----------------+↓ +----------------+ +----------------+ | 编码代理 |----->| 冷存储集群 | | (Erasure Coding)| | (SMR HDD, RS(10,16)) +----------------+ +----------------+
2. 关键设计参数
参数 | 规格 |
---|---|
编码方案 | Reed-Solomon(10,16) |
存储密度 | 80PB/机架 |
功耗比 | 0.7W/TB |
数据完整性 | 99.9999999999% (12个9) |
访问延迟 | 分钟级 |
3. 纠删码存储示例
# RS(10,16)编码示例 from reedsolo import RSCodeccodec = RSCodec(6) # 可纠正6个错误 data = b"Facebook_Cold_Data_123" encoded = codec.encode(data)# 模拟存储节点分布 storage_nodes = {'node01': encoded[0:5],'node02': encoded[5:10],'node03': encoded[10:15],'node04': encoded[15:20],'node05': encoded[20:25],'node06': encoded[25:30] # 最后6个为校验块 }
相关文章:
计算机组成原理—— 外围设备(十三)
记住,伟大的成就往往诞生于无数次尝试和失败之后。每一次跌倒,都是为了让你学会如何更加坚定地站立;每一次迷茫,都是为了让你找到内心真正的方向。即使前路漫漫,即使困难重重,心中的火焰也不应熄灭。它代表…...
React简介
React简介 A Brief Introduction to React By JacksonML 1. 关于React React是一个知名的Web框架。众所周知,jQuery, Angular, Vue等框架都曾闪亮登场,并且,都仍然在全球市场占有一席之地。React这个颇有担当的新锐,也进入到我…...
Linux-C/C++《七、字符串处理》(字符串输入/输出、C 库中提供的字符串处理函数、正则表达式等)
字符串处理在几乎所有的编程语言中都是一个绕不开的话题,在一些高级语言当中,对字符串的处理支 持度更是完善,譬如 C、 C# 、 Python 等。若在 C 语言中想要对字符串进行相关的处理,譬如将两个字符串进行拼接、字符串查找、两个…...
哈希动态规划dp_5
一.哈希 哈希(Hashing)是计算机科学中一种非常重要的技术,用于将输入的数据映射到固定大小的值(哈希值)上。哈希算法和哈希数据结构广泛应用于各种领域,包括数据查找、加密、缓存、数据库索引等。我们来详…...
电商分布式场景中如何保证数据库与缓存的一致性?实战方案与Java代码详解
文章目录 一、缓存一致性问题的本质写后读不一致:更新数据库后,缓存未及时失效并发读写竞争:多个线程同时修改同一数据缓存与数据库事务不同步:部分成功导致数据错乱 二、5大核心解决方案与代码实现方案1:延迟双删策略…...
DeepSeek-R1 大模型本地部署指南
文章目录 一、系统要求硬件要求软件环境 二、部署流程1. 环境准备2. 模型获取3. 推理代码配置4. 启动推理服务 三、优化方案1. 显存优化技术2. 性能加速方案 四、部署验证健康检查脚本预期输出特征 五、常见问题解决1. CUDA内存不足2. 分词器警告处理3. 多GPU部署 六、安全合规…...
【数据结构】 栈和队列
在计算机科学的世界里,数据结构是构建高效算法的基础。栈(Stack)和队列(Queue)作为两种基本且重要的数据结构,在软件开发、算法设计等众多领域都有着广泛的应用。今天,我们就来深入探讨一下栈和…...
用Python构建Mad Libs经典文字游戏
前言 Mad Libs 是一种经典的文字游戏,其中一名玩家向其他玩家询问各种词汇,如名词、动词、形容词等,而不提供任何上下文。然后将这些提示词插入到一个充满空白的故事模板中,从而创造出一个搞笑或荒谬的故事,供玩家大声朗读以获取乐趣。 自1950年代发明以来,Mad Libs 一…...
ReactiveSwift模拟登录功能
通过使用ReactiveSwift模拟一个简单的登录功能,该功能如下要求: 账号不能为空密码必须大于6位 登录按钮方可点击 LoginViewModel: import ReactiveSwiftclass LoginViewModel {// 创建两个信号let userName MutableProperty<String&g…...
亲测有效!使用Ollama本地部署DeepSeekR1模型,指定目录安装并实现可视化聊天与接口调用
文章目录 一、引言二、准备工作(Ollama 工具介绍与下载)2.1 Ollama介绍2.2 Ollama安装 三、指定目录安装 DeepSeek R1四、Chatbox 可视化聊天搭建4.1 Chatbox下载安装4.2 关联 DeepSeek R1 与 Chatbox 的步骤 五、使用 Ollama 调用 DeepSeek 接口5.1 请求…...
【第11章:生成式AI与创意应用—11.3 AI艺术创作的实现与案例分析:DeepArt、GANBreeder等】
凌晨三点的画室里,数字艺术家小美盯着屏幕上的GANBreeder界面——她将梵高的《星月夜》与显微镜下的癌细胞切片图进行混合,生成的新图像在柏林电子艺术展上引发轰动。这场由算法驱动的艺术革命,正在重写人类对创造力的定义。 一、机器视觉的觉醒之路 1.1 数字艺术的三次浪…...
MySQL的基本使用
MySQL 是一个强大且广泛使用的开源关系型数据库管理系统,适用于各种规模的应用程序。无论是初学者还是经验丰富的开发者,掌握 MySQL 的基本操作都是至关重要的。本文将带你了解 MySQL 的基础概念,并通过实例介绍如何执行一些常见的数据库操作…...
WEB安全--SQL注入--PDO与绕过
一、PDO介绍: 1.1、原理: PDO支持使用预处理语句(Prepared Statements),这可以有效防止SQL注入攻击。预处理语句将SQL语句与数据分开处理,使得用户输入的数据始终作为参数传递给数据库,而不会直…...
微信小程序image组件mode属性详解
今天学习微信小程序开发的image组件,mode属性的属性值不少,一开始有点整不明白。后来从网上下载了一张图片,把每个属性都试验了一番,总算明白了。现总结归纳如下: 1.使用scaleToFill。这是mode的默认值,sc…...
大模型炼丹基础--GPU内存计算
一、摘要 选择合适的GPU对成本和效率都至关重要,合理分析GPU 二、硬件计算基础 1 个字节可以表示零(00000000)和 255(11111111)之间的数字 模型参数常用的数据类型如下: float(32 位浮点&a…...
istio入门篇(一)
一、背景 一直以来“微服务”都是一个热门的词汇,在各种技术文章、大会上,关于微服务的讨论和主题都很多。对于基于 Dubbo、SpringCloud 技术体系的微服务架构,已经相当成熟并被大家所知晓,但伴随着互联网场景的复杂度提升、业务…...
Ubuntu 24.04.1 LTS 本地部署 DeepSeek 私有化知识库
文章目录 前言工具介绍与作用工具的关联与协同工作必要性分析 1、DeepSeek 简介1.1、DeepSeek-R1 硬件要求 2、Linux 环境说明2.1、最小部署(Ollama DeepSeek)2.1.1、扩展(非必须) - Ollama 后台运行、开机自启: 2.2、…...
沃德校园助手系统php+uniapp
一款基于FastAdminThinkPHPUniapp开发的为校园团队提供全套的技术系统及运营的方案(目前仅适配微信小程序),可以更好的帮助你打造自己的线上助手平台。成本低,见效快。各种场景都可以自主选择服务。 更新日志 V1.2.1小程序需要更…...
Visual Studio Code使用ai大模型编成
1、在Visual Studio Code搜索安装roo code 2、去https://openrouter.ai/settings/keys官网申请个免费的配置使用...
工业软件测试方案
一、方案概述 本测试方案致力于全面、系统地评估工业仿真软件的综合性能,涵盖性能表现、功能完整性以及用户体验层面的易用性。同时,将其与行业内广泛应用的MATLAB进行深入的对比分析,旨在为用户提供极具价值的参考依据,助力其在…...
红队视角出发的k8s敏感信息收集——Kubernetes API 扩展与未授权访问
针对 Kubernetes API 扩展与未授权访问 的详细攻击视角分析,聚焦 Custom Resource Definitions (CRD) 和 Aggregated API Servers 的潜在攻击面及利用方法: 攻击链示例 1. 攻击者通过 ServiceAccount Token 访问集群 → 2. 枚举 CRD 发现数据库配…...
一种 SQL Server 数据库恢复方案:解密、恢复并导出 MDF/NDF/BAK文件
方案特色 本方案可以轻松恢复和导出SQL数据库:MDF、NDF 和 BAK 文件。 恢复和导出SQL数据库:主(MDF),辅助(NDF)和备份(BAK)文件分析 SQL Server LOG 数据库事务日志将 …...
Pygame中自定义事件处理的方法2-1
1 Pygame事件处理流程 Pygame中的事件处理流程如图1所示。 图1 Pygame中事件处理流程 系统事件包括鼠标事件和键盘事件等,当用户点击了鼠标或者键盘时,这些事件会自动被放入系统的事件队列中。用户自定义事件需要通过代码才能被放入事件队列中。Pygame…...
langchain学习笔记之消息存储在内存中的实现方法
langchain学习笔记之消息存储在内存中的实现方法 引言背景消息存储在内存的实现方法消息完整存储:完整代码 引言 本节将介绍 langchain \text{langchain} langchain将历史消息存储在内存中的实现方法。 背景 在与大模型交互过程中,经常出现消息管理方…...
HarmonyOS组件之Tabs
Tabs 1.1概念 Tabs 视图切换容器,通过相适应的页签进行视图页面的切换的容器组件每一个页签对应一个内容视图Tabs拥有一种唯一的子集元素TabContent 1.2子组件 不支持自定义组件为子组件,仅可包含子组件TabContent,以及渲染控制类型 if/e…...
【C++】基础入门(详解)
🌟 Hello,我是egoist2023! 🌍 种一棵树最好是十年前,其次是现在! 目录 输入&输出 缺省参数(默认参数) 函数重载 引用 概念及定义 特性及使用 const引用 与指针的关系 内联inline和nullptr in…...
bps是什么意思
本文来自DeepSeek "bps" 是 "bits per second" 的缩写,表示每秒传输的比特数,用于衡量数据传输速率。1 bps 即每秒传输 1 比特。 常见单位 bps:比特每秒 Kbps:千比特每秒(1 Kbps 1,000 bps&am…...
OceanBase使用ob-loader-dumper导出表报ORA-00600
执行下面的语句导出表报错,同样的语句之前都没有报错。 ob-loader-dumper-4.2.8-RELEASE/bin/obdumper -h xxx.xxx.xxx.xxx -P 2883 -p 密码 --column-splitter| --no-sys-t gzuat_ss#ob8(集群) -D 数据库名 --cut --table teacher --no-ne…...
JUC并发总结一
大纲 1.Java集合包源码 2.Thread源码分析 3.volatile关键字的原理 4.Java内存模型JMM 5.JMM如何处理并发中的原子性可见性有序性 6.volatile如何保证可见性 7.volatile的原理(Lock前缀指令 + 内存屏障) 8.双重检查单例模式的volatile优化 9.synchronized关键字的原理 …...
hive:分区>>静态分区,动态分区,混合分区
分区表 使用场景:数据量庞大且经常用来做查询的表 特点:将数据分别存储到不同的目录里 优点:避免全盘扫描,提高查询效率 分区的类型 它们的默认值分别是: false, strict, 要求至少有一个静态分区列,而 nonstr…...
深入解析PID控制算法:从理论到实践的完整指南
前言 大家好,今天我们介绍一下经典控制理论中的PID控制算法,并着重讲解该算法的编码实现,为实现后续的倒立摆样例内容做准备。 众所周知,掌握了 PID ,就相当于进入了控制工程的大门,也能为更高阶的控制理论…...
linux--关于GCC、动态库静态库
gcc和g的异同 他们是不同的编译器, 在linux中,生成可执行文件不像和windows一样。 linux中是以**.out作为可执行文件**的 无论是什么系统,生成可执行文件分为4步: 预处理–>编译–>汇编–>链接。 从.c/.cpp–>.i文件…...
matlab汽车动力学半车垂向振动模型
1、内容简介 matlab141-半车垂向振动模型 可以交流、咨询、答疑 2、内容说明 略 3、仿真分析 略 4、参考论文 略...
Pygame中自定义事件处理的方法2-2
在《Pygame中自定义事件处理的方法2-1》中提到了处理自定义事件的方法。通过处理自定义事件,可以实现动画等效果。 1 弹跳小球程序 通过处理自定义事件,可以实现弹跳小球程序,如图1所示。 图1 弹跳小球程序 2 弹跳小球程序原理 实现弹跳小…...
B. Longest Divisors Interval
time limit per test 2 seconds memory limit per test 256 megabytes Given a positive integer nn, find the maximum size of an interval [l,r][l,r] of positive integers such that, for every ii in the interval (i.e., l≤i≤rl≤i≤r), nn is a multiple of ii. …...
什么是服务的雪崩、熔断、降级的解释以及Hystrix和Sentinel服务熔断器的解释、比较
1.什么是服务雪崩? 定义:在微服务中,假如一个或者多个服务出现故障,如果这时候,依赖的服务还在不断发起请求,或者重试,那么这些请求的压力会不断在下游堆积,导致下游服务的负载急剧…...
从驾驶员到智能驾驶:汽车智能化进程中的控制与仿真技术
在汽车技术持续演进的历程中,人类驾驶员始终是一个极具研究价值的智能控制系统“原型”。驾驶员通过视觉感知、行为决策与操作执行的闭环控制,将复杂的驾驶任务转化为车辆的实际动作,同时动态适应道路环境的变化。这一过程不仅体现了高度的自…...
mysql和minio
在现代应用架构中,Word 文档、PPT 等文件通常存储在对象存储服务(如 MinIO)中,而不是直接存储在关系型数据库(如 MySQL)中。以下是具体的分工和原因: 为什么选择对象存储(如 MinIO&a…...
java练习(24)
PS:练习来自力扣 合并两个有序数组 给你两个按 非递减顺序 排列的整数数组 nums1 和 nums2,另有两个整数 m 和 n ,分别表示 nums1 和 nums2 中的元素数目。 请你 合并 nums2 到 nums1 中,使合并后的数组同样按 非递减顺序 排列。 注意&am…...
Android的Activity生命周期知识点总结,详情
一. Activity生命周期 1.1 返回栈知识点 二. Activity状态 2.1 启动状态 2.2 运行状态 2.3 暂停状态 2.4 停止状态 2.5 销毁状态 三. Activity生存期 3.1 回调方法 3.2 生存期 四. 体验Activity的生命周期 五. Activity被回收办法 引言: 掌握Acti…...
STM32——HAL库开发笔记19(串口中断接收实验)(参考来源:b站铁头山羊)
本实验,我们以中断的方式使得串口发送数据控制LED的闪烁速度,发送1,慢闪;发送2,速度正常;发送3,快闪。 一、电路连接图 二、实现思路&CubeMx配置 1、实现控制LED的闪烁速度 uint32_t bli…...
基于腾讯云TI-ONE 训练平台快速部署和体验 DeepSeek 系列模型
引言 在前两篇文章中,我们通过腾讯云的HAI部署了DeepSeek-R1,并基于此进行了一系列实践。 腾讯云HAI DeepSeek 腾讯云AI代码助手 :零门槛打造AI代码审计环境 基于腾讯云HAI DeepSeek 快速开发中医辅助问诊系统 这些尝试不仅帮助我们理解…...
python的类装饰器
装饰器不仅可以用于函数,还能作用于类。将装饰器应用于类时,其核心原理与作用于函数类似,都是通过接收一个类作为输入,然后返回一个新的类或者修改后的原类,以此来为类添加额外的功能 简单的类装饰器 def add_method…...
C++17中的LegacyContiguousIterator(连续迭代器)
文章目录 特点内存连续性与指针的兼容性更高的性能 适用场景与C接口交互高性能计算 支持连续迭代器的容器示例代码性能优势缓存局部性指针算术优化 注意事项总结 在C17标准里,LegacyContiguousIterator(连续迭代器)是一类特殊的迭代器。它不仅…...
Linux-文件IO
1.open函数 【1】基本概念和使用 #include <fcntl.h> int open(const char *pathname,int flags); int open(const char *pathname,int flags,mode_t mode); 功能: 打开或创建文件 参数: pathname //打开的文件名 f…...
DeepSeek-R1 + Cherry Studio 本地部署打造个人 AI 知识库
ChatGPT 爆火的时候,我心里就燃起了一个想法:打造一个专属于自己的AI知识库,它就像我的第二大脑一样,能记住我生活里的点点滴滴。 我随口一问“去年5月我做了什么”,它不仅能精准找到记录,还能帮我回忆起那…...
《红色警戒:兵临城下》 游戏软件安装步骤与百度网盘链接
软件简介: 《红色警戒:兵临城下》(Command & Conquer: Red Alert)是一款经典的即时战略游戏,由Westwood Studios开发,于1996年首次发行。它是《命令与征服》系列的衍生作品,以其独特的世界…...
25/2/16 <算法笔记> DirectPose
DirectPose 是一种直接从图像中预测物体的 6DoF(位姿:6 Degrees of Freedom)姿态 的方法,包括平移和平面旋转。它在目标检测、机器人视觉、增强现实(AR)和自动驾驶等领域中具有广泛应用。相比于传统的位姿估…...
第32周:文献阅读
目录 摘要 Abstract 文献阅读 问题引入 研究问题 研究意义 研究方法 集成方法 随机森林(RF) 支持向量机(SVM) 简单循环神经网络(SimpleRNN) 长短期记忆网络(LSTM) 创…...
Ollama 开发指南
文章来源:开发指南 - Ollama中文文档|Ollama官方文档 安装先决条件: GOC/C 编译器,例如 macOS 上的 Clang、TDM-GCC (Windows amd64) 或 llvm-mingw (Windows arm64)、Linux 上的 GCC/Clang。…...