设计模式

来源:互联网 发布:软件 win7 开机启动 编辑:程序博客网 时间:2024/06/10 15:01

设计模式

创建型设计模式

1、工厂模式Factory、ConcreteFactory、Product、ConcreteProduct



2、抽象工厂模式AbstractFactory、ConcreteFactory、AbstractProduct、Product


3、建造者模式Builder、ConcreteBuilder、Director、Product

4、单件模式Singleton

5、原型模式Prototype、ConcretePrototype

结构型设计模式

1、适配器模式

Target、Client、Adaptee、Adapter

2、装饰模式

Component、ConcreteComponent、Decorator、ConcreteDecorator

3、桥接模式

Abstraction、RefinedAbstraction、AbstractionImp、ConcreteAbstractionImpA、B

4、享元模式

Flyweight、ConcreteFlyweight、FlyweightFactory、UnshareConcreteFlyweight、Client

5、外观模式

Façade、Subsystem Classes

6、代理模式

Proxy、Subject、ConcreteSubject、Client

7、组合模式

Component、Leaf

行为型设计模式

1、模板方法模式

AbstractClass、ConcreteClass

2、观察者模式

Subject、ConcreteSubject、Observer、ConcreteObserver

3、迭代子模式

Iterator、ConcreteIterator、Aggregate、ConcreteAggregate

4、责任链模式

Handler、ConcreteHandler、Client

5、备忘录模式

Memento、Originator、Caretaker

6、命令模式

Command、ConcreteCommand、Invoker、Receiver、Client

7、状态模式

Context、State、ConcreteState

8、访问者模式

Visitor、ConcreteVisitor、Element、ConcreteElement

9、中介者模式

Mediator、ConcreteMediator、ColleagueClass

10、     策略模式

Strategy、ConcreteStrategy、Context


Hadoop项目

Common:一系列组件和接口,用于分布式文件系统和通用I/O(序列化、Java RPC 和持久化数据结构)

Avro:一种序列化系统,用于支持高效、跨语言的RPC和持久化数据存储

MapReduce:分布式数据处理模型和执行环境,运行于大型商用机集群

HDFS:分布式文件系统,运行于大型商用机集群

Pig:数据流语言和运行环境,用以探究非常庞大的数据集。Pig运行在MapReduce和HDFS集群上

Hive:一种分布式的、按列存储的数据仓库。Hive管理HDFS中存储的数据,并提供基于SQL的查询语言(由运行时引擎翻译成MapReduce作业)用以查询数据

HBase:一种分布式的、按列存储的数据库。HBase使用HDFS作为底层存储,同时支持MapReduce的批量式计算和点查询(随机读取)

ZooKeeper:一种分布式的、可用性高的协调服务。ZooKeeper提供分布式锁之类的基本服务用于构建分布式应用

Sqoop:该工具用于在结构化数据存储(如关系型数据库)和HDFS之间高效批量传输数据

Oozie:该服务用于运行和调度Hadoop作业(如MapReduce,Pig,Hive及Sqoop作业)

Java内存模型

1、Java包含了几个语言级别的关键字,包括:volatile, final以及synchronized,目的是为了帮助程序员向编译器描述一个程序的并发需求。Java内存模型定义了volatile和synchronized的行为,更重要的是保证了同步的java程序在所有的处理器架构下面都能正确的运行。

2、  单例模式

private static class LazySomethingHolder {

  public static Something something= new Something();

}

 

public static Something getInstance() {

  returnLazySomethingHolder.something;

}

 

// double-checked-locking - don't do this! 双重锁检查问题
private static Something instance = null;
public Something getInstance() {
  if (instance == null) {
    synchronized (this) {
      if (instance == null)
        instance = new Something();
    }
  }
  return instance;
}

 


0 0