数据库索引的实现方式

索引

在数据库中,索引的含义与日常意义上的“索引”一词并无多大区别(想想小时候查字典),它是用于提高数据库表数据访问速度的数据库对象。

  • 索引可以避免全表扫描。多数查询可以仅扫描少量索引页及数据页,而不是遍历所有数据页。

阅读全文

抽象类与接口

抽象类

不同于c++,java的函数调用时绑定都是用的动态绑定(late binding),除了final 或者 static的函数,所以一般java的多态通过函数重载就可以了。

阅读全文

内部类

在Java中,可以将一个类定义在另一个类里面或者一个方法里面,这样的类称为内部类。广泛意义上的内部类一般来说包括这四种:成员内部类、局部内部类、匿名内部类和静态内部类。下面就先来了解一下这四种内部类的用法。

  • 成员内部类
    成员内部类是依附外部类而存在的,也就是说,如果要创建成员内部类的对象,前提是必须存在一个外部类的对象。内部类可以拥有private访问权限、protected访问权限、public访问权限及包访问权限。理解了成员内部类和外部类的依赖关系,也就好理解怎么样初始化成员内部类了.(.this.new操作)

阅读全文

设计模式之策略模式

概述

在软件开发中也常常遇到类似的情况,实现某一个功能有多种算法或者策略,我们可以根据环境或者条件的不同选择不同的算法或者策略来完成该功能。如查找、排序等,一种常用的方法是硬编码(Hard Coding)在一个类中,如需要提供多种查找算法,可以将这些算法写到一个类中,在该类中提供多个方法,每一个方法对应一个具体的查找算法;当然也可以将这些查找算法封装在一个统一的方法中,通过if…else…或者case等条件判断语句来进行选择。这两种实现方法我们都可以称之为硬编码,如果需要增加一种新的查找算法,需要修改封装算法类的源代码;更换查找算法,也需要修改客户端调用代码。在这个算法类中封装了大量查找算法,该类代码将较复杂,维护较为困难。如果我们将这些策略包含在客户端,这种做法更不可取,将导致客户端程序庞大而且难以维护,如果存在大量可供选择的算法时问题将变得更加严重。

阅读全文

细节题

细节题主要是要胆大心细,不要畏畏缩缩就好。

Restore IP Addresses

主要注意以0开头的情况,还有就是字符串访问不要越界

阅读全文

设计模式之迭代器模式

迭代器模式主要是提供一种方法访问一个容器对象中各个元素,而又不暴露该对象的内部细节。java,c++都实现了迭代器模式。

迭代器模式

迭代器模式主要包括:

  • 抽象容器:一般是一个接口,提供一个iterator()方法,例如java中的Collection接口,List接口,Set接口等。

阅读全文

设计模式之适配器模式

适配器模式主要是将将一个类的接口转换成客户希望的另外一个接口。适配器模式使得原本由于接口不兼容而不能一起工作的那些类可以在一起工作。

适配器模式

适配器代码实现:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
public class Target {
public void Request() {
System.out.println("原始请求");
}
}
public class Adaptee {
public void SpecificRequest() {
System.out.println("特殊请求");
}
}
public class Adapter extends Target {
public void Request() {
Adaptee adaptee = new Adaptee();
adaptee.SpecificRequest();
}
}

阅读全文

设计模式之代理模式

代理模式: 为其他对象提供一种代理,并以控制对这个对象的访问。 而对一个对象进行访问控制的一个原因是为了只有在我们确实需要这个对象时才对它进行创建和初始化。它是给某一个对象提供一个替代者(占位者),使之在client对象和subject对象之间编码更有效率。代理可以提供延迟实例化(lazy instantiation),控制访问, 等等,包括只在调用中传递。 一个处理纯本地资源的代理有时被称作虚拟代理。远程服务的代理常常称为远程代理。强调控制访问的代理称为保护代理。

阅读全文

设计模式之工厂模式

简单工厂模式

简单工厂模式(simple factory)是类的创建模式,又叫静态工厂方法(static factory method)模式。
简单工厂模式就是由一个工厂类根据传入的参数决定创建哪一种的产品类。

阅读全文

设计模式之装饰器模式

装饰模式能够实现动态的为对象添加功能,是从一个对象外部来给对象添加功能。通常给对象添加功能,要么直接修改对象添加相应的功能,要么派生对应的子类来扩展,抑或是使用对象组合的方式。显然,直接修改对应的类这种方式并不可取。在面向对象的设计中,而我们也应该尽量使用对象组合,而不是对象继承来扩展和复用功能。装饰器模式就是基于对象组合的方式,可以很灵活的给对象添加所需要的功能。装饰器模式的本质就是动态组合。动态是手段,组合才是目的。总之,装饰模式是通过把复杂的功能简单化,分散化,然后再运行期间,根据需要来动态组合的这样一个模式。

阅读全文