【问题标题】:Clojure hashing algorithm [closed]Clojure 散列算法 [关闭]
【发布时间】:2019-01-06 10:34:03
【问题描述】:

我有工作代码,我可以在其中使用(hash data-structure) 获取数据结构的哈希码,但它在其中少量工作。当我有几百万个数据结构时,它会开始给我重复的哈希(冲突)。当数据结构的结构未知时,如何获得更独特的东西?

【问题讨论】:

    标签: clojure clojure-java-interop


    【解决方案1】:

    你总是可以求助于 md5(或其他任何东西,真的)。

    (defn md5 [^String s]
        (let [algorithm (MessageDigest/getInstance "MD5")
              raw (.digest algorithm (.getBytes s))]
            (format "%032x" (BigInteger. 1 raw))))
    
    (defn md5-hash [s] (md5 (pr-str s)))
    
    (md5-hash {:a [1 2 3 '(5 6 7)]})
    
    => "8f941424e629b876cdcb51509521870d"
    

    另外,您可以使用 Java 序列化而不是 pr-str

    【讨论】:

      【解决方案2】:

      This library 已经存在了一段时间,而且我已经看到了至少一种替代方案。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2013-10-05
        • 2013-07-22
        • 2013-07-04
        • 1970-01-01
        • 1970-01-01
        • 2017-11-14
        • 2012-09-03
        • 1970-01-01
        相关资源
        最近更新 更多