zoukankan      html  css  js  c++  java
  • Guava 1:概览

    一、引言

    都说java是开源的,但是除了JDK外,能坚持更新且被广泛认可的开源jar包实在是不可多得。其中最显眼的自然是guava了,背靠google自然底气十足,今天就来解开guava的面纱,初探一下这个美妙的家伙。

    附上自学guava网址:官方github  本文以guava-22.0.jar为源码分析。

    二、概述

    1.包名速读 

    com.google.common.annotations:普通注解类型。
    com.google.common.base:基本工具类库和接口。
    com.google.common.cache:缓存工具包,非常简单易用且功能强大的JVM内缓存。
    com.google.common.collect:带泛型的集合接口扩展和实现,以及工具类,这里你会发现很多好玩的集合。
    com.google.common.eventbus:发布订阅风格的事件总线。
    com.google.common.graph:对“图”数据结构的支持。
    com.google.common.hash: 哈希工具包。
    com.google.common.io:I/O工具包。
    com.google.common.math:原始算术类型和超大数的运算工具包。
    com.google.common.net:网络工具包。
    com.google.common.primitives:八种原始类型和无符号类型的静态工具包。
    com.google.common.reflect:反射工具包。
    com.google.common.util.concurrent:多线程工具包。
    com.google.common.escape:提供了对字符串内容中特殊字符进行替换的框架,并包括了Xml和Html的两个实现。
    com.google.common.html:HtmlEscapers封装了对html中特殊字符的替换。
    com.google.common.xml:XmlEscapers封装了对xml中特殊字符的替换。

    其中比较经典的有cache,collect,eventbus,concurrent。其它的是比较简单易懂的工具类,不用深读。

    2.官方介绍(wiki)

    目前一共14个小模块,后续慢慢添加源码剖析链接。

    1. 基本工具 [Basic utilities]

    让使用Java语言变得更舒适

    1.1 使用和避免null:null是模棱两可的,会引起令人困惑的错误,有些时候它让人很不舒服。很多Guava工具类用快速失败拒绝null值,而不是盲目地接受

    1.2 前置条件: 让方法中的条件检查更简单

    1.3 常见Object方法: 简化Object方法实现,如hashCode()和toString()

    1.4 排序: Guava强大的”流畅风格比较器”

    1.5 Throwables:简化了异常和错误的传播与检查

    2. 集合[Collections]

    Guava对JDK集合的扩展,这是Guava最成熟和为人所知的部分

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

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

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

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

    3. 图[Graphs]

     图数据结构相关的支持

    4. 缓存[Caches]

    Guava Cache:本地缓存实现,支持多种缓存过期策略

    5. 函数式风格[Functional idioms]

    Guava的函数式支持可以显著简化代码,但请谨慎使用它

    6. 并发[Concurrency]

    强大而简单的抽象,让编写正确的并发代码更简单

    5.1 ListenableFuture:完成后触发回调的Future

    5.2 Service框架:抽象可开启和关闭的服务,帮助你维护服务的状态逻辑

    7. 字符串处理[Strings]

    非常有用的字符串工具,包括分割、连接、填充等操作

    8. 原生类型[Primitives]

    扩展 JDK 未提供的原生类型(如int、char)操作, 包括某些类型的无符号形式

    9. 区间[Ranges]

    可比较类型的区间API,包括连续和离散类型

    10. I/O

    简化I/O尤其是I/O流和文件的操作,针对Java5和6版本

    11. 散列[Hash]

    提供比Object.hashCode()更复杂的散列实现,并提供布鲁姆过滤器的实现

    12. 事件总线[EventBus]

    发布-订阅模式的组件通信,但组件不需要显式地注册到其他组件中

    13. 数学运算[Math]

    优化的、充分测试的数学工具类

    14. 反射[Reflection]

    Guava 的 Java 反射机制工具类

    ==参考==

    https://github.com/google/guava/wiki

    https://www.cnblogs.com/peida/archive/2013/06/08/3120820.html

  • 相关阅读:
    AIMS 2013中的性能报告工具不能运行的解决办法
    读懂AIMS 2013中的性能分析报告
    在线研讨会网络视频讲座 方案设计利器Autodesk Infrastructure Modeler 2013
    Using New Profiling API to Analyze Performance of AIMS 2013
    Map 3D 2013 新功能和新API WebCast视频下载
    为Autodesk Infrastructure Map Server(AIMS) Mobile Viewer创建自定义控件
    ADN新开了云计算Cloud和移动计算Mobile相关技术的博客
    JavaScript修改css样式style
    文本编辑神器awk
    jquery 开发总结1
  • 原文地址:https://www.cnblogs.com/dennyzhangdd/p/9324622.html
Copyright © 2011-2022 走看看