oracle分区注意点,ORACLE分区表梳理系列(一)- 分区表概述、分类、使用方法及注意事项...
博文作者: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分区表梳理系列(一)- 分区表概述、分类、使用方法及注意事项...相关推荐
- oracle 分区使用情况,Oracle Hash分区的使用总结
近期项目需要用到分区表,但是分区键值有无法确定,因此只能使用hash分区(range.list分区以前常用,比hash分区简单),查询了文档,发现上面说的和实际使用时有点差距,就专门做实验验证下. 官 ...
- oracle 分区字段作用,oracle表分区的作用
表空间及分区表的概念 表空间:(推荐学习:web前端视频教程) 是一个或多个数据文件的集合,所有的数据对象都存放在指定的表空间中,但主要存放的是表, 所以称作表空间 分区表: 当表中的数据量不断增大, ...
- oracle分区注意点,ORACLE分区表梳理系列(二)- 分区表日常维护及注意事项
http://www.cnblogs.com/yumiko/p/6163523.html 前言: 本文着重总结分区表的日常维护操作以及相应的注意事项. 本文涉及的日常维护内容包括: 增加分区(add) ...
- ORACLE分区表梳理系列(二)- 分区表日常维护及注意事项(红字需要留意)
版权声明:本文发布于http://www.cnblogs.com/yumiko/,版权由Yumiko_sunny所有,欢迎转载.转载时,请在文章明显位置注明原文链接.若在未经作者同意的情况下,将本文内 ...
- oracle 分区字符转换,Oracle 普通表与分区表转换
oracle 9i提供了dbms_redefinition包来实现数据库的表的在线重定义功能.在实际的应用上,我们可以利用这个包来进行: (1)堆表与分区之间进行转换.(2)重建表以减少HWM.10g ...
- oracle分区系统视图,ORACLE 分区表 相关视图
1. 显示当前用户可访问的所有分区表信息﹕ ALL_PART_TABLES 2. 显示当前用户所有分区表的信息﹕ USER_PART_TABLES 3. 显示表分区信息 显示数据库所有分区表的详细分区 ...
- oracle分区交换速度,oracle交换分区对数据的加载提速案例
author:skate time:2012/07/16 oracle交换分区对数据的加载提速案例 环境: os:linux db:oracle10g 其中一个库的数据加载非常慢,如何能提高数据的加载 ...
- oracle分区大批量update,Oracle 对分区作调整记得加update global indexes
Oracle 对分区做调整记得加update global indexes 在对分区做ddl操作时,会使分区全局索引失效,需要加上关键字update global indexes. SQL> s ...
- oracle分区存储过程示例,Oracle 存储过程示例
//涉及到的知识点:游标的使用,根据参数构造动态SQL语句,递归查询,在数据源里设置页面数据显示的样式 create or replace procedure P_MES_SB_JBEffectChe ...
最新文章
- spring boot 热更新,热部署
- 二叉树中如何求根节点到任意节点的路径?
- css 设置其它标签,有没有办法将CSS样式设置为特定输入类型的标签?
- 数字IC验证学习(一)
- WildFly Swarm:使用Java EE构建微服务
- 一种全新的软件界面设计方法
- LeetCode 646. 最长数对链
- 合成人声、人脸替换等深度合成信息内容须进行显著标识
- 用于检测浏览器语言偏好的JavaScript
- 数据挖掘技术之离群点检测
- servlet篇 之servlet实现
- maya oracle 黄种子,nvidia physX 2.89 for MAYAMAX(BT种子下载)
- 汉字笔顺动画技术剖析,android应用开发实战
- ES6 模板字符串方法
- Abbyy FineReader PDF转word不乱码
- 近日onedrive突然消失问题的解决
- java8 collections_初识Java8新特性Lambda(二) 之collections
- AIOT人工智能物联网+项目实战
- 【转贴】看星际争霸人工智能伯克利如何“主宰”了“2010星际争霸人工智能挑战赛”...
- Java中的新生代和老生代
热门文章
- 局域网与城域网 - 以太网标准(百兆 100Base、千兆 1000Base、万兆 10GBase)
- 图(有向图、无向图)
- TikTok不可思议的崛起
- 初学者入门web前端:C#基础知识:函数
- 笔记本安装Archlinux笔记
- 计算机领域前沿技术总结
- 论文阅读笔记《Robust Point Matching via Vector Field Consensus》
- onchange()事件的应用
- Error in melt() : could not find function “melt“
- android省电优化方案,安卓省电折腾那么多年,这几个优化方案效果明显