1 Z
2 X
3 U
4 T
5 G
6 F
7 C
8 B
9 A
1 A
2 B
3 C
4 D
Oracle的索引是以平衡树的方式组织存储的:保存的是索引列的值,以及该行的rowid的一部分(文件号,块号,行号)
下面我们通过例子来了解一下: 1,create table test(id int,name varchar2(20))
insert into test values(1,'Z');
insert into test values(2,'X');
insert into test values(3,'U');
insert into test values(4,'T'); insert into test values(5,'G');
insert into test values(6,'F'); insert into test values(7,'C');
insert into test values(8,'B');
insert into test values(9,'A'); insert into test values(1,'Z');
insert into test values(2,'B');
insert into test values(3,'C'); insert into test values(4,'D');
insert into test values(5,'F'); insert into test values(6,'H');
insert into test values(7,'G'); insert into test values(8,'H');
insert into test values(8,'I'); begin
for i in 3..2000 loop
insert into test values(i,'t'||i);
end loop;
end; 2,创建组合索引: SQL> create index test_idx2 on test(id ,name); Index created. 3,得到这个index的object_id: SQL> select object_id from dba_objects where object_name='TEST_IDX2'; OBJECT_ID
----------
74574 4,将索引dump到trace文件中 alter session set events 'immediate trace name treedump level 74574'; 看到结果:有两层,6个叶子节点 ----- begin tree dump
branch: 0x1000213 16777747 (0: nrow: 6, level: 1)
leaf: 0x1000214 16777748 (-1: nrow: 372 rrow: 372)
leaf: 0x1000215 16777749 (0: nrow: 359 rrow: 359)
leaf: 0x1000216 16777750 (1: nrow: 355 rrow: 355)
leaf: 0x1000217 16777751 (2: nrow: 342 rrow: 342)
leaf: 0x1000218 16777752 (3: nrow: 342 rrow: 342)
leaf: 0x1000219 16777753 (4: nrow: 246 rrow: 246)
----- end tree dump 0x1000ca3 :转为为10进制就是16780451 branch 表示的是 branch block ,它后面跟了一个十六进制表示的DBA(data block address),以及用10进制表示的DBA
DBA 之后表示在同一层次的相对位置(root 从0开始,branch 以及leaf从 -1开始)
nrow 表示块中包含了多少条目(包括delete的条目)
rrow 表示块中包含的实际条目(不包括delete的条目)
level 表示从该block到leaf的深度(leaf没有 level) 这个 branch block 的 level 为1,也就是说 从这个branch block 到 leaf block 的深度为1,根据前面的查询,这个索引的Blevel为1 验证索引的高度: SQL> select index_name, PREFIX_LENGTH, BLEVEL, LEAF_BLOCKS from user_indexes where index_name='TEST_IDX2'; INDEX_NAME PREFIX_LENGTH BLEVEL LEAF_BLOCKS
------------------------------ ------------- ---------- -----------
TEST_IDX2 1 6
可以看到高度为2=BLEVEL+1,leaf block为6 BLEVEL* NUMBER B*-Tree level: depth of the index from its root block to its leaf blocks. A depth of 0 indicates that the root block and leaf block are the same. LEAF_BLOCKS* NUMBER Number of leaf blocks in the index 现在我来验证一下branch: 0x1000213 16777747 (0: nrow: 6, level: 1) 是不是 root block , 我查询这个 branch 的 DBA SQL> select dbms_utility.data_block_address_file('16777747') FILE_ID,
dbms_utility.data_block_address_block('16777747') BLOCK_ID
from dual; 2 3 FILE_ID BLOCK_ID
---------- ----------
4 531 Btree 索引的 root block总是segment header+1,所以我查询该索引的段头 SQL> select header_file,header_block from dba_segments where segment_name='TEST_IDX2'; HEADER_FILE HEADER_BLOCK
----------- ------------
4 530 证明branch: 0x1000213 16777747 (0: nrow: 6, level: 1)就是root块,其实 treedump第一个 branch block 就是 root block ######################################################################################
到此时为止,已经从dump信息得出了索引的高度和第一个branch block就是root block的结论 #
#
#
######################################################################################
----- begin tree dump
branch: 0x1000213 16777747 (0: nrow: 6, level: 1)
leaf: 0x1000214 16777748 (-1: nrow: 372 rrow: 372)
leaf: 0x1000215 16777749 (0: nrow: 359 rrow: 359)
leaf: 0x1000216 16777750 (1: nrow: 355 rrow: 355)
leaf: 0x1000217 16777751 (2: nrow: 342 rrow: 342)
leaf: 0x1000218 16777752 (3: nrow: 342 rrow: 342)
leaf: 0x1000219 16777753 (4: nrow: 246 rrow: 246)
----- end tree dump Oracle 中提供了dbms_utility来求的这个地址对应的文件号和块号(传入的参数是十进制的那个值).
leaf: 0x1000214 16777748 (-1: nrow: 372 rrow: 372) 查看这个leaf block对应的文件号和块号
SQL> select dbms_utility.data_block_address_file(16777748)fno,
dbms_utility.data_block_address_block(16777748) bkno from dual; 2 FNO BKNO
---------- ----------
4 532 得到的是第4号文件的第532块 SQL> select file_id,block_id,blocks from dba_extents where segment_name='TEST_IDX2'; FILE_ID BLOCK_ID BLOCKS
---------- ---------- ----------
4 528 8
4 536 8 ##################################################################################
这里得出了leaf 块存放的数据文件号和对应的块 #
################################################################################## 5,将索引数据dump出来,dump 4号文件的532块,alter system dump datafile 4 block 532 row#0[8018] flag: ------, lock: 0, len=14
col 0; len 2; (2): c1 02
col 1; len 1; (1): 5a
col 2; len 6; (6): 01 00 02 0e 00 00
row#1[8004] flag: ------, lock: 0, len=14
col 0; len 2; (2): c1 02
col 1; len 1; (1): 5a
col 2; len 6; (6): 01 00 02 0e 00 09
row#2[7990] flag: ------, lock: 0, len=14
col 0; len 2; (2): c1 03
col 1; len 1; (1): 42
col 2; len 6; (6): 01 00 02 0e 00 0a
row#3[7976] flag: ------, lock: 0, len=14
col 0; len 2; (2): c1 03
col 1; len 1; (1): 58
col 2; len 6; (6): 01 00 02 0e 00 01
row#4[7962] flag: ------, lock: 0, len=14
col 0; len 2; (2): c1 04
col 1; len 1; (1): 43
col 2; len 6; (6): 01 00 02 0e 00 0b
row#5[7948] flag: ------, lock: 0, len=14
col 0; len 2; (2): c1 04
col 1; len 1; (1): 55
col 2; len 6; (6): 01 00 02 0e 00 02
row#6[7933] flag: ------, lock: 0, len=15
col 0; len 2; (2): c1 04
col 1; len 2; (2): 74 33
col 2; len 6; (6): 01 00 02 0f 00 00
row#7[7919] flag: ------, lock: 0, len=14
col 0; len 2; (2): c1 05
col 1; len 1; (1): 44
col 2; len 6; (6): 01 00 02 0e 00 0c
row#8[7905] flag: ------, lock: 0, len=14
col 0; len 2; (2): c1 05
col 1; len 1; (1): 54
col 2; len 6; (6): 01 00 02 0e 00 03
row#9[7890] flag: ------, lock: 0, len=15
col 0; len 2; (2): c1 05
col 1; len 2; (2): 74 34
col 2; len 6; (6): 01 00 02 0f 00 01
row#10[7876] flag: ------, lock: 0, len=14
col 0; len 2; (2): c1 06
col 1; len 1; (1): 46
col 2; len 6; (6): 01 00 02 0e 00 0d
row#11[7862] flag: ------, lock: 0, len=14
col 0; len 2; (2): c1 06
col 1; len 1; (1): 47
col 2; len 6; (6): 01 00 02 0e 00 04
row#12[7847] flag: ------, lock: 0, len=15
col 0; len 2; (2): c1 06
col 1; len 2; (2): 74 35
col 2; len 6; (6): 01 00 02 0f 00 02
row#13[7833] flag: ------, lock: 0, len=14
col 0; len 2; (2): c1 07
col 1; len 1; (1): 46
col 2; len 6; (6): 01 00 02 0e 00 05
row#14[7819] flag: ------, lock: 0, len=14
col 0; len 2; (2): c1 07
col 1; len 1; (1): 48
col 2; len 6; (6): 01 00 02 0e 00 0e
row#15[7804] flag: ------, lock: 0, len=15
col 0; len 2; (2): c1 07
col 1; len 2; (2): 74 36
col 2; len 6; (6): 01 00 02 0f 00 03
row#16[7790] flag: ------, lock: 0, len=14
col 0; len 2; (2): c1 08
col 1; len 1; (1): 43
col 2; len 6; (6): 01 00 02 0e 00 06
row#17[7776] flag: ------, lock: 0, len=14
col 0; len 2; (2): c1 08
col 1; len 1; (1): 47
col 2; len 6; (6): 01 00 02 0e 00 0f
row#18[7761] flag: ------, lock: 0, len=15
col 0; len 2; (2): c1 08
col 1; len 2; (2): 74 37
col 2; len 6; (6): 01 00 02 0f 00 04
row#19[7747] flag: ------, lock: 0, len=14
col 0; len 2; (2): c1 09
col 1; len 1; (1): 42
col 2; len 6; (6): 01 00 02 0e 00 07
row#20[7733] flag: ------, lock: 0, len=14
col 0; len 2; (2): c1 09
col 1; len 1; (1): 48
col 2; len 6; (6): 01 00 02 0e 00 10
以前20行为例, col 表示列号,从0开始 那么接下来就是索引的键值 以及 rowid中后12位值 00000001 row#0行号. col 0第一列(本例中第一列为是id), len 2表示长度是2, (2)表示占了两个字节,c1 02是id的值(这里值是1的16进制表示)的存储表示.
SQL> declare
n number;
begin
dbms_stats.convert_raw_value('c102',
n);
dbms_output.put_line(n);
end; 2 3 4 5 6 7
8 /
c102 对应的值为1 SQL> declare
n varchar2(10);
begin
dbms_stats.convert_raw_value('41', n);
dbms_output.put_line(n);
end; 2 3 4 5 6
7 /
A PL/SQL procedure successfully completed. 翻译出来的数据为:
第一行: 1 Z 第2行:1 Z 第3行:2 B 第4行:2 X 第5行:3 C 第6行:3 U leaf 块的数据排序时按以上规则排序的。
1 Z
2 X
3 U
4 T
5 G
6 F
7 C
8 B
9 A
1 A
2 B
3 C
4 D
Oracle的索引是以平衡树的方式组织存储的:保存的是索引列的值,以及该行的rowid的一部分(文件号,块号,行号)
下面我们通过例子来了解一下: 1,create table test(id int,name varchar2(20))
insert into test values(1,'Z');
insert into test values(2,'X');
insert into test values(3,'U');
insert into test values(4,'T'); insert into test values(5,'G');
insert into test values(6,'F'); insert into test values(7,'C');
insert into test values(8,'B');
insert into test values(9,'A'); insert into test values(1,'Z');
insert into test values(2,'B');
insert into test values(3,'C'); insert into test values(4,'D');
insert into test values(5,'F'); insert into test values(6,'H');
insert into test values(7,'G'); insert into test values(8,'H');
insert into test values(8,'I'); begin
for i in 3..2000 loop
insert into test values(i,'t'||i);
end loop;
end; 2,创建组合索引: SQL> create index test_idx2 on test(id ,name); Index created. 3,得到这个index的object_id: SQL> select object_id from dba_objects where object_name='TEST_IDX2'; OBJECT_ID
----------
74574 4,将索引dump到trace文件中 alter session set events 'immediate trace name treedump level 74574'; 看到结果:有两层,6个叶子节点 ----- begin tree dump
branch: 0x1000213 16777747 (0: nrow: 6, level: 1)
leaf: 0x1000214 16777748 (-1: nrow: 372 rrow: 372)
leaf: 0x1000215 16777749 (0: nrow: 359 rrow: 359)
leaf: 0x1000216 16777750 (1: nrow: 355 rrow: 355)
leaf: 0x1000217 16777751 (2: nrow: 342 rrow: 342)
leaf: 0x1000218 16777752 (3: nrow: 342 rrow: 342)
leaf: 0x1000219 16777753 (4: nrow: 246 rrow: 246)
----- end tree dump 0x1000ca3 :转为为10进制就是16780451 branch 表示的是 branch block ,它后面跟了一个十六进制表示的DBA(data block address),以及用10进制表示的DBA
DBA 之后表示在同一层次的相对位置(root 从0开始,branch 以及leaf从 -1开始)
nrow 表示块中包含了多少条目(包括delete的条目)
rrow 表示块中包含的实际条目(不包括delete的条目)
level 表示从该block到leaf的深度(leaf没有 level) 这个 branch block 的 level 为1,也就是说 从这个branch block 到 leaf block 的深度为1,根据前面的查询,这个索引的Blevel为1 验证索引的高度: SQL> select index_name, PREFIX_LENGTH, BLEVEL, LEAF_BLOCKS from user_indexes where index_name='TEST_IDX2'; INDEX_NAME PREFIX_LENGTH BLEVEL LEAF_BLOCKS
------------------------------ ------------- ---------- -----------
TEST_IDX2 1 6
可以看到高度为2=BLEVEL+1,leaf block为6 BLEVEL* NUMBER B*-Tree level: depth of the index from its root block to its leaf blocks. A depth of 0 indicates that the root block and leaf block are the same. LEAF_BLOCKS* NUMBER Number of leaf blocks in the index 现在我来验证一下branch: 0x1000213 16777747 (0: nrow: 6, level: 1) 是不是 root block , 我查询这个 branch 的 DBA SQL> select dbms_utility.data_block_address_file('16777747') FILE_ID,
dbms_utility.data_block_address_block('16777747') BLOCK_ID
from dual; 2 3 FILE_ID BLOCK_ID
---------- ----------
4 531 Btree 索引的 root block总是segment header+1,所以我查询该索引的段头 SQL> select header_file,header_block from dba_segments where segment_name='TEST_IDX2'; HEADER_FILE HEADER_BLOCK
----------- ------------
4 530 证明branch: 0x1000213 16777747 (0: nrow: 6, level: 1)就是root块,其实 treedump第一个 branch block 就是 root block ######################################################################################
到此时为止,已经从dump信息得出了索引的高度和第一个branch block就是root block的结论 #
#
#
######################################################################################
----- begin tree dump
branch: 0x1000213 16777747 (0: nrow: 6, level: 1)
leaf: 0x1000214 16777748 (-1: nrow: 372 rrow: 372)
leaf: 0x1000215 16777749 (0: nrow: 359 rrow: 359)
leaf: 0x1000216 16777750 (1: nrow: 355 rrow: 355)
leaf: 0x1000217 16777751 (2: nrow: 342 rrow: 342)
leaf: 0x1000218 16777752 (3: nrow: 342 rrow: 342)
leaf: 0x1000219 16777753 (4: nrow: 246 rrow: 246)
----- end tree dump Oracle 中提供了dbms_utility来求的这个地址对应的文件号和块号(传入的参数是十进制的那个值).
leaf: 0x1000214 16777748 (-1: nrow: 372 rrow: 372) 查看这个leaf block对应的文件号和块号
SQL> select dbms_utility.data_block_address_file(16777748)fno,
dbms_utility.data_block_address_block(16777748) bkno from dual; 2 FNO BKNO
---------- ----------
4 532 得到的是第4号文件的第532块 SQL> select file_id,block_id,blocks from dba_extents where segment_name='TEST_IDX2'; FILE_ID BLOCK_ID BLOCKS
---------- ---------- ----------
4 528 8
4 536 8 ##################################################################################
这里得出了leaf 块存放的数据文件号和对应的块 #
################################################################################## 5,将索引数据dump出来,dump 4号文件的532块,alter system dump datafile 4 block 532 row#0[8018] flag: ------, lock: 0, len=14
col 0; len 2; (2): c1 02
col 1; len 1; (1): 5a
col 2; len 6; (6): 01 00 02 0e 00 00
row#1[8004] flag: ------, lock: 0, len=14
col 0; len 2; (2): c1 02
col 1; len 1; (1): 5a
col 2; len 6; (6): 01 00 02 0e 00 09
row#2[7990] flag: ------, lock: 0, len=14
col 0; len 2; (2): c1 03
col 1; len 1; (1): 42
col 2; len 6; (6): 01 00 02 0e 00 0a
row#3[7976] flag: ------, lock: 0, len=14
col 0; len 2; (2): c1 03
col 1; len 1; (1): 58
col 2; len 6; (6): 01 00 02 0e 00 01
row#4[7962] flag: ------, lock: 0, len=14
col 0; len 2; (2): c1 04
col 1; len 1; (1): 43
col 2; len 6; (6): 01 00 02 0e 00 0b
row#5[7948] flag: ------, lock: 0, len=14
col 0; len 2; (2): c1 04
col 1; len 1; (1): 55
col 2; len 6; (6): 01 00 02 0e 00 02
row#6[7933] flag: ------, lock: 0, len=15
col 0; len 2; (2): c1 04
col 1; len 2; (2): 74 33
col 2; len 6; (6): 01 00 02 0f 00 00
row#7[7919] flag: ------, lock: 0, len=14
col 0; len 2; (2): c1 05
col 1; len 1; (1): 44
col 2; len 6; (6): 01 00 02 0e 00 0c
row#8[7905] flag: ------, lock: 0, len=14
col 0; len 2; (2): c1 05
col 1; len 1; (1): 54
col 2; len 6; (6): 01 00 02 0e 00 03
row#9[7890] flag: ------, lock: 0, len=15
col 0; len 2; (2): c1 05
col 1; len 2; (2): 74 34
col 2; len 6; (6): 01 00 02 0f 00 01
row#10[7876] flag: ------, lock: 0, len=14
col 0; len 2; (2): c1 06
col 1; len 1; (1): 46
col 2; len 6; (6): 01 00 02 0e 00 0d
row#11[7862] flag: ------, lock: 0, len=14
col 0; len 2; (2): c1 06
col 1; len 1; (1): 47
col 2; len 6; (6): 01 00 02 0e 00 04
row#12[7847] flag: ------, lock: 0, len=15
col 0; len 2; (2): c1 06
col 1; len 2; (2): 74 35
col 2; len 6; (6): 01 00 02 0f 00 02
row#13[7833] flag: ------, lock: 0, len=14
col 0; len 2; (2): c1 07
col 1; len 1; (1): 46
col 2; len 6; (6): 01 00 02 0e 00 05
row#14[7819] flag: ------, lock: 0, len=14
col 0; len 2; (2): c1 07
col 1; len 1; (1): 48
col 2; len 6; (6): 01 00 02 0e 00 0e
row#15[7804] flag: ------, lock: 0, len=15
col 0; len 2; (2): c1 07
col 1; len 2; (2): 74 36
col 2; len 6; (6): 01 00 02 0f 00 03
row#16[7790] flag: ------, lock: 0, len=14
col 0; len 2; (2): c1 08
col 1; len 1; (1): 43
col 2; len 6; (6): 01 00 02 0e 00 06
row#17[7776] flag: ------, lock: 0, len=14
col 0; len 2; (2): c1 08
col 1; len 1; (1): 47
col 2; len 6; (6): 01 00 02 0e 00 0f
row#18[7761] flag: ------, lock: 0, len=15
col 0; len 2; (2): c1 08
col 1; len 2; (2): 74 37
col 2; len 6; (6): 01 00 02 0f 00 04
row#19[7747] flag: ------, lock: 0, len=14
col 0; len 2; (2): c1 09
col 1; len 1; (1): 42
col 2; len 6; (6): 01 00 02 0e 00 07
row#20[7733] flag: ------, lock: 0, len=14
col 0; len 2; (2): c1 09
col 1; len 1; (1): 48
col 2; len 6; (6): 01 00 02 0e 00 10
以前20行为例, col 表示列号,从0开始 那么接下来就是索引的键值 以及 rowid中后12位值 00000001 row#0行号. col 0第一列(本例中第一列为是id), len 2表示长度是2, (2)表示占了两个字节,c1 02是id的值(这里值是1的16进制表示)的存储表示.
SQL> declare
n number;
begin
dbms_stats.convert_raw_value('c102',
n);
dbms_output.put_line(n);
end; 2 3 4 5 6 7
8 /
c102 对应的值为1 SQL> declare
n varchar2(10);
begin
dbms_stats.convert_raw_value('41', n);
dbms_output.put_line(n);
end; 2 3 4 5 6
7 /
A PL/SQL procedure successfully completed. 翻译出来的数据为:
第一行: 1 Z 第2行:1 Z 第3行:2 B 第4行:2 X 第5行:3 C 第6行:3 U leaf 块的数据排序时按以上规则排序的。
先引导列,之后是后面的列。
												

组合索引leaf 数据存储的更多相关文章

  1. 【solr】SolrCloud中索引数据存储于HDFS

    SolrCloud中索引数据存储于HDFS 本人最近使用SolrCloud存储索引日志条件,便于快速索引,因为我的索引条件较多,每天日志记录较大,索引想到将日志存入到HDFS中,下面就说说怎么讲sol ...

  2. Atitit.数据索引 的种类以及原理实现机制 索引常用的存储结构

    Atitit.数据索引 的种类以及原理实现机制 索引常用的存储结构 1. 索引的分类1 1.1. 按照存储结构划分btree,hash,bitmap,fulltext1 1.2. 索引的类型  按查找 ...

  3. SQL Server性能优化(12)非聚集索引的组合索引存储结构

    一,非聚集索引组合索引 用户可以在多个列上建立索引,这种索引叫做复合索引(组合索引).但复合索引在数据库操作期间所需的开销更小,可以代替多个单一索引.当表的行数远远大于索引键的数目时,使用这种方式可以 ...

  4. Atitit.数据索引 的种类以及原理实现机制 索引常用的存储结构

    Atitit.数据索引 的种类以及原理实现机制 索引常用的存储结构 1. 索引的分类1 1.1. 索引的类型  按查找方式分,两种,分块索引 vs编号索引1 1.2. 按索引与数据的查找顺序可分为 正 ...

  5. Elasticsearch之重要核心概念(cluster(集群)、shards(分配)、replicas(索引副本)、recovery(据恢复或叫数据重新分布)、gateway(es索引的持久化存储方式)、discovery.zen(es的自动发现节点机制机制)、Transport(内部节点或集群与客户端的交互方式)、settings(修改索引库默认配置)和mappings)

    Elasticsearch之重要核心概念如下: 1.cluster 代表一个集群,集群中有多个节点,其中有一个为主节点,这个主节点是可以通过选举产生的,主从节点是对于集群内部来说的.es的一个概念就是 ...

  6. oracle 优化——索引与组合索引

    1.索引结构.第一张图是索引的官方图解,右侧是存储方式的图解. 图中很清晰的展示了索引存储的状况. 在leaf 节点中存储了一列,索引所对应项的 :值,rowId,长度,头信息(控制信息) 这样我们就 ...

  7. Oracle组合索引与回表

    回表 简单来说就是数据库根据索引找到了指定的记录所在行后,还需要根据rowid再次到数据块里取数据的操作. "回表"一般就是指执行计划里显示的"TABLE ACCESS ...

  8. MongoDB性能篇之创建索引,组合索引,唯一索引,删除索引和explain执行计划

    这篇文章主要介绍了MongoDB性能篇之创建索引,组合索引,唯一索引,删除索引和explain执行计划的相关资料,需要的朋友可以参考下 一.索引 MongoDB 提供了多样性的索引支持,索引信息被保存 ...

  9. SQL Server索引 (原理、存储)聚集索引、非聚集索引、堆 <第一篇>

    一.存储结构 在SQL Server中,有许多不同的可用排列规则选项. 二进制:按字符的数字表示形式排序(ASCII码中,用数字32表示空格,用68表示字母"D").因为所有内容都 ...

随机推荐

  1. test_wifi

    #!/system/bin/sh #Load driver echo "ASD WIFI TESTING..." AP_NAME="default" num=0 ...

  2. JBoss 系列九十六:JBoss MSC - 简介及一个简单演示样例

    什么是 JBoss MSC JBoss MSC 即 JBoss Modular Service Container,是第三代 JBoss 产品 JBoss 7和WildFfly的内核,JBoss MS ...

  3. android api 中文 (73)—— AdapterView

    前言 本章内容是android.widget.AdapterView,版本为Android 2.3 r1,翻译来自"cnmahj",欢迎大家访问他的博客:http://androi ...

  4. Scrapy开发

    最近要开发一个软件需要爬取网站信息,于是选择了python 和scrapy下面做一下简单介绍:Scrapy安装连接,scrapy官网连接 所谓网络爬虫,就是一个在网上到处或定向抓取数据的程序,当然,这 ...

  5. JVM内存回收对象及引用分析

    自动垃圾回收是Java相较于C++的一个重要的特点,想了解JVM的垃圾回收机制,首先我们要知道垃圾回收是回收什么地方的垃圾,我在我的上一篇博客<JVM内存区域划分>里面有写到JVM里面的内 ...

  6. Centos6 安装vnc

    Centos6 安装vnc 1. 安装 使用yum方式安装 yum install tigervnc-server tigervnc #启动 vncserver #重启动 /etc/init.d/vn ...

  7. asp.net微信开发第八篇----永久素材管理

    除了3天就会失效的临时素材外,开发者有时需要永久保存一些素材,届时就可以通过本接口新增永久素材. 最近更新,永久图片素材新增后,将带有URL返回给开发者,开发者可以在腾讯系域名内使用(腾讯系域名外使用 ...

  8. WinAPI——模拟正弦波

    /*************************** * * 程序名称 : 模拟正弦波 * 作 者 : doodle777 * 版 本 : 1.1 * 日 期 : 2012-10-19 * 说 明 ...

  9. Shell中的${},##和%%的使用

    假设我们定义了一个变量为: file=/dir1/dir2/dir3/my.file.txt 可以用${ }分别替换得到不同的值: ${file#*/}:删掉第一个/ 及其左边的字符串:dir1/di ...

  10. JavaScript 客户端JavaScript之cookie和客户端持久性

    Document对象都有一个cookie属性,它使得JavaScript代码能够在用户的硬盘上持久地存储数据, 并且能够获取以这种方式存储的数据.客户端持久性是赋予WEB应用程序记忆力的一种简单方法. ...