一、什么是LVM逻辑卷

LVM是 Logical Volume Manager(逻辑卷管理)的简写,它是Linux环境下对磁盘分区进行管理的一种机制,它由Heinz Mauelshagen在Linux 2.4内核上实现,目前最新版本为:稳定版1.0.5,开发版 1.1.0-rc2,以及LVM2开发版。

Linux用户安装Linux操作系统时遇到的一个常见的难以决定的问题就是如何正确地评估各分区大小,以分配合适的硬盘空间。普通的磁盘分区管理方式在逻辑分区划分好之后就无法改变其大小,当一个逻辑分区存放不下某个文件时,这个文件因为受上层文件系统的限制,也不能跨越多个分区来存放,所以也不能同时放到别的磁盘上。而遇到出现某个分区空间耗尽时,解决的方法通常是使用符号连接(软链接),或者使用调整分区大小的工具(分区重规划),但这只是暂时解决办法,没有从根本上解决问题。随着Linux的逻辑卷管理功能的出现,这些问题都迎刃而解,用户在无需停机的情况下可以方便地调整各个分区大小。

二、为什么使用LVM

每个Linux使用者在安装Linux时都会遇到这样的困境:在为系统分区时,如何精确评估和分配各个硬盘分区的容量?

因为系统管理员不但要考虑到当前某个分区需要的容量,还要预见该分区以后可能需要的容量的最大值。因为如果估 计不准确,当遇到某个分区不够用时管理员可能甚至要备份整个系统、清除硬盘、重新对硬盘分区,然后恢复数据到新分区。

虽然有很多动态调整磁盘的工具可以使用,例如PartitionMagic等等,但是它并不能完全解决问题,因为某个分区可能会再次被耗尽;另外一个方面这需要 重新引导系统才能实现,对于很多关键的服务器,停机是不可接受的,而且对于添加新硬盘,希望一个能跨越多个硬盘驱动器的文件系统时,分区调整程序就不能解 决问题。

因此完美的解决方法应该是在零停机前提下可以自如对文件系统的大小进行调整,可以方便实现文件系统跨越不同磁盘和分区。幸运的是Linux提供的逻辑盘卷管理(LVM,LogicalVolumeManager)机制就是一个完美的解决方案。

三、LVM的工作方式

逻辑卷管理器(LogicalVolumeManager)本质上是一个虚拟设备驱动,是在内核中块设备和物理设备之间添加的一个新的抽象层次

传统的分区方式是直接对硬盘设备分区,而lvm是对逻

如图所示。它可以将几块磁盘(物理卷,PhysicalVolume)组合起来形成一个存储池或者卷组(VolumeGroup)。

LVM可以每次从卷组中划分出不同大小的逻辑卷(LogicalVolume)创建新的逻辑设备。底层的原始的磁盘不再由内核直接控制,而由LVM层来控制。

对于上层应用(系统软件,应用软件)来说卷组替代了磁盘块成为数据存储的基本单元。LVM管理着所有物理卷的物理盘区,维持着逻辑盘区和物理盘区之间的映射。LVM逻辑设备向上层应用提供了和物理磁盘相同的功能,如文件系统的创建和数据的访问等。但LVM逻辑设备不受物理约束的限制,逻辑卷不必是连续的空间,它可以跨越许多物理卷,并且可以在任何时候任意的调整大小。相比物理磁盘来说,更易于磁盘空间的管理。

从用户态应用来看,LVM逻辑卷相当于一个普通的块设备,对其的读写操作和普通的块设备完全相同。而从物理设备层来看,LVM相对独立于底层的物理设备,并且屏蔽了不同物理设备之间的差异。因而在LVM层上实现数据的连续保护问题,可以不需要单独考虑每一种具体的物理设备,避免了在数据复制过程中因物理设备之间的差异而产生的问题。从LVM的内核实现原理上看,LVM是在内核通用块设备层到磁盘设备驱动层的请求提交流之间开辟的另外一条路径,即在通用块设备层到磁盘设备驱动层之间插入了LVM管理映射层用于截获一定的请求进行处理,如图所示。 [

用户通过lvm提供接口,依靠内核创建一系列LVM逻辑卷,所有对lvm逻辑卷的读写操作最终都会由LVM在通用块设备层下方截获下来,进行更进一步的处理。这里的进一步处理主要指的是完成写请求的映射,是将请求的数据根据实际情况进行一些拆分和重定位操作,从而可以将请求和数据分发到实际的物理设备中去。

四、LVM管理工具集

五、新建一个逻辑卷

1.任务

本例要求准备一个磁盘,并且做好分区,我准备了一个10G大小的磁盘,并且做了一个主分区/dev/vda1 5G.使用分区 /dev/vda1 构建 LVM 存储,相关要求如下:

  1. 新建一个名为 systemvg 的卷组
  2. 在此卷组中创建一个名为 vo 的逻辑卷,大小为180MiB
  3. 将逻辑卷 vo 格式化为 EXT4 文件系统
  4. 将逻辑卷 vo 挂载到 /vo 目录,并在此目录下建立一个测试文件 votest.txt,内容为“I AM KING.”

[Linux磁盘分区管理]https://blog.csdn.net/ck784101777/article/details/101797858

2.使用到的命令

LVM创建工具的基本用法:

  1. vgcreate 卷组名 物理设备.. ..
  2. lvcreate -L 大小 -n 逻辑卷名 卷组名

3.创建卷组

1)新建名为systemvg的卷组

创建卷组很简单,直接将分好区的磁盘作为卷组即可,此处卷组名为systemvg

  1. [root@server0 ~]# vgcreate systemvg /dev/vda1
  2. Physical volume "/dev/vdb1" successfully created
  3. Volume group "systemvg" successfully created

2)确认结果

命令vgscan查看卷组详情,可查看卷组名和文件类型

  1. [root@server0 ~]# vgscan
  2. Reading all physical volumes. This may take a while...
  3. Found volume group "systemvg" using metadata type lvm2

2.创建逻辑卷

1)新建名为vo的逻辑卷

指定大小为180MiB(可写成-L 180m 或者-L 0.18G) -n指定逻辑卷名,最后跟上卷组名,表示用哪块卷组为此逻辑卷分配空间

  1. [root@server0 ~]# lvcreate -L 180MiB -n vo systemvg
  2. Logical volume "vo" created

2)确认结果

  1. [root@server0 ~]# lvscan
  2. ACTIVE '/dev/systemvg/vo' [180.00 MiB] inherit

3,.格式化及挂载使用

1)格式化逻辑卷/dev/systemvg/vo

格式化成ext4文件类型

  1. [root@server0 ~]# mkfs.ext4 /dev/systemvg/vo
  2. .. ..
  3. Allocating group tables: done
  4. Writing inode tables: done
  5. Creating journal (4096 blocks): done
  6. Writing superblocks and filesystem accounting information: done

2)挂载逻辑卷/dev/systemvg/vo

创建的逻辑卷名的路径为 /dev/卷组名/逻辑卷名

  1. [root@server0 ~]# mkdir /vo                                //创建挂载点
  2. [root@server0 ~]# mount /dev/systemvg/vo   /vo             //挂载
  3. [root@server0 ~]# df -hT /vo/                         //检查结果
  4. Filesystem Type Size Used Avail Use% Mounted on
  5. /dev/mapper/systemvg-vo ext4 171M 1.6M 157M 1% /vo

六、调整现有磁盘的分区,使用逻辑分区做逻辑卷

实验内容:

本例要求沿用前一天案例,对磁盘/dev/vda的分区表进行调整,要求如下:不更改原有分区,利用剩余空间新增三个分区,大小依次为:500MiB、2000MiB、512MiB

然后再基于刚建立的 2000MiB 分区构建新的 LVM 存储:

  1. 新的逻辑卷命名为 database,大小为50个物理扩展单元(Physical Extent),属于 datastore 卷组
  2. 在 datastore 卷组中的所有逻辑卷,其物理扩展单元(Physical Extent)的大小为16MiB
  3. 使用 EXT3 文件系统对逻辑卷 database 格式化,此逻辑卷应该在开机时自动挂载到 /mnt/database 目录

实验前需知:

1)创建卷组时,可以通过-s选项指定PE的大小。

2)在给新建的逻辑卷分配空间时,空间大小只能是PE大小的倍数。

3) 使用fdisk进行磁盘分区,分区的规则规定1-3为主分区,4为扩展分区

我已经创建了3个主分区,当我创建了3个主分区后,系统会要求我创建扩展分区,简单介绍一下扩展分区和逻辑分区的关系,

当我们创建了足够的分区后(3个主分区,1个扩展分区),接下来系统会提示你All primary partitions are in use,Adding logical partition(所有主分区已经用光,添加逻辑分区),然后会让你创建一个扩展分区,但是扩展分区是不能直接用的,他是以逻辑分区的方式来使用的,所以说扩展分区可分成若干逻辑分区。他们的关系是包含的关系,所有的逻辑分区都是扩展分区的一部分

总结起来就是:创建扩展分区,再通过创建逻辑分区使用扩展分区

如图,紫色区域是主分区,黄色区域为扩展区分区,红色区域为存在于扩展分区中的逻辑分区

【Linux系统磁盘管理】https://blog.csdn.net/ck784101777/article/details/101797858

步骤一:调整现有磁盘分区

1)新建扩展分区(使用剩余可用空间)

  1. [root@server0 ~]# fdisk /dev/vda
  2. Command (m for help): p                                 //确认原有分区表,有3个主分区
  3. .. ..
  4. Device Boot Start End Blocks Id System
  5. /dev/vda1 2048 411647 204800 8e Linux LVM
  6. /dev/vda2 411648 4507647 2048000 83 Linux
  7. /dev/vda3 4507648 6555647 1024000 83 Linux
  8. Command (m for help): n                                     //新建分区
  9. Partition type:
  10. p primary (3 primary, 0 extended, 1 free)
  11. e extended
  12. Select (default e): e                                   //类型指定为e(扩展分区)
  13. Selected partition 4                                     //只一个可用编号,自动选取
  14. First sector (6555648-20971519, default 6555648):         //起始位置默认
  15. Using default value 6555648
  16. Last sector, +sectors or +size{K,M,G} (6555648-20971519, default 20971519):
  17. Using default value 20971519                             //结束位置默认
  18. Partition 4 of type Extended and of size 6.9 GiB is set
  19. Command (m for help): p
  20. .. ..
  21. Device Boot Start End Blocks Id System
  22. /dev/vda1 2048 411647 204800 8e Linux LVM
  23. /dev/vda2 411648 4507647 2048000 83 Linux
  24. /dev/vda3 4507648 6555647 1024000 83 Linux
  25. /dev/vda4 6555648 20971519 7207936 5 Extended

2)在扩展分区中新建3个逻辑分区

在这里我们需要创建三个逻辑分区

创建第1个逻辑分区(由于主分区编号已用完,分区类型自动选l逻辑分区):

  1. Command (m for help): n
  2. All primary partitions are in use
  3. Adding logical partition 5                             //分区编号5
  4. First sector (6557696-20971519, default 6557696):         //起始位置默认
  5. Using default value 6557696
  6. Last sector, +sectors or +size{K,M,G} (6557696-20971519, default 20971519): +500M
  7. //结束位置默认
  8. Partition 5 of type Linux and of size 500 MiB is set

创建第2个逻辑分区:

  1. Command (m for help): n
  2. All primary partitions are in use
  3. Adding logical partition 6                             //分区编号6
  4. First sector (7583744-20971519, default 7583744):         //起始位置默认
  5. Using default value 7583744
  6. Last sector, +sectors or +size{K,M,G} (7583744-20971519, default 20971519): +2000M
  7. //结束位置默认
  8. Partition 6 of type Linux and of size 2 GiB is set

创建第3个逻辑分区:

  1. Command (m for help): n
  2. All primary partitions are in use
  3. Adding logical partition 7                             //分区编号7
  4. First sector (11681792-20971519, default 11681792):     //起始位置默认
  5. Using default value 11681792
  6. Last sector, +sectors or +size{K,M,G} (11681792-20971519, default 20971519): +512M
  7. //结束位置默认
  8. Partition 7 of type Linux and of size 512 MiB is set

根据预计的用途调整分区类型(可选):

  1. Command (m for help): t                                 //修改
  2. Partition number (1-7, default 7): 5                     //第5个分区
  3. Hex code (type L to list all codes): 8e                 //类型为8e(LVM)
  4. Changed type of partition 'Linux' to 'Linux LVM'
  5. Command (m for help): t                                 //修改
  6. Partition number (1-7, default 7): 6                     //第6个分区
  7. Hex code (type L to list all codes): 8e                 //类型为8e(LVM)
  8. Changed type of partition 'Linux' to 'Linux LVM'
  9. Command (m for help): t                                 //修改
  10. Partition number (1-7, default 7): 7                     //第7个分区
  11. Hex code (type L to list all codes): 82                 //类型为82(交换分区)
  12. Changed type of partition 'Linux' to 'Linux swap / Solaris'

确认分区结果并保存:

  1. Command (m for help): p
  2. .. ..
  3. Device Boot Start End Blocks Id System
  4. /dev/vdb1 2048 411647 204800 8e Linux LVM
  5. /dev/vdb2 411648 4507647 2048000 83 Linux
  6. /dev/vdb3 4507648 6555647 1024000 83 Linux
  7. /dev/vdb4 6555648 20971519 7207936 5 Extended
  8. /dev/vdb5 6557696 7581695 512000 8e Linux LVM
  9. /dev/vdb6 7583744 11679743 2048000 8e Linux LVM
  10. /dev/vdb7 11681792 12730367 524288 82 Linux swap / Solaris
  11. Command (m for help): w                                 //保存退出
  12. The partition table has been altered!
  13. Calling ioctl() to re-read partition table.
  14. WARNING: Re-reading the partition table failed with error 16: Device or resource busy.
  15. The kernel still uses the old table. The new table will be used at
  16. the next reboot or after you run partprobe(8) or kpartx(8)
  17. Syncing disks.                                         //提示重启

3)刷新分区表

  1. [root@server0 ~]# partprobe /dev/vdb
  2. [root@server0 ~]# reboot

步骤二:新建卷组、逻辑卷

1)新建卷组datastore,指定PE大小为16Mi

【什么是PE】https://blog.csdn.net/ck784101777/article/details/98172012

  1. [root@server0 ~]# vgcreate -s 16MiB datastore /dev/vdb6
  2. Volume group "datastore" successfully created
  3. [root@server0 ~]# vgscan                                 //确认新建的卷组
  4. Reading all physical volumes. This may take a while...
  5. Found volume group "systemvg" using metadata type lvm2
  6. Found volume group "datastore" using metadata type lvm2

2)新建逻辑卷database,大小设置为50个PE

指定逻辑卷大小的方式有两种,一是-L 后跟大小(M,G,KB),二是 -l 后跟PE数量

上面创建卷组时指定一个pe大小为16m,所以这里总大小为16*50=800

  1. [root@server0 ~]# lvcreate -l 50 -n database datastore
  2. Logical volume "database" created
  3. [root@server0 ~]# lvscan                                 //确认新建的逻辑卷
  4. ACTIVE '/dev/systemvg/vo' [180.00 MiB] inherit
  5. ACTIVE '/dev/datastore/database' [800.00 MiB] inherit

步骤三:格式化及使用逻辑卷

1)格式化逻辑卷/dev/datastore/database

  1. [root@server0 ~]# mkfs.ext3 /dev/datastore/database
  2. .. ..
  3. Allocating group tables: done
  4. Writing inode tables: done
  5. Creating journal (4096 blocks): done
  6. Writing superblocks and filesystem accounting information: done

2)配置开机挂载

  1. [root@server0 ~]# mkdir /mnt/database                     //创建挂载点
  2. [root@server0 ~]# vim /etc/fstab
  3. .. ..
  4. /dev/datastore/database /mnt/database ext3 defaults 0 0

3)验证挂载配置

  1. [root@server0 ~]# mount -a
  2. [root@server0 ~]# df -hT /mnt/database/                 //确认挂载点设备
  3. Filesystem Type Size Used Avail Use% Mounted on
  4. /dev/mapper/datastore-database ext3 772M 828K 715M 1% /mnt/database

六、扩展卷组大小,扩展逻辑卷的大小

实验内容:

本实验需要准备一张逻辑卷,大小随意,我上面的实验中创建了一个逻辑卷vo,大小180M,我将使用此逻辑卷完成实验

  1. 原文件系统中的内容必须保持完整
  2. 必要时可使用其他磁盘的分区来扩展
  3. 注意:分区大小很少能完全符合要求的大小,所以大小在270MiB和300MiB之间都是可以接受的(PE调整到1即可解决)

实验前需知:

对于已经格式化好的逻辑卷,在扩展大小以后,必须通知内核新大小,可以通过以下工具来通知内核

2)如果此逻辑卷上的文件系统是EXT3/EXT4类型,需要使用resize2fs工具;

3)如果此逻辑卷上的文件系统是XFS类型,需要使用xfs_growfs。

实现此案例需要按照如下步骤进行。

步骤一:确认逻辑卷vo的信息

1)找出逻辑卷所在卷组

查看一下有多少个逻辑卷

  1. [root@server0 ~]# lvscan
  2. ACTIVE '/dev/systemvg/vo' [180.00 MiB] inherit
  3. ACTIVE '/dev/datastore/database' [800.00 MiB] inherit

2)查看该卷组的剩余空间是否可满足扩展需要

终点需要关注的内容我用红色标记出来了,第一个是卷组总大小,第二个是PE大小,第三个是当前逻辑卷卷大小(用PE表示或M表示)

此例中卷组systemvg的总大小都不够300MiB、剩余空间才16MiB,因此必须先扩展卷组。只有剩余空间足够,才可以直接扩展逻辑卷大小。

  1. [root@server0 ~]# vgdisplay systemvg
  2. --- Volume group ---
  3. VG Name systemvg
  4. System ID
  5. Format lvm2
  6. Metadata Areas 1
  7. Metadata Sequence No 2
  8. VG Access read/write
  9. VG Status resizable
  10. MAX LV 0
  11. Cur LV 1
  12. Open LV 0
  13. Max PV 0
  14. Cur PV 1
  15. Act PV 1
  16. VG Size 196.00 MiB                         //卷组总大小
  17. PE Size 4.00 MiB
  18. Total PE 49
  19. Alloc PE / Size 45 / 180.00 MiB
  20. Free PE / Size 4 / 16.00 MiB                     //剩余空间大小
  21. VG UUID czp8IJ-jihS-Ddoh-ny38-j521-5X8J-gqQfUN

步骤二:扩展卷组

1)将提前准备的分区/dev/vdb5添加到卷组systemvg

我们要准备一个分区,可以是主分区或逻辑分区

  1. [root@server0 ~]# vgextend systemvg /dev/vdb5
  2. Physical volume "/dev/vdb5" successfully created
  3. Volume group "systemvg" successfully extended

2)确认卷组新的大小

  1. [root@server0 ~]# vgdisplay systemvg
  2. --- Volume group ---
  3. VG Name systemvg
  4. .. ..
  5. VG Size 692.00 MiB                         //总大小已变大
  6. PE Size 4.00 MiB
  7. Total PE 173
  8. Alloc PE / Size 45 / 180.00 MiB
  9. Free PE / Size 128 / 512.00 MiB                 //剩余空间已达512MiB
  10. VG UUID czp8IJ-jihS-Ddoh-ny38-j521-5X8J-gqQfUN

步骤三:扩展逻辑卷大小

1)将逻辑卷/dev/systemvg/vo的大小调整为300MiB

我们已经将卷组的大小扩充了,现在我们要扩展逻辑卷的大小,-L 扩容大,注意,这里的扩容是扩容到300M而不是在原基础上添加300M

  1. [root@server0 ~]# lvextend -L 300MiB /dev/systemvg/vo
  2. Extending logical volume vo to 300.00 MiB
  3. Logical volume vo successfully resized

2)确认调整结果

  1. [root@server0 ~]# lvscan
  2. ACTIVE '/dev/systemvg/vo' [300.00 MiB] inherit
  3. ACTIVE '/dev/datastore/database' [800.00 MiB] inherit

3)刷新文件系统大小

确认逻辑卷vo上的文件系统类型:

  1. [root@server0 ~]# blkid /dev/systemvg/vo
  2. /dev/systemvg/vo: UUID="d4038749-74c3-4963-a267-94675082a48a" TYPE="ext4"

选择合适的工具刷新大小:

  1. [root@server0 ~]# resize2fs /dev/systemvg/vo
  2. resize2fs 1.42.9 (28-Dec-2013)
  3. Resizing the filesystem on /dev/systemvg/vo to 307200 (1k) blocks.
  4. The filesystem on /dev/systemvg/vo is now 307200 blocks long.

确认新大小(约等于300MiB):

  1. [root@server0 ~]# mount /dev/systemvg/vo /vo/
  2. [root@server0 ~]# df -hT /vo
  3. Filesystem Type Size Used Avail Use% Mounted on
  4. /dev/mapper/systemvg-vo ext4 287M 2.1M 266M 1% /vo

LVM逻辑卷,LVM管理工具集,LVM创建逻辑卷,调整现有磁盘的分区,使用逻辑分区做逻辑卷,扩展卷组大小,扩展逻辑卷的大小相关推荐

  1. 管理员技术(六): 硬盘分区及格式化、 新建一个逻辑卷、调整现有磁盘的分区、扩展逻辑卷的大小、添加一个swap分区...

    一.硬盘分区及格式化 问题: 本例要求熟悉硬盘分区结构,使用fdisk分区工具在磁盘 /dev/vdb 上按以下要求建立分区: 1> 采用默认的 msdos 分区模式         2> ...

  2. 新建逻辑卷, 调整现有磁盘分区, 扩展逻辑卷大小, find查找并处理文件

    案例1:新建一个逻辑卷 案例2:调整现有磁盘的分区 案例3:扩展逻辑卷的大小 案例4:查找并处理文件 1 案例1:新建一个逻辑卷 1.1 问题 本例要求沿用前一天案例,使用分区 /dev/vdb1 构 ...

  3. 虚拟化之Proxmox VE集群管理工具pvecm介绍和使用

    一.pvecm简介   Proxmox VE 集群管理工具 pvecm 用于创建一个由多个物理服务器节点构成的"组".这样的一组服务器称为一个"集群".Prox ...

  4. Linux 系统管理员工具集

    <Linux 系统管理员工具集> 基本信息 作者: 曹江华 林捷 出版社:电子工业出版社 ISBN:9787121201318 上架时间:2013-5-13 出版日期:2013 年5月 开 ...

  5. 磁盘管理工具专业解决磁盘分区问题

    常见的磁盘分区问题有哪些 1.怎么扩展卷/压缩卷/无损调整分区大小? 2.如何迁移操作系统到其他硬盘(HDD/SSD)? 3.MBR/GPT磁盘怎么互相转换? 4.基本盘/动态盘如何互转? 5.主/逻 ...

  6. 最好的磁盘管理工具Acronis Disk Director Suite 10.0的强大功能介绍

    今天处于无奈我不得不将C盘容量扩大,不然红红的C盘必然不能再让我的机子有良好的性能,在网上搜了一下,发现大家介绍了一款不错的工具,Acronis Disk Director ,经过本人的亲身验证,这的 ...

  7. (翻译)LearnVSXNow! #6 - 创建我们第一个工具集 - 序幕

    在前面的文章中,我们在向导的帮助下创建了一些小的VSPackages.在第五讲中我们整理了VSX的一些思路和概念,深入VSPackages 了解了packages如何工作以及服务的机制.在这篇文章中我 ...

  8. 转贴:Hyper-V的几款免费管理工具

    原贴链接:http://vmsky.com/tech/Microsoft/hyperv/2009/10/23/5983.html 如何在已经免费的产品上做改进?另外,为什么要增加更多的免费产品使相关技 ...

  9. Windows磁盘管理软件/磁盘管理工具/硬盘分区管理工具

    说到磁盘管理软件/磁盘管理工具/硬盘分区管理工具,大家可能会想到Windows自带的磁盘管理器,可以做简单的创建.删除.格式化.压缩.扩展卷.基本盘/动态盘互转.MBR/GPT盘格式互转等操作.但是对 ...

最新文章

  1. 谷歌最新的PlaNet对强化学习以及迁移学习的意义及启发
  2. WebService大讲堂之Axis2(4):二进制文件传输
  3. win32汇编实现拼接SQL语句
  4. 远程连接云服务器的MySQL数据库
  5. cocos2d menu菜单类
  6. [你必须知道的.NET] 调试技巧 - DebuggerDisplayAttribute
  7. 元年深度 | 侧袋机制应用实务探讨
  8. 药店药品管理方案,药店药品的盘点方案,假设进行药店药品的高效盘点?药品盘点步骤是?...
  9. 使用 IBM Rational System Architect 工作区来实施 DoDAF 2 架构
  10. 计算机快捷键word,计算机类009-Word的快捷键集锦.doc
  11. 标题中冒号的用法_英文中冒号的各种用法
  12. android定时器常用方法,Android计时器的三种实现方式
  13. 竖流式沉淀池集水槽设计计算_竖流沉淀池设计计算书.doc
  14. python出现Unknown label type: 'continuous'问题
  15. 如何利用 C# 爬取「猫眼电影:国内票房榜」及对应影片信息!
  16. 利用Python进行股票交易分析(三):A股量化交易策略的验证及数据分析。
  17. python读取微博文本数据,对微博文本进行分句(分句主要以特定的标点符号为主)。...
  18. excel如何打开100万行以上的csv文件
  19. java打印任意边长的菱形
  20. 源代码托管网站BitBucket

热门文章

  1. 省市区 字母排序json数据
  2. linux 用户行为审计
  3. WidsMob FilmPack for Mac(模拟胶片滤镜软件)
  4. JAVA for循环画图(包括圆形,心形)
  5. 农业掀起“上链”潮 区块链等数字技术正成为乡村振兴新动力
  6. Web攻击检测机器学习深度实践
  7. 树莓派3B+ 移动硬盘启动系统,从SD卡直接复制系统
  8. 如何搭建spring环境
  9. 在python中函数不可以嵌套调用_在Python中调用嵌套函数
  10. 服务器文件存储设置大小,云服务器存储文件大小