博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
选择guava更安全,更简洁
阅读量:5452 次
发布时间:2019-06-15

本文共 1297 字,大约阅读时间需要 4 分钟。

1、为什么使用guava?

   主要针对jdk1.5,jdk1.6中的接口进行封装或者优化,为常用的服务提供更丰富的结构支持,提供更安全代码操作。关键词:更优化、更安全、更丰富

 

2、guava主要提供哪些方面的接口支持?

  • I/O:主要针对jdk中的I/O异常可能会导致数据写失败问题,针对输入源Sources和输出地Sinks构建了更安全的读写及数据流关闭接口,主要包括:ByteSource/CharSource/ByteSink/CharSink/Closer,该机制有效的解决的数据流关闭异常可能会导致的问题,更安全
  • Strings:提供了字符串操作相关的接口。主要针对jdk中字符串处理接口中的一些ambiguous含糊的处理方式进行优化,对一些可能不符合编程规范的接口进行同样的标准化。这里提供的主要接口包括:Joiner/Splitter/CharMatcher/Charsets/CaseFormat, 因此当你需要用到jdk中相关的字符串接口时,请考虑采用该guava接口替代;
  • primitive types:原生类型更丰富。丰富jdk提供的原生接口、数组。提供了相应的无符号数、字节转换等接口。
  • hashcode散列机制:针对jdk为对象Object提供的散列机制的缺点(i. 将散列算法与作用的数据对象放在一起未分离开来;ii.hashcode限制在32位,实现的质量比较低;iii.hash冲突和bit的分散性),提供了相关的改正策略,主要实现了:HashFunction/Hasher/Funnel相关机制实现对对象的hashcode计算。此外该机制实现了布隆过滤器BloomFilter的支持。
  • Math:优化了jdk的Math包,提供了具有更明确语义的基本运算、浮点运算支持,同时还支持检查条件判断,对于可能造成异常的运算不采取容忍策略,而是尽快的报错。
  • Reflection:反射机制。关键是TypeToken类。由于jdk类在runtime时不为对象保存类型信息,但是TypeToken却可在运行时获取类型,同时还支持未具体化的类型。
  • Caches:提供了本地缓存机制,当然如果是服务端缓存可使用memcache。提供了.asMap可将其转换为类ConcurrentHashMap进行处理。
  • Collections:丰富其接口,针对常用的应用场景提供了更丰富的数据结构支持,主要包括:(ImmutableSet/MultiSet/MultiMap/BiMap/ClassToInstanceMap),这些类在很多应用场景下都可能会使用到,直接调用guava提供的接口可能大大减少我们的工作量,提高工作效率。

  • Preconditions
  • Eventbus
  • 函数式编程functional programming。(未完待续)

参考文档:https://code.google.com/p/guava-libraries/wiki/HashingExplained

转载于:https://www.cnblogs.com/fsailuo/p/3710241.html

你可能感兴趣的文章
中小企业大数据应用之道:思维在于借力
查看>>
web项目log日志查看分析->流程理解
查看>>
ZOJ 3949 (17th 浙大校赛 B题,树型DP)
查看>>
【ZJOI 2018】线图(树的枚举,hash,dp)
查看>>
System.IO.StreamWriter写文件
查看>>
雷林鹏分享:jQuery EasyUI 应用 - 创建展开行明细编辑表单的 CRUD 应用
查看>>
时间戳和当前时间互相转化
查看>>
iOS 开发 Pch 文件的正确使用
查看>>
mac 上sublime3安装编码插件
查看>>
sql 清空数据库的日志文件
查看>>
数据循环处理重组2
查看>>
[Heoi2013]Alo
查看>>
ML:吴恩达 机器学习 课程笔记(Week7~8)
查看>>
C++编程练习(14)-------“单例模式”的实现
查看>>
Windows10下Anaconda虚拟环境下安装pycocotools
查看>>
rxjs 的用法
查看>>
51Nod 1092 回文字符串
查看>>
函数的值传递与指针
查看>>
发邮件
查看>>
使用SVN时 URL access forbidden for unknown reason
查看>>