MySQL分区管理

以下是我看MySQL官方文档的时候整理的笔记,仅作参考保留。
RANGE,LIST分区管理
1:为未分区表创建分区
ALTER TABLE trb3 PARTITION BY KEY(id) PARTITIONS 2;
2:删除某个分区的数据
ALTER TABLE tr DROP PARTITION p2;

3:为分区表添加一个分区

ALTER TABLE members ADD PARTITION (PARTITION p3 VALUES LESS THAN (2000));
ALTER TABLE tt ADD PARTITION (PARTITION p2 VALUES IN (7, 14, 21));
ALTER TABLE employees ADD PARTITION (PARTITION p5 VALUES LESS THAN (2010),PARTITION p6 VALUES LESS THAN MAXVALUE
);

4:将分区表的第一个分区分为两个新的分区

ALTER TABLE membersREORGANIZE PARTITION p0 INTO (PARTITION n0 VALUES LESS THAN (1960),PARTITION n1 VALUES LESS THAN (1970)
);

5:也可以将两个分区合并为一个分区,也可以理解为重新组织分区

ALTER TABLE members REORGANIZE PARTITION s0,s1 INTO (PARTITION p0 VALUES LESS THAN (1970)
);
ALTER TABLE tbl_nameREORGANIZE PARTITION partition_listINTO (partition_definitions);
ALTER TABLE members REORGANIZE PARTITION p0,p1,p2,p3 INTO (PARTITION m0 VALUES LESS THAN (1980),PARTITION m1 VALUES LESS THAN (2000)
);
ALTER TABLE tt ADD PARTITION (PARTITION np VALUES IN (4, 8));
ALTER TABLE tt REORGANIZE PARTITION p1,np INTO (PARTITION p1 VALUES IN (6, 18),PARTITION np VALUES in (4, 8, 12)
);

HASH,KEY 分区管理

1:创建一个hash分区表
CREATE TABLE clients (id INT,fname VARCHAR(30),lname VARCHAR(30),signed DATE
)
PARTITION BY HASH( MONTH(signed) )
PARTITIONS 12;

将分区表从12个分区变为8个分区

ALTER TABLE clients COALESCE PARTITION 4;

同样的有以下的语句关于KEY分区的表:

mysql> CREATE TABLE clients_lk (->     id INT,->     fname VARCHAR(30),->     lname VARCHAR(30),->     signed DATE-> )-> PARTITION BY LINEAR KEY(signed)-> PARTITIONS 12;
Query OK, 0 rows affected (0.03 sec)mysql> ALTER TABLE clients_lk COALESCE PARTITION 4;
Query OK, 0 rows affected (0.06 sec)
Records: 0  Duplicates: 0  Warnings: 0

当然还有有限制的

mysql> ALTER TABLE clients COALESCE PARTITION 18;
ERROR 1478 (HY000): Cannot remove all partitions, use DROP TABLE instead

要是分区数比现有的分区数多的话,只能使用 ADD来添加分区数.下面就表示增加了6个分区数

ALTER TABLE clients ADD PARTITION PARTITIONS 6;

交换分区,子分区的管理

交换分区,ALTER TABLE pt EXCHANGE PARTITION p WITH TABLE nt

where pt is the partitioned table and p is the partition or subpartition of pt to be exchanged with unpartitioned table nt, provided that the following statements are true:
要满足以下的条件:
1:PT是已经分区表,nt不是临时表
2:两张表的表结构必须是一模一样的
3:nt不能有外键约束,也不能有关于其他表的外键约束.
4:nt表中的数据没有分区P以外的数据.WITHOUT VALIDATION指定的时候这条就可以忽视调
另外很重要的一点就是想要拥有EXCHANGE的权限的话必须对全表有DROP的权限才可以执行.
alter table  ......EXCHANGE partition  将不会调用任何的触发器,执行完以后被EXCHANGE 的表的自增列就会重新赋初始值.
例如:
ALTER TABLE pt EXCHANGE PARTITION p WITH TABLE nt with VALIDATION ;

1:将分区和一个没有分区的表EXCHANGE

创建表插入语句:
CREATE TABLE e (id INT NOT NULL,fname VARCHAR(30),lname VARCHAR(30)
)PARTITION BY RANGE (id) (PARTITION p0 VALUES LESS THAN (50),PARTITION p1 VALUES LESS THAN (100),PARTITION p2 VALUES LESS THAN (150),PARTITION p3 VALUES LESS THAN (MAXVALUE)
);INSERT INTO e VALUES (1669, "Jim", "Smith"),(337, "Mary", "Jones"),(16, "Frank", "White"),(2005, "Linda", "Black");

查看分区和分区的行数

 SELECT PARTITION_NAME, TABLE_ROWS FROM INFORMATION_SCHEMA.PARTITIONS WHERE TABLE_NAME = 'e';SELECT TABLE_NAME, PARTITION_NAME, TABLE_ROWS, AVG_ROW_LENGTH, DATA_LENGTH FROM INFORMATION_SCHEMA.PARTITIONS WHERE TABLE_SCHEMA = 'p' AND TABLE_NAME LIKE 'e';

创建新表:

CREATE TABLE e2 LIKE e;

然后交换分区开始了:

ALTER TABLE e EXCHANGE PARTITION p0 WITH TABLE e2;

这个语句是很奇怪的,如果e2里面没有数据的话就是切出分区,如果e2里面有数据的话就是相互交换

但是如果e2里面的数据不能够满足分区p0的要求的话,切分区就会失败.
1737 - Found a row that does not match the partition
只有再指定不验证的时候才不会报错
ALTER TABLE e EXCHANGE PARTITION p0 WITH TABLE e2 WITHOUT VALIDATION;

WITHOUT VALIDATION 指定的时候效率会更高,因为不再做逐行验证了.

子分区和没分区的表进行切换

1:假设创建一个分区表,带有子分区
> CREATE TABLE es (->     id INT NOT NULL,->     fname VARCHAR(30),->     lname VARCHAR(30)-> )->     PARTITION BY RANGE (id)->     SUBPARTITION BY KEY (lname)->     SUBPARTITIONS 2 (->         PARTITION p0 VALUES LESS THAN (50),->         PARTITION p1 VALUES LESS THAN (100),->         PARTITION p2 VALUES LESS THAN (150),->         PARTITION p3 VALUES LESS THAN (MAXVALUE)->     );

然后就可以切分区了,先查看一下分区,

SELECT PARTITION_NAME, SUBPARTITION_NAME, TABLE_ROWSFROM INFORMATION_SCHEMA.PARTITIONSWHERE TABLE_NAME = 'es';

然后切出分区:

ALTER TABLE es EXCHANGE PARTITION p3sp0 WITH TABLE es2;

当前执行切出分区前,必须要对新表做以下的处理:

ALTER TABLE es2 REMOVE PARTITIONING;

修改表的默认引擎:

ALTER TABLE es3 ENGINE = MyISAM;

维护表分区

1:重建分区
ALTER TABLE t1 REBUILD PARTITION p0, p1;

2:重新组织分区

ALTER TABLE t1 OPTIMIZE PARTITION p0, p1;

3:分析某个分区,主要看行数和名称以及状态

ALTER TABLE t1 ANALYZE PARTITION p3;

4:修复分区,有重复值的时候就会报错.

ALTER TABLE t1 REPAIR PARTITION p0,p1;

5:检查分区的状态

ALTER TABLE trb3 CHECK PARTITION p1;

6:truncate分区 

ALTER TABLE ... TRUNCATE PARTITION.
ALTER TABLE ... TRUNCATE PARTITION ALL 

7:获取表的信息

Using the SHOW CREATE TABLE statement to view the partitioning clauses used in creating a partitioned table.

Using the SHOW TABLE STATUS statement to determine whether a table is partitioned.

Querying the INFORMATION_SCHEMA.PARTITIONS table.

Using the statement EXPLAIN PARTITIONS SELECT to see which partitions are used by a given SELECT.

看以下信息:
mysql> EXPLAIN PARTITIONS SELECT * FROM trb1\G
*************************** 1. row ***************************id: 1select_type: SIMPLEtable: trb1partitions: p0,p1,p2,p3type: ALL
possible_keys: NULLkey: NULLkey_len: NULLref: NULLrows: 10Extra: Using filesort

分区的经典案例:

mysql> CREATE TABLE employees_sub  (->     id INT NOT NULL AUTO_INCREMENT,->     fname VARCHAR(25) NOT NULL,->     lname VARCHAR(25) NOT NULL,->     store_id INT NOT NULL,->     department_id INT NOT NULL,->     PRIMARY KEY pk (id, lname)-> )   ->     PARTITION BY RANGE(id)->     SUBPARTITION BY KEY (lname)->     SUBPARTITIONS 2 (->         PARTITION p0 VALUES LESS THAN (5),->         PARTITION p1 VALUES LESS THAN (10),->         PARTITION p2 VALUES LESS THAN (15),->         PARTITION p3 VALUES LESS THAN MAXVALUE-> );

分区的一些添删查修语句:

mysql> DELETE FROM employees PARTITION (p0, p1) ->     WHERE fname LIKE 'j%';
Query OK, 2 rows affected (0.09 sec)
mysql> UPDATE employees PARTITION (p2)->     SET store_id = 2 WHERE fname = 'Jill';
SELECT * FROM employees PARTITION (p2);
mysql> INSERT INTO employees PARTITION (p2) VALUES (20, 'Jan', 'Jones', 1, 3);ERROR 1729 (HY000): Found a row not matching the given partition set
mysql> INSERT INTO employees PARTITION (p3) VALUES (20, 'Jan', 'Jones', 1, 3);
Query OK, 1 row affected (0.07 sec)

分区不够多,要添加分区:

ysql> ALTER TABLE employees->     REORGANIZE PARTITION p3 INTO (->         PARTITION p3 VALUES LESS THAN (20),->         PARTITION p4 VALUES LESS THAN (25),->         PARTITION p5 VALUES LESS THAN MAXVALUE->     );
Query OK, 6 rows affected (2.09 sec)
Records: 6  Duplicates: 0  Warnings: 0
RANGE,LIST分区管理
1:为未分区表创建分区
ALTER TABLE trb3 PARTITION BY KEY(id) PARTITIONS 2;

2:删除某个分区的数据

ALTER TABLE tr DROP PARTITION p2;

3:为分区表添加一个分区

ALTER TABLE members ADD PARTITION (PARTITION p3 VALUES LESS THAN (2000));
ALTER TABLE tt ADD PARTITION (PARTITION p2 VALUES IN (7, 14, 21));
ALTER TABLE employees ADD PARTITION (PARTITION p5 VALUES LESS THAN (2010),PARTITION p6 VALUES LESS THAN MAXVALUE
);

4:将分区表的第一个分区分为两个新的分区

ALTER TABLE membersREORGANIZE PARTITION p0 INTO (PARTITION n0 VALUES LESS THAN (1960),PARTITION n1 VALUES LESS THAN (1970)
);

5:也可以将两个分区合并为一个分区,也可以理解为重新组织分区

ALTER TABLE members REORGANIZE PARTITION s0,s1 INTO (PARTITION p0 VALUES LESS THAN (1970)
);
ALTER TABLE tbl_nameREORGANIZE PARTITION partition_listINTO (partition_definitions);
ALTER TABLE members REORGANIZE PARTITION p0,p1,p2,p3 INTO (PARTITION m0 VALUES LESS THAN (1980),PARTITION m1 VALUES LESS THAN (2000)
);
ALTER TABLE tt ADD PARTITION (PARTITION np VALUES IN (4, 8));
ALTER TABLE tt REORGANIZE PARTITION p1,np INTO (PARTITION p1 VALUES IN (6, 18),PARTITION np VALUES in (4, 8, 12)
);

HASH,KEY 分区管理

1:创建一个hash分区表
CREATE TABLE clients (id INT,fname VARCHAR(30),lname VARCHAR(30),signed DATE
)
PARTITION BY HASH( MONTH(signed) )
PARTITIONS 12;

将分区表从12个分区变为8个分区

ALTER TABLE clients COALESCE PARTITION 4;

同样的有以下的语句关于KEY分区的表:

mysql> CREATE TABLE clients_lk (->     id INT,->     fname VARCHAR(30),->     lname VARCHAR(30),->     signed DATE-> )-> PARTITION BY LINEAR KEY(signed)-> PARTITIONS 12;
Query OK, 0 rows affected (0.03 sec)mysql> ALTER TABLE clients_lk COALESCE PARTITION 4;
Query OK, 0 rows affected (0.06 sec)
Records: 0  Duplicates: 0  Warnings: 0

当然还有有限制的

mysql> ALTER TABLE clients COALESCE PARTITION 18;
ERROR 1478 (HY000): Cannot remove all partitions, use DROP TABLE instead

要是分区数比现有的分区数多的话,只能使用 ADD来添加分区数.下面就表示增加了6个分区数

ALTER TABLE clients ADD PARTITION PARTITIONS 6;

交换分区,子分区的管理

交换分区,
ALTER TABLE pt EXCHANGE PARTITION p WITH TABLE nt

where pt is the partitioned table and p is the partition or subpartition of pt to be exchanged with unpartitioned table nt, provided that the following statements are true:

要满足以下的条件:
1:PT是已经分区表,nt不是临时表
2:两张表的表结构必须是一模一样的
3:nt不能有外键约束,也不能有关于其他表的外键约束.
4:nt表中的数据没有分区P以外的数据.WITHOUT VALIDATION指定的时候这条就可以忽视调
另外很重要的一点就是想要拥有EXCHANGE的权限的话必须对全表有DROP的权限才可以执行.
alter table  ......EXCHANGE partition  将不会调用任何的触发器,执行完以后被EXCHANGE 的表的自增列就会重新赋初始值.
例如:
ALTER TABLE pt EXCHANGE PARTITION p WITH TABLE nt with VALIDATION ;

1:将分区和一个没有分区的表EXCHANGE

创建表插入语句:
CREATE TABLE e (id INT NOT NULL,fname VARCHAR(30),lname VARCHAR(30)
)PARTITION BY RANGE (id) (PARTITION p0 VALUES LESS THAN (50),PARTITION p1 VALUES LESS THAN (100),PARTITION p2 VALUES LESS THAN (150),PARTITION p3 VALUES LESS THAN (MAXVALUE)
);INSERT INTO e VALUES (1669, "Jim", "Smith"),(337, "Mary", "Jones"),(16, "Frank", "White"),(2005, "Linda", "Black");

查看分区和分区的行数 

 SELECT PARTITION_NAME, TABLE_ROWS FROM INFORMATION_SCHEMA.PARTITIONS WHERE TABLE_NAME = 'e';
SELECT TABLE_NAME, PARTITION_NAME, TABLE_ROWS, AVG_ROW_LENGTH, DATA_LENGTH FROM INFORMATION_SCHEMA.PARTITIONS WHERE TABLE_SCHEMA = 'p' AND TABLE_NAME LIKE 'e';

 

创建新表:
CREATE TABLE e2 LIKE e;

然后交换分区开始了:

ALTER TABLE e EXCHANGE PARTITION p0 WITH TABLE e2;

这个语句是很奇怪的,如果e2里面没有数据的话就是切出分区,如果e2里面有数据的话就是相互交换

但是如果e2里面的数据不能够满足分区p0的要求的话,切分区就会失败.
1737 - Found a row that does not match the partition
只有再指定不验证的时候才不会报错
ALTER TABLE e EXCHANGE PARTITION p0 WITH TABLE e2 WITHOUT VALIDATION;

WITHOUT VALIDATION 指定的时候效率会更高,因为不再做逐行验证了.

子分区和没分区的表进行切换
1:假设创建一个分区表,带有子分区
> CREATE TABLE es (->     id INT NOT NULL,->     fname VARCHAR(30),->     lname VARCHAR(30)-> )->     PARTITION BY RANGE (id)->     SUBPARTITION BY KEY (lname)->     SUBPARTITIONS 2 (->         PARTITION p0 VALUES LESS THAN (50),->         PARTITION p1 VALUES LESS THAN (100),->         PARTITION p2 VALUES LESS THAN (150),->         PARTITION p3 VALUES LESS THAN (MAXVALUE)->     );

然后就可以切分区了,先查看一下分区,

SELECT PARTITION_NAME, SUBPARTITION_NAME, TABLE_ROWSFROM INFORMATION_SCHEMA.PARTITIONSWHERE TABLE_NAME = 'es';

然后切出分区:

ALTER TABLE es EXCHANGE PARTITION p3sp0 WITH TABLE es2;

当前执行切出分区前,必须要对新表做以下的处理:

ALTER TABLE es2 REMOVE PARTITIONING;

修改表的默认引擎:

ALTER TABLE es3 ENGINE = MyISAM;

维护表分区

1:重建分区
ALTER TABLE t1 REBUILD PARTITION p0, p1;

2:重新组织分区

ALTER TABLE t1 OPTIMIZE PARTITION p0, p1;

3:分析某个分区,主要看行数和名称以及状态

ALTER TABLE t1 ANALYZE PARTITION p3;

4:修复分区,有重复值的时候就会报错.

ALTER TABLE t1 REPAIR PARTITION p0,p1;

5:检查分区的状态

ALTER TABLE trb3 CHECK PARTITION p1;

6:truncate分区

ALTER TABLE ... TRUNCATE PARTITION.
ALTER TABLE ... TRUNCATE PARTITION ALL 

 

7:获取表的信息

Using the SHOW CREATE TABLE statement to view the partitioning clauses used in creating a partitioned table.

Using the SHOW TABLE STATUS statement to determine whether a table is partitioned.

Querying the INFORMATION_SCHEMA.PARTITIONS table.

Using the statement EXPLAIN PARTITIONS SELECT to see which partitions are used by a given SELECT.

看以下信息:
mysql> EXPLAIN PARTITIONS SELECT * FROM trb1\G
*************************** 1. row ***************************id: 1select_type: SIMPLEtable: trb1partitions: p0,p1,p2,p3type: ALL
possible_keys: NULLkey: NULLkey_len: NULLref: NULLrows: 10Extra: Using filesort

 

分区的经典案例:
mysql> CREATE TABLE employees_sub  (->     id INT NOT NULL AUTO_INCREMENT,->     fname VARCHAR(25) NOT NULL,->     lname VARCHAR(25) NOT NULL,->     store_id INT NOT NULL,->     department_id INT NOT NULL,->     PRIMARY KEY pk (id, lname)-> )   ->     PARTITION BY RANGE(id)->     SUBPARTITION BY KEY (lname)->     SUBPARTITIONS 2 (->         PARTITION p0 VALUES LESS THAN (5),->         PARTITION p1 VALUES LESS THAN (10),->         PARTITION p2 VALUES LESS THAN (15),->         PARTITION p3 VALUES LESS THAN MAXVALUE-> );

分区的一些添删查修语句:

mysql> DELETE FROM employees PARTITION (p0, p1) ->     WHERE fname LIKE 'j%';
Query OK, 2 rows affected (0.09 sec)
mysql> UPDATE employees PARTITION (p2)->     SET store_id = 2 WHERE fname = 'Jill';
SELECT * FROM employees PARTITION (p2);
mysql> INSERT INTO employees PARTITION (p2) VALUES (20, 'Jan', 'Jones', 1, 3);ERROR 1729 (HY000): Found a row not matching the given partition set
mysql> INSERT INTO employees PARTITION (p3) VALUES (20, 'Jan', 'Jones', 1, 3);
Query OK, 1 row affected (0.07 sec)

分区不够多,要添加分区:

ysql> ALTER TABLE employees->     REORGANIZE PARTITION p3 INTO (->         PARTITION p3 VALUES LESS THAN (20),->         PARTITION p4 VALUES LESS THAN (25),->         PARTITION p5 VALUES LESS THAN MAXVALUE->     );
Query OK, 6 rows affected (2.09 sec)
Records: 6  Duplicates: 0  Warnings: 0

 最后欢迎加入技术交流群:291519319

转载于:https://www.cnblogs.com/shengdimaya/p/5384884.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/357350.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Java EE 8 MVC:Ozark入门

大约一年前, 针对Java EE 8宣布了一个新的基于动作的MVC框架,简称为MVC。 MVC(在JSR 371中指定)基于JAX-RS,并与Java EE技术(如CDI和Bean验证)集成。 MVC 1.0的参考实现是Ozark 。 这是我计划编…

uniapp踩坑指南之坑多到写不完

1、sticky:到达指定位置时,就停留在那里不动了。当发现可以走时,立马就走了。 如果走不了就不会动了,就会一直在那里。 https://www.cnblogs.com/byeyear/p/11999334.html 设置了sticky定位的元素相对于第一个定位不为static的父级元素的位置…

小程序引入百度地图与uni.getLocation的使用

一、小程序引入百度地图 1、当你不需要引入整个地图展示,只需要引入某些功能的时候,可以直接调用服务端api。 2、访问百度地图的任何api都需要密钥。 流程: 3、在小程序端配置请求合法域名:https://api.map.baidu.com 4、直接使…

当年上大学时,编程老师让我们用html+CSS实现一个天猫官网

纯用htmlcss实现一个天猫首页还是挺考验基本功的&#xff0c;完全考验自己的CSS功底。 目录 效果图 项目结构 index.html 源码下载&#xff1a;点我下载 效果图 项目结构 主要由htmlcss组成。 index.html <!doctype html> <html lang"en"><head&g…

微服务实战系列之Dubbo(上)

前言 随着一年一度冬至的到来&#xff0c;2023的步伐也将远去。而博主的系列文章&#xff0c;也将从今天起&#xff0c;越来越聚焦如何构建微服务“内核”上。前序系列文章几乎囊括了微服务的方方面面&#xff0c;无论使用什么框架、组件或工具&#xff0c;皆可拿来用之。 那么…

多线程图解

关于多线程一直是我们学习iOS的一个重点&#xff0c;不仅是面试中经常被问到的问题&#xff0c;而且我们开发过程过程中经常会用到的技术&#xff0c;下面是一张关于多线程的图解&#xff0c;希望可以帮助大家学习多线程的开发。 转载于:https://www.cnblogs.com/lyy-5518/p/53…

spring作业_Spring和石英:多作业计划服务

spring作业作业调度对于应用程序来说是如此重要。 尤其是在大型项目中&#xff0c;处理大量工作可能是一个问题。 Spring和Quartz为解决该问题带来了巨大的好处。 本文展示了如何通过使用Spring和Quartz轻松地计划多个作业。 二手技术&#xff1a; JDK 1.6.0_21 春天3.1.1 石…

react常用知识点总结

1、什么是jsx JSX是JavaScript的扩展语法,这种<></>标签的写法就是 JSX。JSX 编写的组件通过预处理器 babel 解析后,再交给 React 库渲染到指定父容器下,形成最终html页面,供浏览器解析和显示。 JSX会被babel编译为&#xff1a;React.createElement()&#xff0c…

今日工作小结

1)用xib自定义cell写tableviewDemo代码&#xff0c;转模型&#xff0c;cell重用 见本地develop-demo-FriendTableViewDemo 2)textview的内容不定格显示&#xff0c;这好似用导航跳转过去&#xff0c;他会减去64像素&#xff0c;也就是导航的高度都是ScrollView引起的&#xff0…

全球数据一致性,事务,微服务和Spring Boot / Tomcat / Jetty

我们通常会构建需要一起执行以下几项操作的应用程序&#xff1a;调用后端&#xff08;微&#xff09;服务&#xff0c;写入数据库&#xff0c;发送JMS消息等。但是&#xff0c;如果在调用其中之一时出错&#xff0c;会发生什么情况&#xff1f;远程资源&#xff0c;例如&#x…

前端导入导出文件

一、导出 1、返回值是url&#xff1a;创建个a标签即可 printRecord(params).then((response) > {if (response.success) {let a document.createElement(a);//创建a标签//从新页面打开&#xff0c;下载的话不需要这个&#xff0c;打开一个图片需要从新页面打开a.setAttrib…

选取文档元素的API

除了现在常用的选取API 1 document.getElementById() 2 document.getElementsByName() 3 document.getElementsByTagName() 4 ... 新增的API 主要是  document.querySelector(div>ul)  document.querySelectorAll(div>ul>li) 这两个API的强大之处在于能像CSS选…

vue进阶

1、vue-cli 使用 在开发中&#xff0c;需要打包的东西不止是js、css、html。还有更多的东西要处理&#xff0c;这些插件和加载器如果我们一一去添加就会比较麻烦&#xff0c;vue官方提供了一个快速搭建vue项目的脚手架&#xff0c;使用它能快速的构建一个web工程模板。 官网&…

每天一个linux命令(1):ln 命令

每天一个linux命令&#xff08;35&#xff09;&#xff1a;ln 命令 ln 是linux中又一个非常重要命令&#xff0c;它的功能是为某一个文件在另外一个位置建立一个同步的链接.当我们需要在不同的目录&#xff0c;用到相同的文件时&#xff0c;我们不需要在 每一个需要的目录下都放…

ehcache 程序_将Ehcache添加到Openxava应用程序

ehcache 程序介绍 本文介绍如何在Openxava应用程序上快速启用Ehcache&#xff0c;从而提高性能。 查看实体及其图形时&#xff0c;将加载关系。 添加第二级缓存可加快关联元素的检索速度&#xff0c;因为已加载的元素是从缓存而不是数据库中检索的。 最终&#xff0c;该页面解…

Diff 算法核心原理

什么是虚拟DOM 讲Diff算法前&#xff0c;我先给大家讲一讲什么是虚拟DOM吧。这有利于后面大家对Diff算法的理解加深。 虚拟DOM是一个对象&#xff0c;一个什么样的对象呢&#xff1f;一个用来表示真实DOM的对象&#xff0c;要记住这句话。我举个例子&#xff0c;请看以下真实…

比较Java 8中的命令式和功能性算法

Mario Fusco的流行推文令人印象深刻&#xff0c;显示了类似算法的命令性和功能性方法之间的主要区别实际上是&#xff1a; 势在必行–功能分离pic.twitter.com/G2cC6iBkDJ — Mario Fusco&#xff08;mariofusco&#xff09; 2015年3月1日 两种算法都做同样的事情&#xff0…

mvc的视图中显示DataTable的方法

mvc的视图中显示DataTable的方法&#xff1a; 不断的循环画出table {ViewBag.Title "ShowDataTable"; } using System.Data; model Models.ConModel{var table Model.ExcelTable as DataTable; }<script src"~/Scripts/My97DatePicker/WdatePicker.js"…

rem,em,px,rpx等

1、任意浏览器的默认字体高都是16px。谷歌浏览器显示的最小字体大小是12px。 exp&#xff1a;突破谷歌浏览器显示12px限制。 &#xff08;1&#xff09;、<div>文本</div> 文本嵌套块标签&#xff0c;这是因为缩放只对有宽高的标签有效&#xff0c;缩放的时候也是…

python 列表 字典 读写文件:pickle模块的基本使用

建议大家使用cPickle&#xff0c;速度更快&#xff01;&#xff01;&#xff01; python数据持久存储&#xff1a;pickle模块的基本使用&#xff08;转载&#xff09; 作者: pzxbc出处: http://pzxbc.cnblogs.com/本文版权归作者和博客园共有&#xff0c;欢迎转载&#xff0c;但…