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

目录

一、服务器

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.mfbz.cn/a/549517.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Qt | 事件第二节

Qt | 事件第一节书接上回 四、事件的接受和忽略 1、事件可以被接受或忽略,被接受的事件不会再传递给其他对象,被忽略的事件会被传递给其他对象处理,或者该事件被丢弃(即没有对象处理该事件) 2、使用 QEvent::accept()函数表示接受一个事件,使用 QEvent::ignore()函数表示…

牛客网刷题 | BC51 及格分数

描述 KiKi想知道他的考试分数是否通过&#xff0c;请帮他判断。从键盘任意输入一个整数表示的分数&#xff0c;编程判断该分数是否在及格范围内&#xff0c;如果及格&#xff0c;即&#xff1a;分数大于等于60分&#xff0c;是输出“Pass”&#xff0c;否则&#xff0c;输出“…

【Entity Framework】你必须要了解EF中数据查询之数据加载

【Entity Framework】你必须要了解EF中数据查询之数据加载 文章目录 【Entity Framework】你必须要了解EF中数据查询之数据加载一、概述二、预先加载2.1 包含多个层级2.2 经过筛选的包含 三、显示加载3.1查询关联实体 四、延时加载4.1 不使用代理进行延迟加载 一、概述 Entity…

数据分析(2)

数据分析&#xff08;2&#xff09; 本文介绍pandas的另一种数据类型DataFrame,中文叫数据框 DataFrame 定义&#xff1a; DataFrame是一个二维的矩阵数据表&#xff0c;通过行和列&#xff0c;可以定位一个值。 在某种程度上&#xff0c;可以认为DataFrame是“具有相同ind…

自定义类型: 结构体 (详解)

本文索引 一. 结构体类型的声明1. 结构体的声明和初始化2. 结构体的特殊声明3. 结构体的自引用 二. 结构体内存对齐1. 对齐规则2. 为啥存在对齐?3. 修改默认对齐值 三. 结构体传参四. 结构体实现位段1. 什么是位段?2. 位段的内存分配3. 位段的应用4. 位段的注意事项 ​ 前言:…

Python leetcode 2906 构造乘积矩阵,力扣练习,矩阵递推,经典递推题目,递推代码实战

leetcode 2906 构造乘积矩阵&#xff0c;矩阵递推 1.题目描述 给你一个下标从 0 开始、大小为 n * m 的二维整数矩阵 grid &#xff0c;定义一个下标从 0 开始、大小为 n * m 的的二维矩阵 p。如果满足以下条件&#xff0c;则称 p 为 grid 的 乘积矩阵 &#xff1a; 对于每个元…

JavaWeb前端/后端开发规范——接口文档概述及YApi平台的使用

前言&#xff1a; 整理下笔记&#xff0c;打好基础&#xff0c;daydayup!!! 接口文档 什么是接口文档&#xff1f; 目前主流的开发模式为前后端分离式开发&#xff0c;为了方便前后端的对接&#xff0c;就需要使用接口文件进行统一规范。 接口文档记载什么信息&#xff1f; 1&…

Mac搭建Java环境【环境搭建】

Mac搭建Java环境【环境搭建】 1 安装Java SDK 官网地址&#xff1a;https://www.oracle.com/java/technologies/downloads/archive/ 下载dmg&#xff0c;双击之后无脑安装即可。 # 进入 JDK 安装目录 cd /Library/Java/JavaVirtualMachines# 查看文件 ls# 输入 cd ~# 打开环…

短剧分销系统:引领影视娱乐新潮流,开启内容变现全新模式!

近年来&#xff0c;随着互联网的飞速发展和人们生活节奏的加快&#xff0c;短剧项目在我国逐渐崭露头角&#xff0c;并在短时间内吸引了大量观众和投资者的目光。短剧以其时长短、剧情紧凑、制作精良等特点&#xff0c;迅速在视频市场中占据了一席之地。 一、短剧项目发展现状…

vue学习日记22:非父子通信(拓展)-provideinject

一、概念 二、实践 代码 App <template><div class"app">我是APP组件<button click"change">修改数据</button><SonA></SonA><SonB></SonB></div> </template><script> import SonA …

【C++进阶】详解C++类型转换IO流

C类型转换及IO流 一&#xff0c;C语言的类型转换方式二&#xff0c;C的四种强制类型转换方式2.1 static_cast2.2 reinterpret_cast2.3 const_cast2.4 dynamic_cast 三&#xff0c;C语言的输入和输出四&#xff0c;C的标准IO流五&#xff0c;C文件IO流总结 这一节我们来讲解 C的…

`Spring Cloud OpenFeign`底层实现原理

Spring Cloud OpenFeign工作原理 一 、简介 OpenFeign是Spring Cloud 在Feign的基础上支持了Spring MVC的注解&#xff0c;如RequesMapping等等。 OpenFeign的FeignClient可以解析SpringMVC的RequestMapping注解下的接口&#xff0c;并通过动态代理的方式产生实现类&#xff…

【Git】初识 Git

文章目录 1. 提出问题2. 如何解决&#xff1f;版本控制器3. 注意事项 1. 提出问题 不知道你工作或学习时&#xff0c;有没有遇到这样的情况&#xff1a;我们在编写各种文档时&#xff0c;为了防止文档丢失、更改失误、失误后能恢复到原来的版本&#xff0c;不得不复制出一个副…

Apifox接口测试教程(一)接口测试的原理与工具

&#x1f525; 交流讨论&#xff1a;欢迎加入我们一起学习&#xff01; &#x1f525; 资源分享&#xff1a;耗时200小时精选的「软件测试」资料包 &#x1f525; 教程推荐&#xff1a;火遍全网的《软件测试》教程 &#x1f4e2;欢迎点赞 &#x1f44d; 收藏 ⭐留言 &#x1…

「GO基础」GO程序组成要素

&#x1f49d;&#x1f49d;&#x1f49d;欢迎莅临我的博客&#xff0c;很高兴能够在这里和您见面&#xff01;希望您在这里可以感受到一份轻松愉快的氛围&#xff0c;不仅可以获得有趣的内容和知识&#xff0c;也可以畅所欲言、分享您的想法和见解。 推荐:「stormsha的主页」…

力扣爆刷第119天之CodeTop100五连刷81-85

力扣爆刷第119天之CodeTop100五连刷81-85 文章目录 力扣爆刷第119天之CodeTop100五连刷81-85一、14. 最长公共前缀二、718. 最长重复子数组三、169. 多数元素四、662. 二叉树最大宽度五、128. 最长连续序列 一、14. 最长公共前缀 题目链接&#xff1a;https://leetcode.cn/pro…

腾讯清华联合提出图像到视频生成方法-Follow-Your-Click:点击图像并加上简单提示词就可让图像动起来!

Follow-Your-Click只需单击一次和简短的提示就可以让图像的某一部分动起来&#xff0c;还支持不同的动作表达&#xff0c;比如微笑&#xff0c;悲伤&#xff0c;跳舞…… 相关链接 论文链接&#xff1a;https://arxiv.org/abs/2403.08268 项目链接&#xff1a;https://github…

【每日刷题】Day16

【每日刷题】Day16 &#x1f955;个人主页&#xff1a;开敲&#x1f349; &#x1f525;所属专栏&#xff1a;每日刷题&#x1f34d; &#x1f33c;文章目录&#x1f33c; 1. 24. 两两交换链表中的节点 - 力扣&#xff08;LeetCode&#xff09; 2. 160. 相交链表 - 力扣&…

IGBT基本工作原理、主要参数及作用

IGBT是一种三端子的半导体开关器件&#xff0c;栅极&#xff0c;集电极和发射极。它结合了MOSFET的高输入阻抗和双极型三极管的低导通压降特性&#xff0c;广泛应用于变频器、电动汽车、电力传输等领域。 工作原理 IGBT由N沟道MOSFET和PNP双极型晶体管组成&#xff0c;其导通和…

前端ocr技术:electron+vue3中使用tesseract插件识别图片中字符

同学们可以私信我加入学习群&#xff01; 正文开始 前言一、electron各种csp问题二、试用插件总结 前言 项目需要ocr技术识别图片中的中文字符&#xff0c;本来这部分是后端的工作&#xff0c;但是因为各种原因&#xff0c;决定前端也做一个版本。 在ai时代之前&#xff0c;o…
最新文章