【Linux】服务器硬件及RAID配置实战

news2025/2/1 6:54:18

目录

一、服务器

1.服务器

 2.查看服务器信息

二、RAID 磁盘阵列

三、软RAID的创建和使用

1.添加硬盘,fdisk分区,分区类型ID设置为 fd

2.使用mdadm创建软raid

3.格式化      

4.挂载使用    

5.mdadm


一、服务器

1.服务器

分类机架式居多   塔式   刀片式   机柜式   
架构 X86  ARM
品牌戴尔  AMD  英特尔  惠普   华为   华三H3C   联想   浪潮   长城
规格1C1G   2C4G   4C8G   32C128G   64C256G 等

 2.查看服务器信息

查看服务器CPU信息:cat /proc/cpuinfo            lscpu
                     model name        #CPU型号
                     physical id       #物理CPU的ID
                     cpu cores         #每个物理CPU中的核心数
                     processor         #逻辑CPU的ID

查看服务器内存的信息:cat /proc/meminfo          free [-m]


二、RAID 磁盘阵列

RAID级别  读写性能硬盘数量要求利用率 有无冗余能力
RAID0(条带化存储) 读写速度快NN 无
RAID1(镜像化存储)读快,写没有改变偶数N/2有,可允许一个硬盘故障
RAID5读快,写会因为要多写一份纠删码数据而会影响写的性能>=3 (N-1)/N有,可允许一个硬盘故障
RAID6读快,写会因为要多写两份纠删码数据而会更影响写的性能>=4 (N-2)/N有,可允许两个硬盘故障
RAID10同时具备RAID0和RAID1的性能,读写都快>=4,偶数N/2 有,可允许不同RAID1组中各坏一个硬盘

RAID 0(条带化存储)

●RAID 0连续以位或字节为单位分割数据,并行读/写于多个磁盘上,因此具有很高的数据传输率,但它没有数据冗余

●RAID 0只是单纯地提高性能,并没有为数据的可靠性提供保证,而且其中的一个磁盘失效将影响到所有数据

●RAID 0不能应用于数据安全性要求高的场合

RAID 1(镜像存储)
●通过磁盘数据镜像实现数据冗余,在成对的独立磁盘上产生互为备份的数据

●当原始数据繁忙时,可直接从镜像拷贝中读取数据,因此RAID 1可以提高读取性能

●RAID 1是磁盘阵列中单位成本最高的,但提供了很高的数据安全性和可用性。当一个磁盘失效时,系统可以自动切换到镜像磁盘上读写,而不需要重组失效的数据

RAID 5
●N(N>=3)块盘组成阵列,一份数据产生N-1个条带,同时还有1份校验数据,共N份数据在N块盘上循环均衡存储

●N块盘同时读写,读性能很高,但由于有校验机制的问题,写性能相对不高

●(N-1)/N磁盘利用率

●可靠性高,允许坏1块盘,不影响所有数据

 RAID 6
●N(N>=4)块盘组成阵列(N-2)/N磁盘利用率

●与RAID 5相比,RAID 6增加了第二个独立的奇偶校验信息块

●两个独立的奇偶系统使用不同的算法,即使两块磁盘同时失效也不会影响数据的使用

●相对于RAID 5有更大的“写损失”,因此写性能较差

RAID 1+0(先做镜象,再做条带)

●N(偶数,N>=4)块盘两两镜像后,再组合成一个RAID0

●N/2磁盘利用率

●N/2块盘同时写入,N块盘同时读取

●性能高,可靠性高

三、软RAID的创建和使用

1.添加硬盘,fdisk分区,分区类型ID设置为 fd

[root@bogon ~]# yum install -y mdadm
已加载插件:fastestmirror, langpacks
Loading mirror speeds from cached hostfile
软件包 mdadm-4.1-9.el7_9.x86_64 已安装并且是最新版本
无须任何处理
[root@bogon ~]# fdisk /dev/sdb
欢迎使用 fdisk (util-linux 2.23.2)。

更改将停留在内存中,直到您决定将更改写入磁盘。
使用写入命令前请三思。

Device does not contain a recognized partition table
使用磁盘标识符 0xe7a9083e 创建新的 DOS 磁盘标签。

命令(输入 m 获取帮助):n
Partition type:
   p   primary (0 primary, 0 extended, 4 free)
   e   extended
Select (default p):
Using default response p
分区号 (1-4,默认 1):
起始 扇区 (2048-41943039,默认为 2048):
将使用默认值 2048
Last 扇区, +扇区 or +size{K,M,G} (2048-41943039,默认为 41943039):
将使用默认值 41943039
分区 1 已设置为 Linux 类型,大小设为 20 GiB

命令(输入 m 获取帮助):t
已选择分区 1
Hex 代码(输入 L 列出所有代码):fd
已将分区“Linux”的类型更改为“Linux raid autodetect”

命令(输入 m 获取帮助):w
The partition table has been altered!

Calling ioctl() to re-read partition table.
正在同步磁盘。
[root@bogon ~]#


[root@bogon ~]# fdisk -l        #查看是否创建好分区

磁盘 /dev/sda:42.9 GB, 42949672960 字节,83886080 个扇区
Units = 扇区 of 1 * 512 = 512 bytes
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节
磁盘标签类型:dos
磁盘标识符:0x0009f560

   设备 Boot      Start         End      Blocks   Id  System
/dev/sda1   *        2048     2099199     1048576   83  Linux
/dev/sda2         2099200    83886079    40893440   8e  Linux LVM

磁盘 /dev/sdb:21.5 GB, 21474836480 字节,41943040 个扇区
Units = 扇区 of 1 * 512 = 512 bytes
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节
磁盘标签类型:dos
磁盘标识符:0xe7a9083e

   设备 Boot      Start         End      Blocks   Id  System
/dev/sdb1            2048    41943039    20970496   fd  Linux raid autodetect

磁盘 /dev/sdc:21.5 GB, 21474836480 字节,41943040 个扇区
Units = 扇区 of 1 * 512 = 512 bytes
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节
磁盘标签类型:dos
磁盘标识符:0xdff5b102

   设备 Boot      Start         End      Blocks   Id  System
/dev/sdc1            2048    41943039    20970496   fd  Linux raid autodetect

磁盘 /dev/sdd:21.5 GB, 21474836480 字节,41943040 个扇区
Units = 扇区 of 1 * 512 = 512 bytes
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节
磁盘标签类型:dos
磁盘标识符:0x2205b8c4

   设备 Boot      Start         End      Blocks   Id  System
/dev/sdd1            2048    41943039    20970496   fd  Linux raid autodetect

磁盘 /dev/sde:21.5 GB, 21474836480 字节,41943040 个扇区
Units = 扇区 of 1 * 512 = 512 bytes
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节
磁盘标签类型:dos
磁盘标识符:0x19fb02af

   设备 Boot      Start         End      Blocks   Id  System
/dev/sde1            2048    41943039    20970496   fd  Linux raid autodetect

磁盘 /dev/mapper/centos-root:37.7 GB, 37706792960 字节,73646080 个扇区
Units = 扇区 of 1 * 512 = 512 bytes
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节


磁盘 /dev/mapper/centos-swap:4160 MB, 4160749568 字节,8126464 个扇区
Units = 扇区 of 1 * 512 = 512 bytes
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节

[root@bogon ~]#


2.使用mdadm创建软raid

创建raid5: mdadm -Cv /dev/mdX -l5 -n3 /dev/sdXX [-x1 /dev/sdXX]

创建过程中需要一段时间,可以使用watch -n 5 'cat /proc/mdstat'进行查看

[root@bogon ~]# mdadm -C -v /dev/md5 -l5 -n3 /dev/sd[bcd]1 -x1 /dev/sde1        #-C新建raid,-v表示显示详细信息,指定md5的名称,-l5表示raid5,-n3表示使用3块硬盘,-x1表示使用1块硬盘做热备份,是sde1
mdadm: layout defaults to left-symmetric
mdadm: layout defaults to left-symmetric
mdadm: chunk size defaults to 512K
mdadm: size set to 20953088K
mdadm: Defaulting to version 1.2 metadata
mdadm: array /dev/md5 started.

[root@bogon ~]# cat /proc/mdstat        #查看
Personalities : [raid6] [raid5] [raid4]
md5 : active raid5 sdd1[4] sde1[3](S) sdc1[1] sdb1[0]
      41906176 blocks super 1.2 level 5, 512k chunk, algorithm 2 [3/3] [UUU]

unused devices: <none>
[root@bogon ~]#

补充:创建raid10:(先做镜像,再做条带)   mdadm -Cv /dev/md0 -l1 -n2 /dev/sdXX
                                                                  mdadm -Cv /dev/md1 -l1 -n2 /dev/sdXX
                                                                  mdadm -Cv /dev/md10 -l0 -n2 /dev/md0 /dev/md1 


3.格式化      

mkfs -t xfs/ext4 /dev/mdX

[root@bogon ~]# mkfs -t xfs /dev/md5
meta-data=/dev/md5               isize=512    agcount=16, agsize=654720 blks
         =                       sectsz=512   attr=2, projid32bit=1
         =                       crc=1        finobt=0, sparse=0
data     =                       bsize=4096   blocks=10475520, imaxpct=25
         =                       sunit=128    swidth=256 blks
naming   =version 2              bsize=4096   ascii-ci=0 ftype=1
log      =internal log           bsize=4096   blocks=5120, version=2
         =                       sectsz=512   sunit=8 blks, lazy-count=1
realtime =none                   extsz=4096   blocks=0, rtextents=0
[root@bogon ~]#
[root@bogon ~]# mkdir /opt/xy101
[root@bogon ~]# ls /opt
rh  xy101
[root@bogon ~]#


4.挂载使用    

mount    /etc/fstab   

[root@bogon ~]# mount /dev/md5 /opt/xy101
[root@bogon ~]# df -Th
文件系统                类型      容量  已用  可用 已用% 挂载点
devtmpfs                devtmpfs  1.9G     0  1.9G    0% /dev
tmpfs                   tmpfs     1.9G     0  1.9G    0% /dev/shm
tmpfs                   tmpfs     1.9G   13M  1.9G    1% /run
tmpfs                   tmpfs     1.9G     0  1.9G    0% /sys/fs/cgroup
/dev/mapper/centos-root xfs        36G  4.7G   31G   14% /
/dev/sda1               xfs      1014M  187M  828M   19% /boot
tmpfs                   tmpfs     378M   12K  378M    1% /run/user/42
tmpfs                   tmpfs     378M     0  378M    0% /run/user/0
/dev/md5                xfs        40G   33M   40G    1% /opt/xy101
[root@bogon ~]#

5.mdadm

查看软raid的状态信息      cat /proc/mdstat         mdadm -D /dev/mdX
       
mdadm的其它选项

-f模拟指定磁盘设备故障  
 -r移除磁盘设备
-a添加磁盘设备
-S停止软raid
-As启动软raid,事先准备好 /etc/mdadm.conf 配置

创建配置文件,生成一些详细信息,追加到/etc/mdadm.conf中,包含raid5的配置文件信息,方便后面进行启动和停止的管理

[root@bogon ~]# echo 'DEVICE /dev/sdb1 /dev/sdc1 /dev/sdd1 /dev/sde1' > /etc/mdadm.conf
[root@bogon ~]# mdadm --detail --scan >> /etc/mdadm.conf
[root@bogon ~]# cat /etc/mdadm.conf
DEVICE /dev/sdb1 /dev/sdc1 /dev/sdd1 /dev/sde1
ARRAY /dev/md5 metadata=1.2 spares=1 name=bogon:5 UUID=930d2b47:f89bb6be:1f7862a2:c2c933a0
[root@bogon ~]#

 当一块硬盘发生故障,另一块热备份硬盘会取代故障硬盘,恢复数据

[root@bogon ~]# cd /opt/xy101
[root@bogon xy101]# touch file{1..100}
[root@bogon xy101]# mkdir dir{101..200}
[root@bogon xy101]# ls
dir101  dir112  dir123  dir134  dir145  dir156  dir167  dir178  dir189  dir200   file18  file28  file38  file48  file58  file68  file78  file88  file98
dir102  dir113  dir124  dir135  dir146  dir157  dir168  dir179  dir190  file1    file19  file29  file39  file49  file59  file69  file79  file89  file99
dir103  dir114  dir125  dir136  dir147  dir158  dir169  dir180  dir191  file10   file2   file3   file4   file5   file6   file7   file8   file9
dir104  dir115  dir126  dir137  dir148  dir159  dir170  dir181  dir192  file100  file20  file30  file40  file50  file60  file70  file80  file90
dir105  dir116  dir127  dir138  dir149  dir160  dir171  dir182  dir193  file11   file21  file31  file41  file51  file61  file71  file81  file91
dir106  dir117  dir128  dir139  dir150  dir161  dir172  dir183  dir194  file12   file22  file32  file42  file52  file62  file72  file82  file92
dir107  dir118  dir129  dir140  dir151  dir162  dir173  dir184  dir195  file13   file23  file33  file43  file53  file63  file73  file83  file93
dir108  dir119  dir130  dir141  dir152  dir163  dir174  dir185  dir196  file14   file24  file34  file44  file54  file64  file74  file84  file94
dir109  dir120  dir131  dir142  dir153  dir164  dir175  dir186  dir197  file15   file25  file35  file45  file55  file65  file75  file85  file95
dir110  dir121  dir132  dir143  dir154  dir165  dir176  dir187  dir198  file16   file26  file36  file46  file56  file66  file76  file86  file96
dir111  dir122  dir133  dir144  dir155  dir166  dir177  dir188  dir199  file17   file27  file37  file47  file57  file67  file77  file87  file97

[root@bogon xy101]# mdadm /dev/md5 -f /dev/sdc1        #停止sdc1
mdadm: set /dev/sdc1 faulty in /dev/md5
[root@bogon xy101]# mdadm -D /dev/md5        #查看硬盘状态,sde1会取代sdc1
/dev/md5:
           Version : 1.2
     Creation Time : Tue Apr 16 21:49:39 2024
        Raid Level : raid5
        Array Size : 41906176 (39.96 GiB 42.91 GB)
     Used Dev Size : 20953088 (19.98 GiB 21.46 GB)
      Raid Devices : 3
     Total Devices : 4
       Persistence : Superblock is persistent

       Update Time : Tue Apr 16 22:11:06 2024
             State : clean, degraded, recovering
    Active Devices : 2
   Working Devices : 3
    Failed Devices : 1
     Spare Devices : 1

            Layout : left-symmetric
        Chunk Size : 512K

Consistency Policy : resync

    Rebuild Status : 22% complete

              Name : bogon:5  (local to host bogon)
              UUID : 930d2b47:f89bb6be:1f7862a2:c2c933a0
            Events : 25

    Number   Major   Minor   RaidDevice State
       0       8       17        0      active sync   /dev/sdb1
       3       8       65        1      spare rebuilding   /dev/sde1
       4       8       49        2      active sync   /dev/sdd1

       1       8       33        -      faulty   /dev/sdc1
[root@bogon xy101]#


[root@bogon xy101]# cat /proc/mdstat        #查看取代的过程,有进度条,需要等待一会
Personalities : [raid6] [raid5] [raid4]
md5 : active raid5 sdd1[4] sde1[3] sdc1[1](F) sdb1[0]
      41906176 blocks super 1.2 level 5, 512k chunk, algorithm 2 [3/2] [U_U]
      [=============>.......]  recovery = 69.6% (14600576/20953088) finish=0.5min speed=205888K/sec

unused devices: <none>
[root@bogon xy101]# cat /proc/mdstat
Personalities : [raid6] [raid5] [raid4]
md5 : active raid5 sdd1[4] sde1[3] sdc1[1](F) sdb1[0]
      41906176 blocks super 1.2 level 5, 512k chunk, algorithm 2 [3/3] [UUU]

unused devices: <none>
[root@bogon xy101]# mdadm -D /dev/md5
/dev/md5:
           Version : 1.2
     Creation Time : Tue Apr 16 21:49:39 2024
        Raid Level : raid5
        Array Size : 41906176 (39.96 GiB 42.91 GB)
     Used Dev Size : 20953088 (19.98 GiB 21.46 GB)
      Raid Devices : 3
     Total Devices : 4
       Persistence : Superblock is persistent

       Update Time : Tue Apr 16 22:12:32 2024
             State : clean
    Active Devices : 3
   Working Devices : 3
    Failed Devices : 1
     Spare Devices : 0

            Layout : left-symmetric
        Chunk Size : 512K

Consistency Policy : resync

              Name : bogon:5  (local to host bogon)
              UUID : 930d2b47:f89bb6be:1f7862a2:c2c933a0
            Events : 43

    Number   Major   Minor   RaidDevice State
       0       8       17        0      active sync   /dev/sdb1
       3       8       65        1      active sync   /dev/sde1
       4       8       49        2      active sync   /dev/sdd1

       1       8       33        -      faulty   /dev/sdc1

[root@bogon xy101]# cd /opt/xy101        #查看sde1取代sdc1之后,xy101里文件是否丢失
[root@bogon xy101]# ls
dir101  dir112  dir123  dir134  dir145  dir156  dir167  dir178  dir189  dir200   file18  file28  file38  file48  file58  file68  file78  file88  file98
dir102  dir113  dir124  dir135  dir146  dir157  dir168  dir179  dir190  file1    file19  file29  file39  file49  file59  file69  file79  file89  file99
dir103  dir114  dir125  dir136  dir147  dir158  dir169  dir180  dir191  file10   file2   file3   file4   file5   file6   file7   file8   file9
dir104  dir115  dir126  dir137  dir148  dir159  dir170  dir181  dir192  file100  file20  file30  file40  file50  file60  file70  file80  file90
dir105  dir116  dir127  dir138  dir149  dir160  dir171  dir182  dir193  file11   file21  file31  file41  file51  file61  file71  file81  file91
dir106  dir117  dir128  dir139  dir150  dir161  dir172  dir183  dir194  file12   file22  file32  file42  file52  file62  file72  file82  file92
dir107  dir118  dir129  dir140  dir151  dir162  dir173  dir184  dir195  file13   file23  file33  file43  file53  file63  file73  file83  file93
dir108  dir119  dir130  dir141  dir152  dir163  dir174  dir185  dir196  file14   file24  file34  file44  file54  file64  file74  file84  file94
dir109  dir120  dir131  dir142  dir153  dir164  dir175  dir186  dir197  file15   file25  file35  file45  file55  file65  file75  file85  file95
dir110  dir121  dir132  dir143  dir154  dir165  dir176  dir187  dir198  file16   file26  file36  file46  file56  file66  file76  file86  file96
dir111  dir122  dir133  dir144  dir155  dir166  dir177  dir188  dir199  file17   file27  file37  file47  file57  file67  file77  file87  file97
[root@bogon xy101]#


[root@bogon opt]# mdadm /dev/md5 -r /dev/sdc1        #移除硬盘
mdadm: hot removed /dev/sdc1 from /dev/md5
[root@bogon opt]# mdadm /dev/md5 -a /dev/sdc1        #重新添加新硬盘
mdadm: added /dev/sdc1
[root@bogon opt]# mdadm -D /dev/md5
/dev/md5:
           Version : 1.2
     Creation Time : Tue Apr 16 21:49:39 2024
        Raid Level : raid5
        Array Size : 41906176 (39.96 GiB 42.91 GB)
     Used Dev Size : 20953088 (19.98 GiB 21.46 GB)
      Raid Devices : 3
     Total Devices : 4
       Persistence : Superblock is persistent

       Update Time : Tue Apr 16 22:29:00 2024
             State : clean
    Active Devices : 3
   Working Devices : 4
    Failed Devices : 0
     Spare Devices : 1

            Layout : left-symmetric
        Chunk Size : 512K

Consistency Policy : resync

              Name : bogon:5  (local to host bogon)
              UUID : 930d2b47:f89bb6be:1f7862a2:c2c933a0
            Events : 45

    Number   Major   Minor   RaidDevice State
       0       8       17        0      active sync   /dev/sdb1
       3       8       65        1      active sync   /dev/sde1
       4       8       49        2      active sync   /dev/sdd1

       5       8       33        -      spare   /dev/sdc1
[root@bogon opt]#

停止和启动RAID(需要保证配置文件存在,且需要解挂载后才能停止)

[root@bogon opt]# ls /etc/mdadm.conf
/etc/mdadm.conf
[root@bogon opt]# cat /etc/mdadm.conf
DEVICE /dev/sdb1 /dev/sdc1 /dev/sdd1 /dev/sde1
ARRAY /dev/md5 metadata=1.2 spares=1 name=bogon:5 UUID=930d2b47:f89bb6be:1f7862a2:c2c933a0
[root@bogon opt]# mdadm -S /dev/md5        #需要进行解挂载才能停止RAID
mdadm: Cannot get exclusive access to /dev/md5:Perhaps a running process, mounted filesystem or active volume group?
[root@bogon opt]# df
文件系统                   1K-块    已用     可用 已用% 挂载点
devtmpfs                 1913500       0  1913500    0% /dev
tmpfs                    1930624       0  1930624    0% /dev/shm
tmpfs                    1930624   12564  1918060    1% /run
tmpfs                    1930624       0  1930624    0% /sys/fs/cgroup
/dev/mapper/centos-root 36805060 4848536 31956524   14% /
/dev/sda1                1038336  191284   847052   19% /boot
tmpfs                     386128      12   386116    1% /run/user/42
tmpfs                     386128       0   386128    0% /run/user/0
/dev/md5                41881600   34092 41847508    1% /opt/xy101
[root@bogon opt]# umount /opt/xy101
[root@bogon opt]# df
文件系统                   1K-块    已用     可用 已用% 挂载点
devtmpfs                 1913500       0  1913500    0% /dev
tmpfs                    1930624       0  1930624    0% /dev/shm
tmpfs                    1930624   12564  1918060    1% /run
tmpfs                    1930624       0  1930624    0% /sys/fs/cgroup
/dev/mapper/centos-root 36805060 4848536 31956524   14% /
/dev/sda1                1038336  191284   847052   19% /boot
tmpfs                     386128      12   386116    1% /run/user/42
tmpfs                     386128       0   386128    0% /run/user/0
[root@bogon opt]# mdadm -S /dev/md5        #停止RAID
mdadm: stopped /dev/md5
[root@bogon opt]# ls /etc/md5
ls: 无法访问/etc/md5: 没有那个文件或目录
[root@bogon opt]#



[root@bogon opt]# mdadm -As /dev/md5        #重新启动RAID
mdadm: /dev/md5 has been started with 3 drives and 1 spare.
[root@bogon opt]# ls /dev/md5
/dev/md5
[root@bogon opt]# cat /etc/mdadm.conf
DEVICE /dev/sdb1 /dev/sdc1 /dev/sdd1 /dev/sde1
ARRAY /dev/md5 metadata=1.2 spares=1 name=bogon:5 UUID=930d2b47:f89bb6be:1f7862a2:c2c933a0
[root@bogon opt]#

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

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

相关文章

Yolo-world+Python-OpenCV之摄像头视频实时目标检测

上一次介绍了如何使用最基本的 Yolo-word来做检测&#xff0c;现在我们在加opencv来做个实时检测的例子 基本思路 1、读取离线视频流 2、将视频帧给yolo识别 3、根据识别结果 对视频进行绘制边框、加文字之类的 完整代码如下&#xff1a; import datetimefrom ultralytics …

Lagent AgentLego 智能体介绍

本文主要介绍智能体相关基础知识&#xff0c;主流的智能体开源项目&#xff0c;重点介绍Lagent智能体和AgentLego框架。 一. 为什么要有智能体 目前的大预言模型有一些局限性&#xff0c;包括有时候会生成虚假信息&#xff0c;也就是我们说的“大模型胡言乱语”&#xff0c;还…

多线程意义

直接上代码 我们来看两个程序 由一个线程和两个线程运行的区别&#xff1a; 单线程&#xff08;main&#xff09;&#xff1a; public static void test(){long a 0;long b 0;for(long i 0; i < 10000000000l; i){a;}for(long i 0; i < 10000000000l; i){b;}} 多…

外包干了1年....字节跳动面试高频考点,懒加载

一、文章内容 什么是懒加载懒加载的优点什么时候使用懒加载学习懒加载前置内容实战懒加载图片 二、什么是懒加载? 从语法角度分析懒加载,懒是adj形容词,加载是名词;或者懒看为副词,加载作为动词,这样就能理解懒加载了就是懒懒的/地加载,更通俗的讲就是通过一种手段来加载.就…

docker 环境变量设置实现方式

1、前言 docker在当前运用的越来广泛&#xff0c;很多应用或者很多中间软件都有很多docker镜像资源&#xff0c;运行docker run 启动镜像资源即可应用。但是很多应用或者中间件有很多配置参数。这些参数在运用过程怎么设置给docker 容器呢&#xff1f;下面介绍几种方式 2 、do…

软件测试---性能测试

1.常见的性能问题有哪些 如图所示 系统内部以及软件的代码实现 1&#xff0c;资源泄漏&#xff0c;包括内存泄漏。 2&#xff0c;CPU使用率达到100%&#xff0c;系统被锁定等。 3&#xff0c;线程死锁&#xff0c;阻塞等造成系统越来越慢。 4&#xff0c;查询速度慢&#xff0c…

MySQL死锁与死锁检测

一、什么是MySQL死锁 MySQL中死锁是指两个或多个事务在互相等待对方释放资源&#xff0c;导致无法继续执行的情况。 MySQL系统中当两个或多个事务在并发执行时&#xff0c;就可能会遇到每项事务都持有某些资源同时又请求其他事务持有的资源&#xff0c;从而形成事务之间循环等…

【QT教程】QT6 Web性能优化

QT6 Web性能优化 使用AI技术辅助生成 QT界面美化视频课程 QT性能优化视频课程 QT原理与源码分析视频课程 QT QML C扩展开发视频课程 免费QT视频课程 您可以看免费1000个QT技术视频 免费QT视频课程 QT统计图和QT数据可视化视频免费看 免费QT视频课程 QT性能优化视频免费看 免费…

我的思考工作流(2024年版)

去年底&#xff0c;我对自己的思考工作流程又做了一些优化和改进&#xff0c;把它变得更为简洁、清晰。 因此&#xff0c;今天我想把它分享给大家&#xff0c;希望能给你一些启发。 我的核心方法论依然是我自己提出的「INKP知识管理法」&#xff08;参见《打开心智》第五章&…

【CAN】采样点介绍及测试方法

文章目录 1 什么是采样点2 为什么需要采样点3 采样点的计算公式4 VH6501测试原理和方法4.1 VH6501测试采样点原理4.2 VH6501测试方法 >>返回总目录<< 1 什么是采样点 采样点是节点判断信号逻辑电平的位置&#xff0c;是CAN控制器读取总线电平&#xff0c;并解释各…

【多线程】阻塞队列 | put()方法 | take()方法 | 生产者-消费者模式 |实现阻塞队列

文章目录 阻塞队列1.生产者-消费者模式生产者消费者模型的意义&#xff1a;1.解耦合2.削峰填谷&#xff1a; 2.阻塞队列的使用BlockingQueue 3.实现阻塞队列唤醒&#xff1a;使用阻塞队列实现生产者消费者模型 阻塞队列 阻塞队列是一种特殊的队列&#xff1a; 1.是线程安全的。…

【光伏企业】光伏项目怎么做才能提高效率?

一、精细化项目管理 项目规划&#xff1a;在项目启动前&#xff0c;进行充分的调研和规划&#xff0c;明确项目的目标、规模、预算和时间表&#xff0c;确保各项资源得到合理分配。 团队建设&#xff1a;组建一支高效、专业的项目团队&#xff0c;确保团队成员具备光伏领域的…

day02|最小花费爬梯子

最小花费爬梯子 比如 有一个数组 【2 5 20】我们直接选择从1号梯子&#xff08;从零编号&#xff09;跳两格就出去了。 算法原理 我们可以得出楼顶其实是数组的最后一个元素的下一个位置。对于最值问题我们可以尝试使用dpdp我们首先应该定义状态方差的含义&#xff0c;一般以…

亚信安慧AntDB:为安全加码

亚信安慧AntDB分布式数据库凭借平滑扩展、高可用性和低成本三大核心优势&#xff0c;在业界获得了极高的评价和认可。这些优点不仅为AntDB提供了巨大的市场发展潜力&#xff0c;也使其成为众多企业在数据管理上的首选解决方案。 AntDB的平滑扩展特性极大地提升了企业的灵活性和…

官宣:2024第二十届国际铸造件展12月精彩呈现!

Shanghai International Die-casting Casting Expo 2024第二十届上海国际压铸、铸造展览会 2024第二十届上海国际压铸、铸件产品展 时间&#xff1a;2024年12月18-20日 地点&#xff1a;上海新国际博览中心&#xff08;浦东区龙阳路2345号&#xff09; 报名参展&#xff1…

Slf4j+Log4j简单使用

Slf4jLog4j简单使用 文章目录 Slf4jLog4j简单使用一、引入依赖二、配置 log4j2.xml2.1 配置结构2.2 配置文件 三、使用四、使用MDC完成日志ID4.1 程序入口处4.2 配置文件配置打印4.3 多线程日志ID传递配置 五. 官网 一、引入依赖 <dependencies><dependency><g…

STM32之HAL开发——CubeMX配置串行Flash文件系统

配置流程 在开始配置FATFS前&#xff0c;需要提前配置好RCC的时钟&#xff0c;以及时钟的频率&#xff0c;另外还要配置好Debug选项&#xff08;选择串行&#xff09; 选项介绍 文件系统适用于SD卡&#xff0c;Disk磁盘等&#xff0c;需要我们将对应的驱动打开才可以使用。 …

C语言—字符指针,指针数组和数组指针

字符指针 在指针的类型中我们知道有一种指针类型为字符指针 char* ; int main() {char ch w;char *pc &ch;*pc w;return 0; }还有一种使用方式如下&#xff1a; int main() {const char* pstr "hello world.";//这里是把一个字符串放到pstr指针变量里了吗…

雨云免费云服务器领取步骤详解

随着云计算技术的日益普及&#xff0c;越来越多的用户开始选择使用云服务器来满足他们的数据存储和计算需求。雨云作为一家具有自主知识产权的国产云计算服务提供商&#xff0c;其免费云服务器服务备受关注。接下来&#xff0c;本文将为大家详细介绍雨云免费云服务器的领取步骤…

代码随想录-算法训练营day14【二叉树01:理论基础、递归遍历、迭代遍历、统一迭代】

代码随想录-035期-算法训练营【博客笔记汇总表】-CSDN博客 第六章 二叉树part01今日内容&#xff1a; ● 理论基础 ● 递归遍历 ● 迭代遍历 ● 统一迭代详细布置 理论基础 需要了解 二叉树的种类&#xff0c;存储方式&#xff0c;遍历方式 以及二叉树的定义 文章讲解&#x…