摘要:
HASH索引 对于每一行数据,对应索引列都会有一个不同的哈希码,并且将哈希码和指向数据行的指针维护到哈希表中。 特点 无法用于排序 (因为哈希索引数据不是按照索引值顺序存储的) 不支持部分索引列查找(如果在name和age两列上建立索引,如果查询只有name,则无法使用索引。) 不支持范围查询(比如 阅读全文
摘要:
TIMESTAMP与DATETIME的区别 TIMESTAMP只使用DATETIME一半的存储空间。 DATETIME默认值为null,TIMESTAMP默认为当前时间 DATETIME不会自动更新时间,但是可以设置 DEFAULT CURRENT_TIMESTAMP从而设置默认值 需要注意的是如果 阅读全文
摘要:
职责链模式:使多个对象都有机会处理请求,从而避免请求的发送者和接受者的耦合关系。将这个对象连成一条线,并沿着这条链传递该请求,直到有一个对象处理它为止。 我们看以下例子 首先是一个请求类,这个请求有一个属性number,代表请假天数,请求将会被管理者处理。 测试类: 测试结果: 项目经理无权处理请假 阅读全文
摘要:
命令模式:将请求封装为对象,从而使你可用不同的请求对象进行参数化,对请求排队或记录请求日志,以及支持可撤销的操作。 我们经常出去吃饭,有时候碰见路边摊,我们直接可以和老板说我们要点什么东西,下面为实现代码 厨师类 测试类 测试结果: 制作红烧鸡!制作红烧鸡!制作米饭! 可以看到,消费者和厨师是紧耦合 阅读全文
摘要:
桥接模式:将抽象的部分与它的实现部分分离,使它们可以独立的变化。 我们先看一个例子 操作系统类。定义了一个运行软件的抽象方法 定义了windows和linux类,用于区分不同操作系统项下的软件。 下面是windows操作系统下的游戏类和办公软件类。 下面是linux操作系统下的游戏类和办公软件类。 阅读全文
摘要:
单例模式:保证一个类仅有一个实例,并提供一个访问它的全局访问点。 当我们需要一个类只有一个实例时,我们就可以使用单例模式,单例模式分为两种,懒汉式单例和饿汉式单例。首先我们看懒汉式单例 测试类 测试结果: I'm the superMeHitlerNo second allowedHitlerHit 阅读全文
摘要:
迭代器模式:提供一种方法顺序来访问一个聚合对象中的元素,并且不暴露该对象的内部表示。当我们需要去遍历一个对象时就可以考虑使用迭代器模式。 聚集抽象类 具体聚集类。 迭代抽象类。 具体迭代类。 测试类。 测试结果: abcd 其实迭代器模式在java中早有实现,java中的集合类实现了Iterable 阅读全文
摘要:
组合模式:将对象组合成树形结构以表示“部分-整体”的层次结构。组合模式使得用户对单个对象和组合对象的使用具有一致性。· 意思就是用树状结构来表示部分和整体,使他们具有一致性,一致性的意思就是都实现了相同的接口,举个例子,一个公司可能有研发部门和销售部门,然后这个公司又有子公司,子公司也有研发和销售部 阅读全文
摘要:
备忘录模式:在不破坏封装性的前提下,捕获一个对象的内部状态,并在该对象外保存这个状态,这样以后可将此对象恢复成原来的状态。 就拿单机游戏举例,玩游戏打boss前我们通常都会存档,避免打boss时失误死亡好恢复存档重新开始,我们首先看下面的例子。 测试结果: health:100,mana:100he 阅读全文
摘要:
适配器模式:将一个本不能兼容客户端的类的接口通过适配器转为可以兼容的接口。 这里有一个“中国学生接口”,定义了“说中国话”和“听中国话两个方法” 测试结果: 学生:zhangsan说话学生:zhangsan聆听 此时如果来了一个外国学生呢,这个外国学生不会说中文并且也听不懂中文,那么他如何去和其他中 阅读全文