下面是我用来计算MD5和sha1的一段使用guava的代码。
public static void test002() throws Exception { String msg = StringUtils.repeat('-', 200); int testCount = 100000; long sha1Time = 0L; long md5Time = 0L; long murmur3Time = 0L; double sha1Average = 0D; double md5Average = 0D; double murmur3Average = 0D; long one = System.currentTimeMillis(); HashFunction sha1 = Hashing.sha1(); for (int i = 0; i < testCount; i++) { Stopwatch w = Stopwatch.createStarted(); HashCode hashCode = sha1.hashString(msg + i, Charsets.UTF_8); String str = hashCode.toString(); System.out.println(String.format("sh1's hashCode:%s,length:%s,it consumes:%s", str, str.length(), w)); } long two = System.currentTimeMillis(); sha1Time = two - one; HashFunction md5 = Hashing.md5(); for (int i = 0; i < testCount; i++) { Stopwatch w = Stopwatch.createStarted(); HashCode md5HashCode = md5.hashString(msg + i, Charsets.UTF_8); String md5HashCodeStr = md5HashCode.toString(); System.out.println(String.format("md5's hashCode:%s,length:%s,it consumes:%s", md5HashCodeStr, md5HashCodeStr.length(), w)); } long three = System.currentTimeMillis(); md5Time = three - two; HashFunction murmur3 = Hashing.murmur3_32(); Set<String> set = Sets.newHashSet(); for (int i = 0; i < testCount; i++) { Stopwatch w = Stopwatch.createStarted(); HashCode murmur3HashCode = murmur3.hashString(msg + i, Charsets.UTF_8); String murmur3HashCodeStr = murmur3HashCode.toString(); System.out.println(String.format("murmur3's hashCode:%s,length:%s,it consumes:%s", murmur3HashCodeStr, murmur3HashCodeStr.length(), w)); set.add(murmur3HashCodeStr); } long four = System.currentTimeMillis(); murmur3Time = four - three; sha1Average = sha1Time / testCount; md5Average = md5Time / testCount; murmur3Average = murmur3Time / testCount; System.out.println("set size : " + set.size()); System.out .println(String .format("sha1 sum time:%s seconds,average time:%s ms\nmd5 sum time:%s seconds,average time:%s ms\nmurmur3 sum time:%s seconds,average time:%s ms", changeToSecond(sha1Time), sha1Average, changeToSecond(md5Time), md5Average, changeToSecond(murmur3Time), murmur3Average)); }
相关推荐
如果您想了解最新的杂音世界,请查看Guava的类,该类具有murmur3和32位的实现。建造用maven构建一个包: mvn package运行测试: mvn test公开API public final class MurmurHash { public static int hash32 ( ...
除此之外,Guava库还支持其他哈希算法,如SHA-1、SHA-256等,只需将`md5()`替换为相应的哈希算法即可。Guava的这种统一的接口设计,使得在项目中切换或组合不同的哈希算法变得非常容易。 总之,"guava-30.1-jre.jar...
1. **集合框架扩展**:Guava对Java内置的集合框架进行了扩展和增强,提供了如Multiset(多频度集)、Multimap(多值映射)和Immutable集合等类型,这些集合在处理特定数据结构时非常有用。例如,Multiset允许元素...
5. **字符串处理**:Guava提供了Strings类,包含各种字符串操作的静态方法,如Escaper和Joiner等工具。 6. **I/O工具**:Guava提供了Files、ByteStreams、CharStreams和Charsets等类,简化了文件和流的操作。 7. **...
赠送jar包:guava-30.1.1-jre.jar; 赠送原API文档:guava-30.1.1-jre-javadoc.jar; 赠送源代码:guava-30.1.1-jre-sources.jar; 赠送Maven依赖信息文件:guava-30.1.1-jre.pom; 包含翻译后的API文档:guava-30.1...
赠送jar包:guava-30.1.1-jre.jar; 赠送原API文档:guava-30.1.1-jre-javadoc.jar; 赠送源代码:guava-30.1.1-jre-sources.jar; 赠送Maven依赖信息文件:guava-30.1.1-jre.pom; 包含翻译后的API文档:guava-30.1...
另外,"guava-gwt-19.0-sources.jar"则是GWT优化版Guava的源代码,同样方便GWT开发者理解和调试Guava在Web环境下的行为。 总结来说,Guava-19.0的这两个jar文件以及对应的sources.jar,为Java开发者提供了强大的...
**Google Guava 30.1.1常用类介绍及实践代码** Google Guava 是一个由 Google 开发的 Java 库,它提供了许多基础工具,包括集合、缓存、原生类型支持、并发库、字符串处理、I/O 等等。在版本 30.1.1 中,Guava 继续...
1. **集合框架**:Guava提供了丰富的集合类,如Multiset(多集)、Multimap(多映射)、ImmutableCollection(不可变集合)等,这些集合类具有更好的性能和功能,比Java内置的集合类更为强大。 2. **缓存机制**:...
guava
综上所述,Google Guava的定时缓存功能使得我们能够轻松地在Java应用中实现高效的缓存机制,有效减少计算和网络请求的负担,提升整体性能。通过灵活的配置和丰富的API,我们可以根据具体需求定制合适的缓存策略。在...
在Java中,常见的哈希算法库有Java自带的`java.security.MessageDigest`类,它支持多种哈希算法,如MD5(Message-Digest Algorithm 5)、SHA-1(Secure Hash Algorithm 1)和SHA-256等。使用这些算法,可以创建一个`...
这个压缩包包含的是Guava的不同版本,分别是guava-2.6.2.jar、guava-18.0.jar、guava-19.0.jar和guava-23.0.jar。每个版本都有其特定的功能和改进,让我们逐一探讨这些版本的关键特性。 1. guava-2.6.2.jar:这是...
1. **集合框架增强**:Guava提供了丰富的集合类,如Multiset(多集)、Multimap(多映射)和Immutable Collections(不可变集合)。这些集合类型在处理复杂数据结构时,提供了更强大的功能和更高的灵活性。例如,...
Guava 是一个由 Google 开发并维护的 Java 库,它提供了许多实用工具类和集合框架的增强功能,极大地丰富了 Java 平台的标准库。Guava 的目标是解决 Java 开发人员在日常工作中遇到的各种常见问题,提高开发效率和...
Guava是Google推出的一个强大的Java工具包,其中的Multiset、Multimap和GroupingBy等功能提供了高级的集合操作,特别是对于集合的分组功能,它提供了一种高效且灵活的方式。 首先,我们需要理解Guava中的`...
在Java中,`java.security.MessageDigest` 类是用于计算哈希值的核心类,它支持包括MD5在内的多种算法。 1. **创建MD5摘要** 使用`MessageDigest.getInstance("MD5")` 创建一个MD5实例。这个方法会抛出`...
1. **guava-21.0-rc2**: 这是Guava库的二进制发行版,包含了编译好的Java类库,可以直接在项目中引用使用。21.0-rc2表示这是一个候选版本,Release Candidate,意味着这是发布前的最后一个测试版本,通常在正式发布...
这个压缩包包含了Guava 1.9版本的jar包和源码,这对于理解和学习Guava的内部实现非常有帮助。下面我们将深入探讨Guava的一些主要特性、功能以及如何使用。 1. **集合框架扩展** Guava对Java集合框架进行了扩展,...
Guava 提供了有用的字符串工具,如 Joiner 和 Splitter,用于高效地连接和拆分字符串。此外,Strings 类包含了许多静态方法,用于处理常见字符串操作。 6. **I/O 工具** Guava 的 Files 和 CharStreams 模块提供...