1. 大型表/索引数据压缩设计与维护

1.1 如何对普通表进行压缩

如果对一些较为固定历史数据采取压缩方法存储,即可以节省存储空间,也可提高处理速度。表压缩技术方面,oracle

11g/12c给出新压缩方法,用create table带compress子句完成对表压缩描述。

scott@ORCL> create table sales_history_comp(part_id

varchar2(50) not null,store_id varchar2(50) not null,sale_date date

not null,quantity number(10,2) not null) compress;

Table created.

Elapsed: 00:00:00.75

scott@ORCL> select table_name,compression from

user_tables;

TABLE_NAME  COMPRESSION

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

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

DEPT  DISABLED

EMP  DISABLED

BONUS  DISABLED

SALGRADE  DISABLED

NO_EMP  DISABLED

SPERRORLOG  DISABLED

INSURED_AUTOS  DISABLED

UNIT_INF  DISABLED

PAY_LST_DET  DISABLED

T_DEPT  DISABLED

T_EMP  DISABLED

EMP_COPY  DISABLED

DEPT_COPY  DISABLED

SALES_HISTORY_COMP  ENABLED

TMP_EMP  DISABLED

15 rows selected.

Elapsed: 00:00:00.33

scott@ORCL>

1.2 如何对分区表进行行压缩

如果分区表的数据量仍然很大,可以考虑对分区表进行压缩存储,oracle使用create

table带compress或alter table add partition带compress子句实现

--create table

scott@ORCL> create table t1(c01 number,c02 varchar2(200))

partition by range(c01)(partition p1 values less than(100)

compress,partition p2 values less than(200) compress);

Table created.

Elapsed: 00:00:00.21

--alter table add partition

scott@ORCL> alter table t1 add partition p3 values less

than(300) compress;

Table altered.

Elapsed: 00:00:00.08

--此外可以通过alter table实现分区表的压缩或者不压缩,比如

scott@ORCL> alter table t1 modify partition p3

nocompress;

Table altered.

Elapsed: 00:00:00.03

scott@ORCL>

1.4 如何创建一个压缩索引

如果某个索引的数据存储量很大,采用压缩方法也是一个很好的选择。可以用create

index带compress子句或者采用alter带compresss子句实现压缩

语法:

--create index语句

create index on (col1,col2,...coln) compresss [n];

--alter index语句

alter index rebulid compress [n];

create index ix_test on test(object_name,object_type) pctfree

0 compress 1,

1.5 如何进行分区索引数据压缩

如果某个索引的数据量较大,设计时可以考虑索引分区和压缩。但是要在已经存在的索引上通过alter

index实现分区索引的压缩是不允许的,必须先删除原来索引,然后再用create index语句创建。

下面是错误的:

alter index IDX_RANG_SALES_PROD_ID rebuild partition

SALES_Q1_2007 compress;

下面做法是正确的

drop index IDX_RANGE_SALES_PROD_ID;

create index IDX_RANGE_SALES_PROD_ID ON RANGE_SALES(PROD_ID)

LOCAL COMPRESS;

1.6 如何创建OLTP压缩表

如果你的应用表属于OLTP应用,相关的表的数据可采取OLTP压缩方法存储。

scott@ORCL> create table emp1(emp_id number,first_name

varchar2(128),last_name varchar2(128)) compress for OLTP;

Table created.

Elapsed: 00:00:00.05

sys@ORCL> create table tab_oltp compress for OLTP as select

* from dba_objects;

Table created.

Elapsed: 00:00:00.33

sys@ORCL>

alter table...move compress for OLTP;

1.7如何创建压缩实体视图

create materialized view mv_sales_comp compress as

select.........

说明:

实体化视图压缩是否有必要,关键要看产生的结果集是否很大,如果数据量很大,考虑用压缩式必要的,否则,就不要采用压缩创建。

1.8 如何建立ILM压缩表

ILM是信息生命期(information lifecycle management),是oracle

12c版本提供的新功能之一。采用ILM可以对信息生命周期进行有效和完善的数据存储。如果oracle12c的数据库数据量很大,并且有部分的数据总是处于“热数据、温数据和冷数据”几个阶段。这样可以考虑将那些“冷”数据采用数据压缩或分区数据压缩处理。oracle用create

table时增加ILM ADD POLICY COMPRESS子句实现

--适用版本:12c(非CDB)

--语句1:create table 上加 ILM ADD POLICY 子句

create tabble sales

(PROD_ID NUMBER NOT NULL,

CUST_ID NUMBER NOT NULL,

TIME_ID DATE NOT NULL,

CHANNEL_ID NUMBER NOT NULL,

PROMO_ID NUMBER NOT NULL,

QUANTITY_SOLD BINARY_DOUBLE NOT NULL,

AMOUNT_SOLD BINARY_DOUBLE NOT NULL)

ILM ADD POLICY COMPRESS FOR ARCHIVE HIGH

SEGMENT

AFTER 6 MONTHS OF NO ACCESS

TABLESPACE USERS STORAGE(INITIAL 4M NEXT 2M);

---以实现将sales表定义为6改月后不被访问 时进行数据压缩

--

--语句2:

alter table sales

ILM ADD MovePolicy

TIER Partitions to

'Archive_TBS'

ON OrdersClosedPolicy;

--实现ILM测试的定义

--语句3:

--

select substr(policy_name,1,24) "POLICY_NAME",

policy_type,enabled

FROM USER_ILMPOLICIES;

1.9 如何查询压缩对象信息

scott@ORCL> create table t

as select * from all_objects where rownum

<=50000;

Table created.

Elapsed: 00:00:32.57

scott@ORCL>

scott@ORCL> create index

IX_TEXT on t(owner,object_type,object_name) compress 1;

Index created.

Elapsed: 00:00:00.28

scott@ORCL>

select owner,table_name,index_name,compression from dba_indexes where

compression='ENABLED';

或者

scott@ORCL>

select owner,table_name,index_name,compression

from all_indexes where compression='ENABLED';

OWNER TABLE_NAME  INDEX_NAME COMPRESSION

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

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

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

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

SCOTT T IX_TEXT ENABLED

1 row selected.

Elapsed: 00:00:00.20

scott@ORCL>

--下面脚本式测试索引的压缩比率方法

desc index_stats

set linesize 121

scott@ORCL> select

height,blocks,lf_rows,lf_blks,br_rows,br_blks,btree_space,used_space

from index_stats where name='IX_TEXT';

HEIGHT BLOCKS LF_ROWS LF_BLKS BR_ROWS BR_BLKS BTREE_SPACE

USED_SPACE

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

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

2 32 5574 29 28 1 239796 204188

1 row selected.

Elapsed: 00:00:00.08

scott@ORCL>

scott@ORCL> analyze index

IX_TEXT validate structure;

Index analyzed.

Elapsed: 00:00:00.10

--对无压缩的索引执行analyze命令时,数据库会提供一个最优的压缩建议及其压缩效果,并将其写至OPT_CMPR_PCTSAVE、OPT_CMPR_COUNT中。

scott@ORCL> select

opt_cmpr_count,opt_cmpr_pctsave from index_stats;

OPT_CMPR_COUNT OPT_CMPR_PCTSAVE

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

2 18

1 row selected.

Elapsed: 00:00:00.15

--opt_cmpr_count会告诉我们要得到最佳压缩效果应使用的压缩数,opt_cmpr_pctsave

则会告诉我们使用opt_cmpr_count能节省多少空间百分比

说明

当表采用压缩时,你可以查询DBA_TABLES数据字典,这个数据字典也有compression列,当compression列的值为“ENABLED”时,表示这个表示压缩的,COMPRESS_FOR列表示压缩的方法,当COMPRESS_FOR列=OLTP,表示采用OLTP压缩方法,当为basic是,采用的是基本的压缩方法。

2. 表分区的创建与管理

2.1 如何创建基于日期的表范围分区

若要创建的表属于大型表,而且经常按照日期进行统计和查询,那么,如何创建分区表呢?当用户的统计和查询都经常按照表的某个日期进行,那么可以考虑用oracle的范围分区,而范围分区的子句是partition

by range,比如

create table sales_range (salesman_id number(5),sales_name

varchar2(30),sales_amount number(10),sales_date date) partition by

range(sales_date)

(partition sales_Jan2014

values less than (TO_DATE('01/02/2000','DD/MM/YYYY'))

tablespace users,

partition sales_Feb2014

values less than (TO_DATE('01/03/2000','DD/MM/YYYY'))

tablespace users);

注意:

partition sales_Jan2014是分区的名称,如果省略,则系统以sys_pnnnn命名

2.2 如何创建列表的分区表

oracle的列表分区是针对那些列可以枚举的情况,比如中国省级名称、直辖市等。可以用create

table语句的partition by list实现。

create table sales(area_name varchar(14),bj_date date default

sysdate,order_tot number(10)) partition by list(area_name)

(partition beijing values('Beijing') tablespace users pctfree

5,

partition shanghai values('Shanghai')

tablespace users pctfree 5,

partition shenzhen values('Shenzhen')

tablespace users pctfree 5);

2.3 如何对分区表进行有效性检查

当你的应用系统采用分区方法对表结构设计时,可能遇到某些分区表出现无效现象,可以通过.../rdbms/admin目录下存储的脚本utlvalid.sql脚本实行有效性检查。

idle> @$ORACLE_HOME/rdbms/admin/utlvalid.sql;

Table created.

Elapsed: 00:00:00.42

idle>

idle> desc invalid_rows;

Name Null? Type

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

--------

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

OWNER_NAME VARCHAR2(30)

TABLE_NAME VARCHAR2(30)

PARTITION_NAME

VARCHAR2(30)

SUBPARTITION_NAME VARCHAR2(30)

HEAD_ROWID ROWID

ANALYZE_TIMESTAMP DATE

idle>

idle> analyze table scott.sales partition(beijing) validate

structure;

Table analyzed.

Elapsed: 00:00:00.10

idle>

idle> select * from invalid_rows;

no rows selected

Elapsed: 00:00:00.00

idle>

set verify off

set space 0

set heading off

set feedback off

set pages 1000

set linesize 150

spool analyze_part.sql

idle> select 'analyze table ' || table_name || ' validate

structure into invalid_rows;' from dba_tables where owner='SYS' and

partitioned='YES';

analyze table WRH$_FILESTATXS validate structure into

invalid_rows;

analyze table WRH$_SQLSTAT validate structure into

invalid_rows;

analyze table WRH$_SYSTEM_EVENT validate structure into

invalid_rows;

analyze table WRH$_WAITSTAT validate structure into

invalid_rows;

analyze table WRH$_LATCH validate structure into

invalid_rows;

analyze table WRH$_LATCH_CHILDREN validate structure into

invalid_rows;

analyze table WRH$_LATCH_PARENT validate structure into

invalid_rows;

analyze table WRH$_LATCH_MISSES_SUMMARY validate structure into

invalid_rows;

analyze table WRH$_EVENT_HISTOGRAM validate structure into

invalid_rows;

analyze table WRH$_DB_CACHE_ADVICE validate structure into

invalid_rows;

analyze table WRH$_ROWCACHE_SUMMARY validate structure into

invalid_rows;

analyze table WRH$_SGASTAT validate structure into

invalid_rows;

analyze table WRH$_SYSSTAT validate structure into

invalid_rows;

analyze table WRH$_SYS_TIME_MODEL validate structure into

invalid_rows;

analyze table WRH$_OSSTAT validate structure into

invalid_rows;

analyze table WRH$_PARAMETER validate structure into

invalid_rows;

analyze table WRH$_SEG_STAT validate structure into

invalid_rows;

analyze table WRH$_DLM_MISC validate structure into

invalid_rows;

analyze table WRH$_INST_CACHE_TRANSFER validate structure into

invalid_rows;

analyze table WRH$_ACTIVE_SESSION_HISTORY validate structure into

invalid_rows;

analyze table WRH$_TABLESPACE_STAT validate structure into

invalid_rows;

analyze table WRH$_SERVICE_STAT validate structure into

invalid_rows;

analyze table WRH$_SERVICE_WAIT_CLASS validate structure into

invalid_rows;

analyze table WRH$_INTERCONNECT_PINGS validate structure into

invalid_rows;

analyze table STREAMS$_APPLY_SPILL_MSGS_PART validate structure

into invalid_rows;

Elapsed: 00:00:00.08

spool off

2.4 如何检查表分区设计存在的缺陷

Oracle系统的分区方法比较灵活,比如,可以指定分区名称,也可以不指定;可以指定默认情况的max值,也可以省略。这样一来,许多缺乏经验的设计者可能会遗漏某些关键选项,比如,缺少默认的值的maxvalue等。

oracle系统在USER_tab_partitions数据字典中,HIGH_VALUE列用于分区表的最高值的描述,当HIGH_VALUE列的值为“MAXVALUE”时,表示分区表存在问题,比如

select * from user_tab_partitions;

2.5 如何查询到无效的索引分区

当表采用分区方法创建之后,分区表的维护变得非常敏感。比如对分区表进行删除后,会导致索引不可用,oracle系统在ind_partitions数据字典中,status列用于比哦是当前索引的状态,当status为“unusable”时,表示相关的索引无效。查询和解决无效的分区索引方法如下:

alter table sales_data truncate partition sales_1999_h2;

select partition_name,status from

user_ind_partitins where index_name='PROD_ID_IND';

2.6 怎么知道表与索引在同一个表空间中

采用下面脚本,可查询HR用户表/索引使用同一个表空间问题

col index_name for a30

col owner for a20

idle> select owner,index_name,tablespace_name from

dba_indexes where owner='HR' and tablespace_name in (select

tablespace_name from dba_tables where owner='HR');

HR COUNTRY_C_ID_PK

USERS

HR REG_ID_PK

USERS

HR LOC_ID_PK

USERS

HR DEPT_ID_PK

USERS

HR JOB_ID_PK

USERS

HR EMP_EMAIL_UK

USERS

HR EMP_EMP_ID_PK

USERS

HR JHIST_EMP_ID_ST_DATE_PK

USERS

HR EMP_DEPARTMENT_IX

USERS

HR EMP_JOB_IX

USERS

HR EMP_MANAGER_IX

USERS

HR EMP_NAME_IX

USERS

HR DEPT_LOCATION_IX

USERS

HR JHIST_JOB_IX

USERS

HR JHIST_EMPLOYEE_IX

USERS

HR JHIST_DEPARTMENT_IX

USERS

HR LOC_CITY_IX

USERS

HR LOC_STATE_PROVINCE_IX

USERS

HR LOC_COUNTRY_IX

USERS

HR CUST_NAME_I

USERS

HR CREDITRATING_I

USERS

Elapsed: 00:00:01.00

idle>

3 索引分区的创建与管理

3.1 何时将表创建IOT

IOT是oracle系统支持的索引结构表,IOT的内部结构是将表的数据行和索引数据项存储在一个块内。这样,可以直接查询该数据的行数据,而不必先查询所以获取rowid在读取表的相关块。

要创建IOT表,这个表必须是某个列定义为主键,这样才能使用ORGANIZATION 子句指定该表为IOT表。

下面的例子ZIPREFERENCES表的ZIPCODE列描述为主键,然后加"ORGANAIZATION"

子句加以完成IOT的定义。

scott@ORCL> create table

zipreferences (zipcode varchar2(10) not null,city varchar(40) not

null,state varchar2(10) not null,province varchar2(10) not

null,country varchar2(20) not null, constraint zip_pk primary

key(zipcode)) organization index tablespace users pctthreshold 20

overflow tablespace users storage(initial 2m next 1m maxextents 50

pctincrease 0);

Table created.

Elapsed: 00:00:00.16

scott@ORCL>

3.2 如何对IOT进行分区

若对IOT对象进行分区创建,必须是oracle 10gR2及以上版本,可以采用create

table加子句完成分区表的创建

create table doc_index(token char(20),doc_id

number,token_frequency number,token_offsets

varchar2(512),constraint pk_docindex6 primary key(token,doc_id))

organization index initrans 4 compress 1 including token_frequency

overflow initrans 6 partition by range(token) (partition p1 values

less than('j') tablespace users overflow tablespace users,partition

p2 values less than('s') tablespace users nocompress overflow users

partition p3 values less than(maxvalue) tablespace users overflow

tablespace users);

create table orders(id number,odate date,notes

varchar2(1000),primary key(id,odate)) organization index including

odate overflow tablespace users partition by range(odate)

(partition p1 values less than('01-JUN-1998') tablespace users

overflow tablespace users,partition p2 values less

than('01-JAN-1999''));

3.3 如何创建索引局部分区

--创建表

create table dept(deptno number(2),dept_name varchar2(30))

partition by range(deptno)(partition d1 values less than(10)

tablespace users,partition d2 values less than(20) tablespace

users,partition d3 values less than(maxvalue) tablespace

users);

--向表插入部分数据

insert into dept values(1,'dept 1');

insert into dept values(7,'dept 7');

insert into dept values(10,'dept 10');

insert into dept values(15,'dept 15');

insert into dept values(22,'dept 22');

create index dept_index on dept(deptno) local(partition d1

tablespace users,partition d2 tablespace users,partition d3

tablespace users);

3.4 如何创建索引全局分区

--创建分区表结构

create index cost_ix on sales(amount_sold) global partition by

range(amount_sold)(partition p1 values less than(1000),partition p2

values less than(2500),partition p3 values less

than(maxvalues));

--创建全局索引分区;

create index company_id_ix on customers(company_id) global

partition by hash(company_id) partition 4;

4 创建oracle lob表与维护

4.1 如何创建合理的blob类的表结构

oracle用create table中lob子句带compress子句实现对lob型的压缩,此外,还要描述storage

as等子句。

--下面语句创建一个blob表:

scott@ORCL> create table

some_docs(doc_id number not null,crc32 varchar2(8) not null,image

blob not null)tablespace users pctfree 10 pctused 40

storage(initial 1m next 1m pctincrease 0)lob (image) store as

smedoc_blobseg(tablespace users storage(initial 100m next 100m

pctincrease 0) disable storage in row chunk 32768 pctversion 10

index somedoc_blobseg_idx nocache nologging);

Table created.

Elapsed: 00:00:00.31

scott@ORCL>

4.2如何获取lob端的信息

如果创建带有blob/clob类型的表结构,希望了解blob/clob存储信息,可以查询dba_lobs数据字典

sys@ORCL> desc dba_lobs

Name Null? Type

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

--------

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

OWNER VARCHAR2(30)

TABLE_NAME VARCHAR2(30)

COLUMN_NAME VARCHAR2(4000)

SEGMENT_NAME VARCHAR2(30)

TABLESPACE_NAME VARCHAR2(30)

INDEX_NAME VARCHAR2(30)

CHUNK NUMBER

PCTVERSION NUMBER

RETENTION NUMBER

FREEPOOLS NUMBER

CACHE VARCHAR2(10)

LOGGING VARCHAR2(7)

ENCRYPT VARCHAR2(4)

COMPRESSION VARCHAR2(6)

DEDUPLICATION VARCHAR2(15)

IN_ROW

VARCHAR2(3)

FORMAT

VARCHAR2(15)

PARTITIONED VARCHAR2(3)

SECUREFILE VARCHAR2(3)

SEGMENT_CREATED VARCHAR2(3)

sys@ORCL> select

table_name,segment_name,index_name from dba_lobs where

table_name='SOME_DOCS' order by table_name;

TABLE_NAME SEGMENT_NAME INDEX_NAME

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

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

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

SOME_DOCS SMEDOC_BLOBSEG SOMEDOC_BLOBSEG_IDX

1 row selected.

Elapsed: 00:00:00.08

sys@ORCL>

4.3 如何创建securefile表结构

从oracle

11g开始,oracle新增加了安全文件(SecureFile) ,它比原来的基本文件(BaseFile)提供了更安全的功能。默认情况下,oracle

12c版本与安全文件相关的参数db_securefile为preferred,表示在创建lob表时允许创建SecureFile。这样,我们在创建Blob/Clob时指定SecureFile即可。

show user

set trimspool on

set line 123

sys@ORCL> create table

emp_pic(emp_no varchar2(20),pic blob) tablespace users;

Table created.

Elapsed: 00:00:00.38

sys@ORCL>

show parameter db_securefile;

sys@ORCL> show parameter

db_securefile;

NAME TYPE VALUE

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

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

db_securefile string PERMITTED

sys@ORCL>

sys@ORCL> select

table_name,segment_name,index_name,securefile from dba_lobs where

table_name='EMP_PIC';

TABLE_NAME SEGMENT_NAME INDEX_NAME SECURE

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

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

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

------

EMP_PIC

SYS_LOB0000013569C00002$$ SYS_IL0000013569C00002$$ NO

1 row selected.

Elapsed: 00:00:00.15

sys@ORCL>

sys@ORCL> select

segment_name,segment_type,segment_subtype from dba_segments where

segment_name='EMP_PIC';

SEGMENT_NAME SEGMENT_TYPE

SEGMENT_SUBTYPE

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

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

EMP_PIC

TABLE MSSM

1 row selected.

Elapsed: 00:00:00.09

sys@ORCL>

4.4 如何对SecureFile进行压缩

oracle用create table中LOB子句带compress子句实现对lob型的压缩

create table secfile_table(rid number(5),bcol blob) lob(bcol)

store as securefile compr_lob(tablespace users

retention min 3600 compress encrypt cache reads) tablespace

users;

ilm 和dlm差异_第八章 大数据对象设计与维护相关推荐

  1. ilm 和dlm差异_《存储e周刊》第28期 信息生命周期管理之争

    说二月份的最后一周是ILM之周,完全是因为EMC在华推出了其历史上最广泛的分级存储平台组合,跨高端.中端.网络附加存储(NAS)与内容寻址存储(CAS)的全部系列,希望以此帮助客户实现信息在整个生命周 ...

  2. ilm 和dlm差异_差异表达基因的几种筛选方法

    710033) 收稿日期 : 2006 2 09 2 12 ; 接受日期 : 2006 2 10 2 11 基金项目 : 国家自然科学基金 ( 30271281; 30170923 ) 通讯作者 : ...

  3. ilm 和dlm差异_电力通信系统--加密芯片.pdf

    电力通信系统--加密芯片 1 芯片结构 FD/TD/VD NVM ILM_RAM DLM_RAM AHB_RAM2 WDT (548KB) (16KB) (24KB) (256B) EMPU TIME ...

  4. ilm 和dlm差异_差异表达基因的几种筛选方法.pdf

    差异表达基因的几种筛选方法 286 第四军医大学学报( J Fourth M ilMedU iv) 2007, 28( 3) http: / /jour al. mf mu. edu. c # 综述# ...

  5. 6、处理大数据对象(CLOB 数据小说+BLOG 数据图片,电影,音乐)

    大数据对象处理主要有 CLOB(character large object)和 BLOB(binary large object)两种类型的字段 第一节:处理 CLOB 数据 在 CLOB中可以存储 ...

  6. 阿里P8架构师谈:大数据架构设计(文章合集)

    架构师进阶有一块很重要的内容,就是需要掌握大数据的架构设计,主要涵括: MySQL等关系式数据库,需要掌握数据库的索引.慢SQL.以及长事务的优化等. 需要掌握非关系式数据库(NoSQL)的选型,以及 ...

  7. 大数据课程设计(一)二手房数据挖掘可视化

    大数据课程设计(一)二手房数据挖掘可视化 selenium爬虫.pyecharts可视化.HTML+CSS+Echarts大屏.配套论文.配套教程视频. 项目要求: 项目包含: 该压缩包含视频讲解和项 ...

  8. B端大屏可视化设计参考网站分享、大数据可视化设计

    B端大屏可视化设计参考网站分享.大数据可视化设计 大屏可视化参考网站: 1. 易知微 https://easyv.cloud/market 浅色风格的大屏可视化可以参考此网站的设计 2. 数字像素(原 ...

  9. 《大数据算法》一1.3 大数据算法设计与分析

    本节书摘来华章计算机<大数据算法>一书中的第1章 ,第1.3节,王宏志 编著, 更多章节内容可以访问云栖社区"华章计算机"公众号查看. 1.3 大数据算法设计与分析 本 ...

最新文章

  1. Java 时间和日期类型的 Hibernate 映射
  2. 微软全部正版软件下载地址和序列号索取
  3. linux 农业分析,基于嵌入式Linux的农业信息采集系统设计与研究
  4. image vb6 图片自适应_请问如何实现图片在窗体上的大小自适应?
  5. Android View 的滑动
  6. 信息学奥赛一本通C++语言——1055:判断闰年
  7. geotools 读取shp属性过滤_Flink进阶之使用布隆过滤器实现UV统计
  8. js 正则验证数字和小数
  9. 关于《ASP.NET MVC企业级实战》
  10. hdu 2255+hdu 3395
  11. 解决算法问题的思路 —— 从问题描述到数学表达
  12. 好程序员技术分析JavaScript闭包特性详解
  13. Android NDK开发之 NDK 局部 全局引用
  14. Hive基本操作入门
  15. android 的NDK在Windwos环境搭建(一)
  16. 复化梯形公式求二重积分matlab源码
  17. 《土豆荣耀》重构笔记(七)控制角色移动并添加音效
  18. 徐州2018年大学计算机比赛,2018年第四届徐州市中小学生学科综合能力大赛获奖名单!权威发布!【五年级】...
  19. Python(4)print一个10行10列的星星图案
  20. Mining Spatio-Temporal Reachable Regions over Massive Trajectory Data

热门文章

  1. 解决浏览器驱动和浏览器版本不匹配的报错:This version of ChromeDriver only supports Chrome version 97
  2. 解决导入maven项目之后pom.xml中的project标签报错:批量删除没有下载完全的pom依赖bat脚本
  3. 天翼云服务器硬盘怎么挂载,天翼云主机云磁盘管理(一)
  4. 洲际酒店优悦会精英会籍延长12个月;美素佳儿合作京东超市力保宝宝口粮 | 美通企业日报...
  5. Probability and Stochastic Models(1) —— 研一新课学习笔记
  6. Fault Description Based Attribute Transfer for Zero-Sample Industrial Fault Diagnosis
  7. knex 找不到mysql_转义knex mysql查询语句
  8. 将一个文字的大集合按照第一个文字的首字母进行切分
  9. 写论文有哪些神网站?
  10. 3D动画效果照片墙demo