第十二章 磁盘管理

1. 磁盘简介

1.1. 概念

硬盘是由一片或多篇带有磁性的铝合金制的盘片构成,是 一种大容量、永久性的外部存储设备 组成:盘片、马达驱动、缓存、控制电路、接口

图:

1.2. 逻辑结构

        磁道:由内到外的同心圆

        扇区:半径组成的扇形磁道存储区

         柱面:多个盘片的统一磁道

图:

2. 虚拟机添加新硬盘

2.1. 物理设备的命名规则

2.1.1. 传统设别

2.1.2. 固态硬盘

         nvmen磁盘号[p1-10]

2.2. 虚拟机添加新硬盘

 过程:

        关机

        编辑虚拟机设置

        点击添加

        选择硬盘后下一步 :

        选择磁盘类型:SATA(A)

        创建新虚拟磁盘:

        20GB,单个文件 :

        默认命名,点击完成:

注意 :在添加3块硬盘,最终共4个新硬盘

3. 硬盘分区概述

3.1. MBR分区

概念:

        MBR(Master Boot Record,主引导记录)包含硬盘一系列 参数和一段引导程序,硬盘引导程序的主要作用是检查分 区表是否正确并且在系统硬件完成自检以后引导具有激活 标志的分区上的操作系统,并将控制权交给启动程序

        MBR是由分区程序(如Fdisk.exe)所产生的,它不依赖 任何操作系统,而且硬盘引导程序也是可以改变的,从而 实现多系统共存

        MBR位于整个硬盘的0磁道0柱面1扇区

                主引导扇区512B

                MBR=446B

                DPT(Disk Partition Table硬盘分区表)=64B

                最后两个字节“55,AA”是分区的结束标志

MBR分区类型

        主分区(primary partition) 一块硬盘最多4个主分区,主分区不可以再进行二次分 区 主分区可以直接建立文件系统,存放数据 可以用来引导、启动操作系统

        扩展分区(extended partition) 一块硬盘最多一个扩展分区,加主分区最多4个 不能创建文件系统 可以划分逻辑分区

        逻辑分区(logical partition) 可以创建文件系统,存放数据 逻辑分区的数量没有限制。

支持的分区数量:4个主分区或者3个主分区1个扩展分区

        为什么MBR最多只能有4个主分区: 因为分区表占据64个字 节,其中每个分区的信息占用16个字节,分区表里面可以 记录四个分区信息描述。

3.2. GPT分区

产生原因:

        MBR分区表中最高支持磁盘容量为2.2TB

        MBR分区表中,没有备份机制,分区表被干掉则磁盘全部 死光光

        MBR中存储开机管理程序的容量只有446B,无法存储较 多内容

 概念::

        GPT(GUID Partition Table,全局唯一标识分区表)是一种比 MBR分区更先进、更灵活的磁盘分区模式

        GPT分区表使用LBA(Logical Block Address)逻辑区块地址 来记录磁盘引导、分区的相关信息

                LAB区块大小(512B-4KB),默认为512B

                LAB区块共68个,前34个记录分区信息,后34个进行 备份

图:

        不在区分主分区与其它分区,默认情况下,GPT最多可支持 128个分区
        支持大于2.2TB的总容量及大于2.2TB的分区,最大支持 18EB(1EB=1024PB,1PB=1024TB,1TB=1024GB)

        GPT分区机制在较老的BIOS中不能识别,则提供了一个 UEFI (Unified Extensible Firmware Interface)统一的可扩 展固件接口,来取代传统的BISO,又称为UEFI BIOS, UEFI使用C语言编写,支持较多的平台

3.3. lsblk命令

作用:查看磁盘信息

格式:lsblk         参数        设备名

参数:

        -d :仅列出硬盘本身信息,不显示分区信息

        -f :列出磁盘的内的文件系统名称

        -i : 使用ASCII码格式输出信息

        -t :显示磁盘的详细信息

       -p :显示设备完整名称

 示例:

显示内容分析:

        NAME :设备名称,默认省略前导/dev 目录名

        MAJ:MIN :主要:次要 设备代码

        RM :是否可以卸载

        SIZE : 容量

        RO :是否为 只读

        TYPE : 设备类别(磁盘、分区、光盘等)

        MOUNTPOINT :挂载点

4. 硬盘分区

4.1. 使用fdisk管理分区

        作用:fdisk命令工具默认将磁盘划分为MBR格式的分区

        命令:fdisk 设备名

        注意:fdisk命令以交互方式进行操作的,在菜单中选择相 应功能键即可

示例:

例1:对/dev/sda硬盘进行分区,方式:P+P+P+E(l+l+l), 容量自定

[root@server ~]# fdisk /dev/sda

# 输入n表示新建

# 输入p或直接回车因为此时默认分区p区(主分区)

# 按照同样的方还可以默认创建俩个P区(主分区),

        当创建三个P区后默认选项就会变成e区(扩展分区)

# 当到达需要输入分区大小时直接回 车,即剩余容量全部分配

# 之后在添加分区时默认值会转变为逻辑分区

# 最后输入命令 p , 显示分区列表

若分区符合要求,则直接输入w 保存并退出(w意思是将磁盘信息写入同步)

输入:[root@server ~]# lsblk /dev/sda

注:若输入以上命令后若无法查看,则表示分区信息还未写入内核(常见情 况),输入partprobe命令 进行手动将分区信息同步到内 核,再不行就重启

       [root@server ~]# partprobe 

例2:对/dev/sdb,进行分区,P+P+E (l+l) P:1G P:3G L: 10G L:剩余

命令:        [root@server ~]# fdisk /dev/sdb

命令参考例一,注:此题为P+P+E,因此需要在第三次选择分区时输入e。

[root@server ~]# lsblk /dev/sdb

4.2. 使用gdisk管理分区

        注意:

                gdisk命令针对GPT分区格式,若在MBR分区格式 下进行添加分区,则所有数据会全部丢失切记一块硬 盘中fdisk与gdisk不能混用

        格式:gdisk         设备名

示例:

        例:对/dev/sdc进行gdisk分区,3个分区,容量自定

[root@server ~]# gdisk  /dev/sdc 

 输入n(大小写都可以gdisk不区分大小写):创建一个新的分区

 输入p查看分区表:

输入w 回车在输入y回车:

[root@server ~]# lsblk /dev/sdc

若没有则输入  [root@server ~]# partprobe  进行手动将分区信息同步到内 核,再不行就重启

注意:实际工作中,硬盘分区是应保留一定的自由空间,以备将 来分区空间不足时可以临时扩容

5. 格式化

5.1. 概念

5.1.1. 格式化的目的

        当我们拿到了一张大白纸,首先为了使用方便要裁剪,然 后为了书写工整要先画格,这里的“白纸”就是原始的硬盘, 而“裁剪”意味着分区,然后的“画格”就是格式化,最后写入 内容

        格式化是对分区建立文件系统,文件系统是操作系统用于 明确存储设备或分区上的文件的方法和数据结构;即在存 储设备上组织文件的方法

5.1.2. 文件系统组成-ext2

        组成:super block(超级块)、inode (索引块)、 block(数据块)

        super block:又称为“硬盘地图”,记录文件系统的整体信 息,如:inode/block块的总量、使用量、空闲块量、文 件系统格式等相关信息

        inode:记录文件的属性,一个文件占用一个inode块,并 且记录次文件的数据所在的block块的号码,默认为128B 大小,存储:文件访问权限、文件所有者与所属组、文件 大小、创建时间或修改内容时间、最有一次访问时间、特 殊权限、真实数据地址

        block块:记录实际文件的内容,在EXT2文件系统中分为 1KB、2KB、4KB容量,文件太大时,会占用多个数据块

图:

5.1.3. 查看文件系统格式

        方法:输入mkfs在键入tab(点击2次)进行命令补全,可显 示支持的文件系统格式

例:        

        [root@server ~]# mkfs     

5.2 格式化命令:

        mkfs.xfs           -参数         硬盘分区名

        mkfs.ext4         -参数         硬盘分区名

参数:

        -f:强制格式化,已存在文件系统时需要使用

        -c:建立文件系统前先检查坏块。

        -V:输出建立文件系统的详细信息

示例

例1:对/dev/sda硬盘进行格式化

首先查看可以格式化的分区:

sda4不可以格式化(扩展风区)

[root@server ~]# mkfs.xfs  /dev/sda1 

[root@server ~]# mkfs.xfs  /dev/sda2

[root@server ~]# mkfs.xfs  /dev/sda3 

[root@server ~]# mkfs.xfs  /dev/sda5 

[root@server ~]# mkfs.xfs  /dev/sda6 

[root@server ~]# mkfs.xfs  /dev/sda7 

使用相同的命令一次将其他分区进行格式化

例2:格式化/dev/sda2 ,并使用inte的cpu多线程技术进 行多数据流读写系统

[root@server ~]# mkfs.xfs  -d agcount=2 -f /dev/sda2 

         # -f:强制格式化

         # -d:指定核心数

命令含义:使用CPU俩个核心对第一块硬盘的第二个分区进行格式化。

                        (需要强制格石化-f)

        查看CPU内核个数:        

                [root@server ~]# grep  'processor'  /proc/cpuinfo 

例3:制作大文件/filedev,容量2G,格式化为xfs文件系统

[root@server ~]# dd if=/dev/zero of=/filedev count=2 bs=1GB

[root@server ~]# mkfs.xfs -f /filedev 

5.5. blkid命令

        作用:显示设备的UUID值和文件系统名称

        UUID:全局单一标识符(Universally Unique Identifier),Linux系统会给所有设备分配一个唯一的UUID 值,以方便挂载

         格式:    blkid         设备名

示例:

[root@server ~]# blkid /dev/sda1

6. 挂载

6.1. 概念

        mount point:挂载点,是一个目录,该目录是进入磁盘 分区(文件系统)的入口

        挂载:将一个分区或者设备挂载至挂载点目录,建立连 接,通过挂载点目录进入分区空间

6.2. mount命令

格式:mount         [-t 文件系统类型]         设备名         挂载点目录

参数:

        -a:依照配置文件/etc/fstab的数据将所有未挂载的磁盘都 挂载上来

        -t:指定文件系统类型

        -o 特殊设备选项:挂载设备时使用逗号分割输入额外参数

示例:

        例1:新建挂载目录,挂载/dev/sda1

                [root@server ~]# mkdir /msda1

                [root@server ~]# mount /dev/sda1 /msda1
                [root@server ~]# lsblk /dev/sda               
           

        例2:使用UUID值挂载/dev/sda2

[root@server ~]# blkid /dev/sda2
/dev/sda2: UUID="ba64aeab-15ac-4723-87b2-ea29edf60145" TYPE="xfs" PARTUUID="4914d7d9-02"

[root@server ~]# mkdir /mssda2
[root@server ~]# mount UUID="ba64aeab-15ac-4723-87b2-ea29edf60145" /mssda2
[root@server ~]# lsblk /dev/sda

        例3:挂载光盘

        查看挂载文件是否存在,若存在则直接挂载:

        [root@server ~]# ls / 

        [root@server ~]# mount /dev/sr0  /media/

        查看是否挂载成功:        [root@server ~]# lsblk /dev/sr0 

        例4:查看挂载信息

        [root@server ~]# mount

        [root@server ~]# mount | grep /dev/sda

注意 :

        单一文件系统不应该被重复挂载在不同的挂载点(目录)中

        单一目录不应该重复挂载多个文件系统

        作为挂载点的目录,应为空目录,否则原有数据会隐藏

例:

        [root@server ~]# echo "hello" > /mssda3/test.txt 

        [root@server ~]# ls /mssda3

        
        [root@server ~]# mount /dev/sda3 /mssda3/

        [root@server ~]# ls /mssda3/                # test.txt隐藏,卸载设备后恢复
        

# lost+found目录作用:使用标准的ext文件系统格式才会 产生的一个目录,当软件或者硬件出现错误,导致文件系统不 一致时会把有问题的文件放到lost+found目录种,所以是一 种恢复丢失文件的方法,误删除时可使用mklost+found创建

6.3. umount命令

        作用:卸载分区,要移除USB磁盘、U盘、光盘和硬盘时,需要 先卸载

        格式:umount 参数 设备名称[挂载点]

        参数:-f :强制卸载

示例:

卸载:分区sda1和sda2

注意:若正使用文件系统,则应使用cd命令离开该目录后再卸载

    [root@server ~]# cd /mssda3
        [root@server mssda3]# ls
        [root@server mssda3]# umount /dev/sda3 
        [root@server mssda3]# cd ~      
    # 离开需要卸载的目 录
        [root@server ~]# umount /dev/sda3
        [root@server ~]# ls /mssda3    
    # 原先隐藏的文 件,卸载设别后会显示

6.4. 开机挂载

        作用 :由于mount为手动挂载,重启后就会卸载,则修 改/etc/fstab配置文件,实现开机自动挂载

例: [root@server ~]# lsblk  /dev/sda        查看挂载情况

    

6.4. 配置文件分析

        路径:/etc/fstab
        [root@server ~]# vim /etc/fstab 

共六列,分别为:

        设备名称或其UUID值

        挂载点目录

        文件系统名称

        文件系统参数:default 是否备份,0

        fsck:开机是否用fsck进行扇区检查,但xfs文件系统不 支持则为 0

 示例:

        将/dev/sda1挂载到/msda1中,并设置开机挂载,重启后 检查\

[root@server ~]# blkid /dev/sda1        查看文件系统名称

[root@server ~]# vim /etc/fstab 

[root@server ~]# mount -a         # 挂载所有,进行测 试,
[root@server ~]# lsblk /dev/sda

[root@server ~]# reboot

[root@server ~]# lsblk

# 注意:为了防止语法错误,必须进行测试,否则开机无法 启动

注意:

        根目录/ 是必须挂载的﹐而且一定要先于其它mount point 被挂载

        其它mount point 必须为已建立的目录,可任意指定,但 一定要遵守必须的系统目录架构原则(FHS)

        所有mount point 在同一时间之内﹐只能挂载一次。

        所有partition 在同一时间之内﹐只能挂载一次。

6.5. 特殊挂载

6.5.1. 挂载大文件

        当只有一个分区,剩余空间还很大,自由空间很小不能进 行新的分区,则可以在当前分区制作一个大文件,在进行 挂载,相当于一个新的分区来使用

        例:建立根目录下新建1GB大文件,挂载并开机挂载使用

        [root@server ~]# dd if=/dev/zero of=/loopdev count=1 bs=1GB

        [root@server ~]# mkfs.xfs -f /loopdev 格式化(-f        强制格式化)

        [root@server ~]# mkdir /mloop
        [root@server ~]# mount -o loop /loopdev  /mloop/
    挂载大文件
  -o 特殊设备选项

查看挂载情况:

实现开机挂:

        [root@server ~]# vim /etc/fstab 
        [root@server ~]# mount -a

6.5.2. 增加swap分区

         swap分区:类似于Windows系统虚拟内存的功能,将一 部分硬盘空间虚拟成内存来使用,从而解决内存容量不足的情况,因为swap毕竟是用硬盘资源虚拟的,所以速度 上比真实物理内存要慢

查看:

添加过程:

                新建分区->格式化该分区->启用新的swap->查 看系统信息->挂载

例1:/dev/sdd中划分2G空间为swap分区,并开机挂载使 用

[root@server ~]# gdisk  /dev/sdd  在虚拟硬盘/devsdd上划分一个大小为2G的区域。步骤如下:
 

保存退出并查看分区情况:

# swap 格式化        [root@server ~]# mkswap /dev/sdd1 

        # 查看容量        [root@server ~]# free -h   发现swap并没增加
 

# 启用分区        [root@server ~]# swapon /dev/sdd1
# 查看容量        [root@server ~]# free -h        发现swap增加
 

# 开机挂载        [root@server ~]# vim /etc/fstab

检测并重启:

[root@server ~]# mount -a
[root@server ~]# reboot   

例2:使用大文件建立swap

建立大文件:[root@server ~]# dd if=/dev/zero of=/swapdev count=2 bs=1G

格式化大文件:[root@server ~]# mkswap /swapdev 

根据所提示的建议修改文件权限:[root@server ~]# chmod 600 /swapdev 

实现开机挂载:[root@server ~]# vim /etc/fstab 

检测:        [root@server ~]# mount -a

启用大文件:        [root@server ~]# swapon /swapdev
查看容量:          [root@server ~]# free -h

        若列表中容量没有增加则输入:[root@server ~]# swapon -s     刷新列表

注意:

        swap在服务器中有时会关闭,如数据库服务器,但一般 用于服务器内存剩余空间有一定压力时会触发使用swap 空间,则swap空间大小设置一般为:当物理内存小于2G 时,swap分区大小为物理内存的2倍;超过2G的部分, swap分区大小跟物理内存相等

        可以使用 swapoff命令停用部分swap空间

7. 查看磁盘空间使用量

7.1. df命令

作用:

        列出文件系统的磁盘空间占用情况

        df,disk free,通过文件系统来快速获取空间大小的信 息,当我们删除一个文件的时候,这个文件不是马上就在 文件系统当中消失了,而是暂时消失了,当所有程序都不 用时,才会根据OS的规则释放掉已经删除的文件, df记 录的是通过文件系统获取到的文件的大小,他比du强的地 方就是能够看到已经删除的文件,而且计算大小的时候, 把这一部分的空间也加上了,更精确了

格式:

                df         -参数         目录或文件名

参数:

        -a:列出所有的文件系统,包括系统特有的/proc等文件系 统

         -k:以KB的容量显示各文件系统 -m:以MB的容量显示各文件系统

        -h:以人们较易阅读的GB,MB,KB等格式自行显示

        -H:以M=1000K替代M=1024K的进位方式

        -T:连同该分区的文件系统名称(例如ext3)也列出

        -i:不用硬盘容量,而以inode的数量来显示

        # 由于df主要读取的数据几乎都是针对整个文件系统,因此 读取的范围主要是在Super block内的信息,所以这个命令 显示结果的速度非常快速。

示例:

7.2. du命令

作用:

        du:显示磁盘空间使用量(统计目录或文件所占磁盘空间 大小),在默认情况下,文件大小的单位是KB。 du,disk usage,是通过搜索文件来计算每个文件的大小 然后累加,

        du能看到的文件只是一些当前存在的,没有被 删除的。他计算的大小就是当前他认为存在的所有文件大小的累加和,当文件系统也确定删除了该文件后,这时候 du与df就一致了

格式:

        du         -参数         文件或目录名

参数:

        -a : 列出所有的文件与目录容量,因为默认仅统计目录下面 的文件量而已;

        -h : 以人们较易读的容量格式(G/M)显示;

        -s : 列出总量,而不列出每个个别的目录占用了容量;

        -S : 不包括子目录下的总计,与-s有点差别;

        -k : 以KB列出容量显示;

        -m : 以MB列出容量显示。

8. RAID

8.1. 概念

        当今CPU性能每年可提升30%-50%但硬盘仅提升7%

        硬盘在服务器中需要持续、频繁、大量的I/O操作,故障 机率较大,则需要对硬盘进行技术改造,提升读写性能、 可靠性

        1988年,加利福尼亚大学伯克利分校首次提出并定义了 RAID技术概念

        原理:RAID(Redundant Array of Independent Disks) 将多个硬盘设备组成一个大容量、安全更好的磁盘阵列, 并将数据切割成多个片段后分别存储到不同的物理硬盘 上,利用分散读写技术来来提升硬盘性能,同时也备份了 多个副本到不同硬盘中,拥有了备份冗余功能

8.2. 常见RAID组建方案

RAID0:

        原理:把至少2块硬盘通过硬件或软件方式串联,组成一 个大的卷组,并将数据依次写入到各个硬盘

        优点:数据同步传输,读取/写入分开,性能大大提升

        缺点:若任意一块硬盘故障会导致整个系统的数据损坏, 无备份冗余能力错误修复能力

        总结:使用率100%,至少2块磁盘才能使用,优点是快,提 升磁盘的读写速度,缺点是不安全

        图:

RAID1:

        产生原因:若生产环境对硬盘的读写速度没有较大要求, 但希望增加数据安全性时可使用RAID

        原理:把至少2块硬盘绑定起来,写入数据时将数据同时 也写入另一或多块硬盘中,

        本质:多个硬盘作为镜像备份

        优点:数据备份冗余安全性大大提升

        缺点:硬盘利用率下降

        总结:是镜像,使用两块磁盘,一式两份的方式,支持容 错,冗余,数据安全不丢失,缺点是速度不快,使用率 50%,成本较大。

        图:

 RAID5

        产生原因:兼顾“读写速度”、“数据安全”、“成本”的一种折 中方式

        原理:需至少三块硬盘,将数据分块存储到不同硬盘中, 硬盘中必须存储其它一个硬盘的parity(奇偶校验信息)

        优点:兼顾性能,通过“奇偶校验”替代“镜像备份”

        缺点:硬盘数据安全性较低

        总结:使用率(n-1)/n*容量,磁盘坏了会立即补上,数据会 恢复

        图:

RAID10 (主流)

        本质:RAID1+RAID0 的组合

        原理:至少需要4块硬盘,先制作两两的RAID1阵列,以保 证安全性,在两两制作RAID0,以提高读写速度

        优点:兼具速度和安全性

        缺点:成本较高

         图:

        

8.3. mdadm命令

作用:管理系统中的RAID磁盘阵列

稍后完成。。。。

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

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

相关文章

JVM基础:初识JVM

IDE:IntelliJ IDEA 2022.1.3 x64 操作系统:win10 x64 位 家庭版 文章目录 一、JVM是什么?二、JVM有哪些功能?2.1 解释和运行2.2 内存管理2.3 即时编译 三、有哪些常见的JVM?3.1 常见JVM3.2 Java虚拟机规范3.3 HotSpot的…

C++入门 第一篇(C++关键字, 命名空间,C++输入输出)

目录 1. C关键字 2. 命名空间 2.1 命名空间定义 2.2命名空间的使用 命名空间的使用有三种方式: 1.加命名空间名称及作用域限定符 2.使用using将命名空间中某个成员引入 3.使用using namespace 命名空间名称 引入 3. C输入&输出 4.缺省函数 4.1 缺省参…

记一次Hbase2.1.x历史数据数据迁移方案

查看待迁移的表 list_namespace_tables vaas_dwm2. 制作待迁移表“DWM_TRIP_PART”的快照 snapshot vaas_dwm:DWM_TRIP_PART,dwm_trip_part_snapshot3. 统计待迁移表数据总数 hbase org.apache.hadoop.hbase.mapreduce.RowCounter vaas_dwm:DWM_TRIP_PART

使用postMan调试接口出现 Content type ‘multipart/form-data;charset=UTF-8‘ not supported“

使用postMan调试接口出现 Content type multipart/form-data;charsetUTF-8 not supported" 问题原因解决方案 最近好久没写springboot项目了,然后写了一个添加用户的接口,使用postman测试时出现了问题。如下图: org.springfr…

HttpServletRequest对象与RequestDispatcher对象

一、HttpServletRequest对象 1.介绍 在Servlet API中,定义了一个HttpServletRequest接口,它继承自ServletRequest接口,专门用来封装HTTP请求消息。由于HTTP请求消息分为请求行、请求消息头和请求消息体三部分,因此,在…

【LVGL】SquareLine Studio入门基础操作

1.SquareLine Studio基础 在这篇文章中将介绍SquareLine Studio的基础操作、解释如何加载一个项目、布局结构。    启动软件后,可以加载之前的项目、创建项目、加载一个示例。    这里以打开示例audio_mixer为例,可以双击该项目打开或者选中该项目点击右下角的【创建】按…

Hadoop3教程(一):Hadoop的定义、组成及全生态概览

文章目录 (1)定义1.1 发展历史1.2 三大发行版本1.3 Hadoop的优势1.4 Hadoop的组成 (13)HDFS概述(14)Yarn架构(15)MapReduce概述(16) HDFS、YARN、MapReduce三…

【排序算法】详解冒泡排序及其多种优化稳定性分析

文章目录 算法原理细节分析优化1优化2算法复杂度分析稳定性分析总结 算法原理 冒泡排序(Bubble Sort) 就是从序列中的第一个元素开始,依次对相邻的两个元素进行比较,如果前一个元素大于后一个元素则交换它们的位置。如果前一个元素小于或等于后一个元素…

课题学习(七)----粘滑运动的动态算法

一、 粘滑运动的动态算法 在实际钻井过程中,钻柱会出现扭振和粘滑现象(粘滑运动–B站视频连接),但并不总是呈现均匀旋转。如下图所示,提取一段地下数据时,转盘转速保持在100 r/min,钻头转速在0-…

Java设计模式之六大设计原则

为什么要学习设计模式? 要知道设计模式就是软件工程的方法经验的总结,也是可以认为是过去一段时间软件工程的一个最佳实践,要理解,不要死记硬背。掌握这些方法后,可以让你的程序获得以下好处: 代码重用性…

膝关节检测之1设计目标手势与物体交互的动画

原来只用unity自带的IK,发现背部不能动,且手和手指的移动和旋转试了好像没法通过animation实现(加入关键帧并修改最终状态的数值后播放没有变化,确定最终关键帧的数值已经改了的)。看资料,发现final IK&…

thinkphp6入门(9)-- 获取url路径中的应用名、控制器名、操作名

如果使用了多应用模式,可以通过下面的方法来获取当前应用 app(http)->getName(); 获取当前控制器 Request::controller(); 获取当前操作 Request::action(); 在中间件middleware中是无法获取控制器和操作的 需要将middleware的引入修改为 config 目录下的 ro…

乐器经营商城小程序的作用是什么

乐器产品覆盖的人群非常广,小学生、老年人都有不小需求,也因此市场中的从业商家相对较多,产品丰富可供消费者选购,然而在实际经营中,线上线下面临痛点不少。 通过【雨科】平台搭建乐器小程序商城,将所有产品…

CCF CSP认证 历年题目自练Day31

题目一 试题编号: 202206-1 试题名称: 归一化处理 时间限制: 500ms 内存限制: 512.0MB 题目背景 在机器学习中,对数据进行归一化处理是一种常用的技术。 将数据从各种各样分布调整为平均值为 0、方差为 1的标准分布&a…

Stm32_标准库_9_TIM

频率(HZ)是频率的基本单位1HZ是1s的倒数 STM32F103C8T6一般情况给定时器的内部时钟都是72MHz(系统主频率) TIM基本构成 计数器、预分频器、自动化重装 // 都是16位其中计数器、自动化重装,都是16位换算成10进制范围为[0, 655536] 时间 1 /…

【全网最细】谷歌小恐龙无敌代码它来了!

谷歌小恐龙是什么? 每次断网的时候,大家是不是都会玩一会,小恐龙快跑的游戏,或者在信息课上玩一玩,对不对? 还没玩过的小伙伴也不用担心,打开谷歌,输入这段网址:chrome…

C++智能指针(三)——unique_ptr初探

与共享指针shared_ptr用于共享对象的目的不同,unique_ptr是用于独享对象。 文章目录 1. unqiue_ptr的目的2. 使用 unique_ptr2.1 初始化 unique_ptr2.2 访问数据2.3 作为类的成员2.4 处理数组 3. 转移所有权3.1 简单语法3.2 函数间转移所有权3.2.1 转移至函数体内3.…

软件工程与计算总结(十一)人机交互设计

目录 ​编辑 一.引例 二.目标 三.人类因素 1.精神模型 2.差异性 四.计算机因素 1.可视化设计 2.常见界面类型 五.人机交互设计的交互性 1.导航 2.反馈 3.设计原则 六.设计过程 1.基本过程 2.界面原型化 一.引例 无论软件功能多么出色,亦或内部的构造…

LENOVO联想笔记本小新 Pro-14 2021AMD处理器ACH版(82MS)原厂Win10系统

下载链接:https://pan.baidu.com/s/1-KZ8Y9NmkS7nDXcMbhZLHw?pwdyrkx 系统自带所有驱动、出厂主题壁纸、系统属性专属LOGO标志、Office办公软件、lenovo联想电脑管家等预装程序 所需要工具:16G或以上的U盘 文件格式:ISO 文件大小&#xff1…

深入篇【C++】总结智能指针的使用与应用意义(auto_ptr/unique_ptr/shared_ptr/weak_ptr)底层原理剖析+模拟实现

深入篇【C】总结智能指针的使用与应用意义&&(auto_ptr/unique_ptr/shared_ptr/weak_ptr)底层原理剖析模拟实现 智能指针的出现智能指针的使用应用意义/存在问题智能指针原理剖析模拟实现auto_ptrunique_ptrshared_ptrweak_ptr 智能指针的出现 首先我们要理…