Algorithm
算法复杂性分析
常数阶(1)
public void sum(int n) {
int sum = 0; // 执行一次
sum = n*2; // 执行一次
System.out.println(sum); // 执行一次
}
...大约 5 分钟
public void sum(int n) {
int sum = 0; // 执行一次
sum = n*2; // 执行一次
System.out.println(sum); // 执行一次
}
数组
链表
这三个组件都包含在 AppMaster 进程中
分类 | 模式 |
---|---|
创建型模式 | • 单例模式(Singleton Pattern) • 工厂模式(Factory Pattern) • 抽象工厂模式(Abstract Factory Pattern) • 建造者模式(Builder Pattern) • 原型模式(Prototype Pattern) |
结构型模式 | • 适配器模式(Adapter Pattern) • 桥接模式(Bridge Pattern) • 过滤器模式(Filter、Criteria Pattern) • 组合模式(Composite Pattern) • 装饰器模式(DecoratorPattern) • 外观模式(Facade Pattern) • 享元模式(Flyweight Pattern) • 代理模式(Proxy Pattern) |
行为型模式 | • 责任链模式(Chain of Responsibility Pattern) • 命令模式(Command Pattern) •解释器模式(Interpreter Pattern) • 迭代器模式(Iterator Pattern) • 中介者模式(MediatorPattern) • 备忘录模式(Memento Pattern) • 观察者模式(Observer Pattern) • 状态模式(State Pattern) • 空对象模式(Null Object Pattern) • 策略模式(Strategy Pattern) • 模板模式(Template Pattern) • 访问者模式(Visitor Pattern) |
优点:写起来简单不费脑子、线程安全
缺点:类装载就完成了实例化,可能浪费内存(不太重要,因为要用到的话早晚装载对象)
public class Test {
public static void main(String[] args) {
Singleton singleton1 = Singleton.getInstance();
Singleton singleton2 = Singleton.getInstance();
System.out.println(singleton1.hashCode() == singleton2.hashCode());
}
}
class Singleton {
// private构造方法保证外部无法实例化:
private Singleton() {}
// 静态字段引用唯一实例:
private static final Singleton INSTANCE = new Singleton();
// 通过静态方法返回实例:
public static Singleton getInstance() {
return INSTANCE;
}
}
package main;
import java.sql.SQLOutput;
import java.util.function.Function;
public class FunctionDemo {
public static void main(String[] args) {
// Function<String,String> function = new Function<String, String>() {
// @Override
// public String apply(String s) {
// return s;
// }
// };
Function<String,String> function = (str)->{return str;};
System.out.println(function.apply("dsaf"));
}
}