Linux系统作为一个多用户的操作系统,在生产环境中,会发生多个用户共同使用一个磁盘的情况,会造成Linux根分区的磁盘空间耗尽,导致Linux系统无法建立新的文件,从而出现服务程序崩溃、系统无法启动等故障现象。为了避免这种情况,解决方法就是 ,对用户在指定文件系统中使用磁盘空间、文件数量进行限制,防止用户占用大量的磁盘空间,从而保持系统存储空间可以稳定使用。


1.磁盘配额的限制

1>磁盘配额的对象:整个硬盘或者硬盘分区,并且要求Linux内核支持磁盘配额技术

[root@exercise1 ~]# cat /boot/config-3.10.0-693.el7.x86_64 | grep -i "quota"
CONFIG_NETFILTER_XT_MATCH_QUOTA=m
CONFIG_XFS_QUOTA=y
CONFIG_QUOTA=y
CONFIG_QUOTA_NETLINK_INTERFACE=y
CONFIG_PRINT_QUOTA_WARNING=y
# CONFIG_QUOTA_DEBUG is not set
CONFIG_QUOTA_TREE=y
CONFIG_QUOTACTL=y
CONFIG_QUOTACTL_COMPAT=y

2>对EXT系列文件系统,磁盘配额是针对整个文件系统(即整个硬盘分区),无法对单一的目录进行磁盘配额;
XFS系列文件系统,磁盘配额不仅可以对文件系统(硬盘分区),还可以对单一的目录进行磁盘配额。
因此,在磁盘配额前,一定对文件系统进行检查。

3>磁盘配额只对一般用户有效,对管理员(root)来说是没有任何作用限制的。

2.quota的设置内容

1>分别针对用户(user)、组(group:限定的是文件的所属组)、单一目录(project)进行磁盘配额

2>限制inode和block的用量
简单说明:
inode:关系可以创建文件或者目录的数量
block:关系可以存储的容量大小,默认单位为kb

3>soft/hard:表示具体限制的数值大小
soft(软限制):最低限制容量,可以被超过,但会有警告信息,超过的部分会保存到宽限时期到期。一般是硬限制的80%-90%。
hard(硬限制):绝对不能被超过限制。达到hard时,系统会禁止继续增加新的文件。

4>宽限时间(一般为7天)
当用户使用的空间超过了软限制但还没达到硬限制,在这个宽限的时间到期前必须将超过的数据降低到软限制以下(默认是7天),
当宽限时间到期,系统将自动清除超过的数据。



3.XFS文件系统的磁盘配额

Selinux默认只允许对/home的配额,因此实验时关闭SELINUX(临时性的,重启后失效)

[root@exercise1 ~]# setenforce 0   #临时关闭selinux模式(安全策略)[root@exercise1 ~]# getenforce   #查看安全策略情况
Permissive#永久修改
[root@exercise1 ~]# sed -i 's/SELINUX=enforcing/SELINUX=disabled/' /etc/selinux/config

1>Xfs文件系统只能在每次挂载时才能启动quota
        uquota 用户配额      gquota组配额      prjquota 项目(单个目录)配额
        [root@local ~]# mount -o uquota,gquota,prjquota  /设备  /目录

2>xfs 磁盘配置命令 xfs_quota

xfs_quota -x -c 'limit -u bsoft=10M bhard=20M isoft=10 ihard=20 abc ’ /dir

xfs_quota -x -c ‘limit -g bsoft=10M bhard=20M isoft=10 ihard=20 cw_group’ /dir
-x 专家模式
-c 管理员命令
limit表示限制
-u表示 用户
-g表示组
Soft表示软限制 hard表示硬限制
b开头表示block 容量限制
i开头表示inode 文件数量限制
abc 用户名
cw_group 或者组名
/dir 分区挂载目录**

3>磁盘配额实例

[root@exercise1 ~]# useradd abc   ---添加配额实验用户


[root@exercise1 ~]# echo “123456” | passwd --stdin abc
更改用户 abc 的密码 。
passwd:所有的身份验证令牌已经成功更新。


[root@exercise1 ~]# blkid /dev/sdb1
/dev/sdb1: UUID=“cf03232b-5154-400e-884a-4fea38987d3d” TYPE=“xfs”


[root@exercise1 ~]# mkdir /opt/test


[root@exercise1 ~]# mount -o uquota,gquota /dev/sdb1 /opt/test —添加用户,组配额挂载


[root@exercise1 ~]# xfs_quota -x -c “print” —查看分区是否开启磁盘配额支持
Filesystem Pathname
/ /dev/sda3
/boot /dev/sda1
/opt/test /dev/sdb1 (uquota, gquota)


#—查看挂载情况
[root@exercise1 ~]# mount | grep “/opt/test” #请注意这里的路径,/opt/test。test后没有/
/dev/sdb1 on /opt/test type xfs (rw,relatime,seclabel,attr2,inode64,usrquota,grpquota)

----设置分区针对abc用户的配置限制
[root@exercise1 ~]# xfs_quota -x -c "limit -u bhard=20M bsoft=16M ihard=10 isoft=6 abc" /opt/test/

4>查看配额报告

report [-bir] [-gpu] [-ahnt] [-f file] – report filesystem quota information(报告文件系统配额信息)

# xfs_quota -x -c “report”      /opt/test/
# xfs_quota -x -c “report -u”      /opt/test/      --查看用户配额
# xfs_quota -x -c “report -ub”      /opt/test      —查看所有分区block uquota
# xfs_quota -x -c “report -ui”      /opt/test      —查看所有分区inodes uquota
# xfs_quota -x -c “report -uh”      /opt/test      —以直观的容量大小查看用户配额


5>测试abc用户配额

[root@exercise1 ~]# chmod o+w /opt/test/   #先给其他用户权限可以写


[root@exercise1 ~]# su abc #切换用户


[abc@exercise1 root]$ touch /opt/test/file-{1…7} #创建文件


#Ctrl+D退出切换回来root用户
[root@exercise1 ~]# xfs_quota -x -c “report -iuh” /opt/test/
User quota on /opt/test (/dev/sdb1)
Inodes
User ID Used Soft Hard Warn/Grace
---------- ---------------------------------
root 3 0 0 00 [------]
abc 7 6 10 00 [6 days]

[root@exercise1 ~]#

[root@exercise1 ~]# xfs_quota -x -c “timer -i 10days” /opt/test/   ----修改默认的inodes宽容时间,重新挂载后,还需要重新激活

再切回普通用户看一下是否成功

[root@exercise1 ~]# su abc


[abc@exercise1 root]$ touch /opt/test/file-{8…11}
touch: 无法创建"/opt/test/file-11": 超出磁盘限额


[abc@exercise1 root]$ ls /opt/test/
file-1 file-10 file-2 file-3 file-4 file-5 file-6 file-7 file-8 file-9
[abc@exercise1 root]$


6>解除除某个用户的配额(需要重新挂载)
      各项配额设置为0表示 不限制

#回到root用户操作
[root@exercise1 ~]# xfs_quota -x -c "limit -u bhard=0 bsoft=0 ihard=0 isoft=0 abc" /opt/test/

7> xfs 针对某个目录做磁盘限额

[root@exercise1 ~]# mkdir -p /var/xfs/mysql
[root@exercise1 ~]# chmod a+w /var/xfs/mysql/

8>建立一个项目 10为项目的编号project id

[root@exercise1 ~]# mount -o prjquota  /dev/sdb2    /var/xfs/mysql/


[root@exercise1 ~]# xfs_quota -x -c “project -s -p /var/xfs/mysql 10” /var/xfs/mysql/
Setting up project 10 (path /var/xfs/mysql)…
Processed 1 (/etc/projects and cmdline) paths for project 10 with recursion depth infinite (-1).


[root@exercise1 ~]# xfs_quota -x -c “report -pbih” /var/xfs/mysql/
Project quota on /var/xfs/mysql (/dev/sdb2)
Blocks Inodes
Project ID Used Soft Hard Warn/Grace Used Soft Hard Warn/Grace
---------- --------------------------------- ---------------------------------
#0 0 0 0 00 [------] 2 0 0 00 [------]
#10 0 0 0 00 [------] 1 0 0 00 [------]

[root@exercise1 ~]#

配额

[root@exercise1 ~]# xfs_quota -x -c "limit -p bsoft=200M bhard=400M isoft=10 ihard=20 10" /var/xfs/mysql/


[root@exercise1 ~]# xfs_quota -x -c “report -pbih” /var/xfs/mysql/
Project quota on /var/xfs/mysql (/dev/sdb2)
Blocks Inodes
Project ID Used Soft Hard Warn/Grace Used Soft Hard Warn/Grace
---------- --------------------------------- ---------------------------------
#0 0 0 0 00 [------] 2 0 0 00 [------]
#10 0 200M 400M 00 [------] 1 10 20 00 [------]

注意:目录配额仅针对该目录,无论是哪个用户,组创建文件都将消耗该目录的配额

9> xfs_quota -x -c “state” ----查看配额状态

[root@exercise1 ~]# xfs_quota -x -c "state"
User quota state on /var/xfs/mysql (/dev/sdb2)Accounting: OFFEnforcement: OFFInode: #0 (0 blocks, 0 extents)
Group quota state on /var/xfs/mysql (/dev/sdb2)Accounting: OFFEnforcement: OFFInode: #67 (1 blocks, 1 extents)
Project quota state on /var/xfs/mysql (/dev/sdb2)Accounting: ONEnforcement: ONInode: #67 (1 blocks, 1 extents)
Blocks grace time: [7 days]
Inodes grace time: [7 days]
Realtime Blocks grace time: [7 days]


4.ext4系列的磁盘配额

4.1、ext4系列需要安装quota工具

[root@exercise1 ~]# yum -y install quota

4.2、挂载开启配额支持

[root@exercise1 ~]# mkdir /opt/test2
[root@exercise1 ~]# mount -o defaults,usrquota,grpquota /dev/sdb3 /opt/test2

4.3、quotacheck扫描文件系统并新建quota配置文件

参数:
-v 显示详细信息
-u user 建立“用户”配额数据库
-g group 建立“用户组”配额数据库
-a all 检测所有磁盘 (不加 -a 的话 ,需要明确指定分区设备 /dev/sdb1 )
-f 原先已经有分区建立的配额数据库的话,想清空并重新建立, 需要加 -f 选项强制重新检测

[root@exercise1 ~]# quotacheck -auvg
quotacheck: Your kernel probably supports journaled quota but you are not using it. Consider switching to journaled quota to avoid running quotacheck after an unclean shutdown.
quotacheck: Scanning /dev/sdb3 [/opt/test2] done
quotacheck: Cannot stat old user quota file /opt/test2/aquota.user: 没有那个文件或目录. Usage will not be subtracted.
quotacheck: Cannot stat old group quota file /opt/test2/aquota.group: 没有那个文件或目录. Usage will not be subtracted.
quotacheck: Cannot stat old user quota file /opt/test2/aquota.user: 没有那个文件或目录. Usage will not be subtracted.
quotacheck: Cannot stat old group quota file /opt/test2/aquota.group: 没有那个文件或目录. Usage will not be subtracted.
quotacheck: Checked 3 directories and 0 files
quotacheck: Old file not found.
quotacheck: Old file not found.
[root@exercise1 ~]#

quotacheck: Your kernel probably supports journaled quota but you are not using it. Consider switching to journaled quota to avoid running quotacheck after an unclean shutdown.
quotacheck: Scanning /dev/sdb1 [/opt/test1] done
quotacheck: Cannot stat old user quota file /opt/test1/aquota.user: 没有那个文件或目录. Usage will not be subtracted.
quotacheck: Cannot stat old group quota file /opt/test1/aquota.group: 没有那个文件或目录. Usage will not be subtracted.
quotacheck: Cannot stat old user quota file /opt/test1/aquota.user: 没有那个文件或目录. Usage will not be subtracted.
quotacheck: Cannot stat old group quota file /opt/test1/aquota.group: 没有那个文件或目录. Usage will not be subtracted.
=>上面四个错误只是说明配置文件尚未创建
quotacheck: Checked 3 directories and 0 files =>实际检查结果
quotacheck: Old file not found.
quotacheck: Old file not found.
命令执行后,会在相应的分区挂载目录下,创建 aquota.user ,aquota.group数据库文件。

[root@exercise1 ~]# ll /opt/test2
总用量 32
-rw------- 1 root root  6144 2月   5 16:07 aquota.group
-rw------- 1 root root  6144 2月   5 16:07 aquota.user
drwx------ 2 root root 16384 2月   5 16:04 lost+found
[root@exercise1 ~]#

启动磁盘配额

[root@exercise1 ~]# quotaon -ugv /dev/sdb3   #若添加-a参数,则将可以进行磁盘配额的所有盘开启磁盘配额
/dev/sdb3 [/opt/test2]: group quotas turned on
/dev/sdb3 [/opt/test2]: user quotas turned on
[root@exercise1 ~]#

[root@exercise1 ~]# quotaon -ugv /dev/sdb3      #若添加-a参数,则将可以进行磁盘配额的所有盘开启磁盘配额

关闭磁盘配额

[root@exercise1 ~]# quotaoff -ugv /dev/sdb3   #若添加-a参数,则将可以进行磁盘配额的所有盘关闭磁盘配额
/dev/sdb3 [/opt/test2]: group quotas turned off
/dev/sdb3 [/opt/test2]: user quotas turned off
[root@exercise1 ~]#

[root@exercise1 ~]# quotaoff -ugv /dev/sdb3      #若添加-a参数,则将可以进行磁盘配额的所有盘关闭磁盘配额

查看磁盘配额
-s :使用M,G为单位显示结果

[root@exercise1 ~]# repquota -auvgs
*** Report for user quotas on device /dev/sdb3
Block grace time: 7days; Inode grace time: 7daysSpace limits                File limits
User            used    soft    hard  grace    used  soft  hard  grace
----------------------------------------------------------------------
root      --     20K      0K      0K              2     0     0       Statistics:
Total blocks: 6
Data blocks: 1
Entries: 1
Used average: 1.000000*** Report for group quotas on device /dev/sdb3
Block grace time: 7days; Inode grace time: 7daysSpace limits                File limits
Group           used    soft    hard  grace    used  soft  hard  grace
----------------------------------------------------------------------
root      --     20K      0K      0K              2     0     0       Statistics:
Total blocks: 6
Data blocks: 1
Entries: 1
Used average: 1.000000[root@exercise1 ~]#

[root@exercise1 ~]# repquota -auvgs

修改磁盘配额

edquota -u 用户名
-g 用户组名
-t 修改宽限时间
-p      user1 -u user2      # 将user1的限制值复制给user2


例1:

[root@exercise1 ~]# edquota -u abc   #相当于vim编辑
Disk quotas for user abc (uid 1113):   #blocks与inodes是quota自已算出来的,请不要修改它Filesystem                   blocks       soft       hard     inodes     soft     hard/dev/sdb3                         0          0          0          0        0        0

#blocks与inodes是quota自已算出来的,请不要修改它

修改为

Disk quotas for user abc (uid 1113):Filesystem                   blocks       soft       hard     inodes     soft     hard/dev/sdb3                         0       10000      20000          0        10        20
#默认单位为KB

例2:

切换普通用户abc,测试磁盘配额

[root@exercise1 ~]# su abc


[abc@exercise1 root]$ cd


[abc@exercise1 ~]$ dd if=/dev/zero of=/opt/test2/a.txt bs=10M count=1
sdb3: warning, user block quota exceeded. #空间使用超出软限制的警告
记录了1+0 的读入
记录了1+0 的写出
10485760字节(10 MB)已复制,0.0115736 秒,906 MB/秒


[abc@exercise1 ~]$ dd if=/dev/zero of=/opt/test2/a.txt bs=15M count=1
sdb3: warning, user block quota exceeded. #空间使用超出软限制的警告
记录了1+0 的读入
记录了1+0 的写出
15728640字节(16 MB)已复制,0.0138991 秒,1.1 GB/秒


[abc@exercise1 ~]$ touch /opt/test2/file-{1…11}
sdb3: warning, user file quota exceeded. #inode号使用超出软限制的警告


[abc@exercise1 ~]$ touch /opt/test2/file-{12…21}
sdb3: write failed, user file limit reached. #inode号使用超出硬限制的警告
touch: 无法创建"/opt/test2/file-20": 超出磁盘限额
touch: 无法创建"/opt/test2/file-21": 超出磁盘限额


[abc@exercise1 ~]$

例3:

#执行以下命令将user1的设置应用到其余用户上ide
#-p 指定参考用户,这句话的意思就是将user1的quota信息赋值给user2
#切换回root操作
[root@exercise1 ~]# edquota -p abc -u lin05   #最后一个用户需要已经存在才行


[root@exercise1 ~]# repquota -auv
*** Report for user quotas on device /dev/sdb3
Block grace time: 7days; Inode grace time: 7days
Block limits File limits
User used soft hard grace used soft hard grace
----------------------------------------------------------------------
root – 20 0 0 2 0 0
lin05 – 0 10000 20000 0 10 20
abc ++ 15360 10000 20000 6days 20 10 20 6days ## 此处“++” 意思为block与inode都已经超过硬限制了

Statistics:
Total blocks: 7
Data blocks: 1
Entries: 3
Used average: 3.000000[root@exercise1 ~]#

例4:

[root@exercise1 ~]# edquota -t   #修改宽限时间
Grace period before enforcing soft limits for users:
Time units may be: days, hours, minutes, or secondsFilesystem             Block grace period     Inode grace period/dev/sdb3                     7days                  7days



[root@exercise1 ~]# repquota -auv
*** Report for user quotas on device /dev/sdb3
Block grace time: 3days; Inode grace time: 14days
Block limits File limits
User used soft hard grace used soft hard grace
----------------------------------------------------------------------
root – 20 0 0 2 0 0
lin05 – 0 10000 20000 0 10 20
abc ++ 15360 10000 20000 6days 20 10 20 6days

Statistics:
Total blocks: 7
Data blocks: 1
Entries: 3
Used average: 3.000000

例5:直接使用命令来修改磁盘配额

setquota    -u/-g    用户名/组名    空间(软)    空间(硬)    文件数量(软)    文件数量(硬)    操作的分区名称

[root@exercise1 ~]# setquota -u abc 102400 204800 100 120 /dev/sdb3


[root@exercise1 ~]# repquota -auv
*** Report for user quotas on device /dev/sdb3
Block grace time: 3days; Inode grace time: 14days
Block limits File limits
User used soft hard grace used soft hard grace
----------------------------------------------------------------------
root – 20 0 0 2 0 0
lin05 – 0 10000 20000 0 10 20
abc – 15360 102400 204800 20 100 120

Statistics:
Total blocks: 7
Data blocks: 1
Entries: 3
Used average: 3.000000[root@exercise1 ~]#


注意事项

  • 磁盘配额要求Linux内核支持磁盘配额技术,centos7默认支持
  • 磁盘配额只对一般用户有效,对管理员(root)来说是没有任何作用限制的
  • 宽限时间(一般为7天)单位为KB
    当用户使用的空间超过了软限制但还没达到硬限制,在这个宽限的时间到期前必须将超过的数据降低到软限制以下(默认是7天),当宽限时间到期,系统将自动清除超过的数据。

EXT4和XFS的区别

ext4 文件系统 xfs 文件系统
无法对单一目录 可对单一目录
quota工具 xfs_quota工具
quota默认不开启 默认开启
需要创建配额配置文件 不需要创建配额配置文件

实现步骤

1、关闭selinux
2、修改/etc/fstab,对所选文件系统激活配额选项
3、重新挂载设备
4、用quotacheck命令生成基本配额文件(xfs跳过)
5、启动磁盘配额功能(xfs跳过)
6、用quota或者xfs_quota对具体用户或者目录设置配额



需求(用脚本实现):

1.建立xfs分区 挂载在 /opt/xfs
2.针对用户 upl isoft=10 ihard=20 bsoft=500M bhard=1G 建立并查看报告
3.针对 it 组 isoft=100 ihard=200 bsoft=800M bhard=2G <只要文件所属组为it则为限制对象>
4.针对分区下的 /opt/test/dir1/dir2 目录配置限制 isoft=30 ihard=40 bsoft=500M bhard=800M
5.修改宽限时间为10天
6.解除所有配额
7.建立ext4分区 挂载在 /opt/ext4
8.针对用户 upl isoft=10 ihard=20 bsoft=500M bhard=1G 建立并查看报告
9.针对 it 组 isoft=100 ihard=200 bsoft=800M bhard=2G <只要文件所属组为it则为限制对象>
10.修改宽限时间为10天
11.解除所有配额
12.可以给用户选择是使用xfs磁盘配额还是ext4磁盘配额
13.可以给用户自定义选择配额block与inode大小

17.文件系统磁盘配额相关推荐

  1. linux xfs 磁盘配额,xfs文件系统磁盘配额管理

    环境:Centos7.4_x64 xfs文件系统 1.安装配额工具(如果已安装跳过此步) [root@localhost ~]# yum -y install quota 2.查看当前配额是否开启 [ ...

  2. 文件系统,磁盘配额,数据存储,lvm 逻辑卷管理器

    文件系统 文件系统包括:ext2 ext3 (比ext2多一个日志)ext4                 iso9660(光盘文件系统)                 vfat  (相当于win ...

  3. Linux 常用系统故障(修复MBR扇区故障、修复GRUB引导故障、遗忘root用户密码、修复文件系统、磁盘配额等)

    修复MBR(主引导记录)扇区故障 故障原因 病毒.木马等造成的破坏 不正确的分区操作.磁盘读写误操作 故障现象 找不到引导程序,启动中断 无法加载操作系统,开机后黑屏 解决思路 应提前做好备份文件 以 ...

  4. linux-磁盘管理与文件系统(三)-磁盘配额

    文章目录 前言 一.磁盘配额的概述 1.实现磁盘限额的条件 2.linux磁盘限额的特点 二.磁盘配额配置(ext4)-quota 1.配置配额功能 2.激活配额选项 3.生成配额文件-quotach ...

  5. Linux磁盘配额应用

    磁盘配额 网站服务  针对网站服务域名空间上一般会设置配额限制: 邮件服务 针对邮件服务每个邮箱用户设置磁盘配额限制: 文件服务 针对文件服务器,每个用户设置配额限制: Home家目录 针对家目录设置 ...

  6. linux 磁盘查看sbli,Linux磁盘配额应用

    磁盘配额网站服务  针对网站服务域名空间上一般会设置配额限制: 邮件服务 针对邮件服务每个邮箱用户设置磁盘配额限制: 文件服务 针对文件服务器,每个用户设置配额限制: Home家目录 针对家目录设置磁 ...

  7. Linux管理磁盘配额

    A.磁盘配额作用限制普通用户使用磁盘空间,不至于因为个别人的浪费而影响到其它人的正常使用:<?xml:namespace prefix = o ns = "urn:schemas-mi ...

  8. quota 磁盘配额管理

    quota 磁盘配额管理 1.磁盘配额的概念: quota磁盘配额功能只能在指定文件系统(分区)内有效,未设置配额的文件不收限制. quota针对指定的用户账号.组账号进行限制,其他用户或组不收影响 ...

  9. 理论: LVM与磁盘配额管理

    文章目录 前言: 一:LVM(逻辑卷)概述 1.1 Logical Volume Manager,逻辑卷管理 1.2 LVM机制的基本概念 二:LVM的管理命令 2.1 主要命令 三:LVM应用实例 ...

最新文章

  1. Android Apt失效:找不到Apt生成的对应类
  2. android最全面试题71道题 详解
  3. C++和C#编写调用COM组件
  4. python 中的static-method (静态函数), classmethod(类函数 ), 成员函数
  5. 【Python基础入门系列】第08天:Python List
  6. 2021年中国微粉磨料市场趋势报告、技术动态创新及2027年市场预测
  7. kafka集群为什么需要三个节点_Kafka突然宕机了?稳住,莫慌!
  8. Scikit-learn:聚类clustering
  9. linux ulimit知识
  10. 为什么打印出来的文件右边有阴影_怎样将十几几十页的长文件文档打印成A4纸对折的小册子?...
  11. 线性回归--深度学习
  12. chrome版本太旧 无法更新 问题解决
  13. java猴子搬香蕉,趣味算法:猴子搬香蕉问题
  14. 1.19.10.Flink SQL工程案例\Flink批式处理\自定义函数\Window窗口计算\将DataSet数据转成Table数据\将Table数据转成DataSet等
  15. 【听】蔡康永的说话之道,说话的技巧方法论
  16. 小程序源码《表情包多样版》
  17. mysql修改表字段名称
  18. 计算机毕业设计之java+springcloud基于vue的智慧养老平台-老人信息管理-敬老院管理系统
  19. 讯飞智能办公本Air,迈向高效办公的新利器
  20. 硅谷创业教父保罗·格雷厄姆给的创业建议书

热门文章

  1. 【easyui】easyui combobox 如何清空已加载的数据?
  2. dukelearntoprogram DNA链找基因问题 Java
  3. 美团CodeM 资格赛第一题
  4. 链表OJ2——倒数第K个结点-分割链表,回文链表,相交链表,环形链表和随机指针链表深拷贝问题
  5. 蛙跳算法 c语言,罗永浩2020直播带货成绩正式公布
  6. 正态分布的前世今生 (上)
  7. [Android实例] [版主原创]ScrollView嵌套ScrollView
  8. C++STL标准库学习笔记(一)sort
  9. 【C语言学习04】跳出嵌套循环
  10. 201621123031 《Java程序设计》第4周学习总结