天天看点

facebook presto源码解读( part3 )

# java8&guava&连接器&任务分发及执行

本文分四部分介绍:

分别是

1.java8

2.guava

3.presto连接器

4.presto任务分发及执行的细节

一 java8

1.1 lamda

1.2函数式接口

1.3方法引用

1.4stream

1.5Options

1.6并发

二 guava

1.1基本工具

option

check

Objects 的equal toString hash compare简化

Throwables.propagateIfInstanceOf(t, IOException.class);

1.2集合

2.1 不可变集合: 用不变的集合进行防御性编程和性能提升。

2.2 新集合类型: multisets, multimaps, tables, bidirectional maps等

2.3 强大的集合工具类: 提供java.util.Collections中没有的集合工具

2.4 扩展工具类:让实现和扩展集合类变得更容易,比如创建Collection的装饰器,或实现迭代器

1.3缓存

LoadingCache<Key, Graph> graphs = CacheBuilder.newBuilder()

        .maximumSize()

        .expireAfterWrite(, TimeUnit.MINUTES)

        .removalListener(MY_LISTENER)

        .build(

            new CacheLoader<Key, Graph>() {

                public Graph load(Key key) throws AnyException {

                    return createExpensiveGraph(key);

                }

        });
           

1.4函数式风格

1.5并发

ListenableFuture

Service框架

1.6字符串

Joiner,Spliter

1.7反射

Reflection

1.8EventBus

用于事件分发

1.9区间

[]

1.10散列

Hash包

继续阅读