day017-磁盘管理-实战
文章目录
- 1. 硬盘命名规则
- 2. 添加硬盘
- 2.1 查看硬盘名称
- 3. 硬盘分区
- 3.1 分区命名规则:mbr分区表格式
- 3.2 创建分区:fdisk
- 3.2.1 fdisk -l:查看硬盘及分区信息
- 3.2.2 fdisk /dev/sdc :为该硬盘分区
- 3.2.3 创建扩展分区和逻辑分区
- 3.2.4 保存设置并退出
- 3.3 删除分区
- 3.4 mbr磁盘分区知识
- 4. 分区格式化
- 4.1 创建分区
- 4.2 格式化文件系统:xfs
- 5. 挂载
- 5.1 临时挂载
- 5.2 永久挂载
- 5.2.1 fstab文件
- 5.2.2 写入配置文件
- 6. mbr和gpt
- 6.1 parted命令
- 7. raid
- 7.1 raid 0
- 7.2 raid 1
- 7.3 raid 5
- 7.4 raid 10
- 8. 踩坑记录
- 8.1 开机进入紧急模式
- 9. 思维导图
1. 硬盘命名规则
- sas、sata、scsi接口:/dev/sd……
- 虚拟化(kvm、openstack),云服务器:/dev/vd……
- 固态硬盘(物理服务器):/dev/nvme……
以scsi接口的硬盘为例:
第1块硬盘名:/dev/sda
第2块硬盘名:/dev/sdb
……
2. 添加硬盘
- 点击虚拟机右下角硬盘图标,并点击设置:
- 添加硬盘
- 按默认选择即可,最后点击确定
- 最后重启系统
2.1 查看硬盘名称
- 方法一:直接在/dev目录下查找
- 方法二:lsblk,显示硬盘信息(推荐)
[root@oldboy99-Kylin ~]# ll /dev/sd*
brw-rw---- 1 root disk 8, 0 5月 19 19:12 /dev/sda
brw-rw---- 1 root disk 8, 1 5月 19 19:12 /dev/sda1
brw-rw---- 1 root disk 8, 2 5月 19 19:12 /dev/sda2
brw-rw---- 1 root disk 8, 16 5月 19 19:12 /dev/sdb
brw-rw---- 1 root disk 8, 32 5月 19 19:12 /dev/sdc
[root@oldboy99-Kylin ~]# lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sda 8:0 0 100G 0 disk
├─sda1 8:1 0 1G 0 part /boot
└─sda2 8:2 0 99G 0 part ├─klas-root 253:0 0 65.1G 0 lvm /├─klas-swap 253:1 0 2.1G 0 lvm [SWAP]└─klas-backup 253:2 0 31.8G 0 lvm /backup
sdb 8:16 0 2.9T 0 disk
sdc 8:32 0 1G 0 disk
sr0 11:0 1 4.3G 0 rom
- 刚才添加了1G硬盘,明显是sdc。
3. 硬盘分区
- 硬盘分区相当于将硬盘空间分为多个区域,每个区域存储不同业务的文件。
3.1 分区命名规则:mbr分区表格式
- 分区号:1-4,默认最多有4个主分区
- 最后一个可以为拓展分区
- 拓展分区可以被逻辑分区划分,逻辑分区号从5开始
第1个分区:/dev/sda1
第2个分区:/dev/sda2
……
- 要区分硬盘名字和分区名字。
- 分区名后面有数字
3.2 创建分区:fdisk
- fdisk该命令是非常安全的,对硬盘的设置会默认先保存在内存中,最后要保存配置(w)程序才会对硬盘做出响应。
3.2.1 fdisk -l:查看硬盘及分区信息
[root@oldboy99-Kylin ~]# fdisk -l
Disk /dev/sda:100 GiB,107374182400 字节,209715200 个扇区
磁盘型号:VMware Virtual S
单元:扇区 / 1 * 512 = 512 字节
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节
磁盘标签类型:dos
磁盘标识符:0xfb36b180设备 启动 起点 末尾 扇区 大小 Id 类型
/dev/sda1 * 2048 2099199 2097152 1G 83 Linux
/dev/sda2 2099200 209715199 207616000 99G 8e Linux LVM
……
3.2.2 fdisk /dev/sdc :为该硬盘分区
[root@oldboy99-Kylin ~]# fdisk /dev/sdc 欢迎使用 fdisk (util-linux 2.35.2)。
更改将停留在内存中,直到您决定将更改写入磁盘。
使用写入命令前请三思。设备不包含可识别的分区表。
创建了一个磁盘标识符为 0xe7e673ce 的新 DOS 磁盘标签。命令(输入 m 获取帮助):p # print,查看当前硬盘信息,大小:1G
Disk /dev/sdc:1 GiB,1073741824 字节,2097152 个扇区
磁盘型号:VMware Virtual S
单元:扇区 / 1 * 512 = 512 字节
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节
磁盘标签类型:dos
磁盘标识符:0xe7e673ce命令(输入 m 获取帮助):n # new,新建分区
分区类型p 主分区 (0 primary, 0 extended, 4 free)e 扩展分区 (逻辑分区容器)
选择 (默认 p): # 回车,默认选择主分区将使用默认回应 p。
分区号 (1-4, 默认 1): # 回车,默认选择分区号1
第一个扇区 (2048-2097151, 默认 2048): # 回车,默认选择扇区开头位置
最后一个扇区,+/-sectors 或 +size{K,M,G,T,P} (2048-2097151, 默认 2097151): +100M # 输入分区空间大小创建了一个新分区 1,类型为“Linux”,大小为 100 MiB。命令(输入 m 获取帮助):p
Disk /dev/sdc:1 GiB,1073741824 字节,2097152 个扇区
磁盘型号:VMware Virtual S
单元:扇区 / 1 * 512 = 512 字节
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节
磁盘标签类型:dos
磁盘标识符:0xe7e673ce设备 启动 起点 末尾 扇区 大小 Id 类型
/dev/sdc1 2048 206847 204800 100M 83 Linux
# 分区创建成功
3.2.3 创建扩展分区和逻辑分区
- 跟上面一样,注意逻辑分区号是从5开始的
命令(输入 m 获取帮助):n
分区类型p 主分区 (1 primary, 0 extended, 3 free)e 扩展分区 (逻辑分区容器)
选择 (默认 p):e
分区号 (2-4, 默认 2):
第一个扇区 (206848-2097151, 默认 206848):
最后一个扇区,+/-sectors 或 +size{K,M,G,T,P} (206848-2097151, 默认 2097151): 创建了一个新分区 2,类型为“Extended”,大小为 923 MiB。命令(输入 m 获取帮助):p
Disk /dev/sdc:1 GiB,1073741824 字节,2097152 个扇区
磁盘型号:VMware Virtual S
单元:扇区 / 1 * 512 = 512 字节
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节
磁盘标签类型:dos
磁盘标识符:0xe7e673ce设备 启动 起点 末尾 扇区 大小 Id 类型
/dev/sdc1 2048 206847 204800 100M 83 Linux
/dev/sdc2 206848 2097151 1890304 923M 5 扩展命令(输入 m 获取帮助):n
所有主分区的空间都在使用中。
添加逻辑分区 5
第一个扇区 (208896-2097151, 默认 208896):
最后一个扇区,+/-sectors 或 +size{K,M,G,T,P} (208896-2097151, 默认 2097151): +300M创建了一个新分区 5,类型为“Linux”,大小为 300 MiB。命令(输入 m 获取帮助):p
Disk /dev/sdc:1 GiB,1073741824 字节,2097152 个扇区
磁盘型号:VMware Virtual S
单元:扇区 / 1 * 512 = 512 字节
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节
磁盘标签类型:dos
磁盘标识符:0xe7e673ce设备 启动 起点 末尾 扇区 大小 Id 类型
/dev/sdc1 2048 206847 204800 100M 83 Linux
/dev/sdc2 206848 2097151 1890304 923M 5 扩展
/dev/sdc5 208896 823295 614400 300M 83 Linux
3.2.4 保存设置并退出
命令(输入 m 获取帮助):w
分区表已调整。
将调用 ioctl() 来重新读分区表。
正在同步磁盘。
- 查看下系统分区
[root@oldboy99-Kylin ~]# lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sda 8:0 0 100G 0 disk
├─sda1 8:1 0 1G 0 part /boot
└─sda2 8:2 0 99G 0 part ├─klas-root 253:0 0 65.1G 0 lvm /├─klas-swap 253:1 0 2.1G 0 lvm [SWAP]└─klas-backup 253:2 0 31.8G 0 lvm /backup
sdb 8:16 0 2.9T 0 disk
sdc 8:32 0 1G 0 disk
├─sdc1 8:33 0 100M 0 part
├─sdc2 8:34 0 1K 0 part
└─sdc5 8:37 0 300M 0 part
sr0 11:0 1 4.3G 0 rom
*************************************************
[root@oldboy99-Kylin ~]# ll /dev/sdc*
brw-rw---- 1 root disk 8, 32 5月 19 19:56 /dev/sdc
brw-rw---- 1 root disk 8, 33 5月 19 19:56 /dev/sdc1
brw-rw---- 1 root disk 8, 34 5月 19 19:56 /dev/sdc2
brw-rw---- 1 root disk 8, 37 5月 19 19:56 /dev/sdc5
- 很明显的看到刚刚创建的分区sdc1、2、5
3.3 删除分区
# 选择该硬盘进行分区配置
[root@oldboy99-Kylin ~]# fdisk /dev/sdc欢迎使用 fdisk (util-linux 2.35.2)。
更改将停留在内存中,直到您决定将更改写入磁盘。
使用写入命令前请三思。命令(输入 m 获取帮助):p # 查看当前分区情况
Disk /dev/sdc:1 GiB,1073741824 字节,2097152 个扇区
磁盘型号:VMware Virtual S
单元:扇区 / 1 * 512 = 512 字节
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节
磁盘标签类型:dos
磁盘标识符:0xe7e673ce设备 启动 起点 末尾 扇区 大小 Id 类型
/dev/sdc1 2048 206847 204800 100M 83 Linux
/dev/sdc2 206848 2097151 1890304 923M 5 扩展
/dev/sdc5 208896 823295 614400 300M 83 Linux命令(输入 m 获取帮助):d # 有三个分区,默认先删除逻辑分区
分区号 (1,2,5, 默认 5): 分区 5 已删除。命令(输入 m 获取帮助):d
分区号 (1,2, 默认 2): 分区 2 已删除。命令(输入 m 获取帮助):d
已选择分区 1
分区 1 已删除。命令(输入 m 获取帮助):p # 查看下没有分区了
Disk /dev/sdc:1 GiB,1073741824 字节,2097152 个扇区
磁盘型号:VMware Virtual S
单元:扇区 / 1 * 512 = 512 字节
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节
磁盘标签类型:dos
磁盘标识符:0xe7e673ce命令(输入 m 获取帮助):w # 记得保存当前配置
分区表已调整。
将调用 ioctl() 来重新读分区表。
正在同步磁盘。
# 查看下硬盘分区情况
[root@oldboy99-Kylin ~]# lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sda 8:0 0 100G 0 disk
├─sda1 8:1 0 1G 0 part /boot
└─sda2 8:2 0 99G 0 part ├─klas-root 253:0 0 65.1G 0 lvm /├─klas-swap 253:1 0 2.1G 0 lvm [SWAP]└─klas-backup 253:2 0 31.8G 0 lvm /backup
sdb 8:16 0 2.9T 0 disk
sdc 8:32 0 1G 0 disk
sr0 11:0 1 4.3G 0 rom
3.4 mbr磁盘分区知识
- 主分区,最多4个;
- 扩展分区无法直接使用,需要在扩展分区中创建逻辑分区;
- 磁盘分区存放在磁盘的开头:0头0道1扇区(机械硬盘)
- 1扇区大小:512字节
4. 分区格式化
- 格式化,为分区创建文件系统
- 不同的文件系统存放的文件格式不同
- 红帽系列:xfs
- Ubuntu/Debian:ext4
- 格式化命令:mkfs(make filesystem)
- 生产环境中,一个硬盘创建一个分区使用即可
4.1 创建分区
[root@oldboy99-Kylin ~]# fdisk /dev/sdc欢迎使用 fdisk (util-linux 2.35.2)。
更改将停留在内存中,直到您决定将更改写入磁盘。
使用写入命令前请三思。命令(输入 m 获取帮助):p
Disk /dev/sdc:1 GiB,1073741824 字节,2097152 个扇区
磁盘型号:VMware Virtual S
单元:扇区 / 1 * 512 = 512 字节
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节
磁盘标签类型:dos
磁盘标识符:0xe7e673ce命令(输入 m 获取帮助):n
分区类型p 主分区 (0 primary, 0 extended, 4 free)e 扩展分区 (逻辑分区容器)
选择 (默认 p):将使用默认回应 p。
分区号 (1-4, 默认 1):
第一个扇区 (2048-2097151, 默认 2048):
最后一个扇区,+/-sectors 或 +size{K,M,G,T,P} (2048-2097151, 默认 2097151): 创建了一个新分区 1,类型为“Linux”,大小为 1023 MiB。命令(输入 m 获取帮助):p
Disk /dev/sdc:1 GiB,1073741824 字节,2097152 个扇区
磁盘型号:VMware Virtual S
单元:扇区 / 1 * 512 = 512 字节
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节
磁盘标签类型:dos
磁盘标识符:0xe7e673ce设备 启动 起点 末尾 扇区 大小 Id 类型
/dev/sdc1 2048 2097151 2095104 1023M 83 Linux命令(输入 m 获取帮助):w
分区表已调整。
将调用 ioctl() 来重新读分区表。
正在同步磁盘。[root@oldboy99-Kylin ~]# lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sda 8:0 0 100G 0 disk
├─sda1 8:1 0 1G 0 part /boot
└─sda2 8:2 0 99G 0 part ├─klas-root 253:0 0 65.1G 0 lvm /├─klas-swap 253:1 0 2.1G 0 lvm [SWAP]└─klas-backup 253:2 0 31.8G 0 lvm /backup
sdb 8:16 0 2.9T 0 disk
sdc 8:32 0 1G 0 disk
└─sdc1 8:33 0 1023M 0 part
sr0 11:0 1 4.3G 0 rom
4.2 格式化文件系统:xfs
- blkid:查看分区的元数据,uuid和文件系统类型、block大小
# 注意分区名字不要写错
[root@oldboy99-Kylin ~]# mkfs.xfs /dev/sdc1
meta-data=/dev/sdc1 isize=512 agcount=4, agsize=65472 blks= sectsz=512 attr=2, projid32bit=1= crc=1 finobt=1, sparse=1, rmapbt=0= reflink=1
data = bsize=4096 blocks=261888, imaxpct=25= sunit=0 swidth=0 blks
naming =version 2 bsize=4096 ascii-ci=0, ftype=1
log =internal log bsize=4096 blocks=1566, version=2= sectsz=512 sunit=0 blks, lazy-count=1
realtime =none extsz=4096 blocks=0, rtextents=0
# 查看该分区的信息
[root@oldboy99-Kylin ~]# blkid |grep '/dev/sdc1'
/dev/sdc1: UUID="b503e9fc-21f4-4ab3-9c2f-72508091eb2f" BLOCK_SIZE="512" TYPE="xfs" PARTUUID="e7e673ce-01"
5. 挂载
- 要想使用分区,必须挂载到某个空目录下
5.1 临时挂载
- mount:挂载命令
- df -hT:查看文件系统以及挂载点
[root@oldboy99-Kylin ~]# mount /dev/sdc1 /mnt/
[root@oldboy99-Kylin ~]# df -hT
文件系统 类型 容量 已用 可用 已用% 挂载点
devtmpfs devtmpfs 453M 0 453M 0% /dev
tmpfs tmpfs 475M 0 475M 0% /dev/shm
tmpfs tmpfs 475M 6.9M 468M 2% /run
tmpfs tmpfs 475M 0 475M 0% /sys/fs/cgroup
/dev/mapper/klas-root xfs 66G 8.8G 57G 14% /
tmpfs tmpfs 475M 0 475M 0% /tmp
/dev/mapper/klas-backup xfs 32G 260M 32G 1% /backup
/dev/sda1 xfs 1014M 202M 813M 20% /boot
tmpfs tmpfs 95M 0 95M 0% /run/user/0
/dev/sdc1 xfs 1017M 40M 978M 4% /mnt
- 临时挂载在重启系统后失效
- umount:卸载文件系统
- -lf:强制卸载
[root@oldboy99-Kylin ~]# umount /mnt
[root@oldboy99-Kylin ~]# df -hT
文件系统 类型 容量 已用 可用 已用% 挂载点
devtmpfs devtmpfs 453M 0 453M 0% /dev
tmpfs tmpfs 475M 0 475M 0% /dev/shm
tmpfs tmpfs 475M 6.9M 468M 2% /run
tmpfs tmpfs 475M 0 475M 0% /sys/fs/cgroup
/dev/mapper/klas-root xfs 66G 8.8G 57G 14% /
tmpfs tmpfs 475M 0 475M 0% /tmp
/dev/mapper/klas-backup xfs 32G 260M 32G 1% /backup
/dev/sda1 xfs 1014M 202M 813M 20% /boot
tmpfs tmpfs 95M 0 95M 0% /run/user/0
5.2 永久挂载
- 方法一:/etc/fstab,开机自动挂载的配置文件,推荐使用。
- 方法二:/etc/rc.local,开机自动运行指定命令的配置文件,将挂载命令写入该文件即可,但是不推荐。
5.2.1 fstab文件
- 第一列:文件系统名称/文件系统UUID
- 第二列:挂载的目录
- 第三列:文件系统类型
- 第四列:挂载选项,默认就行(defaults),注意最后有个s
- 第五列:是否进行备份(dump指令),默认关闭
- 第六列:是否进行开机检查(硬盘),默认不检查
5.2.2 写入配置文件
/dev/sdc1 /app/data xfs defaults 0 0
- 重启检查下
[root@oldboy99-Kylin ~]# df -hT
文件系统 类型 容量 已用 可用 已用% 挂载点
……
/dev/sdc1 xfs 1017M 40M 978M 4% /app/data
……
6. mbr和gpt
磁盘分区表 | 相同点 | 不同点 | 命令 |
---|---|---|---|
mbr(Master Boot Record)主引导记录 | 引导系统启动,存放磁盘分区信息 | 主分区、拓展分区、逻辑分区; 支持硬盘空间小于2Tb | fdisk/parted |
gpt(GUID Partition Table)GUID分区表 | 引导系统启动,存放磁盘分区信息 | 主分区无限个; 支持2Tb以上的硬盘 | gdisk/parted |
- gdisk和fdisk的使用方式基本相同
6.1 parted命令
- 该命令非常危险,会对硬盘分区直接操作;
- 一定要注意此时修改的硬盘或分区是否正确
# 对大容量硬盘分区
[root@oldboy99-Kylin ~]# parted /dev/sdb
GNU Parted 3.3
使用 /dev/sdb
欢迎使用 GNU Parted!输入 'help' 来查看命令列表。
(parted) mktable gpt # 创建分区表
警告: 现有 /dev/sdb 上的磁盘卷标将被销毁,而所有在这个磁盘上的数据将会丢失。您要继续吗?
是/Yes/否/No? y
(parted) p # 查看分区情况
型号:VMware, VMware Virtual S (scsi)
磁盘 /dev/sdb:3221GB
扇区大小 (逻辑/物理):512B/512B
分区表:gpt
磁盘标志:编号 起始点 结束点 大小 文件系统 名称 标志(parted) mkpart primary 0 100g # 创建主分区,100g的空间
警告: The resulting partition is not properly aligned for best performance: 34s % 2048s != 0s
忽略/Ignore/放弃/Cancel? i # 解释:生成的分区未正确对齐以获得最佳性能
(parted) p
型号:VMware, VMware Virtual S (scsi)
磁盘 /dev/sdb:3221GB
扇区大小 (逻辑/物理):512B/512B
分区表:gpt
磁盘标志:编号 起始点 结束点 大小 文件系统 名称 标志1 17.4kB 100GB 100GB primary(parted) rm 1 # 删除该分区,指定分区编号
(parted) p
型号:VMware, VMware Virtual S (scsi)
磁盘 /dev/sdb:3221GB
扇区大小 (逻辑/物理):512B/512B
分区表:gpt
磁盘标志:编号 起始点 结束点 大小 文件系统 名称 标志(parted) q
信息: 你可能需要 /etc/fstab。
7. raid
- 独立磁盘冗余阵列,为物理服务器管理硬盘
- 目标/特点:
- 获取更多的容量、获取更多的冗余(更高的安全性)、获取更高的性能
- raid管理这些硬盘的方式:raid级别
raid级别 | 最少需要的硬盘数量 | 安全冗余 | 可用容量 | 性能 | 使用场景 | 举例 |
---|---|---|---|---|---|---|
raid 0 | 1/2 | 几乎没有 | 所有硬盘容量总和 | 读写最快 | 不要求安全,只要求速度 | 数据库从库、 存储从库、 web服务器 |
raid 1 | 2 | 100% | 所有硬盘容量总和的一半 | 写入速度慢,读取较快 | 只追求安全性,不要求读取速度 | 系统盘、监控服务器 |
raid 5 | 3 | 最多允许1块硬盘损坏 | 损失一块盘的容量 | 写入性能不好,读取速度较快 | 对于速度、安全性要求不高 | 普遍数据库、 存储访问量不高的存储服务 |
raid 10 | 4 | 可以损坏一半 | 所有硬盘容量总和的一半 | 读写很快 | 对于读写、安全性要求都很高 | 高并发或高访问量的数据库主库 |
7.1 raid 0
- RAID 0是一种非常简单的的方式,它将多块磁盘组合在一起形成一个大容量的存储。
7.2 raid 1
- RAID1是磁盘阵列中单位成本最高的一种方式。因为它的原理是在往磁盘写数据的时候,将同一份数据无差别的写两份到磁盘,分别写到工作磁盘和镜像磁盘,那么它的实际空间使用率只有50%了,两块磁盘当做一块用,这是一种比较昂贵的方案。
7.3 raid 5
- RAID5是一种将存储性能、数据安全、存储成本兼顾的一种方案。
- RAID5模式把校验码信息分布到各个磁盘上,一旦某一块磁盘损坏了,就可以用剩下的数据和对应的奇偶校验码信息去恢复损坏的数据。
7.4 raid 10
- RAID10兼备了RAID1和RAID0的优点。首先基于RAID1模式将磁盘分为2份,当要写入数据的时候,将所有的数据在两份磁盘上同时写入,相当于写了双份数据,起到了数据保障的作用。且在每一份磁盘上又会基于RAID0技术将数据分为N份并发的读写,这样也保障了数据的效率。
8. 踩坑记录
8.1 开机进入紧急模式
- 原因:编写/etc/fstab文件有误
- 输入root密码进入系统,修改文件即可。
9. 思维导图
【金山文档】 思维导图 https://www.kdocs.cn/l/co3I7PtpTYQX
相关文章:

day017-磁盘管理-实战
文章目录 1. 硬盘命名规则2. 添加硬盘2.1 查看硬盘名称 3. 硬盘分区3.1 分区命名规则:mbr分区表格式3.2 创建分区:fdisk3.2.1 fdisk -l:查看硬盘及分区信息3.2.2 fdisk /dev/sdc :为该硬盘分区3.2.3 创建扩展分区和逻辑分区3.2.4 保存设置并退…...

【成品设计】STM32和UCOS-II的项目
项目1:《基于STM32和UCOS-II的水质监测系统》 Ps:分为带系统版本和不带系统版本,功能都一样。 功能说明: 1. 单片机主控:STM32F103C8T6单片机作为核心控制。 2. 酸碱度传感器:实时采集当前PH值。 3. 水质…...
当通过PHP在线修改文件数组遇到不能及时生效问题
当你通过PHP在线修改文件中的数组(比如配置文件、缓存文件等)后,发现修改不能及时生效,常见原因和解决办法如下: 1. 缓存未刷新 问题描述:PHP应用通常会对配置、数据等做缓存(如Redis、Memcached、OPcache、文件缓存等),导致你修改了文件但实际运行时还是旧内容。解决…...

Ngrok 配置:实现 Uniapp 前后端项目内网穿透
文章目录 一、下载并安装 ngrok二、配置 ngrok Authtoken三、启动本地 uniapp 项目四、使用 ngrok 暴露本地服务五、通过公网 URL 访问项目六、后端API项目的穿透问题排查 (uni-app 后端 API 示例)交互流程图示 七、ngrok Web 界面 (本地监控)八、停止 ngrok总结 ngrok 是一款…...

鸿蒙ArkUI体验:Hexo博客客户端开发心得
最近部门也在跟进鸿蒙平台的业务开发,自己主要是做 Android 开发,主要使用 Kotlin/Java 语言。,需要对新的开发平台和开发模式进行学习,在业余时间开了个项目练手,做了个基于 Hexo 博客内容开发的App。鸿蒙主要使用Ark…...

鸿蒙NEXT开发动画案例10
1.创建空白项目 2.Page文件夹下面新建Spin.ets文件,代码如下: interface TranslateOffset {x?:numbery?:number } /*** SpinKit动画组件 - SpinTen* author: CSDN-鸿蒙布道师* since: 2025/05/16*/ ComponentV2 export struct SpinTen {Require Para…...
Python 的 os 库常见使用方法(操作目录及文件)
前言: os 模块是 Python 标准库中用于与操作系统交互的核心模块,提供了许多操作文件和目录的功能。以下是常见的使用方法: 1. 目录操作 方法功能说明示例os.getcwd()获取当前工作目录print(os.getcwd())os.chdir(path)切换当前工作目录os.ch…...

【Linux】Linux安装并配置Redis
目录 1.安装 2.启动服务 3.配置 3.1.绑定地址 3.2.保护模式 3.3.持久化选项 3.3.1.RDB 持久化 3.3.2.AOF 持久化 3.3.3.如何选择 1.安装 Redis 可以从默认的 CentOS 软件仓库中安装。运行以下命令来安装 Redis sudo dnf install redis -y 响应如下 2.启动服务 安装完成后&…...

【11408学习记录】考研英语辞职信写作三步法:真题精讲+妙句活用+范文模板
应聘信 英语写作2005年考研英语真题小作文写作思路第一段第二段妙句7 9妙句11补充3补充4 第三段 妙句成文 每日一句词汇第一步:找谓语第二步:断句第三步:简化主句原因状语从句 英语 写作 2005年考研英语真题小作文 Directions: Two m…...
数据库(一):分布式数据库
定义 分布式数据库(Distributed Database) 是指: 数据分布在多个物理位置,但对用户透明,表现为一个统一逻辑数据库的系统。 结构模式(三层模式扩展) 层次作用对应实体用户层提供统一视图&…...
Java并发编程-线程池(三)
文章目录 线程池实现原理addWorker(Runnable firstTask, boolean core)1. 状态检查:校验线程池是否允许添加线程2. 工作线程数调整:CAS保证并发安全3. 初始化变量4. 创建 Worker 对象并获取线程5. 加锁保证线程安全6. 启动工作线程7. 异常处理核心作用 线…...

《黑马前端ajax+node.js+webpack+git教程》(笔记)——node.js教程+webpack教程(nodejs教程)
黑马程序员前端AJAX入门到实战全套教程,包含学前端框架必会的(ajaxnode.jswebpackgit),一套全覆盖 文章目录 Node.js与Webpack-01.Node.js入门定义和作用什么是前端工程化?(离不开node.js)Node.…...

Flink 快速入门
本文涉及到大量的底层原理知识,包括运行机制图解都非常详细,还有一些实战案例,所以导致本篇文章会比较长,内容比较多,由于内容太多,很多目录可能展示不出来,需要去细心的查看,非常适…...
高效管理多后端服务:Nginx 配置与实践指南
在现代的 Web 开发和运维中,一个系统往往由多个后端服务组成,每个服务负责不同的功能模块。例如,一个电商网站可能包括用户服务、订单服务和支付服务,每个服务都运行在独立的服务器或容器中。为了高效地管理这些服务并提供统一的访…...

阻塞队列:线程安全与生产者消费者模型解析
一、阻塞队列 阻塞队列就是基于普通队列做出扩展 1.线程安全的 如果针对一个已经满了的队列进行入队列,此时入队列操作就会阻塞,一直阻塞到队列不满(其他线程出队列元素)之后 如果针对一个已经空了的队列进行出队列,…...

【入门|Docker】基础知识扫盲:什么是 Docker?
文章目录 基础知识扫盲:什么是 Docker?Docker 是什么?Docker 核心组件Docker 与虚拟机的区别Docker 在现代开发中的核心角色Docker 的局限性 基础知识扫盲:什么是 Docker? 最近打算开始系统性地学习与云计算相关的技术…...
如何利用 Java 爬虫获得某书笔记详情:实战指南
在知识分享和学习的领域,许多平台提供了丰富的书籍笔记和学习资源。通过 Java 爬虫技术,我们可以高效地获取这些笔记的详细信息,以便进行进一步的分析和整理。本文将详细介绍如何利用 Java 爬虫获取某书笔记详情,并提供完整的代码…...

【MYSQL】基本查询,表的增删查改
📚 博主的专栏 🐧 Linux | 🖥️ C | 📊 数据结构 | 💡C 算法 | 🅒 C 语言 | 🌐 计算机网络 |🗃️ mysql 摘要:本文详细介绍了MySQL中的CRUD操作(创…...
在嵌入式系统中, 一般链路层断开多久,断开TCP为好
一、典型场景与推荐策略 1. 实时性优先(工业控制、自动化设备) 需求:快速释放资源,避免因等待重传浪费内存或阻塞任务。 策略: 立即断开:在lwip_netif_link_callback中检测到链路断开后直接关闭TCP连接&a…...

Android Studio 日志系统详解
文章目录 一、Android 日志系统基础1. Log 类2. 日志级别 二、Android Studio 中的 Logcat1. 打开 Logcat2. Logcat 界面组成3. 常用 Logcat 命令 三、高级日志技巧1. 自定义日志工具类2. 打印方法调用栈3. 打印长日志4. JSON 和 XML 格式化输出 四、Logcat 高级功能1. 自定义日…...
基于matlab的D2D 功率控制仿真
基于MATLAB的D2D(Device-to-Device)功率控制仿真示例,包含系统建模、功率控制算法实现和性能分析。该仿真以蜂窝网络为背景,重点关注D2D用户间的干扰管理和功率优化。 1. 系统模型与参数设置 clc; clear; close all;%% 参数配置…...
互联网大厂Java面试:从基础到复杂场景的技术挑战
互联网大厂Java面试:从基础到复杂场景的技术挑战 场景描述 在一家知名互联网大厂的会议室里,面试官严肃地坐在桌子的一侧,而对面则是一位充满喜感的应聘者——谢飞机。面试官准备了一系列关于Java技术栈的提问,涵盖了从基础到复…...
使用Redission来实现布隆过滤器
简述布隆过滤器 布隆过滤器是一种概率型数据结构,它可以用来判断一个元素是否在一个集合中。我们当时使用的是Redisson实现的布隆过滤器。它的底层原理是,先初始化一个比较大的数组,里面存放的是二进制0或1。一开始都是0,当一个k…...
为 Windows 和 Ubuntu 中设定代理服务器的详细方法
有时下载大模型总是下载不出来,要配置代理才行 一、Windows代理设置 ① 系统全局代理设置 打开【设置】→【网络和Internet】→【代理】。 在【手动设置代理】下,打开开关,输入: 地址:10.10.10.215 端口:…...

Feign异步模式丢失上下文问题
Feign异步模式丢失上下文问题 问题描述 当我们使用异步对我们代码进行操作优化时,代码中使用了RequestContextHolder去获取上下文的数据,当我们执行原来可以执行的业务时发现报了空指针异常或数据为空,这是为什么呢? 原理解释 …...
OpenCV阈值处理完全指南:从基础到高级应用
引言 阈值处理是图像处理中最基础、最常用的技术之一,它能够将灰度图像转换为二值图像,为后续的图像分析和处理奠定基础。本文将全面介绍OpenCV中的各种阈值处理方法,包括原理讲解、代码实现和实际应用场景。 一、什么是阈值处理࿱…...

【AWS入门】Amazon SageMaker简介
【AWS入门】Amazon SageMaker简介 [AWS Essentials] Brief Introduction to Amazon SageMaker By JacksonML 机器学习(Machine Learning,简称ML) 是当代流行的计算机科学分支技术。通常,人们在本地部署搭建环境,以满足机器学习的要求。 AWS…...
ArcGIS Pro 3.4 二次开发 - 内容
环境:ArcGIS Pro SDK 3.4 .NET 8 文章目录 内容1 工程1.1 创建一个空工程1.2 使用指定名称创建新工程1.3 使用Pro的默认设置创建新工程1.4 使用自定义模板文件创建新工程1.5 使用 ArcGIS Pro 提供的模板创建工程1.6 打开现有工程1.7 获取当前工程1.8 获取当前工程的…...
如何在 MongoDB 中设计文档结构?与关系型数据库的表结构设计有何不同?
在 MongoDB 中设计文档结构是一个核心且重要的环节,它直接影响应用的性能、可扩展性和可维护性。 MongoDB 文档结构设计原则与方法 MongoDB 的核心思想是数据如何被应用访问,就如何存储它。 嵌入 (Embedding / Denormalization) vs. 引用 (Referencing…...

MYSQL 故障排查与生产环境优化
目录 一.前置知识点 1. 案例需求 (1)mysql 常见故障解决 (2)mysql 性能优化 2.案例实施思路 (1)单库常见故障分析 (2)主从常见故障分析 (3)从几个不同…...