[技术翻译]Guava-libraries(一): 用户指导
用户指导
本文翻译自http://code.google.com/p/guava-libraries/wiki/GuavaExplained,由十八子将翻译,发表于博客园
http://www.cnblogs.com/shibazijiang/版权所有,转载请注明作者以及转载地址
Guava工程包含了一些Google的核心库,这些库是我们在开发java语言为基础的工程时信赖的工具,包含了集合,缓存,基本支持工具,并发处理库,通用注释,字符串处理,i/o等等。他们中的每个都是google的工程师们每天在实际的产品服务中需要用到的工具。
但是拉网式搜索javadoc不是最有效率的充分利用这些库的有效办法。在这儿,我们试着以一种易读、愉悦的方式对最受人欢迎的最强大的Guava的一些特点做一解释。
这个WIKI正在建设中,它的一些部分还在逐步完善。
- Basic utilities (基本工具集):让使用java语言更愉悦
Using and avoiding null(避免使用null): null可能会引起歧义,可能会造成让人迷惑不解的错误。它总是让人不爽。许多guava工具直接拒绝使用null,并且遇到null直接快速失败。而不是盲目的接收null。
Preconditions(预先处理): 更容易的预先处理
Common object methods(通用对象方法):简化对象方法的实现,像hashCode() 和 toString().这种方法的实现。(译者注:在原生java中如一个对象作为Map的key的时候就要重写这两个函数)
Ordering:(排序):Guava强大的链式比较器类
Throwables: (抛出异常):简化了检查异常和错误。
- Collections: Guava拓展了原生java集合系统。这是guava最成熟最流行的部分。(译者注:当然,Guava就是由Collection集拓展而来的)
Immutable collections,:是为了防御性编程,常量集合,和提升效率。
New collection types:为了使用JDK没有提出但可以实现的集合,如multisets, multimaps, tables, bidirectional maps,,还有更多。
Powerful collection utilities,:为了原生java Collections没有提供的类。
Extension utilities: 写一个集合包装器?实现一个Iterator?我们能让它更容易。
- Caches: 更好地使用局部缓存,支持很大范围的生存时间。
- Functional idioms::保守的使用,Guava函数式编程风格能显著简化代码。
- Concurrency: 强大的简单的抽象类能让编写正确的并发代码变得更容易。
ListenableFuture:当完成的时候有回调的Futures.
Service:这些工具为你启动和关闭,以及处理困难的状态逻辑。
- Strings: 一些非常有用的字符串工具:splitting, joining, padding,还有更多。
- Primitives:可以操作基础数据类型,像int和char,包含一些无符号类型变体。这些JDK都没有提供。
- Ranges:Guava处理可比较类型的范围数据最强大的API,包含了连续和离散的数据类型。
- I/O:简化了i/o操作,尤其是Java 5 和 6中的I/O streams 和 files。
- Hashing:提供了比Object.hashCode()更精致的工具。
- EventBus:提供在组件之间Publish-subscribe-style的通信方式,不用组件在另一个组建明确地注册。
- Math:提供了JDK没有提供的优化的,全面测试过的数学工具类。
- Reflection:为java反射能力提供工具。
- Tips:用Guava让你的应用像你想象的那样工作。
Philosophy:Guava是,也不是我们的目标。
Using Guava in your build 用Maven,Gradle或者别的工具创建你的系统。
Using ProGuard: 避免把Guavaz中你不用的部分塞入你的JAR中。
Apache Commons equivalents, 使用Apache Commons Collections.帮助你改动代码。
Compatibility,(兼容性)注意不同版本的细节差异。
Idea Graveyard, 对某个特性的请求毫无意外地被拒绝。
Friends 这是一个我们喜欢和仰慕的开源项目。
注意:为了讨论这个wiki的内容。你可以使用guava讨论邮件列表。
[技术翻译]Guava-libraries(一): 用户指导的更多相关文章
- [技术翻译]Guava官方文档Ordering
关于排序 Guava的链式比较器 例子 assertTrue(byLengthOrdering.reverse().isOrdered(list)); 梗概 Ordering是Guava的链式比较器类 ...
- 以正确的方式开源 Python 项目 - 技术翻译 - 开源中国社区
以正确的方式开源 Python 项目 - 技术翻译 - 开源中国社区 以正确的方式开源 Python 项目 英文原文:Open Sourcing a Python Project the Right ...
- iOS-王云鹤 APP首次启动显示用户指导
这个功能的重点就是在如何判断应用是第一次启动的. 其实很简单 我们只需要在一个类里面写好用户引导页面 基本上都是使用UIScrollView 来实现, 新建一个继承于UIViewController ...
- spring技术翻译开始
从今天开始,我会坚持每天花费两个小时来翻译一本英文书(当然自己觉得绝对算得上是经典),可能我英文水平有限,但也请路过的高人予以指点. 如果有翻译的出入很大,望各位告知,本人一定更改.决定翻译的目的有两 ...
- [技术翻译]预加载响应式图像,从Chrome 73开始实现
本次预计翻译三篇文章如下: 01.[译]9个可以让你在2020年成为前端专家的项目 02.[译]预加载响应式图像,从Chrome 73开始实现 03.[译]您应该知道的13个有用的JavaScript ...
- [技术翻译]使用Nuxt生成静态网站
本周再来翻译一些技术文章,本次预计翻译三篇文章如下: 04.[译]使用Nuxt生成静态网站(Generate Static Websites with Nuxt) 05.[译]Web网页内容是如何影响 ...
- [技术翻译]Web网页内容是如何影响电池使用寿命的?
本周再来翻译一些技术文章,本次预计翻译三篇文章如下: 04.[译]使用Nuxt生成静态网站(Generate Static Websites with Nuxt) 05.[译]Web网页内容是如何影响 ...
- [技术翻译]在现代JavaScript中编写异步任务
本周再来翻译一些技术文章,本次预计翻译三篇文章如下: 04.[译]使用Nuxt生成静态网站(Generate Static Websites with Nuxt) 05.[译]Web网页内容是如何影响 ...
- 翻译:WebApi 认证--用户认证Oauth解析
The Web API v2用户认证模板提供了流行的应用用户认证场景,如.使用本地帐号的用户名密码认账 (包括创建用户.设置和修改密码)以及使用第三方的认证方式,如facebook,googl ...
随机推荐
- Delphi 指针大全(光看不练是学不会的)
大家都认为,C语言之所以强大,以及其自由性,很大部分体现在其灵活的指针运用上.因此,说指针是C语言的灵魂,一点都不为过.同时,这种说法也让很多人产生误解,似乎只有C语言的指针才能算指针.Basic不支 ...
- C#技术分享【PDF转换成图片——13种方案】(2013-07-25重新整理)
原文:C#技术分享[PDF转换成图片--13种方案](2013-07-25重新整理) 重要说明:本博已迁移到 石佳劼的博客,有疑问请到 文章新地址 留言!!! 写在最前面:为了节约大家时间,撸主把最常 ...
- 协程coroutine
协程(coroutine)顾名思义就是“协作的例程”(co-operative routines).跟具有操作系统概念的线程不一样,协程是在用户空间利用程序语言的语法语义就能实现逻辑上类似多任务的编程 ...
- 数论(毕达哥拉斯定理):POJ 1305 Fermat vs. Pythagoras
Fermat vs. Pythagoras Time Limit: 2000MS Memory Limit: 10000K Total Submissions: 1493 Accepted: ...
- ie中弹出框中元素的定位
用selenium在ie8浏览器中定位一个弹出框时,直接用ie developer tools可能不一定能定位到,有一个解决的办法是直接在url后面加上#noHide,刷新后,然后再用ie devel ...
- 光学字符识别OCR
1.功能: 光学字符识别(OCR,Optical Character Recognition)是指对文本资料进行扫描,然后对图像文件进行分析处理,获取文字及版面信息的过程 2.典型应用: 名片扫描 3 ...
- cf702D Road to Post Office
D. Road to Post Office time limit per test 1 second memory limit per test 256 megabytes input standa ...
- 网络编程之TCP异步群聊:服务器端代码
最近朋友建议我写一些关于微软云技术的博客留给学校下一届的学生们看,怕下一届的MSTC断档.于是我也觉的有这个必要.写了几篇博客之后,我觉得也有必要把这一年的学习内容放在博客做个纪念,就这样写了本篇博客 ...
- Spring配置多个数据源
Spring 配置多数据源实现数据库读写分离 博客分类: Spring 数据库 现在大型的电子商务系统,在数据库层面大都采用读写分离技术,就是一个Master数据库,多个Slave数据库.Mast ...
- Java中基本数据类型和包装器类型的关系
在程序设计中经常用到一系列的数据类型,在Java中也一样包含八中数据类型,这八种数据类型又各自对应一种包装器类型.如下表: 基本类型 包装器类型 boolean Boolean char Charac ...