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

Linux-服务器硬件及RAID配置实验

系列文章目录

` 提示:仅用于个人学习,进行查漏补缺使用。
1.Linux介绍、目录结构、文件基本属性、Shell
2.Linux常用命令
3.Linux文件管理
4.Linux 命令安装(rpm、install)
5.Linux账号管理
6.Linux文件/目录权限管理
7.Linux磁盘管理/文件系统
8.Linux逻辑卷管理LVM
9.Linux磁盘配额


提示:写完文章后,目录可以自动生成,如何生成可参考右边的帮助文档

文章目录

  • 系列文章目录
  • 前言
    • 一.RAID磁盘阵列介绍
    • 二.RAID主要优点
    • 三.RAID级别
      • RAID 0 (称为带区卷,性能最佳)
      • RAID 1
      • RAID 5
      • RAID 6
      • RAID 10
      • RAID 01
      • RAID总结如下:
      • 配置示例1:
        • 步骤1. 检查是否已安装mdadm软件包【mdadm是用于管理软件磁盘阵列的工具】
        • 步骤2. 虚拟机设置”里添加四个50G硬盘,确认添加后输入命令lsblk查看分区列表
        • 步骤3. 给这四个硬盘分区,之后lsblk查看 _PS:这里可以打个快照,留做案例2_
        • 步骤4. 为了后面实验方便,给dev/sde1 sdf1 sdg1 sdh1转换成raid格式
        • 步骤5. 使用步骤一工具命令,查看分区的盘有无被使用
        • 步骤6. 使用mdadm -C命令用e、f、g、h 盘创建RAID5磁盘阵列
        • 步骤7. 系统创建中需要一会儿时间,可用相关命令查看进度
        • 步骤8. 检查磁盘是否已做RAID
        • 步骤9. 创建并挂载文件系统
        • 步骤10. 实现模拟故障查看故障恢复
        • _PS:这里制作的RAID5(n>=3)有四块物理硬盘,所以这里可以允许有两块物理硬盘出现问题。_
    • 示例2:
    • 将示例1的RAID5磁盘阵列(/dev/md0),恢复最初状态,并用efgh四个盘做RAID10.【也可到快照开始做,直接从步骤7开始】
      • 步骤1.移除RAID5的设备
      • 步骤2.解除RAID5的挂载
      • 步骤3.停止RAID5的运行
      • 步骤4.删除RAID5目录并vim/etc/fstab进入系统自动挂载文件里删除记录
      • 步骤5.解挂载,停止raid设备,删除raid里所有硬盘后,擦除RAID超级块:
      • 步骤6.删除配置文件
      • 步骤7.用lsblk命令查看磁盘使用情况
      • 步骤8.删除各个主分区,接着每个物理盘分四个区,sde1,sdf1,sdg,sdh1都给10G,最后用lsblK命令查看
      • 步骤7.创建 RAID 10设备(先做镜像,再做条带)
      • 步骤8.检查磁盘是否已做RAID
      • 步骤9.创建并挂载文件系统
      • 步骤10.实现故障恢复
      • 步骤11.创建 /etc/mdadm.conf 配置文件,方便管理软RAID的配置,比如启动、停止
      • 内容补充:


前言

本章大概内容有:
       RAID磁盘阵列介绍、RAID主要优点、RAID级别、RAID配置实例实验等

提示:以下是本篇文章正文内容,下面案例可供参考

一.RAID磁盘阵列介绍

  • RAID(Redundant Array of Independent Disks,独立冗余磁盘阵列)是一种利用多个硬盘驱动器(HDD或SSD)组合起来提供更大存储容量、更高的数据传输速率和/或数据的冗余性的技术。
  • 通过将多个物理硬盘虚拟化为一个或多个逻辑硬盘,RAID允许操作系统将它们视为一个单一的存储资源。

二.RAID主要优点

  1. 性能提升:通过并行处理I/O请求,RAID可以提高数据读写速度。例如,RAID 0通过条带化技术将数据分散存储在多个硬盘中,从而提供更高的吞吐量。
  2. 数据冗余:某些RAID级别(如RAID 1、RAID 5、RAID 6等)提供了数据的冗余存储,即使一个或多个硬盘损坏,也不会丢失数据。
  3. 容错能力:RAID可以检测和纠正某些类型的错误,确保数据的完整性和系统的连续运行。
  4. 灵活性:可以根据需要添加或移除硬盘,扩展存储容量或更换故障硬盘。

三.RAID级别

根据不同的应用场景和需求,RAID有多种不同的级别,每个级别都有其特定的优点和限制。以下是一些常见的RAID级别:

  • RAID 0:提供最大的性能,但没有数据冗余。
  • RAID 1:提供数据镜像,具有很好的冗余性,但存储效率低。
  • RAID 5:提供数据分条存储和分布式奇偶校验,具有较好的性能和冗余性。
  • RAID 6:类似于RAID 5,但提供独立的奇偶校验块,允许两个硬盘同时损坏而不丢失数据。
  • RAID 10:结合了RAID 0的性能优化和RAID 1的数据冗余,提供高速度和高可靠性。

RAID 0 (称为带区卷,性能最佳)

image.png

  - **性能**:RAID 0通过将数据分散存储在多个硬盘上,实现了数据的并行读写,从而提供了最高的存储性能。它非常适合需要高吞吐量的应用,如视频编辑、游戏服务器和一些数据库应用。- **缺点**:RAID 0没有冗余能力,如果其中一个硬盘失败,所有数据都会丢失。因此,它不适合需要数据保护的环境。

RAID 1

image.png

  - **性能**:RAID 1提供了良好的读性能,但写性能可能会受到影响,因为数据需要写入两个硬盘。- **冗余性**:RAID 1通过将数据完全复制到两个硬盘上来实现冗余,如果一个硬盘失败,另一个硬盘仍然可以继续工作,不会丢失数据。- **存储效率**:由于数据被复制,RAID 1的存储效率只有50%,因为它需要两倍的存储空间来保持数据的冗余。

RAID 5

image.png

  - **性能**:RAID 5在读取操作上表现良好,尤其是在大容量配置。写入性能也比RAID 1好,因为它不需要像RAID 1那样写入两次。- **冗余性**:RAID 5通过分布式奇偶校验来实现冗余,每个硬盘上都存储有用于恢复数据的奇偶校验信息。- **存储效率**:RAID 5的存储效率为(n-1)/n,其中n是硬盘。

RAID 6

image.png

  - **性能**:RAID 6在写入性能上与RAID 5相似,但读取性能可能略好,因为它有两个独立的奇偶校验块。- **冗余性**:RAID 6可以承受两个硬盘同时失败而不丢失数据,这提供了比RAID 5更高的数据保护水平。- **存储效率**:RAID 6的存储效率为(n-2)/n。

RAID 10

image.png

  - **性能**:RAID 10结合了RAID 0的条带化和RAID 1的镜像技术,提供了出色的读写性能和数据保护。- **冗余性**:RAID 10具有很高的冗余性,因为它可以承受多个硬盘的失败,具体取决于配置。- **存储效率**:RAID 10的存储效率为(n/2)/n,因为它需要至少两个硬盘来创建一个镜像。- **优点:**1. 高性能: 具有RAID 0的高性能,因为数据可以并行读写。2. 高可靠性**:** 具有RAID 1的高可靠性,因为数据被镜像到多个磁盘上。- **缺点:**1. 成本高: RAID 10需要大量磁盘,因此成本较高。2. 存储效率低**:** 与RAID 1一样,存储效率较低。

RAID 01

image.png
RAID 01是RAID 0和RAID 1的组合,它将多个RAID 0阵列进行镜像。
优点:
高性能: 具有RAID 0的高性能,通过并行读写多个RAID 0阵列。
数据冗余: 具有RAID 1的数据冗余,通过在RAID 0阵列之间进行镜像。
缺点:
故障容忍性低: 无法容忍多块磁盘的故障,一旦一个RAID 0阵列中的任何一块磁盘出现问题,整个系统都会受到影响。
存储效率低: 需要更多的磁盘来实现相同的存储容量,存储效率较低。

RAID总结如下:

image.png

配置示例1:

步骤1. 检查是否已安装mdadm软件包【mdadm是用于管理软件磁盘阵列的工具】
rpm -q mdadm
yum install -y mdadm
步骤2. 虚拟机设置”里添加四个50G硬盘,确认添加后输入命令lsblk查看分区列表
lsblk

image.png
查看到sde,sdf,sdg,sdh四个已添加

步骤3. 给这四个硬盘分区,之后lsblk查看 PS:这里可以打个快照,留做案例2
fdisk /etc/sde   sdf  sdg   sdh        ### n 1 ....
lsblk

image.png

步骤4. 为了后面实验方便,给dev/sde1 sdf1 sdg1 sdh1转换成raid格式
fdisk /dev/sde1 sdf1  sdg1  sdh1     ###t   fd    w

image.png

步骤5. 使用步骤一工具命令,查看分区的盘有无被使用
mdadm -E /dev/sd[e-h]1

image.png

步骤6. 使用mdadm -C命令用e、f、g、h 盘创建RAID5磁盘阵列
mdadm -C -v /dev/md0 [-a yes] -l5 -n3 /dev/sd[efg]1 -x1 /dev/sde1-C:表示新建,类似tar里面的 -C
-v:显示创建过程中的详细信息。
/dev/md0:创建 RAID5 的名称。【/dev目录cat下名称为md0】
-a yes:--auto,表示如果有什么设备文件没有存在的话就自动创建,可省略。
-l:指定 RAID 的级别,l5 表示创建 RAID5。
-n:指定使用几块硬盘创建 RAID,n3 表示使用 3 块硬盘创建 RAID。
/dev/sd[efg]1:指定使用这3块磁盘分区去创建 RAID。
-x:指定使用几块硬盘做RAID的热备用盘,x1表示保留1块空闲的硬盘作备用
/dev/sde1:指定用作于备用的磁盘记忆:使用mdadm命令创建磁盘阵列并显示详细信息,在/dev/目录下的名字为md0,级别为RAID5,
sd[efg]3个设备做主要的,1个使用/dev/sde1做热备

image.png

步骤7. 系统创建中需要一会儿时间,可用相关命令查看进度
cat /proc/mdstat		#查看创建RAID的进度

image.png

mdadm -D /dev/md0			#查看磁盘阵列的详细信息

image.png
PS:可用watch命令来每隔一段时间刷新 /proc/mdstat 的输出
watch -n 1 ‘cat /proc/mdstat’

watch -n 1 'cat /proc/mdstat'		#每隔1秒刷新时间刷新 /proc/mdstat 的输出

成功页面如下:
image.png

步骤8. 检查磁盘是否已做RAID
mdadm -E /dev/sd[efgh]1

image.png

步骤9. 创建并挂载文件系统
mkfs -t xfs /dev/md0					###将刚创建的RAID5磁盘阵列,即/dev/目录下的md0制作文件系统
mkdir /myraid									###创建目录myraid,以便待会用来挂载
mount /dev/md0 /myraid/				###将1里的md0设备挂载到 2里的myraid
df -Th												###查看磁盘使用情况,是否挂载到myraid
cp /etc/fstab /etc/fstab.bak	###将/et/fstab复制到 /etc/fstab.bak,已做备份【没有bak可以往下走】
vim /etc/fstab								###fstab是系统启动时自动挂载文件系统的信息,编辑
/dev/md0      /myraid        xfs   	 defaults   0  0			###添加记录
mount -a 										  ###系统启动自动挂载刷新

image.png
image.png
image.png
image.png
image.png

步骤10. 实现模拟故障查看故障恢复
mdadm /dev/md0 -f /dev/sde1		#模拟/dev/sde1 故障		,即移除dev/sde1设备
mdadm -D /dev/md0					#查看发现sdh1已顶替sdbe1

1.故障前:
image.png
2.模拟故障后:
image.png

PS:这里制作的RAID5(n>=3)有四块物理硬盘,所以这里可以允许有两块物理硬盘出现问题。

例如:

mdadm /dev/md0 -f /dev/sdf1				###移除sdf1
mdadm -D /dev/md0									### 再次查看

image.png
继续移除sdg1

mdadm /dev/md0 -f /dev/sdg1				###移除sdg1
mdadm -D /dev/md0									### 再次查看

image.png

示例2:

将示例1的RAID5磁盘阵列(/dev/md0),恢复最初状态,并用efgh四个盘做RAID10.【也可到快照开始做,直接从步骤7开始】

步骤1.移除RAID5的设备

mdadm /dev/md0 -f /dev/sdf1
mdadm /dev/md0 -f /dev/sde1
mdadm /dev/md0 -f /dev/sdh1

image.png
image.png

步骤2.解除RAID5的挂载

umount /dev/md0

image.png
补充:mdadm命令其它常用选项

  • -r:移除设备
  • -a:添加设备
  • -S:停止RAID
  • **-A: 启动RAID **
mdadm /dev/md0 -f /dev/sdb1		###从RAID阵列 `/dev/md0` 中移除故障的硬盘 `/dev/sdb1`。这通常在检测到硬盘故障时执行。
mdadm /dev/md0 -r /dev/sdb1###从RAID阵列 `/dev/md0` 中恢复被移除的硬盘 `/dev/sdb1`。这通常在修复了故障的硬盘后执行。
mdadm /dev/md0 -a /dev/sde1###将新硬盘 `/dev/sde1` 添加到已存在的RAID阵列 `/dev/md0` 中,这通常在需要扩展阵列或替换故障硬盘时执行。

步骤3.停止RAID5的运行

mdadm -S /dev/md0

image.png

步骤4.删除RAID5目录并vim/etc/fstab进入系统自动挂载文件里删除记录

image.png
image.png

步骤5.解挂载,停止raid设备,删除raid里所有硬盘后,擦除RAID超级块:

mdadm --misc --zero-superblock /dev/sde		
mdadm --misc --zero-superblock /dev/sdf
mdadm --misc --zero-superblock /dev/sdg
mdadm --misc --zero-superblock /dev/sdg或者整合成下面这一条指令
mdadm --misc --zero-superblock /dev/sde1 /dev/sdf1 /dev/sdg1 /dev/sdh1
##- `--misc` 是一个选项,它允许 `mdadm` 用于一些特殊的操作,
##- `--zero-superblock` 选项用于擦除设备上的 RAID 超级块

image.png

步骤6.删除配置文件

rm -rf /etc/mdadm.conf

image.png
至此,RAID5已经处理干净

步骤7.用lsblk命令查看磁盘使用情况

lsblk

image.png

步骤8.删除各个主分区,接着每个物理盘分四个区,sde1,sdf1,sdg,sdh1都给10G,最后用lsblK命令查看

image.png

步骤7.创建 RAID 10设备(先做镜像,再做条带)

mdadm -Cv /dev/md0 -l1 -n2 /dev/sd[ef]1
mdadm -Cv /dev/md1 -l1 -n2 /dev/sd[gh]1
mdadm -Cv /dev/md10 -l0 -n2 /dev/md0 /dev/md1或
mdadm -Cv /dev/md0 -l10 -n4 -x1 /dev/sd{e,f,g,h}1     

image.png

 cat /proc/mdstat			###查看创建RAID10的进度

image.png

步骤8.检查磁盘是否已做RAID

mdadm -E /dev/sd[efgh]1					###检查和显示Linux 中多个设备的详细信息的命令。

image.png

步骤9.创建并挂载文件系统

mkfs -t xfs /dev/md10			###给/dev/目录下的md10设备制作文件系统
mkdir /myraid							###创建目录挂载点myraid
mount /dev/md10 /myraid/		###将文件系统md10挂载到挂载点myraid
df -Th											###显示 Linux 系统中文件系统的磁盘空间使用情况	
vim /etc/fstab							###进入系统启动挂载盘目录文件fstab
/dev/md10      /myraid        xfs   	 defaults   0  0			###加入系统启动挂载

image.png
image.png
image.png

步骤10.实现故障恢复

1.故障前使用mdadm -D /dev/md10,正常工作
image.png
2.模拟故障

mdadm /dev/md0 -f /dev/sde1     ###模拟sde1设备移除

image.png
3.故障后查看

mdadm -detail /dev/md0				###查看md0设备状态,有一个盘有问题,正常运行
mdadm -D /dev/md10						###查看md10设备状态,也能正常运行

image.png
image.png

步骤11.创建 /etc/mdadm.conf 配置文件,方便管理软RAID的配置,比如启动、停止

echo 'DEVICE /dev/sde1 /dev/sdf1 /dev/sdg1 /dev/sdh1'>/etc/mdadm.conf
mdadm --detail --scan >> /etc/mdadm.conf
###    配置 `/etc/mdadm.conf` 文件,并扫描现有的 RAID 阵列

image.png

内容补充:

###  删除raid10过程:
1.先umount组建好的raid    umount /dev/md102.停止raid设备:mdadm -S /dev/md103.此时如果忘了raid中的硬盘名称,要么重启系统,要么运行:mdadm -A -s /dev/md10
然后再用mdadm -D /dev/md10查看raid
中包含哪几个硬盘。再次运行第二步停止命令:mdadm -S /dev/md104.删除raid里的所有硬盘:mdadm --misc --zero-superblock /dev/sde,mdadm --misc --zero-superblock /dev/sdfmdadm --misc --zero-superblock /dev/sdgmdadm --misc --zero-superblock /dev/sdh
有几块硬盘,就按格式删几次,注意最后面的硬盘名称,也可以写在一条命令:
[root@localhost ~]# mdadm --misc --zero-superblock /dev/sdb10 /dev/sdf1 /dev/sdg1 /dev/sdh15.删除配置文件:rm -rf /etc/mdadm.conf

相关文章:

Linux-服务器硬件及RAID配置实验

系列文章目录 提示:仅用于个人学习,进行查漏补缺使用。 1.Linux介绍、目录结构、文件基本属性、Shell 2.Linux常用命令 3.Linux文件管理 4.Linux 命令安装(rpm、install) 5.Linux账号管理 6.Linux文件/目录权限管理 7.Linux磁盘管理/文件系统 8.Linu…...

白屏检测系统的设计与实现

目录 一、 什么是白屏问题?二、 问题分析与拆解2.1 人工判定一个白屏问题的逻辑2.2 自动化判定一个白屏问题的算法思想 三、 白屏检测算法3.1 图像灰度化3.2 图像二值化3.3 计算(判定为白屏)置信度 四、 白屏检测系统的设计与实现4.1 UI自动化…...

Real-Time Open-Vocabulary Object Detection:使用Ultralytics框架进行YOLO-World目标检测

Real-Time Open-Vocabulary Object Detection:使用Ultralytics框架进行YOLO-World目标检测 前言相关介绍前提条件实验环境安装环境项目地址LinuxWindows 使用Ultralytics框架进行YOLO-World目标检测进行训练进行预测进行验证 扩展目标跟踪设置提示 参考文献 前言 由…...

区块链用什么编程语言实现?

. 主流区块链的开发语言主要有:C、Go、Java、Rust、C#。 C使用率最高,其次是Go,很少有人用python开发区块链。...

【网络编程】UDP通信基础模型实现

udpSer.c #include<myhead.h> #define SER_IP "192.168.119.143" #define SER_PORT 7777 int main(int argc, const char *argv[]) {//1.创建int sfd socket(AF_INET,SOCK_DGRAM,0);if(sfd -1){perror("socket error");return -1;}//2.连接struct…...

Docker Compose 常用命令详解

Docker Compose 常用命令详解 Docker Compose 是 Docker 官方编排工具之一&#xff0c;用于定义和运行多容器 Docker 应用程序。通过 docker-compose.yml 文件&#xff0c;开发者可以轻松管理服务、网络、卷以及各服务之间的依赖关系。以下将介绍一些常用的 Docker Compose 命…...

超级外链工具,可发9600条优质外链

超级外链工具&#xff0c;是一款在线全自动化发外链的推广工具。使用本工具可免费为网站在线批量增加外链&#xff0c;大大提高外链发布工作效率&#xff0c;是广大草根站长们必备的站长工具。 外链工具只是网站推广的辅助工具&#xff0c;一般适用于短时间内无法建设大量外链…...

VisionPro二次开发学习笔记13-使用CogToolBlock进行图像交互

该程序演示了如何使用CogToolBlock进行图像交互. 从vpp文件中加载一个ToolBlock。 用户可以通过应用程序窗体上的数字增减控件修改ToolBlock输入端子的值。 用户还可以从coins.idb或采集FIFO中选择图像。 “运行一次”按钮执行以下操作&#xff1a; 获取下一个图像或读取下一…...

比特币价格分析:市场重置完成,下一个目标:70,000 美元

比特币再次处于关键支撑位&#xff0c;面临可能影响其短期前景的关键考验。分析师们正密切关注比特币是否重复熟悉的模式&#xff0c;暗示可能出现重大走势。 OKNews分析师Josh表示&#xff0c;比特币一直处于看跌趋势&#xff0c;正如 4 日图上的超级趋势指标所示。这种趋势的…...

大模型笔记5 Extractive QA任务评估

目录 Extractive QA任务评估 Extractive QA评测指标 precision, recall, f1 ROUGE 划分训练与评估数据集 token位置评估 单个token位置评估 输入label的token位置 预测token位置 评估 Wandb 共享机器同时登录 样本类别平衡 标记token label时对窗口进行筛选 训练…...

RCE绕过方式

目录 小于8个字符突破限制 无字母数字执行 php7的做法 php5的思考 PHP5shell 深入理解glob通配符 构造POC&#xff0c;执行任意命令 无参数读文件和RCE总结 代码解读 构造. 另一种构造方法 小于8个字符突破限制 但也只能执行一些非常短的命令&#xff0c;没有什么意义…...

Flutter 电视投屏模块

前言 村里的老人说:“珍爱生命,远离低头族。“ 之前开发的一个 DIM 项目 Tarsier,里面有一个分享视频的功能,同时包含在线视频播放、电视直播等。 考虑到用户在手机上看视频的体验问题,需要增加一个投屏功能,以便用户可以电影、电视直播等投到电视上用大屏幕观看。 用…...

【机器学习】卷积神经网络简介

&#x1f308;个人主页: 鑫宝Code &#x1f525;热门专栏: 闲话杂谈&#xff5c; 炫酷HTML | JavaScript基础 ​&#x1f4ab;个人格言: "如无必要&#xff0c;勿增实体" 文章目录 卷积神经网络简介1. 引言2. CNN的基本概念2.1 什么是卷积神经网络2.2 CNN与传统…...

时间函数链接函数等

1. 2.top相当于windows任务管理器 3.命令模式下不加冒号20G直接跳转行数 4. 相当于strcat 5.:13,15y 13行到15行复制 6. Ctrl 右 】是追踪命令 7. vi off_t -t看类型 8. qa关闭所有 9.gg 移动最前面 GG移动到最后面 10.终端中的全选命令1. 使用快捷键&…...

Android控件(示例)

在Android应用程序中&#xff0c;界面由布局和组件组成。布局相当于框架&#xff0c;而控件则是框架里面的内容。了解过Android布局后&#xff0c;如果要设计ui界面&#xff0c;还需要了解和掌握各个控件的应用。 一个界面的设计&#xff0c;先从创建容器开始&#xff0c;再向…...

图论------贝尔曼-福德(Bellman-Ford)算法

算法概述&#xff1a; Bellman-Ford算法核心代码如下 for(int i 1;i<n-1;i) for(int j 1;j<m;j) if(dic[v[j]]> dic[u[j]] w[j]] dic[v[j]] dic[u[j]] w[j]; 首先我们要了解一个点就是我们这次不再使用邻接矩阵来存储图的信息&#xff0c;而是定义三个一维数组来…...

带你彻底搞懂useLayoutEffect的使用场景

开篇第一句: useLayoutEffect 可能会影响性能。尽可能使用 useEffect。 useLayoutEffect 是 useEffect 的一个版本&#xff0c;在浏览器重新绘制屏幕之前触发。 使用方法 useLayoutEffect(setup, dependencies?)调用 useLayoutEffect 在浏览器重新绘制屏幕之前进行布局测量&…...

大厂进阶之二:React高级用法HOC、Hooks对比、异步组件

本文分文三部分&#xff1a; HOC高阶组件 higher order componentHooks 16.8版本后新增的钩子API异步组件使用lazy和suspense两个api实现组件代码打包分割和异步加载 一、HOC高阶组件 1、定义 高阶组件不是组件而是函数&#xff0c;是react中用于复用组件逻辑的高级技巧&am…...

【扒代码】ope.py

文件目录&#xff1a; 引用方式 if not self.zero_shot: # 非零样本情况下&#xff0c;计算边界框的宽度和高度 box_hw torch.zeros(bboxes.size(0), bboxes.size(1), 2).to(bboxes.device) box_hw[:, :, 0] bboxes[:, :, 2] - bboxes[:, :, 0] # 宽度 box_hw[:, :, 1] bbox…...

【Rust光年纪】探索Rust终端编程:从跨平台操作到用户界面设计

构建跨平台终端应用的完美选择&#xff1a;Rust 库综述 前言 随着终端应用程序的发展&#xff0c;越来越多的开发者开始寻找跨平台的、易于使用的库来构建终端用户界面和执行终端操作。本文将介绍几个流行的 Rust 库&#xff0c;它们提供了丰富的功能和灵活的 API 来满足不同…...

【Oracle APEX开发小技巧12】

有如下需求&#xff1a; 有一个问题反馈页面&#xff0c;要实现在apex页面展示能直观看到反馈时间超过7天未处理的数据&#xff0c;方便管理员及时处理反馈。 我的方法&#xff1a;直接将逻辑写在SQL中&#xff0c;这样可以直接在页面展示 完整代码&#xff1a; SELECTSF.FE…...

Unity3D中Gfx.WaitForPresent优化方案

前言 在Unity中&#xff0c;Gfx.WaitForPresent占用CPU过高通常表示主线程在等待GPU完成渲染&#xff08;即CPU被阻塞&#xff09;&#xff0c;这表明存在GPU瓶颈或垂直同步/帧率设置问题。以下是系统的优化方案&#xff1a; 对惹&#xff0c;这里有一个游戏开发交流小组&…...

前端倒计时误差!

提示:记录工作中遇到的需求及解决办法 文章目录 前言一、误差从何而来?二、五大解决方案1. 动态校准法(基础版)2. Web Worker 计时3. 服务器时间同步4. Performance API 高精度计时5. 页面可见性API优化三、生产环境最佳实践四、终极解决方案架构前言 前几天听说公司某个项…...

【单片机期末】单片机系统设计

主要内容&#xff1a;系统状态机&#xff0c;系统时基&#xff0c;系统需求分析&#xff0c;系统构建&#xff0c;系统状态流图 一、题目要求 二、绘制系统状态流图 题目&#xff1a;根据上述描述绘制系统状态流图&#xff0c;注明状态转移条件及方向。 三、利用定时器产生时…...

解决本地部署 SmolVLM2 大语言模型运行 flash-attn 报错

出现的问题 安装 flash-attn 会一直卡在 build 那一步或者运行报错 解决办法 是因为你安装的 flash-attn 版本没有对应上&#xff0c;所以报错&#xff0c;到 https://github.com/Dao-AILab/flash-attention/releases 下载对应版本&#xff0c;cu、torch、cp 的版本一定要对…...

在WSL2的Ubuntu镜像中安装Docker

Docker官网链接: https://docs.docker.com/engine/install/ubuntu/ 1、运行以下命令卸载所有冲突的软件包&#xff1a; for pkg in docker.io docker-doc docker-compose docker-compose-v2 podman-docker containerd runc; do sudo apt-get remove $pkg; done2、设置Docker…...

PAN/FPN

import torch import torch.nn as nn import torch.nn.functional as F import mathclass LowResQueryHighResKVAttention(nn.Module):"""方案 1: 低分辨率特征 (Query) 查询高分辨率特征 (Key, Value).输出分辨率与低分辨率输入相同。"""def __…...

Python Ovito统计金刚石结构数量

大家好,我是小马老师。 本文介绍python ovito方法统计金刚石结构的方法。 Ovito Identify diamond structure命令可以识别和统计金刚石结构,但是无法直接输出结构的变化情况。 本文使用python调用ovito包的方法,可以持续统计各步的金刚石结构,具体代码如下: from ovito…...

Neko虚拟浏览器远程协作方案:Docker+内网穿透技术部署实践

前言&#xff1a;本文将向开发者介绍一款创新性协作工具——Neko虚拟浏览器。在数字化协作场景中&#xff0c;跨地域的团队常需面对实时共享屏幕、协同编辑文档等需求。通过本指南&#xff0c;你将掌握在Ubuntu系统中使用容器化技术部署该工具的具体方案&#xff0c;并结合内网…...

[拓扑优化] 1.概述

常见的拓扑优化方法有&#xff1a;均匀化法、变密度法、渐进结构优化法、水平集法、移动可变形组件法等。 常见的数值计算方法有&#xff1a;有限元法、有限差分法、边界元法、离散元法、无网格法、扩展有限元法、等几何分析等。 将上述数值计算方法与拓扑优化方法结合&#…...