cecil

《JAVA与模式》之访问者模式

霸气de小男生 提交于 2020-10-09 11:49:49
在阎宏博士的《JAVA与模式》一书中开头是这样描述访问者(Visitor)模式的:   访问者模式是对象的行为模式。访问者模式的目的是封装一些施加于某种数据结构元素之上的操作。一旦这些操作需要修改的话,接受这个操作的数据结构则可以保持不变。 分派的概念    变量被声明时的类型叫做变量的静态类型(Static Type),有些人又把静态类型叫做明显类型(Apparent Type);而变量所引用的对象的真实类型又叫做变量的实际类型(Actual Type)。比如: List list = null ; list = new ArrayList();   声明了一个变量list,它的静态类型(也叫明显类型)是List,而它的实际类型是ArrayList。   根据对象的类型而对方法进行的选择,就是分派(Dispatch),分派(Dispatch)又分为两种,即 静态分派 和 动态分派 。    静态分派(Static Dispatch) 发生在编译时期,分派根据静态类型信息发生。静态分派对于我们来说并不陌生,方法重载就是静态分派。    动态分派(Dynamic Dispatch) 发生在运行时期,动态分派动态地置换掉某个方法。  静态分派   Java通过方法重载支持静态分派。用墨子骑马的故事作为例子,墨子可以骑白马或者黑马。墨子与白马、黑马和马的类图如下所示:   在这个系统中

Postgresql 全文检索测试

霸气de小男生 提交于 2020-08-12 03:08:32
Postgresql:10.11 测试表数据量:3亿 测试使用8c 16g 服务器 创建一张表: create table nt_order ( id int PRIMARY KEY, order_id text, order_time timestamp without time zone, info jsonb ); CREATE SEQUENCE nt_order_id_seq START WITH 1 INCREMENT BY 1 NO MINVALUE NO MAXVALUE CACHE 1; alter table nt_order alter column id set default nextval('nt_order_id_seq'); 创建索引: brin索引: create index idx_nt_order_brin on nt_order using brin (order_time); 全文检索: create index idx_gin_nt_order_info on nt_order using gin(to_tsvector('english',info)); 为什么使用brin索引? 占空间小,比btree小千倍靠上 使用brin索引适用任何场景吗? brin索引适合范围查询(与btree索引比差距较小),brin索引主要用于高度相关的数据

99题--Python闯关

本小妞迷上赌 提交于 2020-04-29 15:22:11
1、将元组 (1,2,3) 和集合 {4,5,6} 合并成一个列表。 tuple_num = ( 1 , 2 , 3 ) dict_num = { 4 , 5 , 6 } list_num = [] for i in tuple_num: list_num.append(i) for i in dict_num: list_num.append(i) print (list_num) 2、在列表 [1,2,3,4,5,6] 首尾分别添加整型元素 7 和 0。 r = [ 1 , 2 , 3 , 4 , 5 , 6 ] r.insert( 0 , 7 ) r.append( 0 ) 3、反转列表 [0,1,2,3,4,5,6,7] 。 e = [ 0 , 1 , 2 , 3 , 4 , 5 , 6 , 7 ] ww = e[::- 1 ] e.reverse() 4、反转列表 [0,1,2,3,4,5,6,7] 后给出中元素 5 的索引号。 e = [ 0 , 1 , 2 , 3 , 4 , 5 , 6 , 7 ] ww = e[::- 1 ] for i in range ( len (ww)): if e[::- 1 ][i] == 5 : print (i) 5、分别统计列表 [True,False,0,1,2] 中 True,False,0,1,2的元素个数,发现了什么?