博文作者:Yumiko_sunny 博客链接:http://www.cnblogs.com/yumiko/ 本站随笔均为原创

前言

本文着重阐述分区表的概念、优势,以及

常用分区表的使用方法及使用过程中的注意事项

对于分区表的日常维护方法,如:索引的维护、分区的合并等,将在后续文章中再详细介绍。

本文涉及的相应演示,使用的数据库版本为oracle 11.2.0.4。

本文常用分区表的使用方法,主要以较为常规的范围分区、列表分区、hash分区以及组合分区为主。

本文主要涉及的数据字典视图包括XX_TAB_PARTITIONS、XX_TAB_SUBPARTITIONS以及XX_PART_TABLES。

注意示例中,使用红色标记的说明。

1、分区表的概述

分区表就是通过使用分区技术,将一张大表,拆分成多个表分区(

独立的segment

),从而提升数据访问的性能,以及日常的可维护性。

分区表中,每个分区的逻辑结构必须相同。如:列名、数据类型。

分区表中,每个分区的物理存储参数可以不同。如:各个分区所在的表空间。

对于应用而言完全透明,分区前后没有变化,不需要进行修改。

需要注意

:虽然各个分区可以存放在不同的表空间中,但这些

表空间所使用的块大小(block_size)必须一致

需要注意

:除了包含LONG以及LONG RAW字段的表无法使用分区外,其他表均可以使用分区,

包括含有LOB字段的表

2、分区表的优点

在维护性方面,可以在分区级别,针对单独的分区,进行索引的维护、数据的加载以及备份恢复等操作。大大降低了维护时长。

在可用性方面,由于各个分区相对独立,

当一个分区处于维护或者出现故障时,不会影响到其他分区的正常使用

在性能方面,oracle对于用户的请求,只检索需要的分区,从而提升性能。

在其他方面,由于分区表对于用户是透明的,因此,不需要在分区后,对代码进行修改。

3、分区键的简介

分区键就是决定表中的数据行,属于哪一个分区的一组数据列。在执行DML操作时,ORACLE会根据分区键选择分区。

4、常用分区表简介及使用方法(含注意事项)

4.1、范围分区(range partition)

范围分区特点:

范围分区主要依据分区键定义时给出的键值范围,根据实际的取值,进行分区的选择,进而在相应分区中存储数据。

范围分区比较合适存在以数字为导向,方便进行数字范围划分的数据列。如:员工表的雇佣日期列、工资列等。

范围分区的数据分布可能不均匀。

范围分区定义规则:

1、在定义范围分区时,每个分区定义必须使用 values less than(value)子句。其中(value)表示该分区的上限值。

2、在定义范围分区时,

最后一个分区可以是values less than(maxvalue)

。其中(maxvalue)表示该分区存储高于其他分区上限值的数据行。

示例:

示例涉及的测试数据源,来自于ORACLE数据库的测试用户scott下的emp表。

emp表的大致数据情况如下:

--测试表emp的数据总记录条数为14条

Yumiko@sunny >select count(*) from emp;

COUNT(*)

----------

14

Yumiko@sunny >select * from emp;

EMPNO ENAME      JOB              MGR HIREDATE              SAL       COMM     DEPTNO

---------- ---------- --------- ---------- -------------- ---------- ---------- ----------

7369

SMITH      CLERK

7902

17

-12月-

80

800

20

7499

ALLEN      SALESMAN

7698

20

-2月 -

81

1600

300

30

7521

WARD       SALESMAN

7698

22

-2月 -

81

1250

500

30

7566

JONES      MANAGER

7839

02

-4月 -

81

2975

20

7654

MARTIN     SALESMAN

7698

28

-9月 -

81

1250

1400

30

7698

BLAKE      MANAGER

7839

01

-5月 -

81

2850

30

7782

CLARK      MANAGER

7839

09

-6月 -

81

2450

10

7788

SCOTT      ANALYST

7566

19

-4月 -

87

3000

20

7839

KING       PRESIDENT

17

-11月-

81

5000

10

7844

TURNER     SALESMAN

7698

08

-9月 -

81

1500

30

7876

ADAMS      CLERK

7788

23

-5月 -

87

1100

20

7900

JAMES      CLERK

7698

03

-12月-

81

950

30

7902

FORD       ANALYST

7566

03

-12月-

81

3000

20

7934

MILLER     CLERK

7782

23

-1月 -

82

1300

10

已选择14行。

下面采用范围分区的方法创建分区,并将emp表的数据导入该分区表。

这里,使用HIREDATE列作为分区键进行分区操作。

建议,使用dbms_metadata.get_ddl的方法进行emp表结构创建语法的提取工作,并进而修改。

Yumiko@sunny >CREATE TABLE "EMPLOYEE_RANGE_PART"  2  ( "EMPNO" NUMBER(4,0),  3    "ENAME" VARCHAR2(10),  4    "JOB" VARCHAR2(9),  5    "MGR" NUMBER(4,0),  6    "HIREDATE" DATE,  7    "SAL" NUMBER(7,2),  8    "COMM" NUMBER(7,2),  9    "DEPTNO" NUMBER(2,0) 10  ) 11  PARTITION BY RANGE (HIREDATE) 12  ( 13  PARTITION EMPLOYEE_PART01 VALUES LESS THAN (TO_DATE('1981-01-01','yyyy-mm-dd')) 14  TABLESPACE test_tbs_01, 15  PARTITION EMPLOYEE_PART02 VALUES LESS THAN (TO_DATE('1982-01-01','yyyy-mm-dd')) 16  TABLESPACE test_tbs_02, 17  PARTITION EMPLOYEE_PART03 VALUES LESS THAN (MAXVALUE) 18  TABLESPACE test_tbs_03 19  );

表已创建。

Yumiko@sunny >insert into EMPLOYEE_RANGE_PART select * from emp;

已创建 14 行。

Yumiko@sunny >commit;

提交完成。

查看此时分区表的状态,以及emp表的数据在分区表中的分布情况。

注意,新建的数据表,统计信息未必收集,可通过analyze table tablename compute statistics进行收集。

Yumiko@sunny >select TABLE_NAME,PARTITIONING_TYPE,PARTITION_COUNT,STATUS  2  from dba_part_tables  3  where TABLE_NAME='EMPLOYEE_RANGE_PART';

TABLE_NAME                     PARTITION PARTITION_COUNT STATUS

------------------------------ --------- --------------- --------

EMPLOYEE_RANGE_PART            RANGE                   3 VALID

Yumiko@sunny >select PARTITION_NAME,NUM_ROWS,TABLESPACE_NAME,SEGMENT_CREATED  2  from dba_tab_partitions  3  where TABLE_NAME='EMPLOYEE_RANGE_PART';

PARTITION_NAME                   NUM_ROWS TABLESPACE_NAME                SEGM

------------------------------ ---------- ------------------------------ ----

EMPLOYEE_PART03                         3 TEST_TBS_03                    YES

EMPLOYEE_PART02                        10 TEST_TBS_02                    YES

EMPLOYEE_PART01                         1 TEST_TBS_01                    YES

查询单独分区的数据信息。

Yumiko@sunny >select * from EMPLOYEE_RANGE_PART partition(EMPLOYEE_PART01);

EMPNO ENAME      JOB              MGR HIREDATE              SAL       COMM     DEPTNO

---------- ---------- --------- ---------- -------------- ---------- ---------- ----------      7369 SMITH      CLERK           7902 17-12月-80            800                    20

4.2、列表分区(list partition)

列表分区特点:

列表分区主要依据分区键定义时给出的取值列表,根据实际的取值,进行分区的选择,进而在相应分区中存储数据。

列表分区比较合适列唯一取值有限,且较为固定的数据列。如:员工表的部门列。

列表分区的数据分布可能不均匀。

列表分区定义规则:

1、在定义范围分区时,每个分区定义必须使用 values('value01','value02'....)子句。表示该分区存储包含相关value值的数据行。

2、在定义范围分区时,最后一个分区可以是values(DEFAULT)。表示该分区存储未在其他分区定义的数据行。

示例:

本示例数据来源,与上一节相同,均为emp表。

本示例中,将使用JOB列作为分区键进行分区操作。

首先,看一下JOB列中,目前涉及的工作分类有哪些。

Yumiko@sunny >select job,count(*) job from emp group by job ;

JOB              JOB

--------- ----------

CLERK              4SALESMAN           4PRESIDENT          1MANAGER            3ANALYST            2

从上面的信息可以看出,目前涉及五种职位。

下面采用列表分区的方法进行分区表的创建,并倒入emp中的数据。其中,

涉及PRESIDENT,MANAGER以及ANALYST三种职位的数据,存放在分区一;

涉及CLERK职位的数据,存放在分区二;

涉及SALESMAN职位的数据,以及未来可能出现的新职位的数据,存放在分区三;

CREATE TABLE "EMPLOYEE_LIST_PART"  2  ( "EMPNO" NUMBER(4,0),  3    "ENAME" VARCHAR2(10),  4    "JOB" VARCHAR2(9),  5    "MGR" NUMBER(4,0),  6    "HIREDATE" DATE,  7    "SAL" NUMBER(7,2),  8    "COMM" NUMBER(7,2),  9    "DEPTNO" NUMBER(2,0) 10  ) 11  PARTITION BY LIST (JOB) 12  ( 13  PARTITION EMPLOYEE_PART01 VALUES ('PRESIDENT','MANAGER','ANALYST') 14  TABLESPACE test_tbs_01, 15  PARTITION EMPLOYEE_PART02 VALUES ('CLERK') 16  TABLESPACE test_tbs_02, 17  PARTITION EMPLOYEE_PART03 VALUES (DEFAULT) 18  TABLESPACE test_tbs_03 19  );

表已创建。

Yumiko@sunny >insert into EMPLOYEE_LIST_PART select * from emp;

已创建 14 行。

Yumiko@sunny >commit;

提交完成。

首先观察一下EMPLOYEE_PART02分区。

Yumiko@sunny >select SEGMENT_NAME,PARTITION_NAME,HEADER_FILE,HEADER_BLOCK,BLOCKS  2  from dba_segments where PARTITION_NAME='EMPLOYEE_PART02';

SEGMENT_NAME         PARTITION_NAME       HEADER_FILE HEADER_BLOCK     BLOCKS

-------------------- -------------------- ----------- ------------ ----------

EMPLOYEE_LIST_PART   EMPLOYEE_PART02               10         1169       1024EMPLOYEE_RANGE_PART  EMPLOYEE_PART02               10          145       1024

从上面的查询结果可以看到,前面创建的两张分区表,都采用相同的EMPLOYEE_PART02名字,进行了分区的命名。

虽然分区均处于相同的表空间下,但相互之前并未受到影响。

由此可以得出结论:

1、对于普通分区表,只要不是同一张的分区表,分区的命名可以相同;

2、对于组合分区表,同一张表的子分区命名,不能够相同。(创建时会有提示,此处只给出结论,不再进行演示)

查看此时分区表的状态以及数据在分区间的分布情况

Yumiko@sunny >select TABLE_NAME,PARTITIONING_TYPE,PARTITION_COUNT,STATUS  2  from dba_part_tables  3  where TABLE_NAME='EMPLOYEE_LIST_PART';

TABLE_NAME                     PARTITION PARTITION_COUNT STATUS

------------------------------ --------- --------------- --------

EMPLOYEE_LIST_PART             LIST                    3 VALID

Yumiko@sunny >select PARTITION_NAME,NUM_ROWS,TABLESPACE_NAME,SEGMENT_CREATED  2  from dba_tab_partitions  3  where TABLE_NAME='EMPLOYEE_LIST_PART';

PARTITION_NAME         NUM_ROWS TABLESPACE_NAME                SEGM

-------------------- ---------- ------------------------------ ----

EMPLOYEE_PART03               4 TEST_TBS_03                    YES

EMPLOYEE_PART02               4 TEST_TBS_02                    YES

EMPLOYEE_PART01               6 TEST_TBS_01                    YES

查询单独分区的数据信息。

Yumiko@sunny >select * from EMPLOYEE_LIST_PART partition(EMPLOYEE_PART01);

EMPNO ENAME      JOB              MGR HIREDATE              SAL       COMM     DEPTNO

---------- ---------- --------- ---------- -------------- ---------- ---------- ----------      7566 JONES      MANAGER         7839 02-4月 -81           2975                    20

7698 BLAKE      MANAGER         7839 01-5月 -81           2850                    30

7782 CLARK      MANAGER         7839 09-6月 -81           2450                    10

7788 SCOTT      ANALYST         7566 19-4月 -87           3000                    20

7839 KING       PRESIDENT            17-11月-81           5000                    10

7902 FORD       ANALYST         7566 03-12月-81           3000                    20已选择6行。

4.3、HASH分区(hash partition)

HASH分区特点:

HASH分区主要通过hash算法确定相应数据行应该被存放到哪个分区中。

HASH分区比较适合列差异值很多的数据列。

HASH分区的注意事项:

对于HASH分区,无法控制一条数据在分区间的具体分布。具体分布由hash算法决定。

对于HASH分区,如果更改分区的数量,将导致所有数据在分区间的重新分布

HASH分区定义规则:

在定义HASH分区时,其分区数量应为2的N次方,如:2,4,8,16等

示例说明:

此示例的数据源依然来源于emp表。

关于HASH分区的创建,有标准写法以及简易写法。

标准写法示例:

Yumiko@sunny >CREATE TABLE "EMPLOYEE_HASH_PART"  2  ( "EMPNO" NUMBER(4,0),  3    "ENAME" VARCHAR2(10),  4    "JOB" VARCHAR2(9),  5    "MGR" NUMBER(4,0),  6    "HIREDATE" DATE,  7    "SAL" NUMBER(7,2),  8    "COMM" NUMBER(7,2),  9    "DEPTNO" NUMBER(2,0) 10  ) 11  PARTITION BY HASH (ENAME) 12  ( 13  PARTITION EMPLOYEE_PART01 TABLESPACE test_tbs_01, 14  PARTITION EMPLOYEE_PART02 TABLESPACE test_tbs_02 15  );

表已创建。

Yumiko@sunny >insert into EMPLOYEE_HASH_PART select * from emp;

已创建 14 行。

Yumiko@sunny >commit;

提交完成。

查看标准写法下,HASH分区表的状态及数据分布情况

Yumiko@sunny >select TABLE_NAME,PARTITIONING_TYPE,PARTITION_COUNT,STATUS  2  from dba_part_tables  3  where TABLE_NAME='EMPLOYEE_HASH_PART';

TABLE_NAME                     PARTITION PARTITION_COUNT STATUS

------------------------------ --------- --------------- --------

EMPLOYEE_HASH_PART             HASH                    2 VALID

Yumiko@sunny >select PARTITION_NAME,NUM_ROWS,TABLESPACE_NAME,SEGMENT_CREATED  2  from dba_tab_partitions  3  where TABLE_NAME='EMPLOYEE_HASH_PART';

PARTITION_NAME         NUM_ROWS TABLESPACE_NAME                SEGM

-------------------- ---------- ------------------------------ ----

EMPLOYEE_PART02               6 TEST_TBS_02                    YES

EMPLOYEE_PART01               8 TEST_TBS_01                    YES

简单写法示例:

Yumiko@sunny >CREATE TABLE "EMPLOYEE_HASH_PART_SAMPLE"  2  ( "EMPNO" NUMBER(4,0),  3    "ENAME" VARCHAR2(10),  4    "JOB" VARCHAR2(9),  5    "MGR" NUMBER(4,0),  6    "HIREDATE" DATE,  7    "SAL" NUMBER(7,2),  8    "COMM" NUMBER(7,2),  9    "DEPTNO" NUMBER(2,0) 10  ) 11  PARTITION BY HASH (ENAME) PARTITIONS 2

12  STORE IN (test_tbs_01,test_tbs_02);

表已创建。

Yumiko@sunny >select PARTITION_NAME,NUM_ROWS,TABLESPACE_NAME,SEGMENT_CREATED  2  from dba_tab_partitions  3  where TABLE_NAME='EMPLOYEE_HASH_PART_SAMPLE';

PARTITION_NAME         NUM_ROWS TABLESPACE_NAME                SEGM

-------------------- ---------- ------------------------------ ----

SYS_P11074                    6 TEST_TBS_02                    YES

SYS_P11073                    8 TEST_TBS_01                    YES

从上图可以看到,相较于标准写法,简单写法创建的分区名字,由oracle自动指定。

4.4、组合分区(composite partition)

组合分区的特点:

组合分区中,主要通过在不同列上,使用“范围分区”、“列表分区”以及“HASH分区”不同组合方式,进而实现组合分区。

组合分区中,分区本身没有相应的segment,可以认为是一个逻辑容器,只有子分区拥有实际的segment,用于存放数据。

组合分区的注意事项:

在11g以前,组合分区主要有两种组合方式:“RANGE-HASH”以及“RANGE-LIST”。

在11g以后,组合分区新增了四种组合方式:“RANGE-RANGE”、“LIST-RANGE”、“LIST-HASH”以及“LIST-LIST”。

示例说明:

关于本示例的数据源依然选择emp表为参考。

关于本示例的演示,将采用LIST-LIST的组合方式,创建组合分区。

关于其他组合方式效仿即可。

示例:

首先按照部门(deptno)进行分区,针对相同部门,再按照职位(JOB)是否为manager再次进行子分区。具体如下:

Yumiko@sunny >CREATE TABLE "EMPLOYEE_LIST_LIST_PART"  2  ( "EMPNO" NUMBER(4,0),  3    "ENAME" VARCHAR2(10),  4    "JOB" VARCHAR2(9),  5    "MGR" NUMBER(4,0),  6    "HIREDATE" DATE,  7    "SAL" NUMBER(7,2),  8    "COMM" NUMBER(7,2),  9    "DEPTNO" NUMBER(2,0) 10  ) 11  PARTITION BY LIST (DEPTNO) 12  SUBPARTITION BY LIST (JOB) 13  ( 14  PARTITION EMPLOYEE_DEPTNO_10 VALUES (10) TABLESPACE test_tbs_01

15    ( SUBPARTITION EMPLOYEE_10_JOB_MAGAGER VALUES ('MANAGER'), 16      SUBPARTITION EMPLOYEE_10_JOB_DEFAULT VALUES (DEFAULT) 17    ), 18  PARTITION EMPLOYEE_DEPTNO_20 VALUES (20) TABLESPACE test_tbs_02

19    ( SUBPARTITION EMPLOYEE_20_JOB_MAGAGER VALUES ('MANAGER'), 20      SUBPARTITION EMPLOYEE_20_JOB_DEFAULT VALUES (DEFAULT) 21    ), 22  PARTITION EMPLOYEE_DEPTNO_OTHERS VALUES (DEFAULT) TABLESPACE test_tbs_03

23    ( SUBPARTITION EMPLOYEE_30_JOB_MAGAGER VALUES ('MANAGER'), 24      SUBPARTITION EMPLOYEE_30_JOB_DEFAULT VALUES (DEFAULT) 25    ) 26  );

表已创建。

Yumiko@sunny >insert into EMPLOYEE_LIST_LIST_PART select * from emp;

已创建 14 行。

Yumiko@sunny >commit;

提交完成。

需要注意:关于表空间(tablespace)的指定,可以放在分区一级指定,也可以放在子分区一级指定。

本示例中,表空间的指定,放在了分区一级指定。对于子分区直接套用分区指定。

查看分区创建情况

Yumiko@sunny >select PARTITION_NAME,SUBPARTITION_COUNT,COMPOSITE,NUM_ROWS,  2  TABLESPACE_NAME,SEGMENT_CREATED  3  from dba_tab_partitions  4  where TABLE_NAME='EMPLOYEE_LIST_LIST_PART';

PARTITION_NAME          SUBPARTITION_COUNT COM   NUM_ROWS TABLESPACE_NAME SEGM

----------------------- ------------------ --- ---------- --------------- ----

EMPLOYEE_DEPTNO_OTHERS                   2 YES          6 TEST_TBS_03     NONEEMPLOYEE_DEPTNO_20                       2 YES          5 TEST_TBS_02     NONEEMPLOYEE_DEPTNO_10                       2 YES          3 TEST_TBS_01     NONEYumiko@sunny >select TABLE_NAME,PARTITIONING_TYPE,PARTITION_COUNT,  2  SUBPARTITIONING_TYPE,STATUS  3  from dba_part_tables  4  where TABLE_NAME='EMPLOYEE_LIST_LIST_PART';

TABLE_NAME                     PARTITION PARTITION_COUNT SUBPARTIT STATUS

------------------------------ --------- --------------- --------- --------

EMPLOYEE_LIST_LIST_PART        LIST                    3 LIST      VALID

从上图可以看到,对于组合分区,虽然成功创建了分区,但oracle并未对分区一级,分配实际的segment。

下面再观察下子分区的创建情况:

Yumiko@sunny >select PARTITION_NAME,SUBPARTITION_NAME,  2  TABLESPACE_NAME,NUM_ROWS,SEGMENT_CREATED

3  from USER_TAB_SUBPARTITIONS

4  where TABLE_NAME='EMPLOYEE_LIST_LIST_PART';

PARTITION_NAME          SUBPARTITION_NAME              TABLESPACE_NAME   NUM_ROWS SEG

----------------------- ------------------------------ --------------- ---------- ---

EMPLOYEE_DEPTNO_10      EMPLOYEE_10_JOB_MAGAGER        TEST_TBS_01              1 YESEMPLOYEE_DEPTNO_10      EMPLOYEE_10_JOB_DEFAULT        TEST_TBS_01              2 YESEMPLOYEE_DEPTNO_20      EMPLOYEE_20_JOB_MAGAGER        TEST_TBS_02              1 YESEMPLOYEE_DEPTNO_20      EMPLOYEE_20_JOB_DEFAULT        TEST_TBS_02              4 YESEMPLOYEE_DEPTNO_OTHERS  EMPLOYEE_30_JOB_MAGAGER        TEST_TBS_03              1 YESEMPLOYEE_DEPTNO_OTHERS  EMPLOYEE_30_JOB_DEFAULT        TEST_TBS_03              5 YES

从上图可以明显看到,针对子分区一级,oracle确实分配了实际的segment用于数据的存储。

此外,需要再次强调一点,

对于同一张组合分区表而言,子分区的名字不能相同,即使不在相同的分区里

oracle分区注意点,ORACLE分区表梳理系列(一)- 分区表概述、分类、使用方法及注意事项...相关推荐

  1. oracle 分区使用情况,Oracle Hash分区的使用总结

    近期项目需要用到分区表,但是分区键值有无法确定,因此只能使用hash分区(range.list分区以前常用,比hash分区简单),查询了文档,发现上面说的和实际使用时有点差距,就专门做实验验证下. 官 ...

  2. oracle 分区字段作用,oracle表分区的作用

    表空间及分区表的概念 表空间:(推荐学习:web前端视频教程) 是一个或多个数据文件的集合,所有的数据对象都存放在指定的表空间中,但主要存放的是表, 所以称作表空间 分区表: 当表中的数据量不断增大, ...

  3. oracle分区注意点,ORACLE分区表梳理系列(二)- 分区表日常维护及注意事项

    http://www.cnblogs.com/yumiko/p/6163523.html 前言: 本文着重总结分区表的日常维护操作以及相应的注意事项. 本文涉及的日常维护内容包括: 增加分区(add) ...

  4. ORACLE分区表梳理系列(二)- 分区表日常维护及注意事项(红字需要留意)

    版权声明:本文发布于http://www.cnblogs.com/yumiko/,版权由Yumiko_sunny所有,欢迎转载.转载时,请在文章明显位置注明原文链接.若在未经作者同意的情况下,将本文内 ...

  5. oracle 分区字符转换,Oracle 普通表与分区表转换

    oracle 9i提供了dbms_redefinition包来实现数据库的表的在线重定义功能.在实际的应用上,我们可以利用这个包来进行: (1)堆表与分区之间进行转换.(2)重建表以减少HWM.10g ...

  6. oracle分区系统视图,ORACLE 分区表 相关视图

    1. 显示当前用户可访问的所有分区表信息﹕ ALL_PART_TABLES 2. 显示当前用户所有分区表的信息﹕ USER_PART_TABLES 3. 显示表分区信息 显示数据库所有分区表的详细分区 ...

  7. oracle分区交换速度,oracle交换分区对数据的加载提速案例

    author:skate time:2012/07/16 oracle交换分区对数据的加载提速案例 环境: os:linux db:oracle10g 其中一个库的数据加载非常慢,如何能提高数据的加载 ...

  8. oracle分区大批量update,Oracle 对分区作调整记得加update global indexes

    Oracle 对分区做调整记得加update global indexes 在对分区做ddl操作时,会使分区全局索引失效,需要加上关键字update global indexes. SQL> s ...

  9. oracle分区存储过程示例,Oracle 存储过程示例

    //涉及到的知识点:游标的使用,根据参数构造动态SQL语句,递归查询,在数据源里设置页面数据显示的样式 create or replace procedure P_MES_SB_JBEffectChe ...

最新文章

  1. spring boot 热更新,热部署
  2. 二叉树中如何求根节点到任意节点的路径?
  3. css 设置其它标签,有没有办法将CSS样式设置为特定输入类型的标签?
  4. 数字IC验证学习(一)
  5. WildFly Swarm:使用Java EE构建微服务
  6. 一种全新的软件界面设计方法
  7. LeetCode 646. 最长数对链
  8. 合成人声、人脸替换等深度合成信息内容须进行显著标识
  9. 用于检测浏览器语言偏好的JavaScript
  10. 数据挖掘技术之离群点检测
  11. servlet篇 之servlet实现
  12. maya oracle 黄种子,nvidia physX 2.89 for MAYAMAX(BT种子下载)
  13. 汉字笔顺动画技术剖析,android应用开发实战
  14. ES6 模板字符串方法
  15. Abbyy FineReader PDF转word不乱码
  16. 近日onedrive突然消失问题的解决
  17. java8 collections_初识Java8新特性Lambda(二) 之collections
  18. AIOT人工智能物联网+项目实战
  19. 【转贴】看星际争霸人工智能伯克利如何“主宰”了“2010星际争霸人工智能挑战赛”...
  20. Java中的新生代和老生代

热门文章

  1. 局域网与城域网 - 以太网标准(百兆 100Base、千兆 1000Base、万兆 10GBase)
  2. 图(有向图、无向图)
  3. TikTok不可思议的崛起
  4. 初学者入门web前端:C#基础知识:函数
  5. 笔记本安装Archlinux笔记
  6. 计算机领域前沿技术总结
  7. 论文阅读笔记《Robust Point Matching via Vector Field Consensus》
  8. onchange()事件的应用
  9. Error in melt() : could not find function “melt“
  10. android省电优化方案,安卓省电折腾那么多年,这几个优化方案效果明显