linux 一些命令

news2024/11/28 22:07:16

文章目录

    • linux 一些命令
      • fdisk 磁盘分区
      • parted 分区
      • 文件系统
        • mkfs 格式化文件系统
        • fsck 修复文件系统
      • mount 挂载
      • swap 交换分区
      • 清除linux缓存
      • df du 命令
      • raid 命令
        • 基本原理
        • 硬raid 和 软raid
        • 案例
        • raid 10 故障修复,重启与卸载
      • lvm逻辑卷技术
        • LVM的使用方式
        • LVM 常见名词解析
        • LVM 原理
        • LVM 创建流程
        • 案例

linux 一些命令

fdisk 磁盘分区

1. 查看分区信息
fdisk -l  
2. 创建分区
fdisk /dev/sda  #通过 1 查看未分区磁盘
依次输入 n p 回车 回车(或者指定大小 +xxxm)  w (也可以再细分)
类型默认普通类型 83  swap 类型 83  动态类型(自动扩容) 8e
3. 删除分区
fdisk /dev/sdb
d 按指令输入
4. 切换类型 w 前输入 t 切换

partx -a /dev/sdb 重读分区

cat /proc/pactitions 分区信息存储文件

parted 分区

< 2T 用fdisk > 2T 用 parted

parted /etc/sdb
mklbel gpt   # 类型
mkpart primary/logical 0 500 # 分区 (start, end) 
q  # 退出

文件系统

VFS 虚拟文件系统,抽象出来调度不同文件类型格式的文件系统中交互

linux文件系统类型格式有

  • ext2
  • ext3 centos5
  • ext4 centos6
  • xfs centos7

网络共享文件系统

nfs network File system

smb server message block 服务消息块

集群文件系统

gfs google file system

ocfs oracle cluster file system oracle 数据库定制文件系统

cepe 为了存储的可靠性和扩展性分布式文件系统

交互文件系统

swap 虚拟内存

文件系统主要区别在于是否是日志型文件系统

mkfs 格式化文件系统
mkfs.xfs  /etc/sdb
fsck 修复文件系统

默认读取 /etc/fstab 开机挂载文件

fsck -t ext4  /etc/sdb

mount 挂载

mount /dev/sdb /mnt   # 挂载命令, 需要先格式化后挂载
umount /mnt   # 取消挂载,前提无人使用

mount -o 参数
		async 异步处理文件系统,加速写入,数据不会同步写入磁盘,写入一个缓冲区提高性能,损失一定安全性
  	sync  同步处理文件系统
    atime/noatime 是否记录修改时间
    defaults  默认所有
    exec/noexec  是否允许挂载点内的可执行命令
    ro 只读
    rw  读写
    
    att2 磁盘上存储内连扩展属性,提升性能
    inode64  允许在文件系统的任意位置创建inode
    noquota  强制关闭文件系统的限额功能
    
mount -o  ro /dev/sdb /mnt

挂载信息在 /etc/fstab 文件目录下
开机自动挂载,将挂载信息写入这个文件就行

swap 交换分区

centos7 计算swap分区如下
-内存小于2G swap 和内存设置大小相同
-内存大于2G swap 设置2G

设置swap分区

1. 给磁盘分区,指定swap类型 
2. 格式化 mkswap  /dev/sdb
3. 使用  swapon /dev/sdb
4. 关闭  swapoff /dev/sdb

清除linux缓存

1. 释放cache的命令
		echo 1 > /proc/sys/vm/drop_caches 等同于 sysctl -w  vm.drop_caches=1
2. 清理目录缓存和inodes
    echo 2 > /proc/sys/vm/drop_caches  等同于 sysctl -w  vm.drop_caches=2
3. 清除内存页的缓存
    echo 3 > /proc/sys/vm/drop_caches  # sysctl -w vm.drop_caches=3
上述是临时释放缓存命令,不建议有程序在使用缓存是使用
可以写入 /ect/sysctl.conf 中,永久生效

清理文件系统和僵尸进程  sync 命令  
sync 作用,将内存缓冲区的数据,写入到磁盘中

df du 命令

df 命令 是用来检查挂载点
df -h/-i   显示挂载信息。
		-h 显示kb, mb单位大小
		- i显示已 inode 数量
也可以 df -Th 加上挂载文件类型

du 命令是 用来查看文件大小命令(linux 文件存储的最小单位是4kb)

du -h   #显示 文件大小 以 kb mb 单位显示
du -h * #显示当前目录/ 把 * 换成指定文件 显示指定文件大小
du -a   #显示目录中所有文件大小

du -ah --max-depth=1 /opt   显示目录下文件大小深度
du -ah --exclude="*.pyc" /opt 显示除 .pyc 文件大小

raid 命令

raid 即 磁盘阵列冗余技术

用途:将多块独立的硬盘,组成一个容量更大,安全性更高的磁盘阵列组,将数据切位多个区段之后,分别存储在不同的物理硬盘上。利用分散读写技术提升磁盘的整体性能。 数据同步在不同的多个磁盘上, 也能得到冗余备份的作用

特性:能够保证数据安全性,但是也增加了磁盘的成本,能够保障数据丢失造成的严重损失,提升硬盘读写效率。被广泛的使用

基本原理
raid 技术分为 raid 0  raid 1 raid 3 raid 5 	 raid 10

###  raid 0 
raid 0 特点是将数据依次写入两块硬盘中,理想情况下写入速度翻倍
但是 如果坏了一块硬盘,数据都会被破坏, 没有备份功能。只追求性能,数据安全性低
###  raid 1
raid 1  将两块以上的硬盘绑定,数据写入时,同时写入多块数据, 即使硬盘故障损坏,也有备份
但 极大的降低了硬盘存储的利用率,2块硬盘 只有 50% 的利用率
###  raid 3  必须三块硬盘以上
基于异或运算原理
计算机异或运算:  数字相同则为 0 不同则为 1

磁盘异或运算  A 异或 B 异或 C
多个值异或计算的概念
		1 的个数是奇数,结果为 1
		1 的个数是偶数,结果为 0
异或的作用,只要知道异或的结果,任何一个值都能被反推出来,且只有 01

raid 3 的特点,存储着异或值的磁盘不得损坏(同时坏两块),成本较高

### raid 5 必须四块硬盘以上
校验码均匀的放在每一块硬盘上,因此,即使挂了任意一块硬盘,都能反推出原本的数据

### raid 10  raid 0 + raid 1 技术
先通过raid 1,实现备份,保证数据安全性
再通过raid 0 ,加快写入速度

数据冗余性能 raid 1> raid 10 > raid 5 > raid 0

数据读写性能 raid 0> raid 10 > raid 5 > raid 1

成本 raid 0 > raid 10 > raid 1 > raid 5

硬raid 和 软raid

软raid 通过软件代码实现

硬raid 就是厂商提供 raid 阵列卡,由raid 卡上的主控芯片去操作磁盘

区别

软 raid 会额外消耗cpu资源 ,造成服务器压力

硬raid 更加稳定,软 raid 可能会造成 磁盘发热过量,造成损坏

硬raid 兼容性更好,软 raid 兼容性依赖于操作系统,可能会出问题

硬raid 除了成本,完胜软raid

对应场景和选择方案

  1. 单台服务器,数据重要,建议 raid 1
  2. 数据存储服务器(主服务器raid10) 从服务器(raid5 , 减少成本)
  3. web 服务器, 没有太多数据的,建议raid5,raid0
  4. 应用服务器,和数据交互的,建议 raid 0 ,raid 5(提升速率)
案例

raid 10 的使用过程 (四块磁盘)

 ls /dev/sd* # 查看硬盘
 
以 sdb sdc sdd  sde 四块磁盘为例子

# 下载一个 mdadm 用于建设,管理和监控RAID技术的命令
1. yum install -y mdadm

2. mdadm -Cv /dev/md0 -a yes -n 4 -l 10 /dev/sdb  /dev/sdc  /dev/sdd /dev/sde

	-C 表示创建RAID 阵列
	-v 显示创建过程
	-n 4 表示用4块硬盘创建
	-l 10 表示指定 raid 级别
	/dev/md0 阵列名称
	
3. 格式化文件系统为 xfs
	mkfs.xfs /dev/md0
4. 	用mount 进行挂载 
raid 10 故障修复,重启与卸载
故障修复
0. 查看raid 10 状态
	mdadm -D /dev/md0
	查看 Devices 相关信息, 找到坏掉的硬盘
	
1. 删除一块硬盘
	mdadm /dev/md0 -f /dev/sdb 

2. 重新加入硬盘(前提需要停止使用,重启机器,取消挂载)
	mdadm /dev/md0 -a /dev/sdb 然后等待修复完毕即可
	
重启
1. 创建一个raid 配置文件
	echo DEVICE /dev/sd[b-e] > /etc/mdadm.conf
2. 扫描磁盘阵列信息,追加到这个文件中
	mdadm -Ds >> /etc/mdadm.conf
3. 取消挂载
	umount /home
4. 停止raid 10
	mdadm -S /dev/md0
5. 检查raid 信息
	mdadm -D /dev/md0  # 正常应该看不到任何信息
6. 重启raid 10 
	mdadm -A /dev/md0
7. 检查,这时正常能看到raid10 的信息

卸载
1. 卸除挂载
	umount /home
2. 停止 raid 10
	mdadm -S /dev/md0
3. 卸载磁盘
	mdadm --misc --zero-superblock /dev/sdb
	mdadm --misc --zero-superblock /dev/sdc
	mdadm --misc --zero-superblock /dev/sdd
	mdadm --misc --zero-superblock /dev/sde
4. 删除重启配置文件
	rm -rf /etc/mdadm.conf
5. 删除开机自动挂载信息
	vim /etc/fstab

lvm逻辑卷技术

raid 技术,能够提供硬盘的读写效率,已经数据的安全性,但当配置好后,容量的大小,都被限制住了,如果存储的业务非常多,磁盘容量不够用就会出问题,并且raid 的磁盘扩容非常麻烦,并且只能冷扩容

不同的磁盘分区,相对都是独立的。没有任何联系,空间利用率很低

如果某一个分区满了,默认的磁盘管理无法直接扩容,只能重新分区,重新分配容量大小,创建文件系统,很麻烦

如果要合并分区,也得重新格式化磁盘分区,还要进行数据备份

为了解决以上缺点,lvm (logical volume manager)逻辑卷管理技术 被用来解决这块问题

Lvm 技术,就是将一个或者多个硬盘逻辑上进行了合并,相当于一个大的硬盘去使用,当你的硬盘不够了,就会自动使用其他硬盘中容量。动态扩容

LVM的使用方式

在这里插入图片描述

  1. 基于分区形式创建lvm

    硬盘的多个分区,由lvm统一进行管理为卷组,可以弹性的调整卷组的大小,加入新硬盘,可以充分的利用磁盘容量

    文件系统是创建在逻辑卷上,逻辑卷可以根据需求改变大小(总容量控制在卷组中)

  2. 基于硬盘创建lvm

    多块硬盘做成逻辑卷,将整个逻辑卷统一管理,对分区进行动态扩容

LVM 常见名词解析
PP (pyhsical parttion), 物理分区,lvm直接创建在物理分区上
PV (pyhsical volume), 物理卷,处于lvm的最底层。一般一个PV对饮一个PP
PE(physical extends), 物理区域, PV中可以用于分配的最小存储单位,同一个VG所有的PV中的PE大小相同
VG (volume group), 卷组,卷组创建在pv之上,可以划分为多个PV
LE (logical extends) 逻辑扩展单元, LE 是组成 LV的基本单元,一个LE对应一个PE
LV(logical volume) 逻辑卷,创建在VG之上,是一个可以动态扩容的分区概念

在这里插入图片描述

LVM 原理
  • LVM 动态扩容大小,其实就是通过互相交换PE的过程,达到弹性扩容分区大小
  • 减少空间容量,就是剔除PE的大小
  • 扩大容量,就是把其他的PE添加到自己的LV中
  • PE默认大小一般是4M,LVM 最多可以创建出65534个PE,因此LVM最大的VG卷组单位是256G
  • LV 是逻辑卷的概念,(和普通分区类似)

优点:lvm 的文件系统可以跨多个磁盘,分区大小不受磁盘容量限制 可以在系统运行中,直接动态扩容文件系统大小 可以直接增加新的硬盘,到lvm的vg卷组中

LVM 创建流程
  1. 物理分区阶段,针对物理磁盘或者分区,进行fdisk格式化,修改系统id,默认83 改为 8e 类型,lvm 类型
  2. PV 阶段,通过pvcreate,pvdisplay 将linux 分区改为物理卷PV
  3. 创建VG卷组,vgcreate vgs 显示卷组信息
  4. 创建 LV 逻辑卷, lvcreate vgs 显示卷组信息
  5. 开始格式化文件系统,使用lv分区

lvm的管理常见命令

1. pv
	pvcreate   创建物理卷
	pvs    扫描简单信息
	pvscan  扫描物理卷组信息
	pvdispaky  显示各个物理卷的详细信息
	pvremove  删除物理卷

2. vg 卷组
	vgcreate
	vgscan
	vgdisplay
	vgreduce   缩小卷组,把物理卷从卷组中移除
	vgextend   扩大卷组,把某个新的物理卷,加入到卷组中
	vgremove   删除整个卷组

3. lv逻辑卷
	lvcreate
	lvscan
	lvdisplay 
	lvs
	lvextend
	lvreduce
	lvremove 
案例
### 提前进行磁盘物理分区,将分区类型设置为 8e 类型
1. 创建pv
[root@linux localhost]# pvcreate /dev/sdc1 /dev/sdc2
  Physical volume "/dev/sdc1" successfully created
  Physical volume "/dev/sdc2" successfully created
2. 创建vg资源池
[root@linux localhost]# vgcreate  vg0  /dev/sdc1  /dev/sdc2
  Volume group "vg0" successfully created
[root@linux localhost]# vgs
  VG   #PV #LV #SN Attr   VSize  VFree 
  vg0    2   0   0 wz--n- 14.99g 14.99g
[root@linux localhost]# vgdisplay
  --- Volume group ---
  VG Name               vg0
  System ID             
  Format                lvm2
  Metadata Areas        2
  Metadata Sequence No  1
  VG Access             read/write
  VG Status             resizable
  MAX LV                0
  Cur LV                0
  Open LV               0
  Max PV                0
  Cur PV                2
  Act PV                2
  VG Size               14.99 GiB
  PE Size               4.00 MiB
  Total PE              3838
  Alloc PE / Size       0 / 0   
  Free  PE / Size       3838 / 14.99 GiB
3. 创建lv
[root@linux localhost]# lvcreate -L +3G -n lv0  vg0
  Logical volume "lv0" created.
[root@linux localhost]# lvs
  LV   VG   Attr       LSize Pool Origin Data%  Meta%  Move Log Cpy%Sync Convert
  lv0  vg0  -wi-a----- 3.00g  
4. 格式化分区
[root@linux localhost]# mkfs.xfs  /dev/vg0/lv0
meta-data=/dev/vg0/lv0           isize=256    agcount=4, agsize=196608 blks
         =                       sectsz=512   attr=2, projid32bit=1
         =                       crc=0        finobt=0
data     =                       bsize=4096   blocks=786432, imaxpct=25
         =                       sunit=0      swidth=0 blks
naming   =version 2              bsize=4096   ascii-ci=0 ftype=0
log      =internal log           bsize=4096   blocks=2560, version=2
         =                       sectsz=512   sunit=0 blks, lazy-count=1
realtime =none                   extsz=4096   blocks=0, rtextents=0
5. 挂载后就可以使用了,也可以写入 /etc/fastab 后加入开机自动加载,或者 通过 mount -a 重载
[root@linux localhost]# mount /dev/vg0/lv0  /lvdir

6. LV 扩容, 扩容后需要刷新文件系统  扩容(缩容)之前建议先取消挂载,让文件系统处于稳定状态,避免潜在风险
[root@linux localhost]# umount /lvdir
[root@linux localhost]# lvextend -L +5G  /dev/vg0/lv0
  Size of logical volume vg0/lv0 changed from 3.00 GiB (768 extents) to 8.00 GiB (2048 extents).
  Logical volume lv0 successfully resized.    
[root@linux localhost]# mount /dev/vg0/lv0  /lvdir
[root@linux localhost]# xfs_growfs  /dev/vg0/lv0

7. LV 缩容 
[root@linux localhost]# lvreduce -L -5G  /dev/vg0/lv0  

卸载流程

1. 取消挂载
[root@linux localhost]# umount  /lvdir
2. 删除lv
[root@linux localhost]# lvremove  /dev/vg0/lv0  
3. 删除vg
[root@linux localhost]# vgremove  vg0
4. 删除pv
[root@linux localhost]# pvs   # 查看卷组
[root@linux localhost]# pvremove /dev/sdc1 /dev/sdc2   # 删除卷组

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1560299.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

数据库---------完全备份和增量备份的数据恢复,以及断点恢复

目录 一、在数据库表中&#xff0c;分三次录入学生考试成绩 1.1先创建库&#xff0c;创建表&#xff0c;完成三次数据的录入 1.2首次录入成绩后&#xff0c;做该表的完全备份 1.3第二次插入后 做增量备份 1.4第三次插入后 做增量备份 二、模拟数据丢失&#xff0c;并使用…

大文件上传做断点续传(有详细的代码内容)

文章目录 一、是什么分片上传断点续传 二、实现思路三、使用场景小结参考文献 一、是什么 不管怎样简单的需求&#xff0c;在量级达到一定层次时&#xff0c;都会变得异常复杂 文件上传简单&#xff0c;文件变大就复杂 上传大文件时&#xff0c;以下几个变量会影响我们的用户…

标题:Vue3 中父组件向子组件通信的方式

标题&#xff1a;Vue3 中父组件向子组件通信的方式 在 Vue3 中&#xff0c;父组件和子组件之间可以通过一些方式进行通信。其中&#xff0c;父组件向子组件通信主要有两种方式&#xff1a;传值和调用子组件的方法。 一、父组件向子组件传值 当父组件需要向子组件传递数据时&a…

快速排序---算法

1、算法概念 快速排序&#xff1a;通过一趟排序将待排记录分隔成独立的两部分&#xff0c;其中一部分记录的数据均比另一部分的数据小&#xff0c;则可分别对这两部分记录继续进行排序&#xff0c;以达到震哥哥序列有序。 快速排序的最坏运行情况是O()&#xff0c;比如说顺序数…

设计一个动物声音“模拟器”,希望模拟器可以模拟许多动物的叫声。

设计一个动物声音“模拟器”&#xff0c;希望模拟器可以模拟许多动物的叫声。要求如下&#xff1a; &#xff08;1&#xff09;编写接口Animal Animal接口有2个抽象方法cry()和getAnimaName()&#xff0c;即要求实现该接口的各种具体动物类给出自己的叫声和种类名称。 &…

设计模式 - 中介器模式

中介者模式使得组件通过一个中心点——中介者进行交互。组件不需要直接进行通信&#xff0c;而是将请求发送给中介者&#xff0c;由中介者进行转发&#xff01;在JavaScript中&#xff0c;中介者往往只是一个对象字面量或一个函数。 你可以将这种模式与空中交通管制员和飞行员…

科技革新,OTG充电新纪元!

在科技日新月异的今天&#xff0c;数据交互已经渗透到我们生活的每个角落&#xff0c;无论是工作还是娱乐&#xff0c;它都发挥着不可替代的作用。OTG技术的出现&#xff0c;极大地简化了设备间的联接与数据交换过程&#xff0c;但随之而来的接口有限和续航问题&#xff0c;也让…

产品经理的进阶之路

点击下载《产品经理的进阶之路》 1. 前言 本文深入剖析了产品经理这一职业从产品专员起步,逐步晋升为产品经理、高级产品经理,直至产品总监的整个职业发展路径。在每个阶段,产品经理都需承担不同的工作职责,展现出独特的职业特点。 2. 产品专员 关键词【产品需求/原型/文…

计算机服务器中了rmallox勒索病毒怎么办?rmallox勒索病毒解密数据恢复

网络技术的不断发展与应用&#xff0c;大大提高了企业的生产运营效率&#xff0c;越来越多的企业开始网络开展各项工作业务&#xff0c;网络在为人们提供便利的同时&#xff0c;也会存在潜在威胁。近日&#xff0c;云天数据恢复中心接到多家企业的求助&#xff0c;企业的计算机…

设计模式-概述篇

1. 掌握设计模式的层次 第1层&#xff1a;刚开始学编程不久&#xff0c;听说过什么是设计模式第2层&#xff1a;有很长时间的编程经验&#xff0c;自己写了很多代码&#xff0c;其中用到了设计模式&#xff0c;但是自己却不知道第3层&#xff1a;学习过了设计模式&#xff0c;…

Vue 3.0生命周期:深入理解与用法

Vue 3.0生命周期&#xff1a;深入理解与用法 摘要&#xff1a; 本文将深入探讨Vue 3.0的生命周期&#xff0c;解释每个生命周期钩子的含义和用法&#xff0c;以及它们在开发过程中的重要性。我们将详细解析每个钩子的工作原理&#xff0c;并提供一些示例和最佳实践&#xff0c…

python爬取B站视频

参考&#xff1a;https://cloud.tencent.com/developer/article/1768680 参考的代码有点问题&#xff0c;请求头需要修改&#xff0c;上代码&#xff1a; import requests import re # 正则表达式 import pprint import json from moviepy.editor import AudioFileClip, Vid…

常见贪心问题详解

目录 贪心算法应用条件 常见贪心问题 活动安排问题&#xff08;区间调度问题&#xff09; 区间覆盖问题 最优装载问题1 最优装载问题2 多机调度问题 例题&#xff1a;翻硬币 例题&#xff1a;快乐司机 例题&#xff1a;防御力 例题&#xff1a;答疑 贪心算法应用条件…

【通信原理笔记】【三】模拟信号调制——3.1 模拟信号调制基本模型与思路

文章目录 前言一、模拟信号二、模拟调制系统模型三、模拟调制的三种方式四、调制的评价指标总结 前言 一般常见的信号的频带均集中在基带附近&#xff0c;如果要通过无线地方式传输&#xff0c;其较长的波长需要大型的天线才能传输&#xff0c;难以实现。另一方面基带的带宽资…

ruoyi-nbcio-plus基于vue3的flowable执行监听器的升级修改

更多ruoyi-nbcio功能请看演示系统 gitee源代码地址 前后端代码&#xff1a; https://gitee.com/nbacheng/ruoyi-nbcio 演示地址&#xff1a;RuoYi-Nbcio后台管理系统 http://122.227.135.243:9666/ 更多nbcio-boot功能请看演示系统 gitee源代码地址 后端代码&#xff1a…

Linux基础命令篇之——压缩与解压(tar、gzip、bzip2、zip和unzip)

linux基础命令——解压与压缩 以下是关于Linux命令tar、gzip、bzip2、zip和unzip的详细介绍&#xff1a; 1. tar 这个是Linux用的最多的解压缩命令 tar是Linux系统中用于创建和处理归档文件的命令。归档文件是一个包含多个文件和/或目录的单一文件。常与压缩命令gzip或bzip2结…

图像处理_积分图

目录 1. 积分图算法介绍 2. 基本原理 2.1 构建积分图 2.2 使用积分图 3. 举个例子 1. 积分图算法介绍 积分图算法是图像处理中的经典算法之一&#xff0c;由Crow在1984年首次提出&#xff0c;它是为了在多尺度透视投影中提高渲染速度。 积分图算法是一种快速计算图像区域和…

wavedec2函数及使用

在MATLAB中&#xff0c;进行小波分解及其逆运算是处理图像的一种常见方法&#xff0c;尤其适用于图像分析、压缩和去噪等场景。wavedec2函数可以对二维信号&#xff08;例如图像&#xff09;进行多级小波分解&#xff0c;而waverec2函数则用于进行相应的逆运算。以下是如何使用…

非NVIDIA平台下的CUDA的替代方案OpenCL,第一步如何获取PlatformInfo、DeviceInfo

非NVIDIA平台下的CUDA的替代方案OpenCL&#xff0c;第一步如何获取PlatformInfo、DeviceInfo 介绍 当谈到高性能计算&#xff0c;NVIDIA的CUDA框架无疑是一个强大的工具。OpenC&#xff08;Open Computing Language&#xff09;是一个更为通用的解决方案&#xff0c;或者你使用…

java 跳转搜索(Jump Search)

与二分搜索一样&#xff0c;跳转搜索是一种针对排序数组的搜索算法。基本思想是通过按固定步骤向前跳跃或跳过某些元素来代替搜索所有元素来检查更少的元素&#xff08;比线性搜索&#xff09;。例如&#xff0c;假设我们有一个大小为 n 的数组 arr[] 和一个大小为 m 的块&…