- 浏览: 63066 次
- 性别:
- 来自: 杭州
最新评论
文章列表
JDK5,6,7,8各个版本增加的特性
- 博客分类:
- java相关
Java5: (2004.10)
1、泛型 Generics:
2、枚举类型 Enumeration:
3、自动装箱拆箱(自动类型包装和解包)
4、可变参数varargs(varargs number of arguments)
5、Annotations 它是java中的metadata
6、新的迭代语句(for(int n:numbers))
7、静态导入(import static )
8、新的格式化方法(java.util.Formatter)
9、新的线程模型和并发库Thread Framework
Java6:(2006.4)
1、引入了一个支持脚本引 ...
Synergy ubutun下QuickSynergy
http://blog.163.com/howl_prowler/blog/static/26619715201121463352653/
先存着,以后要用时再试试
Guava针对数学计算,提供了一些很好用的方法,用来完善jdk的math包的不足。
据官方称:guava的math包具有下面优点:
(1)充分测试过,bug少
(2)优化过,性能很好
(3)可读性高
Guava的math包用起来就很简单了,都是些静态方法,用的多自然就记得了。
概况的说,主要提供了IntMath,IntegerMath,BigIntegerMath,DoubleMath这四个帮助类。
java.math.RoundingMode是JDK自带的一个枚举类型,guava的一些方法也会传入这个参数,用来表示取整的方式。
下面大概介绍下guava的ma ...
JDK从1.0开始就存在Observer和Observable,可以用来完成生产者/消费者这样的需求。其实也是观察者模式的实现。
Guava使用EventBus来实现类似的功能,但是用起来比Observer更方便。
直接拿代码来讲解吧。
//定义消息实体
class EventObj{
private String info;
public EventObj(String info){
this.info = info;
}
public String getInfo(){
return info;
}
}
//消息订阅者
class MySubcri ...
一.Guava提供了一些方法帮助我们生成hash值。
主要有下面几个帮助类:
HashFunction: hash函数,可以用于创建Hasher对象
Hashing:定义了一些hash函数,主要有md5(),murmur3_128(),murmur3_32(),sha1(),sha256(),sha512(),goodFastHash(int bits)。
Hasher:计算hash值,提供了putXxx()方法用于添加数据,以及hash()方法返回计算结果HashCode。
HashCode:hash值计算结果
Funnel:定义了怎样将一个Object对象分解为primiti ...
Java中使用IO Stream直接操作文件的,但是当我们使用这些的时候,往往要经过很多步骤,比如打开文件,关闭文件。很多时候,我们会记得打开文件,但是最后还是一个close()过程,我们总是容易忽略。
一.文件操作Util类
Guava建议我们定义所有的IO实体时都使用InputSupplier和OutputSupplier进行包装,这样,我们就不用考虑那么多事情了,简化了操作。
我们知道java IO包里面将文件流分为字节流(InputStream or OutputStream)和字符流(Reader or Writer),guava里面的ByteStreams and C ...
guava笔记9-Ranges
- 博客分类:
- guava
很多时候,我们需要表示一个数据范围,可能会这样传参数:
inScope(int min, int max, boolean minInclude, boolean maxInclude)
这样的代码看起来很繁琐。
Guava提供了一种数据结构叫做Range,正好用于表达这样一种数据。
Range提供了一些静态工厂方法,用于构造各种是否包含边界的范围:
Notation
Definition
Factory method
(a..b)
Java有8中基本数据类型:byte ,short,int,long,float,double,char,boolean。Java并不存在unsigned类型,guava新定义了UnsignedInteger 和 UnsignedLong 分别表示int和long的无符号类型。在com.google.common.primitives中提供了一些util类来对基本类型进行操作。
byte
Bytes, SignedBytes, UnsignedBytes
short
Guava对String提供了四个工具:
(1)Joiner:将数组或者集合元素用指定的分隔符进行连接成一个字符串。Joiner.on(",").join(Arrays.asList(1, 5, 7)); // returns "1,5,7"Joiner.on("; ").skipNulls().join("Harry", null, "Ron", "Hermione");方法说明:static Joiner on(char separator) 指定分隔符s ...
一. ListenableFuture是用来增强Future的功能的。
我们知道Future表示一个异步计算任务,当任务完成时可以得到计算结果。如果我们希望一旦计算完成就拿到结果展示给用户或者做另外的计算,就必须使用另一个线程不断的查询计 ...
Function和Predicate可以说是Guava最好用的工具了。Function用于把一种类型的对象转化为另一种类型的对象。Predicate用于判断某个对象是否符合一定条件。单用Function和Predicate可能还看不出他的强大,但是配合集合类,就可以极大地简化代码编写。Function可以配合集合的transform方法,来将一个集合转换为另一个集合。FluentIterable<Integer> rs = FluentIterable.from(strings) .transform(new Function<String, Integer>() { ...
缓存的使用有多种方式,可以使用开源的缓存框架,如ehcache,JCS,cache4j等。Guava也帮我们实现了一个小巧而实用的缓存框架。如果不使用缓存框架,自己实现缓存,很多人首先想到的就是声明一个static的map对象。Guava的缓存框 ...
guava笔记2-集合
- 博客分类:
- guava
(1)构造不可变集合
不可变集合的优点:1. 避免别人调用时更改集合内容2. 线程安全:因为是只读的,所以多线程条件下是安全的3. 不必考虑集合变化,所以会比可变的集合更加的有效率4. 可以作为常量使用JDK里面Collections.unmodifiableXXX也可以得到不可变的集合,但是是有缺陷的:1. api不友好,用起来麻烦2. 不安全的,unmodifiableXXX返回的集合确实不可以直接修改,但是可以通过修改原集合元素来改变返回的集合。3. 低效的:数据结构依然含有可变集合的特性,如并发修改检查,hashtable中的额外空间等。所以:当你期望一个集合不要被更改,或者想把一 ...