Linux磁盘及读写数据原理/Raid技术/硬软raid及企业案例/磁盘分区环境搭建/格式化磁盘系列-12213字

news2024/11/17 2:34:01

高薪思维:
怎么才能一直去坚持下去?
1.做这件事情的好处,对自己一直去放大。
2.不做的坏处,并放大
3.学习痛苦?还是去上班(餐饮、外卖痛苦?)
用比学习更痛苦的事情,去对抗学习
不但要学会,要做的最好(思维转换)
当你遇到困难,难以坚持的时候,此时也是其他人很难坚持的时候,撑住你会超越他,8小时内工作最多只能让你不落后,8小时外的努力才可能让你超越他人
我们要能够讲清楚,表达清楚,你认为你懂了和达到面试官要求差太多了,懂对于我们学习远远不够,一定要给别人能够讲清楚,表达清楚,这样才是对一个知识学会的标准!!
态度大于能力:
1.有能力,能找到工作,没有态度做不长久
2.有态度,领导给机会,给你进步时间,可以获得(能力+原本)的态度,领导更会给你机会,超越有能力的人

磁盘内部核心知识及读写数据原理

磁盘及盘品结构:
盘面是有编号的,和磁头编号是一样的

磁头是做径向运动(朝着半径方向运动,直线)
在这里插入图片描述
盘片固定在一个旋转轴上,这个轴即为盘片主轴,所有盘片是平行的,每一个盘片上存储面上有一个磁头,磁头被控制在磁头控制器上,所有磁头都是重叠的(目前有独立的技术),磁头可以沿着半径方向做斜切运动。
由于硬盘是高精密设备,硬盘必须为完全密封状态!
磁头靠近主轴解除表面,它不存放任何数据(启停区)离主轴最远的的地方是0磁道,也是硬盘数据开始的地方。磁头如何找到0磁道位置(0磁道检测器件)
硬盘的读写与扇区,扇面,柱面相关联(这里小编不再写了,属于Linux了解知识即可)

Raid技术

1.什么是Raid?

中文全称:廉价冗余磁盘阵列
英文全称:REdudant Array of INexpensive Disk
简称raid

raid是一种把一块或多块物理磁盘按照不同的技术方式组合起来形成一个磁盘组,在逻辑上看起来就是一块大的磁盘,可以提供比单个物理磁盘更大的存储容量或更高的存储性能,同时又提供不同级别的数据冗余备份的一种技术

2.为什么服务器需要Raid?

服务器运行痛点:
1.单块盘容量不够大
2.磁盘损坏数据丢失
3.磁盘速度不够快

用raid最直接的好处:
1.提升数据安全性
2.提升数据读写的性能
3.提供更大的单一逻辑磁盘数据容量存储

什么是raid级别?

把多个物理磁盘通过(不同的技术方式)组成的磁盘阵列,这个不同的技术方式就被称为raid级别

Raid级别:
raid 0 ,1,2,3,4,5,6,7,8,9,0+1(称为raid10),53等

生产环境常用raid级别:0,1,5,10(核心面试点)

在这里插入图片描述

raid实现方式?

RAID的实现方式:
1.独立扩展卡
速度快,支持read级别更多0,1,5,10

2.内置主板集成RAID控制器
速度还可以,缺点支持0,1

3.通过os系统软件实现

在这里插入图片描述

软raid(了解)

更加灵活,兼容性强但软件实现性能差,操作系统损坏数据容易丢失。

Windows、MacOS操作系统下新建的RAID阵列都是软RAID。RAID依赖于CPU和系统资源,其性能可能受到限制,尤其是在高负载和I/O密集型任务下。虽然软raid可以提高写的性能但是,实现性能特别差,一旦操作系统损坏,将会带来大灾难!

硬软raid区别(了解)

实现方式:软RAID(软件),硬RAID(硬件)实现。

成本:软RAID(较低),硬RAID成本(较高)。

性能:硬RAID性能通常优于软RAID,特别是在高负载和I/O密集型任务下。

灵活性:软RAID具有较高的灵活性和兼容性,而硬RAID可能受限于特定的硬件设备和平台。

可靠性:硬RAID通常提供更高的可靠性和稳定性,因为它卸载了RAID功能的处理负担。

硬raid图片
在这里插入图片描述

raid0

在这里插入图片描述
特点:
1.读写性能提高3倍
2.容量是单盘的3倍,没有损失
3.没有冗余
4.web服务,应用服务(集群)
维护稍微麻烦

raid5

在这里插入图片描述
特点:
1.RAID 5 具有和RAID 0 相近的数据读取速度,只是多了奇偶校验信息,写入数据速度比单个磁盘写入操作稍慢。
2.损失一块盘的数据容量
3.可损失一块盘,RAID数据安全保障程度比RAID 1 低而磁盘空间利用率要比raid 1 高

raid10,配数据库服务器主库用raid10,从库raid5
在这里插入图片描述
1.极高的读写效率和较高的数据保护、恢复能力

2.RAID10提供100%的数据冗余

3.RAID 10适用于数据库存储服务器等需要高性能、高容错但对容量要求不大的场合

4.RAID 1和RAID 0标准结合的产物

11.Raid和Lvm区别?
1)什么是LVM(逻辑卷管理)
动态扩容的工具。
1)分区动态扩容(1.事先规划好。2.尽量少分区)。
2)性能差(10%)。
应用场景:测试服务器

企业案例:

背景:公司内部最近要上新的ERP系统,公司内部旧的服务器已经无法满足需求。公司新上马的ERP系统,因为要满足各个分公司,各办事处,销售人员和后勤人员,服务人员甚至客户的协同的大量的24小时不间断的远程高负荷的数据操作,在数据储存方面需要采用更高级别的RAID磁盘阵列容错系统。
服务器R730 DELL型号已经确认,但是在raid存储方面还没定夺。你给领导RAID方案。

Raid选择raid10,磁盘选择:企业级的SSD
配置8块企业的ssd硬盘,每块容量最低为1t,容量为8tb;将这八块硬盘分为4组,每组为2块硬盘;每组内进行raid1镜像,实现数据冗余备份和高可靠性;将这四组镜像数据进行raid0条带化进行提高读写能力;系统将这四组raid 1+0结果整合到一个raid10的存储阵列

磁盘分区知识

磁盘为什么要分区?

磁盘是分成不同的空间,干不同的事情,所以需要分区。
磁盘也可以不分区。
MBR:每一块硬盘上存放磁盘引导程序,引导程序在磁盘开头部分,用于引导系统启动,我们一般不用太关注(安装的时候自动进行安装)

位置磁盘分区表磁盘开始部分:0磁头,0磁道,1扇区(512字节)

512字节:
引导程序446字节(MBR)
磁盘分区表(64字节)4个分区表
结束标记(55AA)
在这里插入图片描述
在这里插入图片描述

  • 分区表64字节,每一个分区进行占用16个字节,最多为4个分区:
  • 这四个分区叫做主分区,如果只划分了1分区使用所有的空间,将无法继划分空间
  • 如果划分了四个分区,但是磁盘空间还有剩余,剩余的空间无法继续使用
  • 扩展分区是用于解决主分区的4个问题,扩展分区无法直接使用,需要在扩展分区下面创建逻辑分区,存放数据

磁盘设备及分区命名知识

在这里插入图片描述
磁盘文件或分区文件放在/dev下面

硬盘命名:

sda
vda
磁盘接口:
sas/sata/scsi接口,硬盘名字以sd开头
虚拟机(kvm)公有云: 硬盘名字以vd开头

第几块磁盘:通过字母a开始类推在这里插入图片描述
第一块磁盘sas接口
/dev/sda

分区命名

分区命名根据分区类型进行命名
如果是主分区或扩展分区分区号是从1-4范围
如果是逻辑分区,逻辑分区的分区号是从5开始

磁盘知识体系比喻说明

第一步 磁盘 房子
第二步 raid技术 多套房子打通
第三步 分区技术(越少越好,互联网公司大并发需求,降低其性能) 打隔断,几居室/卧室/卫生间/厨房
第四步 文件系统 装修风格
第五步 格式化过程 装修过程
第六步 挂载 开门开窗住人使用
第七步 磁盘日常管理 生活中收拾屋子,打扫卫生

58同城二线互联网服务器配置(Raid配置)
I/O型(DB)
cpu :8Corex2 Mem:128G Disks:SAS 600Gx2 RAID1 + intel s3700 800Gx6 RAID5
(sas做系统盘+Intel raid5做数据盘)

环境搭建

添加磁盘
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

注意:last扇区这里不能按回车,否则从前面其实扇区到现在最后扇区全部分配成一个

如果最后没有写入w
在这里插入图片描述
在这里插入图片描述
Command (m for help): p

Device Boot Start End Blocks Id System
/dev/sdb1 2048 43007 20480 83 Linux

**未来这种创建企业中用的不多,用到基本是在开始装系统的时候进行用到
**

fdisk操作的时候,删除键会发现午饭删除现象,使用ctrl+u或ctrl+删除键

多次进行创建
Command (m for help): n
Partition type:
   p   primary (2 primary, 0 extended, 2 free)
   e   extended
Select (default p): e
Partition number (3,4, default 3): 
First sector (452608-2097151, default 452608): 
Using default value 452608
Last sector, +sectors or +size{K,M,G} (452608-2097151, default 2097151): 
Using default value 2097151
Partition 3 of type Extended and of size 803 MiB is set

Command (m for help): p

Disk /dev/sdb: 1073 MB, 1073741824 bytes, 2097152 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk label type: dos
Disk identifier: 0x8cfb5223

   Device Boot      Start         End      Blocks   Id  System
/dev/sdb1            2048       43007       20480   83  Linux
/dev/sdb2           43008      452607      204800   83  Linux
/dev/sdb3          452608     2097151      822272    5  Extended

Command (m for help): n
Partition type:
   p   primary (2 primary, 1 extended, 1 free)
   l   logical (numbered from 5)
Select (default p): e
Invalid partition type `e'

Command (m for help): n
Partition type:
   p   primary (2 primary, 1 extended, 1 free)
   l   logical (numbered from 5)
Select (default p): l
Adding logical partition 5
First sector (454656-2097151, default 454656): 
Using default value 454656
Last sector, +sectors or +size{K,M,G} (454656-2097151, default 2097151): +200M
Partition 5 of type Linux and of size 200 MiB is set

Command (m for help): p

Disk /dev/sdb: 1073 MB, 1073741824 bytes, 2097152 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk label type: dos
Disk identifier: 0x8cfb5223

   Device Boot      Start         End      Blocks   Id  System
/dev/sdb1            2048       43007       20480   83  Linux
/dev/sdb2           43008      452607      204800   83  Linux
/dev/sdb3          452608     2097151      822272    5  Extended
/dev/sdb5          454656      864255      204800   83  Linux

Command (m for help): w
The partition table has been altered!

Calling ioctl() to re-read partition table.
Syncing disks.

[root@calms ~]# fdisk -l |grep ‘/dev/sd’
Disk /dev/sdc: 1073 MB, 1073741824 bytes, 2097152 sectors
Disk /dev/sda: 26.8 GB, 26843545600 bytes, 52428800 sectors
/dev/sda1 * 2048 2099199 1048576 83 Linux
/dev/sda2 2099200 4196351 1048576 82 Linux swap / Solaris
/dev/sda3 4196352 52428799 24116224 83 Linux
Disk /dev/sdb: 1073 MB, 1073741824 bytes, 2097152 sectors

案例 sdb硬盘创建20mb的分区

在这里插入图片描述

p输出磁盘分区信息
n创建分区
d删除分区
w 保存并退出
q 退出不保存
在这里插入图片描述

[root@wulin ~]# ls /dev/sd*
/dev/sda /dev/sda1 /dev/sda2
在这里插入图片描述

查看UUID
[root@calms ~]# blkid
/dev/sr0: UUID=“2020-11-04-11-36-43-00” LABEL=“CentOS 7 x86_64” TYPE=“iso9660” PTTYPE=“dos”
/dev/sda1: UUID=“8e261f31-203b-47e1-a6d2-444c71c4a1d7” TYPE=“xfs”
/dev/sda2: UUID=“6862d0c8-722f-4780-97c8-757e43459f0b” TYPE=“swap”
/dev/sda3: UUID=“9e46ffd2-c46d-4691-aa7f-e7f349d1c8f4” TYPE=“xfs”

可以使用UUID代表/dev/sda1这样的分区
[root@calms ~]# egrep -v “^ #|^$” /etc/fstab # /etc/fstab
Accessible filesystems, by reference, are maintained under ‘/dev/disk’
See man pages fstab(5), findfs(8), mount(8) and/or blkid(8) for more info

UUID=9e46ffd2-c46d-4691-aa7f-e7f349d1c8f4 / xfs defaults 0 0
UUID=8e261f31-203b-47e1-a6d2-444c71c4a1d7 /boot xfs defaults 0 0
UUID=6862d0c8-722f-4780-97c8-757e43459f0b swap swap defaults 0 0

磁盘分区类型和各自特点

DOS分区表:只能用于小于2T的硬盘(常用)。 GPT分区表:万能分区表(小于2T,大于2T都可以)。

DOS分区表分区类型:
1)主分区(Primary)

  1. 必须存在的分区。
  2. 装系统(第一个主分区)
  3. 主分区数量不能超过4个
  4. 分区编号,只能是1-4

想分超过4个分区,怎么办?

还需要扩展分区和逻辑分区

2)扩展分区(Extend)
a.独立小磁盘,有独立分区表,不能直接放数据。
b.占用主分区分区编号(2-4)。
c.最多只能有1个。
d.必须在其下划分逻辑分区。
e.主分区+扩展分区最多4个。
3)逻辑分区(logical)
a.不能独立存在,必须在扩展分区之上。
b.编号最小是5,及以上。
c.存放数据。

磁盘分区要点总结

一块磁盘的分区方式只能为如下组合之一:
(1)任意多个主分区,但要求1≤主分区数量≤4。
(2)扩展分区可以和主分区组合,但要求2≤(主分区+扩展分区)数量≤4)。
(3)如果要分成四个磁盘分区的话,那么最多就是可以:
P + P + P + P或P + P + P + E,其中的 P为Primary,E为Extend。
(5)扩展分区不是一个真正的可用分区,建立完扩展分区后,还需要在扩展分区上面建立逻辑分区才可以使用。
(6)对于主分区和逻辑分区在一般的数据存储使用上是没有区别的(对于大多数的数据存储),在安装操作系统时第一个分区要选主分区。
(7)分区数字编号1~4留给主分区或扩展分区使用,逻辑分区编号只能从5开始,即使1-4分区号即使有剩余,也不会分配给逻辑分区。
(8)对磁盘分区,实际上就是在修改磁盘的分区表 ( Partition table ),并没有涉及磁盘数据。

如果要将一块大磁盘暂时分成四个分区,同时还希望有其它的空间可以让未来需要的时候再进行分区,那么该如何分区?

3P+1E(1L)
1P+1E(3L)
2P+1E(2L)

假如有一块SAS磁盘,想要把磁盘分成6个可以使用的磁盘分区,有几种方式,每个磁盘分区在Linux系统下的数字编号分别是多少?

3P+1E(3L):
sda1,sda2,sda3,sda5,sda6,sda7
P+1E(5L):
sda1,sda5,sda6,sda7,sda8,sda9
2P+1E(4L):
sda1,sda2,sda5,sda6,sda7,sda8
(实践)

磁盘分区原理

a.修改的就是分区表,没有动磁盘数据。
b.分区表的位置,0磁道0柱面1扇区的512字节的前446字节接下的64字节。
c.fdisk分区本质就是修改这64字节分区表。

1)给磁盘分区的实质就是针对上述0磁头0磁道1扇区的前446字节后面接下来的64bytes的分区表进行设置,
即主要是划分起始以及结束磁头号、扇区号及柱面号。
2)给磁盘分区的工具有fdisk(适合给小于2T的磁盘分区,适合mbr分区表、DOS分区表),
3)gpt格式分区表分区,有parted,gdisk。
大于2Tparted,gdisk来分区。

7)磁盘存储逻辑结构原理图解
0)0磁道1扇区讲解
(前446字节 是引导程序所在地,称为MBR)
接下来的64字节是分区表
最后2个字节是分区结束标志
可以用dd命令或者相关工具获得上述1扇区内容:
dd if=/dev/sda of=mbr.bin bs=512 count=1 #<==读取0磁头0磁道1扇区内容。
od -xa mbr.bin #<==以16进制解析1扇区内容。
od - dump files in octal and other formats

fdisk分区命令精讲与实践

1)准备环境添加一块盘,并重启(早期kudzu不重启)
Disk /dev/sdb: 1073 MB, 1073741824 bytes, 2097152 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes

fdisk –1|grep sdb
echo “- - -”> /sys/class/scsi_host/host
echo “- - -”> /sys/class/scsi_host/host1/scan
fdisk –1|grep sdb
echo “- - -”> /sys/class/scsi_host/host2/scan
fdisk –1|grep sdb
磁盘 /dev/sdb:1073 MB,1073741824字节,2097152个扇区

2)
fdisk 分区命令
-l 查看分区信息
在这里插入图片描述

[root@wulin ~]# fdisk /dev/sda #开始分区

Command action
d delete a partition #删除分区
m print this menu #打印帮助
n add a new partition #添加新分区
p print the partition table #打印分区表
q quit without saving changes #退出不保存
w write table to disk and exit #保存并退出
在这里插入图片描述

假如有一块SAS磁盘,想要把磁盘分成6个可以使用的磁盘分区,
有几种方式,每个磁盘分区在Linux系统下的数字编号分别是多少?
1P+1E(5L):
sda1,sda5,sda6,sda7,sda8,sda9
3P+1E(3L):
sda1,sda2,sda3,sda5,sda6,sda7
2P+1E(4L):
sda1,sda2,sda5,sda6,sda7,sda8
还没保存:查不到磁盘上对应的分区:

[root@calms ~]# lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sda 8:0 0 25G 0 disk
|-sda1 8:1 0 1G 0 part /boot
|-sda2 8:2 0 1G 0 part [SWAP]
`-sda3 8:3 0 23G 0 part /
sr0 11:0 1 4.4G 0 rom

[root@calms ~]# ls /dev/sd*
dev/sda /dev/sda1 /dev/sda2 /dev/sdb
保存以后:
[root@calms ~]# ls /dev/sd*
/dev/sda /dev/sda2 /dev/sdb1 /dev/sdb5 /dev/sdb7 /dev/sdb9

[root@calms ~]# lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sda 8:0 0 20G 0 disk
|-sda1 8:1 0 1G 0 part /boot
`-sda2 8:2 0 19G 0 part
|-centos-root 253:0 0 17G 0 lvm /
`-centos-swap 253:1 0 2G 0 lvm [SWAP]
sdb 8:16 0 1G 0 disk
|-sdb1 8:17 0 100M 0 part
|-sdb2 8:18 0 1K 0 part
|-sdb5 8:21 0 100M 0 part
|-sdb6 8:22 0 100M 0 part
|-sdb7 8:23 0 100M 0 part
|-sdb8 8:24 0 100M 0 part
`-sdb9 8:25 0 100M 0 part
sr0 11:0 1 1024M 0 rom

通知内核分区表已经修改。
[root@calms ~]# partprobe /dev/sdb

添加一块小于2tb的磁盘分区,步骤:

1.给虚拟机添加一块新的硬盘
2.使用fdisk进行分区
fdisk /dev/sdb
partprobe /dev/sdb
3.使用mkfs 进行格式化
mkfs.xfs /dev/
4.使用mount进行挂载
mount /dev/sdb1 /mnt

格式化磁盘(给磁盘分区进行装修,给磁盘分区创建规则,一定量的inode、block)

*mkfs格式化磁盘的实质:
1.创建文件系统(centos7是xfs,centos6是ext4)
2.文件系统类似于将房子进行装修风格。组织文件目录的方式

#mkfs选项
(从来不用)
-b 设定数据区块(block),占用空间大小,目前支持1024,2048,4096bytes每个块,默认4k

–t 用来指定什么类型的文件系统,可以是ext4,xfs –i 设定iNode的大小,默认256字节 –N
设定iNode数量,防止iNode数量不够导致磁盘不足
在这里插入图片描述
重复格式化错误提示:(磁盘分区已经格式化)
mkfs.xfs: /dev/sdb1 appears to contain an existing filesystem (xfs).
mkfs.xfs: Use the -f option to force overwrite.(强制使用mkfs.xxxx -f)

格式化整个磁盘
mkfs.ext4 /dev/sdb

格式化磁盘分区
mkfs.xfs /dev/sda1

fdisk –l
blkid
ls /dev/sd*
格式化mkfs xfs /dev/sdb1或mkfs –t xfs /dev/sdb1
格式化之后,使用不了,需要进行挂载
格式化后相当于一个房子,没有门,我们不能进行使用,这个时候需要开一个门方便使用(挂载/mount)
mount /dev/sda1 /mnt
cd /mnt
touch wulin.txt
ls

大于2t磁盘分区工具 gdisk(类似于fdisk) parted

cd mnt
which gdisk
在这里插入图片描述

yum provides gdisk(查看这个命令属于那个包)
在这里插入图片描述

安装yum install gdisk –y(#安装gdisk工具)

VMware添加一块磁盘/dev/sdc(不重启生效)
fdisk –1|grep sdb
echo “- - -”> /sys/class/scsi_host/host2/scanfdisk –1|grep sdb磁盘 /dev/sdb:1073 MB,1073741824字节,2097152个扇区
开始分区:
gdisk /dev/sda
在这里插入图片描述

ls /dev/sd*查看是否生效
在第二个窗口输入y

会第一个窗口查看是否生效
显示已经生效

格式化第一个
mkfs –t ext4 /dev/sdc1
mkdir /data
mount /dev/sdc1 /data(临时挂载成功)
查看:cat /proc/mounts
grep sd /proc/mounts

也可以用df –h查看
df –h|grep sd

这篇小编先写到这里了,更多内容请关注专栏!!!

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

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

相关文章

记一次普通的单表查询sql优化,去掉文件排序

一现象&#xff1a; 有空观察了线上某个sql语句执行计划&#xff0c;发现在500多毫秒左右&#xff0c;打算进行下优化。 二步骤&#xff1a; 对查询列assessment_periodic_id、assessment_user_id、create_time添加了组合索引并指定了倒叙。加入create_time 使查询结果不需要在…

【华为OD笔试】2024D卷机考套题汇总【不断更新,限时免费】

有LeetCode算法/华为OD考试扣扣交流群可加 948025485 可上全网独家的 欧弟OJ系统 练习华子OD、大厂真题 绿色聊天软件戳 od1441了解算法冲刺训练&#xff08;备注【CSDN】否则不通过&#xff09; 文章目录 2024年4月17日&#xff08;2024D卷&#xff09;2024年4月18日&#xff…

15.C++常用的算法_拷贝和替换算法

文章目录 遍历算法1. copy()代码工程运行结果 2. replace()代码工程运行结果 3. replace_if()代码工程运行结果 4. swap()代码工程运行结果 遍历算法 1. copy() 代码工程 copy()函数不要因为使用而使用#define _CRT_SECURE_NO_WARNINGS #include<iostream> #include&l…

Java代码基础算法练习-分段函数求值-2024.04.21

任务描述&#xff1a; 有一个函数&#xff0c;写一段程序&#xff0c;输入x&#xff0c;输出y。 任务要求&#xff1a; 代码示例&#xff1a; package April_2024;import java.util.Scanner;public class a240421 {public static void main(String[] args) {Scanner sc new S…

根文件系统的构建

文章目录 一、根文件系统是什么&#xff1f;二、根文件目录1.bin目录2.etc3.lib4.mnt5.proc6.sys7.usr8.dev9.opt10.var 三.使用工具Busybox构建根文件系统1.rootfs文件夹创建2.在makefile中添加交叉编译器3.busybox 中文字符支持4.配置 默认busybox5.使用图形界面配置busybox6…

Mysql 、Redis 数据双写一致性 更新策略与应用

零、important point 1. 缓存双写一致性问题 2. java实现逻辑&#xff08;对于 QPS < 1000 可以使用&#xff09; public class UserService {public static final String CACHE_KEY_USER "user:";Resourceprivate UserMapper userMapper;Resourceprivate Re…

部署Hyperledger Fabric测试区块链网络

一. 快速启动区块链测试网络 启动Fabric虚拟机 将 fabric-samples.zip 拷贝进虚拟机 ubzip fabric-samples.zip 解压并重命名为fabric-samples mv fabric-samples-main fabric-samples 拷贝bin和config目录 cd fabric-samples cp ~/fabric/bin bin -r cp ~/fabric/config …

企业如何走出“费控”迷雾,打造逆势增长“新引擎”?

“你先自己垫一下&#xff0c;回头再报销。”职场中人或多或少都听到过这句话&#xff0c;这一等可能就是猴年马月。 报销数字化仅仅是企业费控管理的一方面&#xff0c;随着企业对费用的认知从“管控”到“管理”的升级&#xff0c;企业对于费用管理的期望也向全流程、精细化&…

报错The chromedriver version cannot be discovered以及下载chromedriver.exe和查看其版本的命令

python3.8.10&#xff0c;win10。 谷歌浏览器版本&#xff08;我写代码的时候还是123.0.x.x&#xff0c;没几天就自动更新到124.0.x.x了&#xff09;&#xff1a; 在使用selenium的时候&#xff0c;出现报错&#xff0c;The chromedriver version cannot be discovered。 &am…

C语言中字符串函数以及内存函数的使用和注意事项

目录 0. 前言 1、求字符串长度函数 1.1、strlen 模拟实现 2.长度不受限制的字符串函数 2.1 strcpy 模拟实现 2.2strcat 模拟实现 2.3strcmp 模拟实现 3.长度受限制的字符串函数 3.1strncpy 3.2strncat 3.3strncmp 4、字符串查找函数 4.1strstr 模拟实现 3.2strt…

使用51单片机控制T0和T1分别间隔1秒2秒亮灭逻辑

#include <reg51.h>sbit LED1 P1^0; // 设置LED1灯的接口 sbit LED2 P1^1; // 设置LED2灯的接口unsigned int cnt1 0; // 设置LED1灯的定时器溢出次数 unsigned int cnt2 0; // 设置LED2灯的定时器溢出次数// 定时器T0 void Init_Timer0() {TMOD | 0x01;; // 定时器…

HarmonyOS ArkUI实战开发-页面跳转(Router、Ability)

页面跳转可以分为页面内跳转和页面间跳转&#xff0c;页面内跳转是指所跳转的页面在同一个 Ability 内部&#xff0c;它们之间的跳转可以使用 Router 或者 Navigator 的方式&#xff1b;页面间跳转是指所跳转的页面属与不同的 Ability &#xff0c;这种跳转需要借助 featureAbi…

Java中的对象

什么是类和对象 在Java中类是物以类聚&#xff0c;分类的思维模式&#xff0c;思考问题首先会解决问题需要哪些分类&#xff0c;然后对这些类进行单独思考&#xff0c;最后才是对某分类下的细节进行单独思考 面向对象适合处理复杂问题适合处理需要多人协作的问题 在Java中面向…

二维前缀和与差分

前言 延续前面所讲的一维前缀和以及差分&#xff0c;现在来写写二维前缀和与差分 主要这个画图就比前面的一维前缀和与差分复杂一点&#xff0c;不过大体思路是一样的 一维和二维的主要思路在于一维是只针对对一行一列&#xff0c;而二维是针对与一个矩阵的 好吧&#xff0…

可视化大屏在政务领域应用非常普遍,带你看看

可视化大屏在政务领域的应用非常普遍&#xff0c;政务领域需要处理大量的数据和信息&#xff0c;通过可视化大屏可以将这些数据以直观、易懂的方式展示出来&#xff0c;帮助政府决策者和工作人员更好地了解和分析数据&#xff0c;从而做出更准确、科学的决策。 在政务领域&…

java学习之路-抽象类和接口

目录 前言 1.抽象类 1.2抽象类语法 1.3抽象类特性 1.4抽象类的作用 2.接口 2.1接口概念 2.2接口的定义 2.3接口的使用 接口使用栗子 2.4接口特性 2.5 实现多个接口 请看栗子 2.6接口间的继承 2.7接口使用实例 2.8Clonable 接口和深浅拷贝 2.9 抽象类和接口的区别…

Qt图片等资源管理

Qt的图片等资源管理通常有两种方式 1&#xff0c;直接将图标和一些配置文件打包在可执行程序中 添加qrc文件&#xff0c;可使用qtcreator直接添加 右键选中工程 点击选择即可。 然后添加文件。我这个例子是添加了Image文件夹下的图片资源 使用的时候&#xff0c;可以在代码…

MySQL学习笔记1(MySQL基础)

1.MySQL基础 1.数据库相关概念 ​ *数据库&#xff1a;存储数据的仓库&#xff0c;数据是有组织的进行存储 DtaBase(DB) ​ *数据管理系统&#xff1a;操纵和管理数据库的大型软件 DataBase Management System (DBMS) ​ *SQL&#xff1a;操作关系型数据库的编程语言&#…

【GNSS】GNSS开源相关代码汇总

仅作为笔者的学习笔记使用 参考&#xff1a;GNSS算法相关开源代码&#xff08;含多传感器融合相关项目&#xff09; - 知乎 (zhihu.com)

C语言本身不难,难得是应用场景很多

你学了C语言多半是要做项目的&#xff0c;这个过程中C语言是远远不够的&#xff0c;你把这部分难度加到C语言上&#xff0c;自然就难了在开始前我有一些资料&#xff0c;是我根据网友给的问题精心整理了一份「C语言的资料从专业入门到高级教程」&#xff0c; 点个关注在评论区…