RAID 磁盘阵列及RAID配置实战

目录

一.RAID磁盘阵列介绍

二.常用的RAID磁盘阵列的介绍

1.RAID 0 (条带化存储)

2.RAID 1(镜像存储)

3.RAID 5

4.RAID 6 

5.RAID 1+0(先做镜像,再做条带)

6.RAID 0+1 (先做条带,再做镜像)

7.RAID 磁盘阵列的区别

8.阵列卡介绍

三.构建软RAID磁盘阵列

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

2.使用mdadm创建软raid

 3.格式化

4.挂载使用

5.查看RAID5配置信息

6.尝试损坏一块硬盘后是否还能还原数据

7.mdadm命令其它常用选项

8.删除坏的硬盘和加入新的硬盘

9.停止 和启动 RAID 的步骤


一.RAID磁盘阵列介绍

1.RAID是Redundant Array of Independent Disks的缩写,中文简称为独立冗余磁盘阵列。

(1)是把多块独立的物理硬盘按不同的方式组合起来形成一个硬盘组(逻辑硬盘),从而提供比单个硬盘更高的存储性能和提供数据备份技术。

(2)具有冗余能力,即使某个硬盘发生故障,也能通过同位检查(Parity Check)的观念读出数据,保证数据的可靠性和安全性。

2.组成磁盘阵列的不同方式称为RAID级别(RAID Levels);常用的RAID级别有:

RAID0,RAID1,RAID5,RAID6,RAID1+0 等

二.常用的RAID磁盘阵列的介绍

1.RAID 0 (条带化存储)

(1)RAID 0连续以位或字节为单位分割数据,并行读/写于多个磁盘上,因此具有很高的数据传输

率,但它没有数据冗余

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

影响到所有数据;

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

                                                 

RAID 0是两个磁盘组成的,两块磁盘都用于数据存储和传输,数据传输具有很高的传输率,但是没有冗余能力;磁盘受损后,数据容易丢失。

2.RAID 1(镜像存储)

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

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

(3)RAID 1是磁盘阵列中单位成本最高的但提供了很高的数据安全性和可用性。当一个磁盘失效

时,系统可以自动切换到镜像磁盘上读写,而不需要重组失效的数据

                                                     

RAID1 也是由两个磁盘组成的,他的两个磁盘是互为备份的,记录的都是一样的内容,具有很强的安全性。

3.RAID 5

(1)N(N>=3)块盘组成阵列,一份数据产生N-1个条带,同时还有1份校验数据共N份数据在N块盘

上循环均衡存储

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

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

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

                                  

RAID 5 是由至少三块磁盘组成,可以通过纠删码还原数据;内存利用率为(N-1)N;损坏一块磁盘后,可以根据其他几块磁盘还原数据。

4.RAID 6 

(1)N(N>=4)块盘组成阵列,(N-2)/N磁盘利用率

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

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

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

                                    

RAID 6 由至少四块磁盘组成,磁盘利用率为(N-2)N;比RAID5多谢一份纠删码,且是独立的一份纠删码,RAID5的纠删码是分布在所有的磁盘上的。

5.RAID 1+0(先做镜像,再做条带)

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

(2)N/2磁盘利用率

(3)N/2块盘同时写入,N块盘同时读取

(4)性能高,可靠性高

                                    

6.RAID 0+1 (先做条带,再做镜像)

(1)读写性能与RAID 10 相同

(2)安全性能低于RAID 10

7.RAID 磁盘阵列的区别

RAID级别硬盘要求数量磁盘利用率是否有冗余能力读写性能
RAID0NN单个硬盘的N倍
RAID1N(偶数)N/2有,允许一个设备故障读性能提升,写没有提升
RAID5N>=3(N-1)/N有,允许一个设备故障需要多写一份纠删码,所以写性能相对RAID0低一些
RAID6N>=4(N-2)/N有,允许两个设备故障需要多写两份纠删码,所以写性能相对RAID5更低一些
RAID10N>=4(偶数)N/2有,允许不同组中各坏一个

读性能可提升N倍,写性能提升N/2倍

8.阵列卡介绍

(1)阵列卡是用来实现RAID功能的板卡

(2)通常是由I/0处理器、硬盘控制器、硬盘连接器和缓存等一系列组件构成的

(3)不同的RAID卡支持的RAID功能不同:例如支持RAID0、RAID1、RAID5、RAID10等

(4)RAID卡的接口类型:IDE接口、SCSI接口、SATA接口和SAS接口

三.构建软RAID磁盘阵列

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

[root@192 ~]# fdisk /dev/sdb                 #设置分区(这里添加四块)
欢迎使用 fdisk (util-linux 2.23.2)。          #四块都是同样操作

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

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

命令(输入 m 获取帮助):n
Partition type:
   p   primary (0 primary, 0 extended, 4 free)
   e   extended
Select (default p): 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.
正在同步磁盘。

2.使用mdadm创建软raid

[root@192 ~]# mdadm -C -v /dev/md5 -l5 -n3 /dev/sd[bcd]1 -x1 /dev/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@192 ~]# watch -n 5 'cat /proc/mdstat'
[root@192 ~]# 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>

watch -n 5 'cat /proc/mdstat'   进入下图界面

拓展:创建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.格式化

[root@192 ~]# 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@192 ~]# mkdir /opt/test
[root@192 ~]# ls /opt/
rh  test

4.挂载使用

[root@192 ~]# mount /dev/md5 /opt/test
[root@192 ~]# df -hT
文件系统                类型      容量  已用  可用 已用% 挂载点
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.9G   31G   14% /
/dev/sda1               xfs       509M  181M  329M   36% /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/test

5.查看RAID5配置信息

[root@192 ~]# echo 'DEVICE /dev/sdb1 /dev/sdc1 /dev/sdd1 /dev/sde1' > /etc/mdadm.conf
[root@192 ~]# mdadm --detail --scan >> /etc/mdadm.conf
[root@192 ~]# cat /etc/mdadm.conf
DEVICE /dev/sdb1 /dev/sdc1 /dev/sdd1 /dev/sde1
ARRAY /dev/md5 metadata=1.2 spares=1 name=192.168.80.202:5 UUID=f4af24d8:dea93504:28db9825:9272b88e

6.尝试损坏一块硬盘后是否还能还原数据

[root@192 ~]# cd /opt/test/
[root@192 test]# touch file{1..50}
[root@192 test]# mkdir file{51..100}
[root@192 test]# ls
file1    file16  file23  file30  file38  file45  file52  file6   file67  file74  file81  file89  file96
file10   file17  file24  file31  file39  file46  file53  file60  file68  file75  file82  file9   file97
file100  file18  file25  file32  file4   file47  file54  file61  file69  file76  file83  file90  file98
file11   file19  file26  file33  file40  file48  file55  file62  file7   file77  file84  file91  file99
file12   file2   file27  file34  file41  file49  file56  file63  file70  file78  file85  file92
file13   file20  file28  file35  file42  file5   file57  file64  file71  file79  file86  file93
file14   file21  file29  file36  file43  file50  file58  file65  file72  file8   file87  file94
file15   file22  file3   file37  file44  file51  file59  file66  file73  file80  file88  file95
[root@192 test]# mdadm /dev/md5 -f /dev/sdc1   #-f 选项指定某个硬盘损坏
mdadm: set /dev/sdc1 faulty in /dev/md5
[root@192 test]# mdadm -D /dev/md5                  #查看RAID情况
/dev/md5:
           Version : 1.2
     Creation Time : Tue Apr 16 23:42:47 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 23:53:48 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 : 14% complete

              Name : 192.168.80.202:5  (local to host 192.168.80.202)
              UUID : f4af24d8:dea93504:28db9825:9272b88e
            Events : 24

    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@192 test]# 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 = 55.3% (11600384/20953088) finish=0.7min speed=206256K/sec

unused devices: <none>
[root@192 test]# watch -n 5 'cat /proc/mdstat'
[root@192 test]# mdadm -D /dev/md5
/dev/md5:
           Version : 1.2
     Creation Time : Tue Apr 16 23:42:47 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 23:55:20 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 : 192.168.80.202:5  (local to host 192.168.80.202)
              UUID : f4af24d8:dea93504:28db9825:9272b88e
            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@192 test]# cd /opt/
[root@192 opt]# ls
rh  test
[root@192 opt]# ls test/
file1    file16  file23  file30  file38  file45  file52  file6   file67  file74  file81  file89  file96
file10   file17  file24  file31  file39  file46  file53  file60  file68  file75  file82  file9   file97
file100  file18  file25  file32  file4   file47  file54  file61  file69  file76  file83  file90  file98
file11   file19  file26  file33  file40  file48  file55  file62  file7   file77  file84  file91  file99
file12   file2   file27  file34  file41  file49  file56  file63  file70  file78  file85  file92
file13   file20  file28  file35  file42  file5   file57  file64  file71  file79  file86  file93
file14   file21  file29  file36  file43  file50  file58  file65  file72  file8   file87  file94
file15   file22  file3   file37  file44  file51  file59  file66  file73  file80  file88  file95

7.mdadm命令其它常用选项

-r:移除设备
-a:添加设备
-S:停止RAID
-A:启动RAID
查看软raid的状态信息      
cat /proc/mdstat        
mdadm -D /dev/mdX

8.删除坏的硬盘和加入新的硬盘

[root@192 opt]# mdadm /dev/md5 -r /dev/sdc1      #-r 选项删除硬盘
mdadm: hot removed /dev/sdc1 from /dev/md5
[root@192 opt]# mdadm -D /dev/md5                 #查看RAID情况
/dev/md5:
           Version : 1.2
     Creation Time : Tue Apr 16 23:42:47 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 : 3
       Persistence : Superblock is persistent

       Update Time : Tue Apr 16 23:57:56 2024
             State : clean
    Active Devices : 3
   Working Devices : 3
    Failed Devices : 0
     Spare Devices : 0

            Layout : left-symmetric
        Chunk Size : 512K

Consistency Policy : resync

              Name : 192.168.80.202:5  (local to host 192.168.80.202)
              UUID : f4af24d8:dea93504:28db9825:9272b88e
            Events : 44

    Number   Major   Minor   RaidDevice State
       0       8       17        0      active sync   /dev/sdb1
       3       8       65        1      active sync   /dev/sde1    #sde1会取代sdc1
       4       8       49        2      active sync   /dev/sdd1
[root@192 opt]# mdadm /dev/md5 -a /dev/sdc1        #重新添加sdc1
mdadm: added /dev/sdc1
[root@192 opt]# mdadm -D /dev/md5
/dev/md5:
           Version : 1.2
     Creation Time : Tue Apr 16 23:42:47 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 23:58:40 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 : 192.168.80.202:5  (local to host 192.168.80.202)
              UUID : f4af24d8:dea93504:28db9825:9272b88e
            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

9.停止 和启动 RAID 的步骤

需要保证配置文件存在,且需要解挂载后才能停止

[root@192 opt]# ls /etc/mdadm.conf            #确保文件存在
/etc/mdadm.conf
[root@192 opt]# cat /etc/mdadm.conf
DEVICE /dev/sdb1 /dev/sdc1 /dev/sdd1 /dev/sde1
ARRAY /dev/md5 metadata=1.2 spares=1 name=192.168.80.202:5 UUID=f4af24d8:dea93504:28db9825:9272b88e
[root@192 opt]# umount /opt/test             #解挂载后才能停止RAID
[root@192 opt]# df
文件系统                   1K-块    已用     可用 已用% 挂载点
devtmpfs                 1913552       0  1913552    0% /dev
tmpfs                    1930628       0  1930628    0% /dev/shm
tmpfs                    1930628   12624  1918004    1% /run
tmpfs                    1930628       0  1930628    0% /sys/fs/cgroup
/dev/mapper/centos-root 37202180 5094412 32107768   14% /
/dev/sda1                 520868  184532   336336   36% /boot
tmpfs                     386128      12   386116    1% /run/user/42
tmpfs                     386128       0   386128    0% /run/user/0
[root@192 opt]# mdadm -S /dev/md5            #停止RAID
mdadm: stopped /dev/md5
[root@192 opt]# ls /dev/md5                  #查看RAID
ls: 无法访问/dev/md5: 没有那个文件或目录
[root@192 opt]# cat /proc/mdstat             #查看RAID
Personalities : [raid6] [raid5] [raid4]
unused devices: <none>
[root@192 opt]# mdadm -As /dev/md5            #启动RAID
mdadm: /dev/md5 has been started with 3 drives and 1 spare.
[root@192 opt]# ls /dev/md5                   #查看RAID
/dev/md5
[root@192 opt]# cat /proc/mdstat              #查看RAID
Personalities : [raid6] [raid5] [raid4]
md5 : active raid5 sdb1[0] sdc1[5](S) sdd1[4] sde1[3]
      41906176 blocks super 1.2 level 5, 512k chunk, algorithm 2 [3/3] [UUU]

unused devices: <none>


 

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

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

相关文章

Java代码执行顺序

Java代码的执行顺序 后面大量的涉及到了static&#xff0c;我曾经写过一篇static的博客&#xff0c;可以看一眼 我上次写了static的加载顺序&#xff0c;没看过的可以进去看一眼 JavaSE&#xff1a;static关键字详解 ---------------------分割线-------------------------…

魔方网表 存在 mailupdate.jsp接口 任意文件上传漏洞

声明&#xff1a; 本文仅用于技术交流&#xff0c;请勿用于非法用途 由于传播、利用此文所提供的信息而造成的任何直接或者间接的后果及损失&#xff0c;均由使用者本人负责&#xff0c;文章作者不为此承担任何责任。 简介 魔方网表mailupdate.jsp接口存在任意文件上传漏洞 …

Jenkins配置windows/linux从节点

背景&#xff1a; 环境&#xff1a;jenkins环境&#xff08;Ubuntu&#xff09; 节点机器&#xff1a;Linux、Windows 前置条件&#xff1a; 节点机器&#xff1a;安装java、allure、python 1 Linux节点管理机器添加 1.1 系统管理->节点列表->New Node 1.2 节点配置…

Python --- 在python中安装NumPy,SciPy和Matplotlib(Windows平台)

在python中安装NumPy&#xff0c;SciPy和Matplotlib(Windows平台) NumPy NumPy是Python的一个最常用最基本的扩展程序库之一&#xff0c;主要用于矩阵运算或数组计算。很多其他的python库都要依赖于NumPy才能跑。 NumPy的发展史&#xff1a; Matrix-sig 1995年&#xff0c;特殊…

RabbitMQ - Spring boot 整合 RabbitMQ

一、RabbitMQ 1、RabbitMQ 使用场景 1.1、服务解耦 假设有这样一个场景, 服务A产生数据, 而服务B,C,D需要这些数据, 那么我们可以在A服务中直接调用B,C,D服务,把数据传递到下游服务即可 但是,随着我们的应用规模不断扩大,会有更多的服务需要A的数据,如果有几十甚至几百个下…

系统调优助手,PyTorch Profiler TensorBoard 插件教程

0x1. 前言 使用PyTorch Profiler进行性能分析已经一段时间了&#xff0c;毕竟是PyTorch提供的原生profile工具&#xff0c;个人感觉做系统性能分析时感觉比Nsys更方便一些&#xff0c;并且画的图也比较直观。这里翻译一下PyTorch Profiler TensorBoard Plugin的教程并分享一些…

SEO之搜索引擎的工作原理(三)

初创企业需要建站的朋友看这篇文章&#xff0c;谢谢支持&#xff1a;我给不会敲代码又想搭建网站的人建议 &#xff08;接上一篇。。。&#xff09; 排名 经过搜索引擎蜘蛛抓取页面&#xff0c;索引程序计算得到倒排索引后&#xff0c;搜索引擎就准备好可以随时处理用户搜索了…

基于Echarts的超市销售可视化分析系统(数据+程序+论文

本论文旨在研究Python技术和ECharts可视化技术在超市销售数据分析系统中的应用。本系统通过对超市销售数据进行分析和可视化展示&#xff0c;帮助决策层更好地了解销售情况和趋势&#xff0c;进而做出更有针对性的决策。本系统主要包括数据处理、数据可视化和系统测试三个模块。…

通义千问:官方开放API开发基础

目录 一、模型介绍 1.1主要模型 1.2 计费单价 二、前置条件 2.1 开通DashScope并创建API-KEY 2.2 设置API-KEY 三、基于DashScope SDK开发 3.1 Maven引入SDK 3.2 代码实现 3.3 运行代码 一、模型介绍 通义千问是由阿里云自主研发的大语言模型&#xff0c;用于理解和分…

JVM虚拟机(九)如何开启 GC 日志

目录 一、引言二、开启 GC 日志三、解析 GC 日志四、优化建议 一、引言 在 Java 应用程序的运行过程中&#xff0c;垃圾收集&#xff08;Garbage Collection&#xff0c;简称 GC&#xff09;是一个非常重要的环节。GC 负责自动管理内存&#xff0c;回收不再使用的对象所占用的…

贵阳市人民政府副市长刘岚调研珈和科技

4月9日&#xff0c;贵阳市人民政府副市长、党组成员刘岚一行到珈和科技走访调研&#xff0c;珈和科技总经理冷伟热情接待了考察团&#xff0c;就企业算力需求与合作&#xff0c;特色产业园区建设&#xff0c;科技成果转化落地等方面进行深入交流。 贵阳市教育局局长李波&#…

智能商品计划系统如何提升鞋服零售品牌的竞争力

国内鞋服零售企业经过多年的发展&#xff0c;已经形成了众多知名品牌&#xff0c;然而近年来一些企业频频受到库存问题的困扰&#xff0c;这一问题不仅影响了品牌商自身&#xff0c;也给长期合作的经销商带来了困扰。订货会制度在初期曾经有效地解决了盲目生产的问题&#xff0…

Vue加载glb / gltf模型(如何在vue中使用Three.js,vue使用threejs加载glb模型)

简介&#xff1a;Three.js 是一个用于在 Web 上创建和显示 3D 图形的 JavaScript 库。它提供了丰富的功能和灵活的 API&#xff0c;使开发者可以轻松地在网页中创建各种 3D 场景、模型和动画效果。可以用来展示产品模型、建立交互式场景、游戏开发、数据可视化、教育和培训等等…

RISC-V微架构验证

对于RISC-V处理器因其灵活性和可扩展性而受到广泛关注&#xff0c;但如果没有高效验证策略&#xff0c;错误的设计实现可能会影响RISC-V的继续推广。 在RISC-V出现之前&#xff0c;对于大多数半导体公司来说&#xff0c;处理器验证几乎成为一门屠龙之技。专业知识被浓缩到少数几…

基于afx透明视频的视觉增强前端方案

作者 | 青玉 导读 本文介绍了增长前端团队自研的Webview框架下透明视频视觉增强方案&#xff0c;该方案在保证对视觉进行高度还原的同时可投入更少的开发成本&#xff0c;还能获得更优的前端性能表现。文章首先分析了市面上动画方案的优缺点&#xff0c;然后详细介绍了透明视频…

stm32实现hid鼠标

启动CubelMX 选择芯片&#xff08;直接输入stm32f103zet6) 设置时钟 如下图 usb设置 配置usb设备 调试端口设置 配置时钟 项目输出设置 打开工程&#xff08;后记&#xff1a;此工程含有中文不能编译通过) 配置项目 配置调试器 编译无法通过 删除路径中的中文&#xff0c;以及…

如何将Oracle 中的部分不兼容对象迁移到 OceanBase

本文总结分析了 Oracle 迁移至 OceanBase 时&#xff0c;在出现三种不兼容对象的情况时的处理策略以及迁移前的预检方式&#xff0c;通过提前发现并处理这些问题&#xff0c;可以有效规避迁移过程中的报错风险。 作者&#xff1a;余振兴&#xff0c;爱可生 DBA 团队成员&#x…

盲人专用软件定制开发:突破出行壁垒,点亮生活之路

身为一名资深记者&#xff0c;我始终关注着各类社会群体面临的挑战与应对策略。今天&#xff0c;我将目光投向了一个特殊群体——盲人&#xff0c;以及一款旨在破解他们独立出行难题的盲人专用软件。这款应用叫做蝙蝠避障&#xff0c;它通过定制开发&#xff0c;以先进的技术手…

Achronix FPGA增加对Bluespec提供的基于Linux的RISC-V软处理器的支持,以实现可扩展数据处理

Bluespec支持加速器功能的RISC-V处理器将Achronix的FPGA转化为可编程SoC 2024年4月——高性能FPGA芯片和嵌入式FPGA&#xff08;eFPGA&#xff09;硅知识产权&#xff08;IP&#xff09;领域的领先企业Achronix半导体公司&#xff0c;以及RISC-V工具和IP领域的行业领导者Blues…

PySpark预计算ClickHouse Bitmap实践

1. 背景 ClickHouse全称是Click Stream&#xff0c;Data WareHouse&#xff0c;是一款高性能的OLAP数据库&#xff0c;既使用了ROLAP模型&#xff0c;又拥有着比肩MOLAP的性能。我们可以用ClickHouse用来做分析平台快速出数。其中的bitmap结构方便我们对人群进行交并。Bitmap位…