guava零碎知识点

Guava 的一些小功能点

我们已经到了书的最后一章,但是任然感觉还有很多东西没有覆盖到。虽然在这么短的篇幅里我们不可能覆盖到guava的多有功能,但是我们已经尽力了。 这一章我们将介绍一些没有必要单独一章介绍的一些小的工具类,虽然他们不是天天不用到,但是一旦用到,你就会发现真的非常方便. 这一章我们将学习一下的几个知识点:
1. Hashing 类: 通过Hashing类的静态工具方法我们可以获取HashFunction 实例
2. 布隆过滤: Bloom 过滤这样的数据结构,可以明确返回一个数据不存在,但是不能确保一个元素肯定存在.当存在Hash碰撞时有可能误判。
3. Optional类: Optional 类可以让我们选择使用 null 的引用
4. Throwables类: Throwables 类中有静态工具方法可以与Throwable协作

创建合适的Hash函数

Hash函数是确定对象身份标识和确定是否重复的基础,同时它也是合理使用java结合的必备条件。 Hash函数的基本工作方式: 将对象数据映射为数字。 因此我们希望避免将不同的数据生成相同的数字,毋庸置疑,写一个优秀的Hash函数的工作就留给那些专家吧, 但是幸运的是,在Guava的帮助下我们不需要自己去写Hash函数, Hashing类提供了一些静态方法可以创建HashFunction的实例。

校验总和哈希函数

Guava 提供了两种实现了checksum算法的HashFunction,分别是Adler-32 和 CRC-32,创建这两个HashFunction 可以按照如下的方法:

HashFunction adler32 = Hashing.adler32();
HashFunction crc32 = Hashing.crc32();

这里我们可以简单的使用Hashing函数的静态方法去获取想要的实例.

一般哈希函数

下面我们将看一下一般的hash函数,一般的hash函数是不带加密语义,非常适合基于Hash的查找类任务。 第一个要介绍的就是 murmur Hash,这是一个在2008年由Austin发现的。 其他的一般性hash算法叫做GooFastHash。 下面让我们看下怎样创建这些一般性Hash函数:

HashFunction gfh = Hashing.goodFastHash(128);
HashFunction murmur3_32 = Hashing.murmur3_32();
HashFunction murmur3_128 = Hashing.murmur3_128();

上面的例子中我们使用GoodFastHash算法返回一个最小包含128长度bit位,一个字节包含8个bit位,因此调用GoodFastHash至少返回16个字节(128/8).接下来我们创建了两个murmur实例的Hash. 第一个是实现了32-bit的murmur3_32算法,第二个murmur Hash实例实现了128bit murmur3_128算法。

密码哈希函数

虽然完整的讨论密码哈希函数超出了本书的返回,但是简单的说密码哈希函数就是为了保证数据的安全。 一般来说,密码哈希函数有一些如下的属性:
– 一点小的数据改变,就会导致HashCode发生很大的变化
– 在理论上,通过hash code 反推出原始数据是什么是不可能的。

下面Guava提供了创建密码哈希函数的变体:

HashFunction sha1 = Hashing.sha1();
HashFunction sha256 = Hashing.sha256();
HashFunction sha512 = Hashing.sha
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值