`
kanpiaoxue
  • 浏览: 1778026 次
  • 性别: Icon_minigender_1
  • 来自: 北京
文章分类
社区版块
存档分类
最新评论

guava计算md5、sha1和murmurhash

 
阅读更多

下面是我用来计算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));

    }

 

分享到:
评论

相关推荐

    murmurhash-java:murmurhash2的32位和64位实现

    如果您想了解最新的杂音世界,请查看Guava的类,该类具有murmur3和32位的实现。建造用maven构建一个包: mvn package运行测试: mvn test公开API public final class MurmurHash { public static int hash32 ( ...

    guava-30.1-jre.jar

    除此之外,Guava库还支持其他哈希算法,如SHA-1、SHA-256等,只需将`md5()`替换为相应的哈希算法即可。Guava的这种统一的接口设计,使得在项目中切换或组合不同的哈希算法变得非常容易。 总之,"guava-30.1-jre.jar...

    guava-jdk5

    1. **集合框架扩展**:Guava对Java内置的集合框架进行了扩展和增强,提供了如Multiset(多频度集)、Multimap(多值映射)和Immutable集合等类型,这些集合在处理特定数据结构时非常有用。例如,Multiset允许元素...

    guava-18.0(guava-18.0.jar和guava-18.0-sources.jar)

    5. **字符串处理**:Guava提供了Strings类,包含各种字符串操作的静态方法,如Escaper和Joiner等工具。 6. **I/O工具**:Guava提供了Files、ByteStreams、CharStreams和Charsets等类,简化了文件和流的操作。 7. **...

    guava-30.1.1-jre-API文档-中英对照版.zip

    赠送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-30.1.1-jre-API文档-中文版.zip

    赠送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-19.0 jar和sources

    另外,"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 30.1.1常用类介绍及实践代码** Google Guava 是一个由 Google 开发的 Java 库,它提供了许多基础工具,包括集合、缓存、原生类型支持、并发库、字符串处理、I/O 等等。在版本 30.1.1 中,Guava 继续...

    guava-23.0.zip guava.jar guava

    1. **集合框架**:Guava提供了丰富的集合类,如Multiset(多集)、Multimap(多映射)、ImmutableCollection(不可变集合)等,这些集合类具有更好的性能和功能,比Java内置的集合类更为强大。 2. **缓存机制**:...

    guava-31.1-jre.jar

    guava

    使用google guava 实现定时缓存功能

    综上所述,Google Guava的定时缓存功能使得我们能够轻松地在Java应用中实现高效的缓存机制,有效减少计算和网络请求的负担,提升整体性能。通过灵活的配置和丰富的API,我们可以根据具体需求定制合适的缓存策略。在...

    哈希计算工具 java-hash

    在Java中,常见的哈希算法库有Java自带的`java.security.MessageDigest`类,它支持多种哈希算法,如MD5(Message-Digest Algorithm 5)、SHA-1(Secure Hash Algorithm 1)和SHA-256等。使用这些算法,可以创建一个`...

    guava多个版本jar包

    这个压缩包包含的是Guava的不同版本,分别是guava-2.6.2.jar、guava-18.0.jar、guava-19.0.jar和guava-23.0.jar。每个版本都有其特定的功能和改进,让我们逐一探讨这些版本的关键特性。 1. guava-2.6.2.jar:这是...

    guava(google的java集合包)

    1. **集合框架增强**:Guava提供了丰富的集合类,如Multiset(多集)、Multimap(多映射)和Immutable Collections(不可变集合)。这些集合类型在处理复杂数据结构时,提供了更强大的功能和更高的灵活性。例如,...

    Guava 工程项目包 有实例

    Guava 是一个由 Google 开发并维护的 Java 库,它提供了许多实用工具类和集合框架的增强功能,极大地丰富了 Java 平台的标准库。Guava 的目标是解决 Java 开发人员在日常工作中遇到的各种常见问题,提高开发效率和...

    java集合分组(Guava)

    Guava是Google推出的一个强大的Java工具包,其中的Multiset、Multimap和GroupingBy等功能提供了高级的集合操作,特别是对于集合的分组功能,它提供了一种高效且灵活的方式。 首先,我们需要理解Guava中的`...

    Java的MD5加密

    在Java中,`java.security.MessageDigest` 类是用于计算哈希值的核心类,它支持包括MD5在内的多种算法。 1. **创建MD5摘要** 使用`MessageDigest.getInstance("MD5")` 创建一个MD5实例。这个方法会抛出`...

    guava-21.0-rc2 、guava-21.0-rc2-javadoc 、guava-21.0-rc2-sources

    1. **guava-21.0-rc2**: 这是Guava库的二进制发行版,包含了编译好的Java类库,可以直接在项目中引用使用。21.0-rc2表示这是一个候选版本,Release Candidate,意味着这是发布前的最后一个测试版本,通常在正式发布...

    guava1.9-jar和源码 附在线API地址

    这个压缩包包含了Guava 1.9版本的jar包和源码,这对于理解和学习Guava的内部实现非常有帮助。下面我们将深入探讨Guava的一些主要特性、功能以及如何使用。 1. **集合框架扩展** Guava对Java集合框架进行了扩展,...

    Google Guava 官方教程

    Guava 提供了有用的字符串工具,如 Joiner 和 Splitter,用于高效地连接和拆分字符串。此外,Strings 类包含了许多静态方法,用于处理常见字符串操作。 6. **I/O 工具** Guava 的 Files 和 CharStreams 模块提供...

Global site tag (gtag.js) - Google Analytics