Centos7磁盘管理

背景

在使用虚拟机作为开发环境时,特别是作为数据库服务器时,磁盘随着使用也逐渐紧张。为了解决这一问题,需要对磁盘进行扩容或者缩容。

当在网上找相关解决方案时,发现大部分内容不是纯理论,就是直接几条命令堆砌,也未说明每一条命令目的以及未预期的出错原因。

当然,在安装机器的时候,也应该考虑到合理分配磁盘空间。所以本篇内容将围绕以下模块进行描述:

  • vmware安装centos7,合理分配磁盘空间
  • 磁盘管理命令工具
  • 扩容-硬盘扩容
  • 扩容-增加硬盘
  • 分区容量修改

另外,以下内容仅涉及容量2T以下的磁盘管理,这是因为2T以上的磁盘管理通过另外的命令实现。

而2T以上的磁盘管理由于没有现实条件,不进行叙述。

命令有 fdisk 和 parted。其中 fdisk 命令较为常用,但不支持大于 2TB 的分区;

如果需要支持大于 2TB 的分区,则需要使用 parted 命令,当然 parted 命令也能分配较小的分区。

参考链接

Linux 磁盘管理 | 菜鸟教程 (runoob.com)

Linux文件系统管理 (biancheng.net)

MBR与GPT:磁盘分区方式 - 知乎 (zhihu.com)

文件系统类型(ext4、xfs、fat32、vfat、ntfs、…) - daduryi - 博客园 (cnblogs.com)

命令说明

完成磁盘管理需要掌握以下命令:

1.fdisk

说明

fdisk命令的英文全称是“Partition table manipulator for Linux”,是实现磁盘的分区工具。

在 Linux 中分区中,有两种分区模式:MBR和GPT。而fdisk是一个基于MBR的分区工具。MBR只支持不超过2T的硬盘,超过2T的硬盘将只能用2T空间(有第三方解决方法)。

查看帮助 fdisk -h

[root@application01 ~]# fdisk -h
用法:fdisk [选项] <磁盘>    更改分区表fdisk [选项] -l <磁盘> 列出分区表fdisk -s <分区>        给出分区大小(块数)选项:-b <大小>             扇区大小(512、1024、2048或4096)-c[=<模式>]           兼容模式:“dos”或“nondos”(默认)-h                    打印此帮助文本-u[=<单位>]           显示单位:“cylinders”(柱面)或“sectors”(扇区,默认)-v                    打印程序版本-C <数字>             指定柱面数-H <数字>             指定磁头数-S <数字>             指定每个磁道的扇区数

查看命令手册说明 man fdisk

[root@application01 ~]# man fdisk
NAMEfdisk - manipulate disk partition table # Linux分区表操作工具软件...

列出分区表fdisk -l

# 列出所有分区表
[root@application01 ~]# fdisk -l磁盘 /dev/sda:107.4 GB, 107374182400 字节,209715200 个扇区
Units = 扇区 of 1 * 512 = 512 bytes
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节
磁盘标签类型:dos
磁盘标识符:0x000a7a1e设备 Boot      Start         End      Blocks   Id  System
/dev/sda1   *        2048    19531775     9764864   83  Linux
/dev/sda2        19531776    39061503     9764864   83  Linux
/dev/sda3        39061504    97654783    29296640   83  Linux
/dev/sda4        97654784   209715199    56030208    5  Extended
/dev/sda5        97656832   209715199    56029184   83  Linux磁盘 /dev/sdb:21.5 GB, 21474836480 字节,41943040 个扇区
Units = 扇区 of 1 * 512 = 512 bytes
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节
磁盘标签类型:dos
磁盘标识符:0x3c71443f设备 Boot      Start         End      Blocks   Id  System
/dev/sdb1            2048    41943039    20970496   83  Linux# 列出指定分区表/dev/sdb
[root@application01 ~]# fdisk -l /dev/sdb磁盘 /dev/sdb:21.5 GB, 21474836480 字节,41943040 个扇区
Units = 扇区 of 1 * 512 = 512 bytes
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节
磁盘标签类型:dos
磁盘标识符:0x3c71443f设备 Boot      Start         End      Blocks   Id  System
/dev/sdb1            2048    41943039    20970496   83  Linux

管理指定分区 fdisk /dev/sda

[root@application01 ~]# fdisk /dev/sda
欢迎使用 fdisk (util-linux 2.23.2)。更改将停留在内存中,直到您决定将更改写入磁盘。
使用写入命令前请三思。

管理指定分区后,将进入交互模式。进入交互后,可以通过输入选项,实现功能

选项列表

命令(输入 m 获取帮助):m
命令操作a   toggle a bootable flagb   edit bsd disklabelc   toggle the dos compatibility flagd   delete a partition # 删除一个分区g   create a new empty GPT partition table G   create an IRIX (SGI) partition table l   list known partition typesm   print this menu # 显示帮助菜单n   add a new partition # 新建分区o   create a new empty DOS partition table p   print the partition table # 显示分区列表q   quit without saving changes # 不保存退出s   create a new empty Sun disklabelt   change a partition's system idu   change display/entry unitsv   verify the partition tablew   write table to disk and exit # 保存退出x   extra functionality (experts only)

其中常用的选项如上注释

2.mkfs

说明

当完成分区的创建后,如果不进行格式化,是不能使用的。而命令mkfs可以对硬盘分区进行格式化。

另外,mkfs无法格式化扩展分区,可以格式化主分区和逻辑分区

查看帮助

[root@application01 ~]# mkfs --help
用法:mkfs [选项] [-t <类型>] [文件系统选项] <设备> [<大小>]
选项:-t, --type=<类型>  文件系统类型;若不指定,将使用 ext2fs-options     实际文件系统构建程序的参数<设备>         要使用设备的路径<大小>         要使用设备上的块数-V, --verbose      解释正在进行的操作;多次指定 -V 将导致空运行(dry-run)-V, --version      显示版本信息并退出将 -V 作为 --version 选项时必须是惟一选项-h, --help         显示此帮助并退出

在linux中,文件系统类型可以见以下链接:

文件系统类型(ext4、xfs、fat32、vfat、ntfs、…) - daduryi - 博客园 (cnblogs.com)

另外,在linux中,有mkfs的命令衍生,如mkfs.btrfs,mkfs.cramfs,mkfs.ext2,mkfs.ext3,mkfs.ext4,mkfs.minix和mkfs.xfs。

其实这些衍生命令相当于指定了相关类型,如mkfs.ext2 = mkfs -t ext2

3.mount

说明

命令mount称为挂载,指的是将硬件设备的文件系统和 Linux 系统中的文件系统,通过指定目录(作为挂载点)进行关联。

查看帮助

[root@application01 ~]# mount --help用法:mount [-lhV]mount -a [选项]mount [选项] [--source] <源> | [--target] <目录>mount [选项] <源> <目录>mount <操作> <挂载点> [<目标>]选项:-a, --all               挂载 fstab 中的所有文件系统-c, --no-canonicalize   不对路径规范化-f, --fake              空运行;跳过 mount(2) 系统调用-F, --fork              对每个设备禁用 fork(和 -a 选项一起使用)-T, --fstab <路径>      /etc/fstab 的替代文件-h, --help              显示此帮助并退出-i, --internal-only     不调用 mount.<类型> 助手程序-l, --show-labels       列出所有带有指定标签的挂载-n, --no-mtab           不写 /etc/mtab-o, --options <列表>    挂载选项列表,以英文逗号分隔-O, --test-opts <列表>  限制文件系统集合(和 -a 选项一起使用)-r, --read-only         以只读方式挂载文件系统(同 -o ro)-t, --types <列表>      限制文件系统类型集合--source <源>       指明源(路径、标签、uuid)--target <目标>     指明挂载点-v, --verbose           打印当前进行的操作-V, --version           显示版本信息并退出-w, --rw, --read-write  以读写方式挂载文件系统(默认)-h, --help     显示此帮助并退出-V, --version  输出版本信息并退出源:-L, --label <标签>      同 LABEL=<label>-U, --uuid <uuid>       同 UUID=<uuid>LABEL=<标签>            按文件系统标签指定设备UUID=<uuid>             按文件系统 UUID 指定设备PARTLABEL=<标签>        按分区标签指定设备PARTUUID=<uuid>         按分区 UUID 指定设备<设备>                  按路径指定设备<目录>                  绑定挂载的挂载点(参阅 --bind/rbind)<文件>                  用于设置回环设备的常规文件操作:-B, --bind              挂载其他位置的子树(同 -o bind)-M, --move              将子树移动到其他位置-R, --rbind             挂载其他位置的子树及其包含的所有挂载--make-shared           将子树标记为 共享--make-slave            将子树标记为 从属--make-private          将子树标记为 私有--make-unbindable       将子树标记为 不可绑定--make-rshared          递归地将整个子树标记为 共享--make-rslave           递归地将整个子树标记为 从属--make-rprivate         递归地将整个子树标记为 私有--make-runbindable      递归地将整个子树标记为 不可绑定更多信息请参阅 mount(8)。

挂载 mount

mount /dev/sdb1 /data01

以上命令可以将分区/dev/sdb1挂载到目录/data01,目录/data01必须存在;另外,这种挂载方式为手动挂载,机器重启后将失效。

所以,挂载不仅要手动挂载,也要修改/etc/fstab,实现自动挂载。

挂载 fstab 中的所有文件系统mount -a

mount -a

以上命令可以挂载fstab中的所有文件系统

列出所有带有指定标签的挂载,mount -l

[root@application01 data01]# mount -l
sysfs on /sys type sysfs (rw,nosuid,nodev,noexec,relatime,seclabel)
proc on /proc type proc (rw,nosuid,nodev,noexec,relatime)
devtmpfs on /dev type devtmpfs (rw,nosuid,seclabel,size=1919912k,nr_inodes=479978,mode=755)
securityfs on /sys/kernel/security type securityfs (rw,nosuid,nodev,noexec,relatime)
tmpfs on /dev/shm type tmpfs (rw,nosuid,nodev,seclabel)
devpts on /dev/pts type devpts (rw,nosuid,noexec,relatime,seclabel,gid=5,mode=620,ptmxmode=000)
tmpfs on /run type tmpfs (rw,nosuid,nodev,seclabel,mode=755)
tmpfs on /sys/fs/cgroup type tmpfs (ro,nosuid,nodev,noexec,seclabel,mode=755)
cgroup on /sys/fs/cgroup/systemd type cgroup (rw,nosuid,nodev,noexec,relatime,seclabel,xattr,release_agent=/usr/lib/systemd/systemd-cgroups-agent,name=systemd)
pstore on /sys/fs/pstore type pstore (rw,nosuid,nodev,noexec,relatime)
cgroup on /sys/fs/cgroup/memory type cgroup (rw,nosuid,nodev,noexec,relatime,seclabel,memory)
cgroup on /sys/fs/cgroup/perf_event type cgroup (rw,nosuid,nodev,noexec,relatime,seclabel,perf_event)
cgroup on /sys/fs/cgroup/cpu,cpuacct type cgroup (rw,nosuid,nodev,noexec,relatime,seclabel,cpuacct,cpu)
cgroup on /sys/fs/cgroup/freezer type cgroup (rw,nosuid,nodev,noexec,relatime,seclabel,freezer)
cgroup on /sys/fs/cgroup/cpuset type cgroup (rw,nosuid,nodev,noexec,relatime,seclabel,cpuset)
cgroup on /sys/fs/cgroup/net_cls,net_prio type cgroup (rw,nosuid,nodev,noexec,relatime,seclabel,net_prio,net_cls)
cgroup on /sys/fs/cgroup/pids type cgroup (rw,nosuid,nodev,noexec,relatime,seclabel,pids)
cgroup on /sys/fs/cgroup/hugetlb type cgroup (rw,nosuid,nodev,noexec,relatime,seclabel,hugetlb)
cgroup on /sys/fs/cgroup/blkio type cgroup (rw,nosuid,nodev,noexec,relatime,seclabel,blkio)
cgroup on /sys/fs/cgroup/devices type cgroup (rw,nosuid,nodev,noexec,relatime,seclabel,devices)
configfs on /sys/kernel/config type configfs (rw,relatime)
/dev/sda1 on / type xfs (rw,relatime,seclabel,attr2,inode64,noquota)
selinuxfs on /sys/fs/selinux type selinuxfs (rw,relatime)
systemd-1 on /proc/sys/fs/binfmt_misc type autofs (rw,relatime,fd=26,pgrp=1,timeout=0,minproto=5,maxproto=5,direct,pipe_ino=21095)
hugetlbfs on /dev/hugepages type hugetlbfs (rw,relatime,seclabel)
debugfs on /sys/kernel/debug type debugfs (rw,relatime)
mqueue on /dev/mqueue type mqueue (rw,relatime,seclabel)
/dev/sda3 on /data type xfs (rw,relatime,seclabel,attr2,inode64,noquota)
/dev/sda2 on /home type xfs (rw,relatime,seclabel,attr2,inode64,noquota)
/dev/sda5 on /data01 type ext4 (rw,relatime,seclabel,data=ordered)
tmpfs on /run/user/0 type tmpfs (rw,nosuid,nodev,relatime,seclabel,size=386152k,mode=700)

4.umount

说明

有挂载命令mount,则也一定有卸载命令。而umount就是这一卸载命令

命令umount可以卸载已经挂载的硬件设备。

显示帮助

[root@application01 ~]# umount --help用法:umount [-hV]umount -a [选项]umount [选项] <源> | <目录>选项:-a, --all               卸载所有文件系统-A, --all-targets       卸载当前名字空间内指定设备对应的所有挂臷点-c, --no-canonicalize   不对路径规范化-d, --detach-loop       若挂臷了回环设备,也释放该回环设备--fake              空运行;跳过 umount(2) 系统调用-f, --force             强制卸载(遇到不响应的 NFS 系统时)-i, --internal-only     不调用 umount.<类型> 辅助程序-n, --no-mtab           不写 /etc/mtab-l, --lazy              立即断开文件系统,所有清理以后执行-O, --test-opts <列表>  限制文件系统集合(和 -a 选项一起使用)-R, --recursive         递归卸载目录及其子对象-r, --read-only         若卸载失败,尝试以只读方式重新挂臷-t, --types <列表>      限制文件系统集合-v, --verbose           打印当前进行的操作-h, --help     显示此帮助并退出-V, --version  输出版本信息并退出更多信息请参阅 umount(8)。

卸载

如果存在一个文件系统和挂载点,如下:

mount /dev/sdb1 /data01

可以通过以下命令实现卸载

# 卸载分区
umount /dev/sdb1
# 或者卸载挂载点
umount /data01

卸载报错

如果当前目录在挂载点,进行卸载操作,将报错。如下:

[root@application01 data]# cd /data01/
[root@application01 data01]# umount /data01
umount: /data01:目标忙。(有些情况下通过 lsof(8) 或 fuser(1) 可以找到有关使用该设备的进程的有用信息)

以上报错可以去到其它目录在进行卸载

合理分配磁盘空间

在vmware新建虚拟机时,为了快速完成,都会选择自动分区。自动分区虽然可以不用进行复杂设置,显然这会让机器的分区不符合预期。所以需要在安装机器的时候应该合理分配

1.新建虚拟机,可以指定磁盘大小

如下是设置为50GB

2.执行外部机器存储磁盘文件的位置

指定这一路径后,外部机器相关的文件路径下,会生成多个磁盘文件,如下:

3.配置完成后,虚拟机设置中的硬件-硬盘

4.启动机器后,会进入安装向导

以下是磁盘划分向导,默认是自动配置分区

由于想要获取预期分区,所以选择自定义

5.添加分区

切分如下:


6.安装完成后,查看分区是否符合预期

使用df命令查看分区是否符合预期

当磁盘空间不足时,有两种选择都可以实现扩容。在原磁盘增加容量,也可以新增磁盘。将分别进行笔记。

centos7扩容-硬盘扩容

1.硬盘扩容

在vmware扩展磁盘容量至100GB

但使用df命令查看系统中各文件系统的硬盘使用情况。实际上与之前并没有变化。

# 查看系统中各文件系统的硬盘使用情况
df -h
# 查看分区信息
fdisk -l


可以通过命令fdisk -l可以有以下内容:

  • 磁盘/dev/sda已提升至107GB,但分区还是只有原来的3个分区(/dev/sda1,/dev/sda2,/dev/sda3),分区的容量大小没有发生变化,仍然为50GB
  • 其中每个分区的容量可以通过Blocks获取,单位是KB,如分区/dev/sda1的容量是9764864KB≈9.3125GB
  • 而Blocks的计算公式是:

Blocks=(End−Start)∗tracksBlocks = (End-Start)*tracks Blocks=(End−Start)∗tracks

所以Blocks=(19531775-2048) * 512 / 1000 = 19529727 * 512 / 1024 = 9999220224 / 1024 = 9764863.5KB ≈ 9764864KB

  • 3个分区(/dev/sda1,/dev/sda2,/dev/sda3)是连续的,即start和end是连续的

2.使用fdisk管理分区

使用fdisk对分区/dev/sda进行管理

fdisk /dev/sda


使用选项n增加分区

从上面可以发现,因为已经有3个主分区,而根据分区标准,只能有4个主分区(3个主分区+1个扩展分区),扩展分区下可以有多个逻辑分区。所以使用选项e创建扩展分区/dev/sda4

3.新增逻辑分区

在扩展分区/dev/sda4下创建逻辑分区/dev/sda5

完成分区管理后,选择选项w进行保存

保存后获取/dev目录下是否成功创建目录sda5

ls /dev | grep sd


发现没有创建,可以通过重启机器reboot

reboot

再次获取/dev目录下是否成功创建目录sda5

成功创建

4. 使用mkfs格式化分区

mkfs.ext4 /dev/sda5


其中mkfs.ext4命令是mkfs的扩展,可以指定分区的文件系统格式为ext4

5.使用mount手动挂载分区

将分区/dev/sda5挂载到目录/data01

mount /dev/sda5 /data01

6.修改/etc/fstab实现自动挂载

为了实现自动挂载,需要将挂载动作记录到 /etc/fstab

/dev/sda5 /data01 ext4 defaults 0 0

系统开机时会主动读取/etc/fstab这个文件中的内容,根据文件里面的配置挂载磁盘。

以下命令将 /etc/fstab 中定义的所有档案系统挂上

mount -a


重启后,查看分区是否被重置

发现挂载未失效

在虚拟机上,可以像上面一样,在硬盘的基础上增加容量,即/dev/sda从50GB到100GB.

但如果没有使用虚拟机,就需要通过空闲的硬盘插口增加硬盘,即增加/dev/sdb,如下:

centos7扩容-增加硬盘

1.增加磁盘

在vmware新增新硬盘,硬盘大小为20GB

使用fdisk -l可以发现新增磁盘/dev/sdb,但下面没有任何分区信息

fdisk -l

2.管理分区/dev/sdb

使用选项p查看分区/dev/sdb

新增主分区/dev/sdb1

保存后,通过fdisk -l,可以查看磁盘下/dev/sdb下有一分区/dev/sdb1

3. 格式化分区/dev/sdb1

4.手动挂载

5.自动挂载

为了实现自动挂载,在/etc/fstab进行编辑

分区容量修改

使用fdisk -l查看分区信息时,发现分区/dev/sdb1只有10GB,而磁盘/dev/sdb有20GB,还剩10GB未利用


此时,可以新增分区,使用剩余空间。如上操作即可。

当然,也可以修改分区/dev/sdb1,使sdb1使用全部空间

1.卸载分区

卸载分区/dev/sdb1,并修改/etc/fstab,注释相关挂载配置

注意以上动作会将/data02下的内容被删除
可以发现目录/data02被卸载

2. 卸载后重启机器

必须重启机器

3.重新创建分区

确认没问题后,删除分区,并重新创建分区,使用全部空间

4.格式化分区/dev/sdb1

5.手动挂载和自动挂载


可以发现目录/data02的空间为20GB

总结

篇幅虽然长,但实际上实现磁盘管理的命令并不多。主要是对磁盘相关认识和整个流程的把握。
在磁盘认识上,需要知道主分区、扩展分区和逻辑分区等概念。这样才能合理分配空间,以及创建时指定分区类型。
在整个流程的把握上,挂载是以下步骤:

  • 创建分区fdisk xxx
  • 格式化分区mkfs -t xxx xxx
  • 挂载(手动+自动)分区mount xxx xxx

另外,在操作过程中,如果出现错误,应该确认是否存在错误操作。特别是通过fdisk时,当意识到不正确时,可以直接通过选项q结束设置。

Centos7磁盘管理相关推荐

  1. centos图形化磁盘文件管理_CentOS7磁盘管理-分区扩容-使用gparted图形化工具或系统命令...

    centOS7磁盘管理-分区扩容-使用gparted图形化工具或系统命令 @了解centos下磁盘结构 无标题.png 解释 PE - 物理块(Physical Extent) 硬盘上有很多实际物理存 ...

  2. CentOS7 运维 - 磁盘管理与文件系统 | 超详细 | 附挂载教程及错误排查 | parted超大磁盘分区教程

    磁盘管理与文件系统 硬盘结构 磁盘的接口种类 磁盘分区表示 主引导记录(MBR)磁盘分区 文件系统类型 XFS 文件系统 SWAP 交换文件系统 Linux 支持的其他文件系统类型 fdisk 检测并 ...

  3. Linux7/Centos7磁盘分区、格式化及LVM管理

    RHEL7如何对磁盘进行分区和格式化以及如何配置LVM,与以前版本的RHEL区别不大,可以通过disk工具(在图形桌面中运行)或命令工具(如:fdisk.gdisk.parted)管理硬盘设备.fdi ...

  4. centos7磁盘分区、格式化及LVM管理

    磁盘分区.格式化及LVM管理 http://hongge.blog.51cto.com/ RHEL7如何对磁盘进行分区和格式化以及如何配置LVM,与以前版本的RHEL区别不大,可以通过disk工具(在 ...

  5. 【Linux】centos7学习日记-磁盘管理

    目录 磁盘管理 一.存储介绍 二.存储概览 三.磁盘分区 四.交换分区 五.开机挂载 六.磁盘矩阵RAID 七.文件链接 八.LVM逻辑卷 九.文件系统 磁盘管理 一.存储介绍 1.     ①NAS ...

  6. 磁盘管理及文件系统管理

    Linux磁盘管理及文件系统管理 涉及到的命令: mknod.fdisk.partx.kpartx.partprobe.ln.mkfs.mkfs.{ext2.ext3.ext4.xfs}.fsck.{ ...

  7. 磁盘管理第一章(分区与格式化)

    磁盘管理第一章 对于非系统所在硬盘,内核自动更新分区表,而对于系统所在硬盘,不能直接列新,要使用以下命令 通知内核读取分区表 cenots5\centos7: partprobe (centos6不可 ...

  8. linux下卸载 dev sd*下硬盘,Linux 磁盘管理(示例代码)

    磁盘管理 Linux思想一切皆文件: open(),read(),write(),close() I/O 设备地址 设备类型: 块设备:block,存取单位"块",磁盘 (随机访问 ...

  9. linux 查看磁盘管理,linux下的磁盘管理

    1.磁盘管理 磁盘是我们日常生活中最主要的存储介质,在工业领域同样有着大量的使用,对于一块硬盘,我们并不能直接读取上面的数据,因为磁盘上的是二进制数据,有磁性代表着1,没磁性代表着0,读取数据是计算机 ...

最新文章

  1. python转行it好学吗-我研一想转行it,建议Java还是Python呢?
  2. Button的使用(十三):设置可见性
  3. go float64 转int_深挖Go函数之深度解析(下):可变参数
  4. java多线程模拟实现12306售票
  5. 计算机视觉中的人类感知、理解和生成 (ICCV 2019 Workshop)
  6. linux内存管理详解,Linux内存管理图文讲解.pdf
  7. 网络编程函数小总结与初识socket
  8. 测试用例设计方法-正交试验常用正交表
  9. git log 日期格式
  10. 0516---win10 chrome 浏览器播放视频没有声音的解决办法
  11. 微信扫码/链接下载APK包, 自定义引导页,引导在外部浏览器打开
  12. Hack the box靶机 Blunder
  13. mac 外接双显示器
  14. 互联网信息服务【安全评估报告】详细攻略
  15. Vue3实现中英文切换
  16. 构建AWS Site-to-Site IPsec实现内网互联
  17. IKAnalyzer总结
  18. 常见乱码问题分析和总结
  19. SCSS常用语法总结
  20. detect(detected是什么意思)

热门文章

  1. **生活**关于对软件的艺术与生活的艺术的思考
  2. 关于软件文档 这些你知道吗?
  3. @schedule定时注解
  4. 信息学奥赛一本通(c++):1168:大整数加法
  5. css中伪类选择器详解(a:visited不生效的原因)
  6. 如何按需下载和安装Win10补丁
  7. java+SQL做学生信息管理系统(增删改查)
  8. 科创板明日迎来第二批上市公司:晶晨股份和柏楚电子
  9. ui动效 unity_【FairyGUI Unity】使用动效功能实现血条UI扣血与加血的缓动效果
  10. 英飞凌TC264之PWM舵机控制