1.设计模式
1.1单例模式
Java 中最简单的设计模式之一。属于创建型模式,它提供了一种创建对象的最佳方式。
要求: 这个类在整个程序中 只存在一个实例
分类:饿汉式:线程安全
懒汉式:多线程不安全,需要加锁
创建类的步骤:
1. 将构造器私有化, 不让外部有机会去创建对象
2. 自己应该有一个唯一的对象存在
3. 给外部提供方法|接口,去获取到这个对象|实例
1.2 工厂模式
属于创建型模式,定义一个创建对象的接口,让其子类自己决定实例化哪一个工厂类。
1.2.1 简单工厂
工厂(Creator)角色
抽象产品(Product)角色
具体产品(Concrete Product)角色
1.2.2 工厂方法
抽象工厂、具体工厂、抽象产品、具体产品
1.2.3 抽象工厂
可以定义实现不止一个接口,一个工厂也可以生成不止一个产品类。
1.3 代理模式
在代理模式中,一个类代表另一个类的功能。为其他对象提供一种代理以控制对这个对象的访问。
1.3.1 静态代理
扩展代理类,进行一些功能的附加与增强
1.3.2 动态代理
JDK反射机制
Proxy newProxyInstance
InvocationHandler invoke()
CGLib实现
MethodIntercepto
Enhancer getProxy() setCallback() create()
proxy.invokeSuper(obj, args)
2. 排序
2.1 冒泡排序
1)比较相邻的元素。如果第一个比第二个大,就交换它们两个;
2)对每一对相邻元素作同样的工作,从开始第一对到结尾的最后一对,这样在最后的元素应该会是最大的数;
3)针对所有的元素重复以上的步骤,除了最后一个;
4) 重复步骤1~3,直到排序完成。
2.2 选择排序
首先在未排序序列中找到最小(大)元素,存放到排序序列的起始位置,然后,再从剩余未排序元素中继续寻找最小(大)元素,然后放到已排序序列的末尾。以此类推,直到所有元素均排序完毕。
2.3插入排序
它的工作原理是通过构建有序序列,对于未排序数据,在已排序序列中从后向前扫描,找到相应位置并插入
2.4 希尔排序
希尔排序是把记录按下表的一定增量分组,对每组使用直接插入排序算法排序;随着增量逐渐减少,每组包含的关键词越来越多,当增量减至1时,整个文件恰被分成一组,算法便终止。
2.5 归并排序
2.6 快速排序
通过一趟排序将待排记录分隔成独立的两部分,其中一部分记录的关键字均比另一部分的关键字小,则可分别对这两部分记录继续进行排序,以达到整个序列有序