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缓存

01
LoadingCache<Key, Graph> graphs = CacheBuilder.newBuilder()
02
        .maximumSize(1000)
03
        .expireAfterWrite(10, TimeUnit.MINUTES)
04
        .removalListener(MY_LISTENER)
05
        .build(
06
            new CacheLoader<Key, Graph>() {
07
                public Graph load(Key key) throws AnyException {
08
                    return createExpensiveGraph(key);
09
                }
10
        });

1.4函数式风格

1.5并发
ListenableFuture
Service框架
1.6字符串
Joiner,Spliter
1.7反射
Reflection
1.8EventBus
用于事件分发
1.9区间
[]
1.10散列
Hash包


版权声明:本文为nxcatman原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。