RHCE9学习指南 第13章 硬盘管理

新的硬盘首先需要对硬盘进行分区和格式化,首先了解一下硬盘的结构,如图13-1所示。
file
图13-1 磁盘上的磁道和扇区
硬盘的磁盘上有一个个的圈,每两个圈组成一个磁道。从中间往外发射线,把每个磁道分成一个个的扇区,每个扇区的大小是512B。为了更好理解咱们把所有磁盘拼接起来,如图13-2所示。
file
图13-2 分区是以扇区划分的
假设磁盘有10000个扇区,第一个分区从2048开始到6000,第二个分区从6001到8000,第三个分区从8001到10000。
每个扇区只能属于一个分区,不能同时属于多个分区。
第一个扇区比较特殊,叫作MBR(主引导记录)
分区的类型包括:主分区,扩展分区和逻辑分区,如图13-3所示。
file
图13-3 了解分区类型
一套房子出租,李四和王五从房东手中直接各租一间自住,这个属于主分区。
赵六从房东手中租过来一大间,但自己不住做起了二房东(扩展分区),然后隔成很多隔间。赵六租的那一大间就是扩展分区,大间里隔开的一些隔间,就是逻辑分区。
主分区:直接从硬盘上划分并可以直接格式化使用的分区。
扩展分区:直接从硬盘上划分,但是不直接使用的分区,需要在其上面划分更多个小分区。
逻辑分区:在扩展分区上划分的分区。
分区表记录主分区和扩展分区的信息,如同房东从李四、王五、赵六中收房租一样,但是收不到tom、bob等的房租,tom、bob等的房租由赵六来收,因为赵六是二房东。
每记录一个分区(主分区或扩展分区)则要消耗16B,所以分区表最多只能 记录4个分区,所以硬盘最多只能划分出来4个分区,且最多只能有一个扩展分区。
请关闭虚拟机server并自行为虚拟机添加一块scsi格式的硬盘,然后开机进入系统。

13.1 对磁盘进行分区

使用fdisk -l查看所有分区信息,命令如下所示。

[root@server ~]# fdisk -l
Disk /dev/sdb:20 GiB,21474836480 字节,41943040 个扇区
单元:扇区 / 1 * 512 = 512 字节
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节Disk /dev/sda:100 GiB,107374182400 字节,209715200 个扇区
单元:扇区 / 1 * 512 = 512 字节
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节
磁盘标签类型:dos
磁盘标识符:0xaa4e4e08设备       启动      起点      末尾      扇区 大小 Id 类型
/dev/sda1  *         2048 104859647 104857600  50G 83 Linux
/dev/sda2       104859648 113248255   8388608   4G 82 Linux swap / Solaris
[root@server ~]#

此命令可以查看系统所有硬盘的信息,从这里可以看到/dev/sda有两个分区/de/sda1和/dev/sda2,/dev/sdb没任何分区。如果想单独某硬盘的分区信息可以用fdisk -l /dev/硬盘即可,例如,想单独查看/dev/sda的信息,则用fdisk -l /dev/sda,命令如下所示。

[root@server ~]# fdisk -l /dev/sda
Disk /dev/sda:100 GiB,107374182400 字节,209715200 个扇区
单元:扇区 / 1 * 512 = 512 字节
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节
磁盘标签类型:dos
磁盘标识符:0xaa4e4e08设备       启动      起点      末尾      扇区 大小 Id 类型
/dev/sda1  *         2048 104859647 104857600  50G 83 Linux
/dev/sda2       104859648 113248255   8388608   4G 82 Linux swap / Solaris
[root@server ~]# 

这里可以获取到很多信息,例如,整个sda有多少个扇区,每个分区从哪个扇区开始到哪个扇区结束等。
下面开始练习分区,自行添加一个类型为SCSI大小为20G的分区。
分区的语法为fdisk /dev/硬盘,这里是对硬盘进行分区不是对分区再分区。

[root@server ~]# fdisk /dev/sdb欢迎使用 fdisk (util-linux 2.32.1)。
更改将停留在内存中,直到您决定将更改写入磁盘。
使用写入命令前请三思。设备不包含可识别的分区表。
创建了一个磁盘标识符为 0x737fabb4 的新 DOS 磁盘标签。命令(输入 m 获取帮助)

此处进入分区的界面,按提示输入m可以获取到帮助,常见的命令如下。

(1)p:打印分区表。
(2)n:添加一个分区。
(3)d:删除一个分区。
(4)l:列出分区类型。
(5)t:转发分区的类型。
(6)q:不保存直接退出。
(7)w:保存并退出。

查看现有分区信息,此处输入p,命令如下所示。

命令(输入 m 获取帮助):p #此处输入p用于打印分区表
Disk /dev/sdb:20 GiB,21474836480 字节,41943040 个扇区
单元:扇区 / 1 * 512 = 512 字节
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节
磁盘标签类型:dos
磁盘标识符:0x737fabb4
命令(输入 m 获取帮助)

此处并没有看到/dev/sdb1, /dev/sdb2等内容,说明并不存在任何分区。
按n创建一个分区,命令如下所示。

命令(输入 m 获取帮助):n
分区类型p   主分区 (0个主分区,0个扩展分区,4空闲)e   扩展分区 (逻辑分区容器)
选择 (默认 p)

直接在硬盘上划分的分区有主分区(标记为p)和扩展分区(标记为e),逻辑分区(标记为字母l)只能在扩展分区上创建,且扩展分区最多只能创建一个扩展分区。
所以,在硬盘中没有扩展分区时,只能所以选择分区类型时只能选择p和e这两种。如果已经存在了扩展分区,就不能再创建第二个扩展分区了,但可以在扩展分区上创建逻辑分区,所以选择可选择的分区类型有p和l。
先创建主分区或创建扩展分区都可以,这里先创建主分区,输入p,按【Enter】键。主分区加扩展分区最多只能创建出来4个,所以给分配的编号只能是1-4,这里选择默认的1,然后按【Enter】键。
命令(输入 m 获取帮助):n

分区类型p   主分区 (0个主分区,0个扩展分区,4空闲)e   扩展分区 (逻辑分区容器)
选择 (默认 p):p
分区号 (1-4, 默认  1):此处直接回车,使用默认的编号1

硬盘总共有41943039个扇区,第一个分区从哪个柱面开始,默认为2048,直接按【Enter】键,我们就从2048开始。

第一个扇区 (2048-41943039, 默认 2048): 按【Enter】键
上个扇区,+sectors 或 +size{K,M,G,T,P} (2048-41943039, 默认 41943039): N

这里N的位置得写一个结束点,假设我要创建2G的分区,从2048号柱面开始算,到哪个柱面结束能使得分区大小是2G呢?如图13-4所示。
file
图13-4 计算分区大小
我们现在算一下:2G=21024M=210241024K=2102410242扇区 (1扇区=0.5K),所以一共需要210241024*2=4194304个扇区,从2048开始算,所以最后一个扇区应该落在2048+4194304-1=4196351的位置,这样创建出来的分区就是2G,所以上图填写4196351。

第一个扇区 (2048-41943039, 默认 2048): 
上个扇区,+sectors 或 +size{K,M,G,T,P} (2048-41943039, 默认 41943039): 4196351创建了一个新分区 1,类型为“Linux”,大小为 2 GiB。命令(输入 m 获取帮助)

创建2G分区后,输入p查看分区信息,命令如下所示。

命令(输入 m 获取帮助):p...输出...
设备       启动  起点    末尾    扇区     大小 Id 类型
/dev/sdb1        2048   4196351 4194304   2G   83 Linux命令(输入 m 获取帮助)

可以看出,从2048开始,共4194304个扇区,在4196351这个位置结束,大小为2G。
但是这种创建分区的方法比较麻烦,可以先输入d,按【Enter】键,删除此分区,命令如下所示。

命令(输入 m 获取帮助):d 此处输入d表示删除分区
已选择分区 1
分区 1 已删除。命令(输入 m 获取帮助)

因为sdb1是唯一的分区,直接就删除的是sdb1,然后重复上面的方法重新创建分区,命令如下所示。

命令(输入 m 获取帮助):n
分区类型p   主分区 (0个主分区,0个扩展分区,4空闲)e   扩展分区 (逻辑分区容器)
选择 (默认 p):将使用默认回应 p。
分区号 (1-4, 默认  1): 
第一个扇区 (2048-41943039, 默认 2048): 
上个扇区,+sectors 或 +size{K,M,G,T,P} (2048-41943039, 默认 41943039): 

因为并不需要关心分区到哪个柱面结束,只关心分区大小,所以这里可以写+2G,意思是从2048柱面开始划分一个2G大小的分区,命令如下所示。

第一个扇区 (2048-41943039, 默认 2048): 
上个扇区,+sectors 或 +size{K,M,G,T,P} (2048-41943039, 默认 41943039): +2G创建了一个新分区 1,类型为“Linux”,大小为 2 GiB。命令(输入 m 获取帮助)

然后输入p查看分区信息,命令如下所示。
命令(输入 m 获取帮助):p

	...输出...
设备       启动  起点    末尾    扇区    大小 Id 类型
/dev/sdb1        2048   4196351 4194304   2G  83 Linux命令(输入 m 获取帮助)

可以看到,与手动算出来的一样,通过这种方式划分分区就容易多了。
依次再创建一个主分区/dev/sda2大小为2G,命令如下所示。

命令(输入 m 获取帮助):p...输出...
设备       启动    起点    末尾    扇区 大小 Id 类型
/dev/sdb1          2048 4196351 4194304   2G 83 Linux
/dev/sdb2       4196352 8390655 4194304   2G 83 Linux命令(输入 m 获取帮助)

创建一个扩展分区/dev/sda4,把剩余所有空间全部给它(这里故意没有创建/dev/sda3),命令如下所示。

命令(输入 m 获取帮助):n
分区类型p   主分区 (2个主分区,0个扩展分区,2空闲)e   扩展分区 (逻辑分区容器)
选择 (默认 p):e 这里输入e表示创建一个扩展分区
分区号 (3,4, 默认  3): 4
第一个扇区 (8390656-41943039, 默认 8390656): 按【Enter】键
上个扇区,+sectors 或 +size{K,M,G,T,P} (8390656-41943039, 默认 41943039): 按【Enter】键创建了一个新分区 4,类型为“Extended”,大小为 16 GiB。命令(输入 m 获取帮助)

查看分区信息,命令如下所示。

命令(输入 m 获取帮助):p...输出...
设备       启动    起点     末尾     扇区 大小 Id 类型
/dev/sdb1          2048  4196351  4194304   2G 83 Linux
/dev/sdb2       4196352  8390655  4194304   2G 83 Linux
/dev/sdb4       8390656 41943039 33552384  16G  5 扩展命令(输入 m 获取帮助)

创建扩展分区后,就可以创建逻辑分区了,但我们看到了编号3并使用,所以现在还可以创建一个主分区,但是硬盘已经没有多余的空间,所以不能再创建主分区只能创建逻辑分区。逻辑分区的编号总是从5开始,命令如下所示。

添加逻辑分区 5
第一个扇区 (8392704-41943039, 默认 8392704): 按【Enter】键
上个扇区,+sectors 或 +size{K,M,G,T,P} (8392704-41943039, 默认 41943039): +2G创建了一个新分区 5,类型为“Linux”,大小为 2 GiB。命令(输入 m 获取帮助)

依照此方法再创建几个分区,命令如下所示。

设备       启动     起点     末尾     扇区 大小 Id 类型
/dev/sdb1           2048  4196351  4194304   2G 83 Linux
/dev/sdb2        4196352  8390655  4194304   2G 83 Linux
/dev/sdb4        8390656 41943039 33552384  16G  5 扩展
/dev/sdb5        8392704 12587007  4194304   2G 83 Linux
/dev/sdb6       12589056 16783359  4194304   2G 83 Linux
/dev/sdb7       16785408 20979711  4194304   2G 83 Linux

看上面最右侧两列id和类型,这两个是对应的。因为分区的作用不一样,有的可以直接格式化使用,有的用于做swap,有的用于做逻辑卷等。这些类型是可以转换的,输入字母l可以看到所有类型,如图13-5所示。
file
图13-5 分区类型代码
常见的分区类型如下。

(1)Linux:对应的Id为83,直接格式化使用的分区。
(2)swap:对应的Id为82,用于创建swap。
(3)lvm:对应的Id为8e,用于创建lv。
(4)raid:对应的Id为fd,用于创建fd。

例如,准备把/dev/sdb5配置成逻辑卷,先把/dev/sdb5的类型改成8e,操作如下。
先按t开始进行转换,命令如下所示。
命令(输入 m 获取帮助):t
分区号 (1,2,4-7, 默认 7):
然后输入要转换的分区好,这里输入5,然后按【Enter】键后输入要转换的类型8e,命令如下所示。

命令(输入 m 获取帮助):t
分区号 (1,2,4-7, 默认  7): 5
Hex 代码(输入 L 列出所有代码):8e已将分区“Linux”的类型更改为“Linux LVM”。命令(输入 m 获取帮助)

然后输入p查看分区信息,命令如下所示。
命令(输入 m 获取帮助):p

	...输出...
设备       启动     起点     末尾     扇区 大小 Id 类型
/dev/sdb1           2048  4196351  4194304   2G 83 Linux
/dev/sdb2        4196352  8390655  4194304   2G 83 Linux
/dev/sdb4        8390656 41943039 33552384  16G  5 扩展
/dev/sdb5        8392704 12587007  4194304   2G 8e Linux LVM
/dev/sdb6       12589056 16783359  4194304   2G 83 Linux
/dev/sdb7       16785408 20979711  4194304   2G 83 Linux命令(输入 m 获取帮助)

使用相同的方式把/dev/sdb6, /dev/sdb7的类型也转变为8e。
为了下一节做准备,把/dev/sdb2的类型改为swap类型,输入t,命令如下所示。

命令(输入 m 获取帮助):t
分区号 (1,2,4-7, 默认  7): 2
Hex 代码(输入 L 列出所有代码):82已将分区“Linux”的类型更改为“Linux swap / Solaris”。

然后输入p查看分区信息,命令如下所示。

命令(输入 m 获取帮助):p...输出...
设备       启动     起点     末尾     扇区 大小 Id 类型
/dev/sdb1           2048  4196351  4194304   2G 83 Linux
/dev/sdb2        4196352  8390655  4194304   2G 82 Linux swap / Solaris...输出...
命令(输入 m 获取帮助)
现在所做的一切并没有真的保存,如果不想保存直接退出,可以输入q并按【Enter】键,如果想保存并退出,可以输入w并按【Enter】键,命令如下所示。
命令(输入 m 获取帮助):w
分区表已调整。
将调用 ioCtrl() 来重新读分区表。
正在同步磁盘。[root@server ~]# 

有时,需要执行partprobe /dev/sdb来刷新一下分区表。然后使用fdisk进行查看,命令如下所示。
[root@server ~]# fdisk -l /dev/sdb

	...输出...
设备       启动     起点     末尾     扇区 大小 Id 类型
/dev/sdb1           2048  4196351  4194304   2G 83 Linux
/dev/sdb2        4196352  8390655  4194304   2G 82 Linux swap / Solaris
/dev/sdb4        8390656 41943039 33552384  16G  5 扩展
/dev/sdb5        8392704 12587007  4194304   2G 8e Linux LVM
/dev/sdb6       12589056 16783359  4194304   2G 8e Linux LVM
/dev/sdb7       16785408 20979711  4194304   2G 8e Linux LVM
[root@server ~]# 

13.2 交换分区

在物理内存不够用的情况下,系统会把物理内存中的那些长时间没操作的数据释放出来,保存在交换分区(swap)中,这样物理内存中就有多余的空间,用于存放新的数据。
如果物理内存不够了可以使用swap分区,那么如果swap分区也不够了呢?我们就可以添加swap分区。下面就来讲讲如何管理swap分区。
查看当前系统中所有的swap分区,命令如下所示。

[root@server ~]# swapon -s
文件名				                类型		 大小	  已用	权限
/dev/sda2                           partition	4194300	   0	-2
[root@server ~]#

可以看到,当前/dev/sda2是交换分区,大小是4G。这里权限的是,如果有多个swap分区,优先使用哪个,数值越大越优先。查看swap分区也可以用命令cat /proc/swaps 。
下面准备把/dev/sdb2创建为swap分区。步骤如下。
第1步:把/dev/sdb2创建为swap分区,命令如下所示。
[root@server ~]# mkswap /dev/sdb2

正在设置交换空间版本 1,大小 = 2 GiB (2147479552  个字节)
无标签,UUID=96b078f8-6ca3-4aac-9af7-b37234b03a6c
[root@server ~]#

第2步:激活新创建的swap分区,命令如下所示。

[root@server ~]# swapon /dev/sdb2
[root@server ~]# swapon -s
文件名				         类型		大小	  已用	权限
/dev/sda2                    partition	4194300  	0	-2
/dev/sdb2                    partition	2097148		0	-3
[root@server ~]#

可以看到,此时已经有了两个交换分区了。其中/dev/sdb2的权限为-3,说明/dev/sda2更优先使用。如果想设置让/dev/sdb2更优先使用,可以调整/dev/sdb2的优先级。
第3步:关闭新创建的swap分区,命令如下所示。

[root@server ~]# swapoff /dev/sdb2
[root@server ~]#

第4步:激活swap分区,并指定优先级,命令如下所示。

[root@server ~]# swapon -s
文件名				类型		大小		已用	权限
/dev/sda2           partition	4194300		0		-2
/dev/sdb2           partition	2097148		0		2
[root@server ~]#

可以看到,/dev/sdb2的优先级是2,这个交换分区会优先使用。
上面设置的这个交换分区也只时临时生效,如果要让其重启系统之后仍然生效,就需要写入/etc/fstab中。
第5步:编辑/etc/fstab,在最后一行添加,命令如下所示。

[root@server ~]# tail -1 /etc/fstab
/dev/sdb1	none	swap	defaults,pri=2		0 	0
[root@server ~]#

上面每个字段用空格或tab隔开均可,第四列defaults后面的逗号两边没有空格。
如果不需要指定优先级,第四列直接写defaults即可。
如果/dev/sdb2当前没有激活,则在写入/etc/fstab之后,执行swapon -a即可。

作业

作业题在server2上完成。
准备工作:自行在server2上新添加一块类型为SCSI大小为20G的硬盘/dev/sdb。
作业1:在/dev/sdb上创建2个主分区,大小分别是2G。

作业2:在/dev/sdb上创建1个扩展分区,使用/dev/sdb剩余所有空间。

作业3:在/dev/sdb上创建3个逻辑分区,大小分别为2G。

作业4:把/dev/sdb2创建为交换分区,要求重启系统后继续生效,并要求当物理内存不够时优先使用/dev/sdb2。

作业5:把/dev/sdb5、/dev/sdb6、/dev/sdb7的分区类型转变为LVM类型的。

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Qt基础之四十五:Qt国际化(I18N)

国际化的英文表述为Internationalization,通常简写为I18N(首尾字母加中间的字符数),这种奇葩的缩写方式,让我想起了NBA球星“字母哥”。 下面看下Qt实现的动态语言切换效果。 一.效果 二.源码 QHSettingDialog.h #ifndef QHSETTINGDIALOG_H #define QHSETTINGDIALOG_H#…

Grafana监控数据可视化

Grafana 是一个可视化面板,有着非常漂亮的图表和布局展示,功能齐全的度量仪表盘和图形编辑器,支持 Graphite、zabbix、InfluxDB、Prometheus、OpenTSDB、Elasticsearch 等作为数据源,比 Prometheus 自带的图表展示功能强大太多&am…

【MySQL】主从异步复制配置

您好,我是码农飞哥(wei158556),感谢您阅读本文,欢迎一键三连哦。 💪🏻 1. Python基础专栏,基础知识一网打尽,9.9元买不了吃亏,买不了上当。 Python从入门到精…

删除数据后, redis 内存占用还是很高怎么办?

现象: reids 做了数据删除,数据量不大,使用 top 命令看,发现还是占用大量内存 原因: 1.redis 底层内存根据内存分配器分配,不会立刻释放 2.redis 释放的内存空间不是连续的,存在碎片 内存碎…

软件开发新手用哪个IDE比较好?软件开发最好的IDE都在这!

目录 IDES 的优点 最佳编程 IDE 列表 Java 开发的流行集成开发环境 JetBrains 的 IntelliJ IDEA NetBeans 适用于 C/ C、C# 编程语言的最佳 IDE Visual Studio 和 Visual Studio 代码 Eclipse PHP 开发的最佳 IDE PHPStorm Sublime Text Atom JavaScript 的顶级 I…

多线程编程设计模式(单例,阻塞队列,定时器,线程池)

💕"只有首先看到事情的可能性,才会有发生的机会。"💕 作者:Mylvzi 文章主要内容:多线程编程设计模式(单例,阻塞队列,定时器,线程池) 本文主要讲解多线程编程中常用到的设计模式,包括单例模式,阻塞队列,定时…

Go语言中的HTTP重定向

大家好,我是你们可爱的编程小助手,今天我们要一起探讨如何使用Go语言实现HTTP重定向,让我们开始吧! 大家都知道,网站开发中有时候需要将用户的请求从一个URL导向到另一个URL。比如说,你可能想将旧的URL结构…

宏集方案 | 物联网HMI的关键驱动力—SCADA级功能库和控件库

来源:宏集科技 工业物联网 宏集方案 | 物联网HMI的关键驱动力—SCADA级功能库和控件库 原文链接:https://mp.weixin.qq.com/s/UEPtpTehdbFrw3MUCnuR2A 欢迎关注虹科,为您提供最新资讯! 01 前言 在这个数字化时代,物…

iptables防火墙(二)

目录 1、SNAT策略及应用 1.1、SNAT 策略概述 1.2、SNAT 策略的应用 2、DNAT 策略及应用 2.1、DNAT 策略概述 2.2、DNAT 策略的应用 3、规则的导出、导入 3.1、规则的备份及还原 3.2、使用 iptables 服务 4、使用防火墙脚本 4.1、防火墙脚本的构成 &#xf…

Qt 5.9.4 转 Qt 6.6.1 遇到的问题总结(一)

最近公司对大家的开发的硬件环境进行了升级,电脑主机的配置、显示器(两台大屏显示器)变得的逼格高多了。既然电脑上的开发环境都需要重装,就打算把开发环境也升级到最新版本,要用就用最新版本。下面对升级后的开发环境…

ssm基于vue框架的点餐系统的设计与实现+vue论文

基于vue框架的点餐系统的设计与实现 摘要 当下,正处于信息化的时代,许多行业顺应时代的变化,结合使用计算机技术向数字化、信息化建设迈进。传统的点餐信息管理模式,采用人工登记的方式保存相关数据,这种以人力为主的…

Flink1.17实战教程(第六篇:容错机制)

系列文章目录 Flink1.17实战教程(第一篇:概念、部署、架构) Flink1.17实战教程(第二篇:DataStream API) Flink1.17实战教程(第三篇:时间和窗口) Flink1.17实战教程&…

听GPT 讲Rust源代码--src/tools(37)

File: rust/src/tools/clippy/clippy_lints/src/explicit_write.rs 在Rust源代码中,explicit_write.rs这个文件是Clippy的一个lint插件,其作用是检查代码中的write!、writeln!宏使用时的不当或繁琐的情况,并给出相关的警告或建议。 具体来说&…

阿里后端实习二面

阿里后端实习二面 记录面试题目,希望可以帮助到大家 类加载的流程? 类加载分为三个部分:加载、连接、初始化 加载 类的加载主要的职责为将.class文件的二进制字节流读入内存(JDK1.7及之前为JVM内存,JDK1.8及之后为本地内存)&…

Xshell连接ubuntu,从github克隆项目,用Xshell克隆项目

访问不了github:https://blog.csdn.net/liu834189447/article/details/135246914 短暂解决访问问题。 ping不通虚拟机/无法连接虚拟机:https://blog.csdn.net/liu834189447/article/details/135240276 ps: Xshell、ubuntu的粘贴快捷键为 Shift Insert …

单片机外设矩阵键盘之行列扫描识别原理与示例

单片机外设矩阵键盘之行列扫描识别原理与示例 1.概述 这篇文章介绍单片机通过行列扫描的方式识别矩阵键盘的按键,通过程序执行相应的操作。 2.行列扫描识别原理 2.1.独立按键识别原理 为什么需要矩阵按键 独立按键操作简单,当数量较多时候会占用单片机…

“C语言与人生:手把手教你玩转C语言数组,从此编程无难题“

各位少年,我是博主那一脸阳光,由我来给大家介绍C语言的数组的详解。 在C语言中,数组是一种极其重要的数据结构,它允许我们存储和管理相同类型的一系列相关数据。通过理解并熟练掌握数组的使用,开发者能够高效地处理大量…

Java(算术,自增自减,赋值,关系,逻辑,三元)运算符,运算符的优先级,隐式转换,强制转换,字符串的+。

文章目录 1.运算符和表达式运算符:表达式: 2.算术运算符练习:数值拆分 3.隐式转换概念:简单记忆:两种提升规则:取值范围从小到大的关系: 4.隐式转换的练习案例一:案例二:…

啊哈c语言——4.10(练习)

1&#xff0e;请尝试用for循环打印下面的图形。 #include <stdio.h> #include <stdlib.h> int main() {int a,b,c,d,e;for(a 1;a < 10;a){if(a < 5){b a * 2 - 1;c 5 - a;}else{b 9 - (a - 5) * 2;c a - 5;}for(d 0;d < c;d ){printf(" "…

AI创新之美:AIGC探讨2024年春晚吉祥物龙辰辰的AI绘画之独特观点

&#x1f3ac; 鸽芷咕&#xff1a;个人主页 &#x1f525; 个人专栏:《粉丝福利》 《linux深造日志》 ⛺️生活的理想&#xff0c;就是为了理想的生活! 文章目录 引言一、龙辰辰事件概述二、为什么龙辰辰会被质疑AI创作&#xff1f;1.1 AI 作画的特点2.2 关于建行的合作宣传图…