这几天学习了一下分区,不经意间想起了三国演义开篇词:“合久必分,分久必合”,看来这句话也适合数据库,英文手册和中文手册对比,更新了很多东西,以后尽量看英文的了,下面是学习笔记:

理论部分:

1,基本概念:

分区可以设置任意大小的规则,跨文件系统分配单个表的多个部分。实际上,表的不同部分在不同的位置被存储为单独的表。用户所选择的、实现数据分割的规则被称为分区函数,这在MySQL中它可以是模数,或者是简单的匹配一个连续的数值区间或数值列表,或者是一个内部HASH函数,或一个线性HASH函数。函数根据用户指定的分区类型来选择,把用户提供的表达式的值作为参数。该表达式可以是一个整数列值,或一个作用在一个或多个列值上并返回一个整数的函数。这个表达式的值传递给分区函数,分区函数返回一个表示那个特定记录应该保存在哪个分区的序号。这个函数不能是常数,也不能是任意数。它不能包含任何查询,但是实际上可以使用MySQL 中任何可用的SQL表达式,只要该表达式返回一个小于MAXVALUE(最大可能的正整数)的正数值。

2,注意事项:

对于创建了分区的表,可以使用你的MySQL 服务器所支持的任何存储引擎;MySQL 分区引擎在一个单独的层中运行,并且可以和任何这样的层进行相互作用。在MySQL 5.1版中,同一个分区表的所有分区必须使用同一个存储引擎;例如,不能对一个分区使用MyISAM,而对另一个使用InnoDB。但是,这并不妨碍在同一个 MySQL 服务器中,甚至在同一个数据库中,对于不同的分区表使用不同的存储引擎。

分区适用于一个表的所有数据和索引;不能只对数据分区而不对索引分区,反之亦然,同时也不能只对表的一部分进行分区。

可以通过使用用来创建分区表的CREATE TABLE语句的PARTITION子句的DATA DIRECTORY(数据路径)和INDEX DIRECTORY(索引路径)选项,为每个分区的数据和索引指定特定的路径。此外,MAX_ROWS和MIN_ROWS选项可以用来设定最大和最小的行数,它们可以各自保存在每个分区里。

无论使用何种类型的分区,分区总是在创建时就自动的顺序编号,且从0开始记录,记住这一点非常重要。当有一新行插入到一个分区表中时,就是使用这些分区编号来识别正确的分区。例如,如果你的表使用4个分区,那么这些分区就编号为0, 1, 2, 和3。对于RANGE和LIST分区类型,确认每个分区编号都定义了一个分区,很有必要。对HASH分区,使用的用户函数必须返回一个大于0的整数值。对于KEY分区,这个问题通过MySQL服务器内部使用的 哈希函数自动进行处理。

3,分区类型:

RANGE分区

按照RANGE分区的表是通过如下一种方式进行分区的,每个分区包含那些分区表达式的值位于一个给定的连续区间内的行。这些区间要连续且不能相互重叠,使用VALUES LESS THAN  操作符来进行定义。

lIST分区

类似于RANGE分区,区别在于LIST分区是基于列值匹配一个离散值集合中的某个值来进行选择。

HASH分区

HASH分区主要用来确保数据在预先确定数目的分区中平均分布。在RANGE和LIST分区中,必须明确指定一个给定的列值或列值集合应该保存在哪个分区中;而在HASH分区中,MySQL 自动完成这些工作,你所要做的只是基于将要被哈希的列值指定一个列值或表达式,以及指定被分区的表将要被分割成的分区数量。

KEY分区

类似于HASH分区,区别在于KEY分区只支持计算一列或多列,且MySQL 服务器提供其自身的哈希函数。必须有一列或多列包含整数值。

测试实例:

1,range测试实例:

说明:employees表保存有20家音像店的职员记录,这20家音像店的编号从1到20,按照这种分区方案,在商店1到5工作的职员相对应的所有行被保存在分区P0中,商店6到10的职员保存在P1中,依次类推,大于或等于16的职员都保存在P3中。PARTITION BY RANGE 语法要求每个分区都是按顺序进行定义,从最低到最高,AXVALUE 表示最大的可能的整数值,在将来的某个时候,当商店数已经增长到25,30 或更多,可以使用ALTER TABLE语句为商店21-25, 26-30,等等增加新的分区。

mysql> CREATE TABLE employees (

->     id INT NOT NULL,

->     fname VARCHAR(30),

->     lname VARCHAR(30),

->     hired DATE NOT NULL DEFAULT '1970-01-01',

->     separated DATE NOT NULL DEFAULT '9999-12-31',

->     job_code INT NOT NULL,

->     store_id INT NOT NULL

-> )

-> PARTITION BY RANGE (store_id) (

-> PARTITION p0 VALUES LESS THAN (6),

-> PARTITION p1 VALUES LESS THAN (11),

-> PARTITION p2 VALUES LESS THAN (16),

-> PARTITION p3 VALUES LESS THAN MAXVALUE

-> );

Query OK, 0 rows affected (0.01 sec)

mysql> insert into employees values (1,'xiaoii','xiaowu01','1971-01-01','1972-01-01',1,5);

Query OK, 1 row affected (0.00 sec)

mysql> insert into employees values (2,'xiaokk','xiaowu01','1972-01-01','1973-01-01',2,6);

Query OK, 1 row affected (0.00 sec)

mysql> insert into employees values (3,'xiaoxx','xiaowu01','1974-01-01','1975-01-01',3,7);

Query OK, 1 row affected (0.00 sec)

mysql> insert into employees values (4,'xiaoyy','xiaowu01','1976-01-01','1977-01-01',4,11);

Query OK, 1 row affected (0.00 sec)

mysql> insert into employees values (5,'xiaocc','xiaowu01','1978-01-01','1979-01-01',5,12);

Query OK, 1 row affected (0.00 sec)

mysql> insert into employees values (6,'xiaoaa','xiaowu01','1980-01-01','1981-01-01',6,16);

Query OK, 1 row affected (0.00 sec)

mysql> insert into employees values (7,'xiaott','xiaowu01','1982-01-01','1983-01-01',7,17);

Query OK, 1 row affected (0.00 sec)

mysql> insert into employees values (8,'xiaogg','xiaowu01','1984-01-01','1985-01-01',8,20);

Query OK, 1 row affected (0.00 sec)

mysql> select * from employees;

+----+--------+----------+------------+------------+----------+----------+

| id | fname  | lname    | hired      | separated  | job_code | store_id |

+----+--------+----------+------------+------------+----------+----------+

|  1 | xiaoii | xiaowu01 | 1971-01-01 | 1972-01-01 |        1 |        5 |

|  2 | xiaokk | xiaowu01 | 1972-01-01 | 1973-01-01 |        2 |        6 |

|  3 | xiaoxx | xiaowu01 | 1974-01-01 | 1975-01-01 |        3 |        7 |

|  4 | xiaoyy | xiaowu01 | 1976-01-01 | 1977-01-01 |        4 |       11 |

|  5 | xiaocc | xiaowu01 | 1978-01-01 | 1979-01-01 |        5 |       12 |

|  6 | xiaoaa | xiaowu01 | 1980-01-01 | 1981-01-01 |        6 |       16 |

|  7 | xiaott | xiaowu01 | 1982-01-01 | 1983-01-01 |        7 |       17 |

|  8 | xiaogg | xiaowu01 | 1984-01-01 | 1985-01-01 |        8 |       20 |

+----+--------+----------+------------+------------+----------+----------+

8 rows in set (0.00 sec)

mysql> explain partitions select * from employees;

+----+-------------+-----------+-------------+------+---------------+------+---------+------+------+-------+

| id | select_type | table     | partitions  | type | possible_keys | key  | key_len | ref  | rows | Extra |

+----+-------------+-----------+-------------+------+---------------+------+---------+------+------+-------+

|  1 | SIMPLE      | employees | p0,p1,p2,p3 | ALL  | NULL          | NULL | NULL    | NULL |    8 |       |

+----+-------------+-----------+-------------+------+---------------+------+---------+------+------+-------+

1 row in set (0.00 sec)

mysql> explain partitions select * from employees where store_id=5;

+----+-------------+-----------+------------+------+---------------+------+---------+------+------+-------------+

| id | select_type | table     | partitions | type | possible_keys | key  | key_len | ref  | rows | Extra       |

+----+-------------+-----------+------------+------+---------------+------+---------+------+------+-------------+

|  1 | SIMPLE      | employees | p0         | ALL  | NULL          | NULL | NULL    | NULL |    8 | Using where |

+----+-------------+-----------+------------+------+---------------+------+---------+------+------+-------------+

1 row in set (0.00 sec)

mysql> explain partitions select * from employees where store_id=11;

+----+-------------+-----------+------------+------+---------------+------+---------+------+------+-------------+

| id | select_type | table     | partitions | type | possible_keys | key  | key_len | ref  | rows | Extra       |

+----+-------------+-----------+------------+------+---------------+------+---------+------+------+-------------+

|  1 | SIMPLE      | employees | p2         | ALL  | NULL          | NULL | NULL    | NULL |    8 | Using where |

+----+-------------+-----------+------------+------+---------------+------+---------+------+------+-------------+

1 row in set (0.00 sec)

mysql> explain partitions select * from employees where store_id=16;

+----+-------------+-----------+------------+------+---------------+------+---------+------+------+-------------+

| id | select_type | table     | partitions | type | possible_keys | key  | key_len | ref  | rows | Extra       |

+----+-------------+-----------+------------+------+---------------+------+---------+------+------+-------------+

|  1 | SIMPLE      | employees | p3         | ALL  | NULL          | NULL | NULL    | NULL |    8 | Using where |

+----+-------------+-----------+------------+------+---------------+------+---------+------+------+-------------+

1 row in set (0.00 sec)

2,LIST测试实例:

假定有20个音像店,店面分布在4个地区,如下表所示:

地区

商店ID

北区

3, 5, 6, 9, 17

东区

1, 2, 10, 11, 19, 20

西区

4, 12, 13, 14, 18

中心区

7, 8, 15, 16

mysql> CREATE TABLE employeeslist (

-> id INT NOT NULL,

-> fname VARCHAR(30),

-> lname VARCHAR(30),

-> hired DATE NOT NULL DEFAULT '1970-01-01',

-> separated DATE NOT NULL DEFAULT '9999-12-31',

-> job_code INT,

-> store_id INT

-> )

-> PARTITION BY LIST(store_id) (

-> PARTITION pNorth VALUES IN (3,5,6,9,17),

-> PARTITION pEast VALUES IN (1,2,10,11,19,20),

-> PARTITION pWest VALUES IN (4,12,13,14,18),

-> PARTITION pCentral VALUES IN (7,8,15,16)

-> );

Query OK, 0 rows affected (0.00 sec)

mysql> insert into employeeslist values (1,'xiaoii','xiaowu01','1971-01-01','1972-01-01',1,1);

Query OK, 1 row affected (0.00 sec)

mysql> insert into employeeslist values (2,'xiaokk','xiaowu01','1972-01-01','1973-01-01',2,3);

Query OK, 1 row affected (0.00 sec)

mysql> insert into employeeslist values (3,'xiaoxx','xiaowu01','1974-01-01','1975-01-01',3,4);

Query OK, 1 row affected (0.00 sec)

mysql> select * from employeeslist;

+----+--------+----------+------------+------------+----------+----------+

| id | fname  | lname    | hired      | separated  | job_code | store_id |

+----+--------+----------+------------+------------+----------+----------+

|  2 | xiaokk | xiaowu01 | 1972-01-01 | 1973-01-01 |        2 |        3 |

|  1 | xiaoii | xiaowu01 | 1971-01-01 | 1972-01-01 |        1 |        1 |

|  3 | xiaoxx | xiaowu01 | 1974-01-01 | 1975-01-01 |        3 |        4 |

+----+--------+----------+------------+------------+----------+----------+

3 rows in set (0.00 sec)

mysql> explain partitions select * from employeeslist where store_id=1;

+----+-------------+---------------+------------+------+---------------+------+---------+------+------+-------------+

| id | select_type | table         | partitions | type | possible_keys | key  | key_len | ref  | rows | Extra       |

+----+-------------+---------------+------------+------+---------------+------+---------+------+------+-------------+

|  1 | SIMPLE      | employeeslist | pEast      | ALL  | NULL          | NULL | NULL    | NULL |    4 | Using where |

+----+-------------+---------------+------------+------+---------------+------+---------+------+------+-------------+

1 row in set (0.00 sec)

mysql> explain partitions select * from employeeslist where store_id=3;

+----+-------------+---------------+------------+------+---------------+------+---------+------+------+-------------+

| id | select_type | table         | partitions | type | possible_keys | key  | key_len | ref  | rows | Extra       |

+----+-------------+---------------+------------+------+---------------+------+---------+------+------+-------------+

|  1 | SIMPLE      | employeeslist | pNorth     | ALL  | NULL          | NULL | NULL    | NULL |    4 | Using where |

+----+-------------+---------------+------------+------+---------------+------+---------+------+------+-------------+

1 row in set (0.00 sec)

mysql> explain partitions select * from employeeslist where store_id=4;

+----+-------------+---------------+------------+------+---------------+------+---------+------+------+-------------+

| id | select_type | table         | partitions | type | possible_keys | key  | key_len | ref  | rows | Extra       |

+----+-------------+---------------+------------+------+---------------+------+---------+------+------+-------------+

|  1 | SIMPLE      | employeeslist | pWest      | ALL  | NULL          | NULL | NULL    | NULL |    4 | Using where |

+----+-------------+---------------+------------+------+---------------+------+---------+------+------+-------------+

1 row in set (0.00 sec)

 

3,HASH测试实例:

mysql> CREATE TABLE employeeshash (

-> id INT NOT NULL,

-> fname VARCHAR(30),

-> lname VARCHAR(30),

-> hired DATE NOT NULL DEFAULT '1970-01-01',

-> separated DATE NOT NULL DEFAULT '9999-12-31',

-> job_code INT,

-> store_id INT

-> )

-> PARTITION BY HASH(store_id)

-> PARTITIONS 4;

Query OK, 0 rows affected (0.00 sec)

mysql> insert into employeeshash values (1,'xiaoii','xiaowu01','1971-01-01','1972-01-01',1,1);

Query OK, 1 row affected (0.00 sec)

mysql> insert into employeeshash values (2,'xiaokk','xiaowu01','1972-01-01','1973-01-01',2,3);

Query OK, 1 row affected (0.00 sec)

mysql> insert into employeeshash values (3,'xiaoxx','xiaowu01','1974-01-01','1975-01-01',3,6);

Query OK, 1 row affected (0.00 sec)

mysql> insert into employeeshash values (4,'xiaoxx','xiaowu01','1974-01-01','1975-01-01',3,9);

Query OK, 1 row affected (0.00 sec)

mysql> select * from employeeshash;

+----+--------+----------+------------+------------+----------+----------+

| id | fname  | lname    | hired      | separated  | job_code | store_id |

+----+--------+----------+------------+------------+----------+----------+

|  1 | xiaoii | xiaowu01 | 1971-01-01 | 1972-01-01 |        1 |        1 |

|  4 | xiaoxx | xiaowu01 | 1974-01-01 | 1975-01-01 |        3 |        9 |

|  3 | xiaoxx | xiaowu01 | 1974-01-01 | 1975-01-01 |        3 |        6 |

|  2 | xiaokk | xiaowu01 | 1972-01-01 | 1973-01-01 |        2 |        3 |

+----+--------+----------+------------+------------+----------+----------+

4 rows in set (0.00 sec)

mysql> explain partitions select * from employeeshash;

+----+-------------+---------------+-------------+------+---------------+------+---------+------+------+-------+

| id | select_type | table         | partitions  | type | possible_keys | key  | key_len | ref  | rows | Extra |

+----+-------------+---------------+-------------+------+---------------+------+---------+------+------+-------+

|  1 | SIMPLE      | employeeshash | p0,p1,p2,p3 | ALL  | NULL          | NULL | NULL    | NULL |    5 |       |

+----+-------------+---------------+-------------+------+---------------+------+---------+------+------+-------+

1 row in set (0.00 sec)

mysql> explain partitions select * from employeeshash where store_id=1;

+----+-------------+---------------+------------+------+---------------+------+---------+------+------+-------------+

| id | select_type | table         | partitions | type | possible_keys | key  | key_len | ref  | rows | Extra       |

+----+-------------+---------------+------------+------+---------------+------+---------+------+------+-------------+

|  1 | SIMPLE      | employeeshash | p1         | ALL  | NULL          | NULL | NULL    | NULL |    5 | Using where |

+----+-------------+---------------+------------+------+---------------+------+---------+------+------+-------------+

1 row in set (0.00 sec)

mysql> explain partitions select * from employeeshash where store_id=6;

+----+-------------+---------------+------------+------+---------------+------+---------+------+------+-------------+

| id | select_type | table         | partitions | type | possible_keys | key  | key_len | ref  | rows | Extra       |

+----+-------------+---------------+------------+------+---------------+------+---------+------+------+-------------+

|  1 | SIMPLE      | employeeshash | p2         | ALL  | NULL          | NULL | NULL    | NULL |    5 | Using where |

+----+-------------+---------------+------------+------+---------------+------+---------+------+------+-------------+

1 row in set (0.00 sec)

mysql> explain partitions select * from employeeshash where store_id=3;

+----+-------------+---------------+------------+------+---------------+------+---------+------+------+-------------+

| id | select_type | table         | partitions | type | possible_keys | key  | key_len | ref  | rows | Extra       |

+----+-------------+---------------+------------+------+---------------+------+---------+------+------+-------------+

|  1 | SIMPLE      | employeeshash | p3         | ALL  | NULL          | NULL | NULL    | NULL |    5 | Using where |

+----+-------------+---------------+------------+------+---------------+------+---------+------+------+-------------+

1 row in set (0.00 sec)

4,子分区测试实例:

在MySQL 5.1中,可以对RANGE或LIST分区了的表再进行子分区。子分区既可以使用HASH希分区,也可以使用KEY分区。这也被称为复合分区(composite partitioning),子分区是分区表中每个分区的再次分割。例如,考虑下面的CREATE TABLE 语句:

mysql> CREATE TABLE ts (id INT, purchased DATE)

-> PARTITION BY RANGE(YEAR(purchased))

-> SUBPARTITION BY HASH(TO_DAYS(purchased))

-> SUBPARTITIONS 2

-> (

-> PARTITION p0 VALUES LESS THAN (1990),

-> PARTITION p1 VALUES LESS THAN (2000),

-> PARTITION p2 VALUES LESS THAN MAXVALUE

-> );

Query OK, 0 rows affected (0.03 sec)

mysql> desc ts;

+-----------+---------+------+-----+---------+-------+

| Field     | Type    | Null | Key | Default | Extra |

+-----------+---------+------+-----+---------+-------+

| id        | int(11) | YES  |     | NULL    |       |

| purchased | date    | YES  |     | NULL    |       |

+-----------+---------+------+-----+---------+-------+

2 rows in set (0.00 sec)

表ts 有3个RANGE分区。这3个分区中的每一个分区——p0, p1, 和 p2 ——又被进一步分成了2个子分区。实际上,整个表被分成了3 * 2 = 6个分区。但是,由于PARTITION BY RANGE子句的作用,这些分区的头2个只保存“purchased”列中值小于1990的那些记录。

分区管理:

MySQL 5.1 可以通过使用ALTER TABLE 命令对分区进行 添加、删除、重新定义、合并或拆分。

1,RANGE和LIST分区的管理:

ALTER TABLE chlotte DROP PARITION p1

删除chlotte表中名称为p1的分区及p1分区中的所有数据,但NDBCLUSTER存储引擎不支持此语法。

TRUNCATE TABLE chlotte;

只删除分区中的数据,保留表的定义和表的分区模式。

ALTER TABLE ... REORGANIZE PARTITION

改变表的分区而又不丢失数据。

ALTER TABLE ... ADD PARTITION

增加一个新的RANGE或LIST分区到一个前面已经分区了的表,对于RANGE分区的表,只可以使用ADD PARTITION添加新的分区到分区列表的高端。

ALTER TABLE tbl_name REORGANIZE PARTITION partition_list INTO (partition_definitions);

其中,tbl_name 是分区表的名称,partition_list 是通过逗号分开的、一个或多个将要被改变的现有分区的列,partition_definitions 是一个是通过逗号分开的、新分区定义的列表,使用“REORGANIZE PARTITION”拆分或合并分区,没有数据丢失。

2,HASH和KEY分区的管理:

ALTER TABLE chlotte COALESCE PARTITION 6;

把chlotte表的分区数量由7个减少到6个

ALTER TABLE chlotte COALESCE PARTITION 8;

把chlotte表的分区数量从6个增加到8个

分区维护:

Table maintenance of partitioned tables can be accomplished using the statements CHECK TABLE, OPTIMIZE TABLE, ANALYZE TABLE, and REPAIR TABLE, which are supported for partitioned tables as of MySQL 5.1.27.

ALTER TABLE t1 REBUILD PARTITION p0, p1;

重建分区: 这和先删除保存在分区中的所有记录,然后重新插入它们,具有同样的效果。它可用于整理分区碎片。

ALTER TABLE t1 OPTIMIZE PARTITION p0, p1;

优化分区:如果从分区中删除了大量的行,或者对一个带有可变长度的行作了许多修改,用来收回没有使用的空间,并整理分区数据文件的碎片。

ALTER TABLE t1 ANALYZE PARTITION p3;

分析分区:读取并保存分区的键分布。

ALTER TABLE t1 REPAIR PARTITION p0,p1;

修复分区: 修复被破坏的分区。

ALTER TABLE trb3 CHECK PARTITION p1;

检查分区: 可以使用几乎与对非分区表使用CHECK TABLE 相同的方式检查分区。

分区的限制:

1,从mysql 5.1.12 开始不支持: 存储过程,存储函数,用户自定义函数,用户变量。

2,分区表不支持外键。

转载于:https://blog.51cto.com/chlotte/372943

Partition学习笔记相关推荐

  1. Numpy学习笔记(下篇)

    目录 Numpy学习笔记(下篇) 一.Numpy数组的合并与分割操作 1.合并操作 2.分割操作 二.Numpy中的矩阵运算 1.Universal Function 2.矩阵运算 3.向量和矩阵运算 ...

  2. kvm虚拟化学习笔记(十一)之kvm虚拟机扩展磁盘空间

    kvm虚拟机磁盘空间扩展与xen虚拟机磁盘空间扩展思路一致.原因在于xen/kvm默认的虚拟机磁盘格式为raw,所以方式可以通用. raw磁盘格式扩展思路如下 (1) 新添加一块raw格式的磁盘加入到 ...

  3. SQLServer学习笔记系列6

    一.写在前面的话 时间是我们每个人都特别熟悉的,但是到底它是什么,用什么来衡量,可能很多人会愣在那里.时间可以见证一切,也可以消磨一切,那些过往的点点滴滴可思可忆.回想往年清明节过后,在家乡的晚上总能 ...

  4. C# 学习笔记(18)操作SQL Server 中

    C# 学习笔记(18)操作SQL Server 中 数据库基础操作 SQL语法可以参考 菜鸟教程 或者微软官方的SQL示例 注意SQL不区分大小写 查 1.基础查询 --最基础的查询语句, selec ...

  5. 学习笔记:The Log(我所读过的最好的一篇分布式技术文章

     学习笔记:The Log(我所读过的最好的一篇分布式技术文章)         前言 这是一篇学习笔记. 学习的材料来自Jay Kreps的一篇讲Log的博文. 原文很长,但是我坚持看完了,收获 ...

  6. 计算机视觉算法——Transformer学习笔记

    算机视觉算法--Transformer学习笔记 计算机视觉算法--Transformer学习笔记 1. Vision Transformer 1.1 网络结构 1.2 关键知识点 1.2.1 Self ...

  7. 统计学习方法 学习笔记(十):决策树

    这一个学习笔记将要了解决策树,在研一上机器学习这门课的时候,老师在讲到这一节的时候,举了一个例子我现在还能记得:你们坐在这里上课,就像这个决策树一样,在你人生中的每一个重要结点,你都做出了选择,经过多 ...

  8. oracle数据库的model,Oracle 11g学习笔记–model子句

    Oracle 11g学习笔记–model子句 oracle 10g中新增的model子句可以用来进行行间计算.model子句允许像访问数组中元素那样访问记录中的某个列,这就提供了诸如电子表格计算之类的 ...

  9. 机器学习理论《统计学习方法》学习笔记:第五章 决策树

    机器学习理论<统计学习方法>学习笔记:第五章 决策树 决策树 5.1 决策树模型与学习 5.1.1 决策树模型 5.1.2 决策树与if-then规则 5.1.3 决策树与条件概率分布 5 ...

最新文章

  1. Linux进程间通信--进程,信号,管道,消息队列,信号量,共享内存
  2. POJ 1185 炮兵阵地(状态压缩DP)
  3. 智慧城市产业图谱(2020年)
  4. 计算机系统的组成doc,《计算机系统的组成》.doc
  5. 转载:VMware workstation创建虚拟机,安装Ubuntu系统
  6. 最新 MSDN Library for Visual Studio 2008 SP1
  7. Linux Distribution Timeline for 2010(Linux 2010 年发行版时间线/族谱/发展图)
  8. 杂项-事务:OLTP(联机事务处理过程)
  9. 获取2个集合ListT的共同元素
  10. 各地的磁倾角_中国各地磁偏角
  11. 如何卸载office201032位_如何卸载流氓版office2010
  12. 基于RPGMakerMV的JavaScript基础-5
  13. mapminmax函数
  14. 蓝桥杯单片机第九届 省赛 彩灯控制器
  15. html5 06携程网案例、 全屏插件的使用
  16. 金融系列-会计基础知识
  17. Js鼠标放上去图片变大变小
  18. 2023年全国最新二级建造师精选真题及答案61
  19. Web项目中手机注册短信验证码实现的全流程及代码
  20. 我心里优秀架构师是怎样的?

热门文章

  1. 浅谈块级元素和行级元素的相对定位和绝对定位问题
  2. 安卓手机与PC不得不说的那些事 之 篇一 网络分享
  3. linux用于查看文件内容 tail、cat、more、less、head 、sed 命令
  4. 解析IOS控制台利用GDB命令查看报错堆栈
  5. 根据年份-月份,获得此月份的所有日期
  6. Tesseract-ocr 3.0.2源码 + VS2010项目工程 + 简单测试代码
  7. C#中使用WeiFenLuo.WinFormsUI.Docking.dll实现窗口停靠效果
  8. IOS之storyBoard的storyboard_reference的使用
  9. IOS开发基础之核心动画 基础动画、关键帧、组动画案例
  10. javascript array添加图片_史上最全的web前端面试题汇总及答案JavaScript之二(二)...