Java 中的 Builder 模式和协变返回类型

阅读这篇文章大约需要十分钟时间。

Builder 模式是一种创建型的设计模式,即解决对象的创建问题。

在 Java、C++ 这类语言中,如果一个类在创建时存在可选参数,那么可以通过函数重载来实现,但是如果可选参数非常多的话,构造函数的数量也会变得非常多,并且可能因为不同可选参数类型相同而没法重载[......]

阅读全文

局部最优未必是全局最优

今天借着观察到的一个现象,表达一下自己的感想。

早上洗漱的时候,发现有一只蜘蛛在水盆边缘上爬行。

这是一只细胳膊细腿的蜘蛛,感觉有点像蚊子。

我没太注意,接着洗漱,但是过了一会儿,有趣的现象发生了:这只找不到出口的蜘蛛先是沿着水盆边缘顺时针爬了一圈,好像意识到了什么,停顿了几秒,然后逆时针继续[......]

阅读全文

数据库管理系统索引技术概述

为什么需要索引?

我们知道,磁盘的读写效率是比较低的,以传统机械硬盘为例,读写时涉及到读写头的寻道和定位,这部分时间开销可能比实际读写数据时所花的时间还要长。即使是固态硬盘,由于数据的存储可能是散落在各个磁盘块中,通过指针连接起来,因此访问数据时需要对磁盘进行多次读写,同样会带来效率上的问题。[......]

阅读全文

Java logging 模块的使用

从外部文件加载配置

在启动程序时指定配置文件

java -Djava.util.logging.config.file=configFile MainClass

日志管理器(LogManager)是在 VM 启动时,main 执行前初始化的,因此在 main 中重新设置系统属性之后,需要重新[......]

阅读全文

数据库视图的概念、定义与使用

视图的概念

视图是从基本表中导出的虚拟的表,基本表需要存储数据,而视图不存储数据,只存放从基本表导出视图所需要的公式。

视图的数据是在数据库运行过程中动态产生和维护的,对基本表的修改会反映在视图的查询结果上,而对视图的修改也会作用到基本表上。

视图的定义

create view view_n[......]

阅读全文