大纲:

1-1- LVM逻辑卷的管理

1-2- SSM管理工具的使用

1-3- 磁盘配额技巧

======================================

问题描述:

当我们需要在一个100G的磁盘中存储120G的数据时,空间不够用,这时我们应该怎么办?

一般方法时,重新分区或者是在购买一个大点磁盘

但是,在服务器中,这是不现实的,如果该磁盘上运行着非常重要的服务呢?!

传统磁盘管理的限制,因为其不能够进行动态的磁盘管理。

这时就用到了我们的LVM逻辑卷

LVM(Logical volume Manager)是逻辑卷管理的简称。

它是Linux环境下对磁盘分区进行管理的一种机制

现在不仅仅是Linux系统上可以使用LVM这种磁盘管理机制,

对于其它的类UNIX操作系统,以及windows操作系统都有类似与LVM这种磁盘管理软件。

LVM逻辑卷可以对磁盘的大小实现动态调整。

lvm 逻辑卷的原理:它就是通过将底层的物理硬盘进行封装,然后以逻辑卷的形式呈现给上层应用。

当我们对磁盘进行操作时,实际上不是对分区进行操作,而是通过一个叫做逻辑卷的东西对其进行底层磁盘的操作

就是通过将底层的物理硬盘封装起来,然后以逻辑卷的方式呈现给上层应用。

在LVM中,其通过对底层的硬盘进行封装,当我们对底层的物理硬盘进行操作时,

其不再是针对于分区进行操作,而是通过一个叫做逻辑卷的东西来对其进行底层的磁盘管理操作。

 

 

PE(Physical Extend),我们的LVM磁盘管理中PE的默认大小是4M大小,其实PE就是我们逻辑卷管理的最基本单位

比如说我有一个400M的硬盘,那么在将其格式化成PV的时候,其实际就是将这块物理硬盘划分成了100个的PE,因为PE默认的大小就是4M。

PV(Physical Volume),物理卷 ,作用就是用来装PE的,普通磁盘被分割成多个PE块,最终形成PV(物理卷)

VG即卷组 作用就是用来装PV的,我们可以把一个或者多个PV加到VG当中

LV(Logical Volume),所以第三步操作就是基于VG来创建我们最终要使用的LV。

逻辑卷组成:

普通磁盘或分区,通过命令其存储空间按照PE(Physical Extand)的大小被分各种n个PE块,

注:这里的PE就相当于raid磁盘阵列中的块大小,存储基本单位,PE默认大小为4M,可调整

最后形成物理卷(PV—Physical Volume),

多个物理卷PV组成卷组(VG),最后通过卷组(VG)创建逻辑卷(LV)

1-1-2 LVM逻辑卷的管理

lvm常用的命令

功能            PV管理        VG管理         LV管理

scan 扫描        pvscan        vgscan         lvscan

create 创建      pvcreate     vgcreate      lvcreate

display显示      pvdisplay    vgdisplay     lvdisplay

remove 移除   pvremove    vgremove    lvremove

extend 扩展                        vgextend     lvextend

reduce减少                         vgreduce     lvreduce

注:PV不需要扩展和减少,当需要扩容或减少时,直接增减磁盘即可

实战:创建、并使用LVM逻辑卷

第一步:添加磁盘到虚拟机

第二步:对添加的磁盘进行分区(也可直接添加四个磁盘,组成卷组)

效果如图:

过程如下:

[root@localhost ~]# fdisk /dev/sdb
Welcome to fdisk (util-linux 2.23.2).

Changes will remain in memory only, until you decide to write them.
Be careful before using the write command.

Command (m for help): n
Partition type:
   p   primary (0 primary, 0 extended, 4 free)
   e   extended
Select (default p):
Using default response p
Partition number (1-4, default 1):
First sector (2048-41943039, default 2048):
Using default value 2048
Last sector, +sectors or +size{K,M,G} (2048-41943039, default 41943039): +1G
Partition 1 of type Linux and of size 1 GiB is set

Command (m for help): n
Partition type:
   p   primary (1 primary, 0 extended, 3 free)
   e   extended
Select (default p):
Using default response p
Partition number (2-4, default 2):
First sector (2099200-41943039, default 2099200):
Using default value 2099200
Last sector, +sectors or +size{K,M,G} (2099200-41943039, default 41943039): +1G
Partition 2 of type Linux and of size 1 GiB is set

Command (m for help): n
Partition type:
   p   primary (2 primary, 0 extended, 2 free)
   e   extended
Select (default p):
Using default response p
Partition number (3,4, default 3):
First sector (4196352-41943039, default 4196352):
Using default value 4196352
Last sector, +sectors or +size{K,M,G} (4196352-41943039, default 41943039): +1G
Partition 3 of type Linux and of size 1 GiB is set

Command (m for help): n
Partition type:
   p   primary (3 primary, 0 extended, 1 free)
   e   extended
Select (default e):
Using default response e
Selected partition 4
First sector (6293504-41943039, default 6293504):
Using default value 6293504
Last sector, +sectors or +size{K,M,G} (6293504-41943039, default 41943039):
Using default value 41943039
Partition 4 of type Extended and of size 17 GiB is set

Command (m for help): p

Disk /dev/sdb: 21.5 GB, 21474836480 bytes, 41943040 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk label type: dos
Disk identifier: 0xa42d7e85

   Device Boot      Start         End      Blocks   Id  System
/dev/sdb1            2048     2099199     1048576   83  Linux
/dev/sdb2         2099200     4196351     1048576   83  Linux
/dev/sdb3         4196352     6293503     1048576   83  Linux
/dev/sdb4         6293504    41943039    17824768    5  Extended

Command (m for help): n
All primary partitions are in use
Adding logical partition 5
First sector (6295552-41943039, default 6295552):
Using default value 6295552
Last sector, +sectors or +size{K,M,G} (6295552-41943039, default 41943039): +1G
Partition 5 of type Linux and of size 1 GiB is set

Command (m for help): p

Disk /dev/sdb: 21.5 GB, 21474836480 bytes, 41943040 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk label type: dos
Disk identifier: 0xa42d7e85

   Device Boot      Start         End      Blocks   Id  System
/dev/sdb1            2048     2099199     1048576   83  Linux
/dev/sdb2         2099200     4196351     1048576   83  Linux
/dev/sdb3         4196352     6293503     1048576   83  Linux
/dev/sdb4         6293504    41943039    17824768    5  Extended
/dev/sdb5         6295552     8392703     1048576   83  Linux

Command (m for help): w
The partition table has been altered!

Calling ioctl() to re-read partition table.
Syncing disks.
[root@localhost ~]# ls /dev/sdb*
/dev/sdb  /dev/sdb1  /dev/sdb2  /dev/sdb3  /dev/sdb4  /dev/sdb5
[root@localhost ~]#

第三步:创建PV和VG

创建PV=pvcreate 设备名称 …..

创建VG=vgcreate 卷组名称 设备成员 ..

pvcreate /dev/sdb[1-3] /dev/sdb5

pvs  和pvscan不是一个命令

创建VG

vgcreate file /dev/sdb[1-3]

vgs  查看vg卷组信息

注:vgs 和vgscan不是一个命令!

[root@localhost ~]# vgs --help
  vgs: Display information about volume groups

vgs
    [--aligned]
    [--binary]
    [-a|--all]
    [--commandprofile ProfileName]
    [-d|--debug]
    [--foreign]
    [-h|--help]
    [--ignorelockingfailure]
    [--ignoreskippedcluster]
    [--nameprefixes]
    [--noheadings]
    [--nosuffix]
    [-o|--options [+]Field[,Field]]
    [-O|--sort [+|-]key1[,[+|-]key2[,...]]]
    [-P|--partial]
    [--readonly]
    [--rows]
    [-S|--select Selection]
    [--separator Separator]
    [--trustcache]
    [--unbuffered]
    [--units hHbBsSkKmMgGtTpPeE]
    [--unquoted]
    [-v|--verbose]
    [--version]
    [VolumeGroupName [VolumeGroupName...]]

[root@localhost ~]# vgscan --help
  vgscan: Search for all volume groups

vgscan     [--cache]
    [--commandprofile ProfileName]
    [-d|--debug]
    [-h|--help]
    [--ignorelockingfailure]
    [--mknodes]
    [-P|--partial]
    [-v|--verbose]
    [--version]

[root@localhost ~]#

第四步:创建LV

lvcreate -n 指定逻辑卷名称  -L 指定大小

lvcreate –n disk –L 1.5G  file

lvcreate帮助信息:

[root@localhost ~]# lvcreate --help
  lvcreate: Create a logical volume

lvcreate
    [-A|--autobackup {y|n}]
    [-a|--activate [a|e|l]{y|n}]
    [--addtag Tag]
    [--alloc AllocationPolicy]
    [-H|--cache
      [--cachemode {writeback|writethrough}]
      [--cachepolicy policy]
      [--cachesettings key=value]
    [--cachepool CachePoolLogicalVolume{Name|Path}]
    [-c|--chunksize ChunkSize]
    [-C|--contiguous {y|n}]
    [--commandprofile ProfileName]
    [-d|--debug]
    [-h|-?|--help]
    [--errorwhenfull {y|n}]
    [--ignoremonitoring]
    [--monitor {y|n}]
    [-i|--stripes Stripes [-I|--stripesize StripeSize]]
    [-k|--setactivationskip {y|n}]
    [-K|--ignoreactivationskip]
    {-l|--extents LogicalExtentsNumber[%{VG|PVS|FREE}] |
     -L|--size LogicalVolumeSize[bBsSkKmMgGtTpPeE]}
    [-M|--persistent {y|n}] [-j|--major major] [--minor minor]
    [--metadataprofile ProfileName]
    [-m|--mirrors Mirrors [--nosync]
      [{--mirrorlog {disk|core|mirrored}|--corelog}]]
    [-n|--name LogicalVolumeName]
    [--noudevsync]
    [-p|--permission {r|rw}]
    [--poolmetadatasize MetadataSize[bBsSkKmMgG]]
    [--poolmetadataspare {y|n}]]
    [--[raid]minrecoveryrate Rate]
    [--[raid]maxrecoveryrate Rate]
    [-r|--readahead {ReadAheadSectors|auto|none}]
    [-R|--regionsize MirrorLogRegionSize]
    [-T|--thin
      [--discards {ignore|nopassdown|passdown}]
    [--thinpool ThinPoolLogicalVolume{Name|Path}]
    [-t|--test]
    [--type VolumeType]
    [-v|--verbose]
    [-W|--wipesignatures {y|n}]
    [-Z|--zero {y|n}]
    [--version]
    VolumeGroupName [PhysicalVolumePath...]

lvcreate
    { {-s|--snapshot} OriginalLogicalVolume[Path] |
      [-s|--snapshot] VolumeGroupName[Path] -V|--virtualsize VirtualSize}
      {-H|--cache} VolumeGroupName[Path][/OriginalLogicalVolume]
      {-T|--thin} VolumeGroupName[Path][/PoolLogicalVolume]
                  -V|--virtualsize VirtualSize}
    [-A|--autobackup {y|n}]
    [--addtag Tag]
    [--alloc AllocationPolicy]
    [--cachepolicy Policy] [--cachesettings Key=Value]
    [-c|--chunksize]
    [-C|--contiguous {y|n}]
    [--commandprofile ProfileName]
    [-d|--debug]
    [--discards {ignore|nopassdown|passdown}]
    [-h|-?|--help]
    [--ignoremonitoring]
    [--monitor {y|n}]
    [-i|--stripes Stripes [-I|--stripesize StripeSize]]
    [-k|--setactivationskip {y|n}]
    [-K|--ignoreactivationskip]
    {-l|--extents LogicalExtentsNumber[%{VG|FREE|ORIGIN}] |
     -L|--size LogicalVolumeSize[bBsSkKmMgGtTpPeE]}
    [--poolmetadatasize MetadataVolumeSize[bBsSkKmMgG]]
    [-M|--persistent {y|n}] [-j|--major major] [--minor minor]
    [--metadataprofile ProfileName]
    [-n|--name LogicalVolumeName]
    [--noudevsync]
    [-p|--permission {r|rw}]
    [-r|--readahead ReadAheadSectors|auto|none]
    [-t|--test]
    [{--thinpool ThinPoolLogicalVolume[Path] |
      --cachepool CachePoolLogicalVolume[Path]}]
    [-v|--verbose]
    [--version]
    [PhysicalVolumePath...]

第六步:格式化、挂载并读写数据

mkfs.xfs /dev/file/disk

or

mkfs.xfs /dev/mapper/file-disk #格式化分区

df –h | grep /disk #检查挂载信息

lvs #lvscan查看lv卷信息

vgs #vgscan查看vg卷组信息

pvs #pvscan查看pv物理卷信息

写入数据,测试卷:

===========================================

实验:PE的大小更改

查看默认的PE大小为:4M,如图:

pvdisplay /dev/sdb1

新建一个分区/dev/sdb6

[root@localhost ~]# fdisk /dev/sdb
Welcome to fdisk (util-linux 2.23.2).

Changes will remain in memory only, until you decide to write them.
Be careful before using the write command.

Command (m for help): n
All primary partitions are in use
Adding logical partition 6
First sector (8394752-41943039, default 8394752):
Using default value 8394752
Last sector, +sectors or +size{K,M,G} (8394752-41943039, default 41943039): +1G
Partition 6 of type Linux and of size 1 GiB is set

Command (m for help): w
The partition table has been altered!

Calling ioctl() to re-read partition table.

WARNING: Re-reading the partition table failed with error 16: Device or resource busy.
The kernel still uses the old table. The new table will be used at
the next reboot or after you run partprobe(8) or kpartx(8)
Syncing disks.
[root@localhost ~]# ls /dev/sdb*
/dev/sdb  /dev/sdb1  /dev/sdb2  /dev/sdb3  /dev/sdb4  /dev/sdb5
[root@localhost ~]# partprobe  #更新分区表
Warning: Unable to open /dev/sr0 read-write (Read-only file system).  /dev/sr0 has been opened read-only.
Warning: Unable to open /dev/sr0 read-write (Read-only file system).  /dev/sr0 has been opened read-only.
Warning: Unable to open /dev/sr0 read-write (Read-only file system).  /dev/sr0 has been opened read-only.
[root@localhost ~]# ls /dev/sdb*
/dev/sdb  /dev/sdb1  /dev/sdb2  /dev/sdb3  /dev/sdb4  /dev/sdb5  /dev/sdb6
[root@localhost ~]#

新建PV和VG,并设置PE大小

vgcreate vg02 /dev/sdb6 –s 1M  #设置PE块大小为1M

pvdisplay /dev/sdb6  #查看PE块大小

================================

实验:LV扩容

查看vg卷组中是否还有可用空间用于扩容   vgs

对disk逻辑卷增加500M空间 lvextend

lvextend –L +500M /dev/file/disk

使用df命令查看逻辑卷大小发现,容量没有变化。这时需要使用在线更新命令。

df –h | grep /disk #查看逻辑卷大小

xfs_growfs /dev/file/disk #RHEL7中,在线更新命令

RHEL6对文件系统进行扩容

[root@xuegod61 ~]# resize2fs /dev/Vg1/LV1

注意在:RHEL7对文件系统进行扩容

xfs_growfs   设备名称

============================================

实验:VG扩容  vgextend vgname pvname

创建PV物理卷

pvcreate /dev/sdb5

将其添加到VG卷组中

vgextend file /dev/sdb5

file 要拓展的卷组名

/dev/sdb5用来拓展的PV物理卷

=========================================================

实验:LVM减少容量

使用df –h 命令查看/disk磁盘使用情况,保证减少容量时,不会报错(保证不会丢失数据)

查看LVM逻辑卷可用空间

lvs

lvreduce –L 1G /dev/file/disk #减少逻辑卷1G容量

再次使用df –h | grep /disk命令查看磁盘容量

造成文件系统不能缩小的原因

RHEL7只能对LV动态的缩减,但是XFS不支持文件系统缩减

lvm支持在线缩减,但是ext4文件系统不支持在线缩减。

支持在线缩减的文件系统:btrfs

lvm支持在线缩小,但是ext4文件系统不支持在线缩小。btrfs支持在线缩小

Btrfs 简介

一直使用 ext2/3,ext 文件系统以其卓越的稳定性成为了事实上的 Linux 标准文件系统。

近年来 ext2/3 暴露出了一些扩展性问题,于是便催生了 ext4 。

ext4 的作者 Theodore Tso 也盛赞 btrfs 并认为 btrfs 将成为下一代 Linux 标准文件系统。

btrfs 的特性:拓展性、数据一致性、和多设备管理相关

第一是扩展性 (scalability) 相关的特性,btrfs 最重要的设计目标是应对大型机器对文件系统的扩展性要求。

其整体性能而不会随着系统容量的增加而降低。

第二是数据一致性 (data integrity) 相关的特性。

第三是和多设备管理相关的特性。 Btrfs 支持创建快照 (snapshot),和克隆 (clone) 。

=========================================================

======

实验:VG减少容量

我要把/dev/sdb1 移除

所在的VG=file

必须保障咱们的物理卷是否被使用

无法缩减一个有数据存在的pv

移除没有被占用的PV物理卷即可减少VG容量

pvs #查看卷组信息,查找没有被存储数据的PV物理卷

vgreduce file /dev/sdb5 #将PV物理卷移除

=========================================================

======

 

 

 

实验:LV删除方法

 

删除步骤相对于创建步骤正好是逆向的。

而且在删除之前必须先卸载对应lvm,否则会产生错误

故删除LV的方法如下:

1、卸载要删除的LVM

umount /disk

2、删除LVM逻辑卷

lvremove /dev/file/disk

3、删除VG卷组

vgremove file

4、删除PV物理卷

pvremove /dev/sdb[1-3]  /dev/sdb[5-6]

详情如下:

注:vgs、pvs、lvs和lvscan、pvscan、vgscan命令效果

==================================================

 

lvm快照

 

关于数据的备份

    冷备份:卸载掉文件系统,不能读不能写

    温备份:不卸载文件系统,能读取文件系统内容但是不能写

   热备份:不卸载文件系统,既能读取文件系统内容又能写入

实验:LVM逻辑卷快照创建

准备一个LVM逻辑卷,并格式化挂载

[root@localhost ~]# ls /dev/sdb*
/dev/sdb  /dev/sdb1  /dev/sdb2  /dev/sdb3  /dev/sdb4  /dev/sdb5  /dev/sdb6
[root@localhost ~]# pvs
  PV         VG   Fmt  Attr PSize  PFree
  /dev/sda2  rhel lvm2 a--  12.00g 4.00m
[root@localhost ~]# pvcreate /dev/sdb[1-3]
  Physical volume "/dev/sdb1" successfully created
  Physical volume "/dev/sdb2" successfully created
  Physical volume "/dev/sdb3" successfully created
[root@localhost ~]# vgcreate file /dev/sdb[1-3]
  Volume group "file" successfully created
[root@localhost ~]# lvcreate -n disk -L 1.5G file
WARNING: xfs signature detected on /dev/file/disk at offset 0. Wipe it? [y/n]: y
  Wiping xfs signature on /dev/file/disk.
  Logical volume "disk" created.

[root@localhost ~]# mkfs.xfs /dev/file/disk
meta-data=/dev/file/disk         isize=256    agcount=4, agsize=98304 blks
         =                       sectsz=512   attr=2, projid32bit=1
         =                       crc=0        finobt=0
data     =                       bsize=4096   blocks=393216, imaxpct=25
         =                       sunit=0      swidth=0 blks
naming   =version 2              bsize=4096   ascii-ci=0 ftype=0
log      =internal log           bsize=4096   blocks=2560, version=2
         =                       sectsz=512   sunit=0 blks, lazy-count=1
realtime =none                   extsz=4096   blocks=0, rtextents=0
[root@localhost ~]# mount /dev/file/disk /disk/
[root@localhost ~]# df -h | grep /disk
/dev/mapper/file-disk  1.5G   33M  1.5G   3% /disk

[root@localhost ~]# echo "hello world! " >> /disk/a.txt
[root@localhost ~]# cat /disk/a.txt
hello world!
[root@localhost ~]# vgs
  VG   #PV #LV #SN Attr   VSize  VFree
  file   3   1   0 wz--n-  2.99g 1.49g
  rhel   1   2   0 wz--n- 12.00g 4.00m
[root@localhost ~]# lvcreate -s -n disk_back -L 500M /dev/file/disk
  Logical volume "disk_back" created.
[root@localhost ~]# lvs
  LV        VG   Attr       LSize   Pool Origin Data%  Meta%  Move Log Cpy%Sync Convert
  disk      file owi-aos---   1.50g                                                   
  disk_back file swi-a-s--- 500.00m      disk   0.00                                  
  root      rhel -wi-ao----  10.00g                                                   
  swap      rhel -wi-ao----   2.00g                                                   
[root@localhost ~]# umount /disk/
[root@localhost ~]# mount /dev/file/disk_back /disk/
c[root@localhost ~]# cd /disk/
[root@localhost disk]# ls
a.txt
[root@localhost disk]# cat a.txt
hello world!

 

 

首先准备一个LV

因为步骤错误 你们可以直接执行这个步骤

格式化并且挂载使用

准备测试文件

针对lv2创建一个300M快照

确保卷组是否有可用的空间


lvcreate -s -n 快照名 -L 快照大小 创建快照的设备

快照其实也是一个逻辑卷

     快照只能对逻辑卷LVM进行备份,并且只能对同一个卷组的逻辑卷进行备份

使用快照

快照:

直接在快照的目录做操作,对原本的目录没有任何的影响

恢复:

删除快照,重新挂载原本lv1

1-16-1 LVM管理和ssm存储管理器使用&磁盘配额的更多相关文章

  1. 1-18-1 LVM管理和ssm存储管理器使用&磁盘配额(一)

    LVM管理和ssm存储管理器使用&磁盘配额(一) LVM逻辑卷的管理 问题:对于生产环境下的服务器来说,如果存储数据的分区磁盘空间不够了怎么办? 因为如果要把一个分区的内容都拷贝到另一个分区上 ...

  2. 1-18-2 LVM管理和ssm存储管理器使用&磁盘配额 (二)

    LVM管理和ssm存储管理器使用&磁盘配额  (二) 内容如下: ü  LVM快照 ü  ssm存储管理器的使用 ü  磁盘配额 第1章 LVM快照 lvm快照:为了保持系统的一致性,我们先做 ...

  3. 1-16-2 LVM管理和ssm存储管理器使用&磁盘配额

    ssm存储管理器使用&磁盘配额 ssm存储管理器使用 系统存储管理器的使用 系统存储管理器(又称ssm,即system-storage-manager),是RHEL7/CentOS7新增的功能 ...

  4. 第十五章 LVM管理和ssm存储管理器使用 随堂笔记

    第十五章 LVM管理和ssm存储管理器使用 本节所讲内容: 15.1 LVM的工作原理 15.2 创建LVM的基本步骤 15.3 实战-使用SSM工具为公司的邮件服务器创建可动态扩容的存储池 LVM的 ...

  5. 学习笔记:CentOS7学习之十六:LVM管理和ssm存储管理器使用

    目录 学习笔记:CentOS7学习之十六:LVM管理和ssm存储管理器使用 16.1 LVM的工作原理 16.1.1 LVM常用术语 16.1.2 LVM优点 16.2 创建LVM的基本步骤 16.2 ...

  6. LVM与磁盘配额

    LVM与磁盘配额 目录 一.LVM概述 1.1.LVM 概述 1.2.LVM机制的基本概念 二.LVM 管理命令 2.1.主要命令 2.2.LVM命令详解 三.设置磁盘配额 3.1.磁盘配额的概述 3 ...

  7. 二、存储管理器--SDRAM

    2.1 硬件结构 2.1.1 硬件框图 CPU 通过存储管理器来读取 SDRAM 网卡 等外部设备,CPU不管外部设备是怎么样的,只是读存储管理器中的地址 CPU从0x30000000地址读取数据. ...

  8. JZ2440存储管理器--SDRAM

     为了cpu访问外部设备,ARM提供一个存储管理器部件,提供访问外部设备的所需的信号(对SDRAM.网卡.nor等设备进行初始化,以便存储器管理器配合CPU进行与外设数据通讯).   CPU通常读写一 ...

  9. 解析Linux中LVM与磁盘配额

    LVM 逻辑卷管理 LVM 概述 LVM 是 Linux 操作系统中对磁盘分区进行管理的一种逻辑机制,它是建立在硬盘和分区之上.文件系统之下的一个逻辑层,在建立文件系统时屏蔽了下层的磁盘分区布局,因此 ...

随机推荐

  1. 推荐系统第4周--- 基于频繁模式的推荐系统和关联规则挖掘Apriori算法

    数据挖掘:关联规则挖掘

  2. XVII Open Cup named after E.V. Pankratiev Stage 14, Grand Prix of Tatarstan, Sunday, April 2, 2017 Problem L. Canonical duel

    题目:Problem L. Canonical duelInput file: standard inputOutput file: standard outputTime limit: 2 seco ...

  3. iOS 关于BTC 一些知识点

    1.BTC 用这个网 可以校验 自己的库生成的助记词 地址 是否是合法正常的 https://iancoleman.io/bip39/ 2.知晓 BTC 钱包是否有钱 和交易记录 https://te ...

  4. nmon监控及简要分析

    性能测试中,各个服务器资源占用统计分析是一个很重要的组成部分,通常我们使用nmon这个工具来进行监控以及监控结果输出. 一. 在监控阶段使用类似下面的命令 ./nmon -f write_3s_20v ...

  5. Axure的总结

    1.Axure的用途      Axure RP 能帮助网站需求设计者,快捷而简便的创建基于网站构架图的带注释页面示意图.操作流程图.以及交互设计,并可自动生成用于演示的网页文件和规格文件,以提供演示 ...

  6. 编写和运行简单的"Hello World"操作系统内核

    通常编写一个操作系统内核是一项浩大的工程.但我今天的目标是制作一个简单的内核,用比较方便的方法在虚拟机上验证它能够被grub装载和运行,并且可通过gdb进行调试,为接下去的工作创造一个基础环境. 首先 ...

  7. Python面试题目之Python的复制和赋值浅析

    python采用的是引用变量的结构,也就说如果你对一个变量赋值,并不是给这个变量开辟了一块内存空间而是将一个对象的内存空间地址告诉了这个变量,这样做的好处是便于管理,节省内存空间,便于内存释放等等.但 ...

  8. mysql-connector-java小笔记

    Java 连接MySQL需要驱动包,否则JDBC无法访问数据库(无法注册驱动),常用的是mysql-connector-java,在idea中新建项目时可以在选择依赖时勾选Mysql,这样就会自动加载 ...

  9. 20145307JAVA学习期末总结

    20145307<Java程序设计>课程总结 每周读书笔记链接汇总 20145307 <Java程序设计>第一周学习总结:http://www.cnblogs.com/Jcle ...

  10. 20145310《Java程序设计》第2次实验报告

    20145310<Java程序设计>第2次实验报告 实验内容 初步掌握单元测试和TDD 理解并掌握面向对象三要素:封装.继承.多态 初步掌握UML建模 熟悉S.O.L.I.D原则 了解设计 ...