首页
学习
活动
专区
圈层
工具
发布

UUID缩写
EN

Stack Overflow用户
提问于 2012-07-16 06:45:13
回答 3查看 2.3K关注 0票数 4

我需要计算应用程序的每日独立用户数量。

我唯一能识别用户的方法是通过他们的UUID (这是外部提供的,所以我被迫使用它)。

我知道我每天的用户数是几百万。

我想使用Redis中的位集来进行人口统计,但为了让它工作,我需要一种方法来缩小我的UUID,以便它可以轻松地放入一个长变量中。我意识到了碰撞的可能性,但我并不关心确切的数字。

以前有没有人在Java中这样做过?我所追求的是如何将我的UUID转换成可以放在long中的东西。

EN

回答 3

Stack Overflow用户

发布于 2012-07-16 06:48:57

UUID对象上有两个方法,它们可能会让您受益。

getLeastSignificantBits()getMostSignificateBits()。两者都返回一个长整型。把其中的一个作为你的答案(如果你关心,也可以是某种组合)。

票数 3
EN

Stack Overflow用户

发布于 2012-07-27 22:41:12

您可以生成您的uuid的散列,生成整数或长整型,并将其用于您的人口计数。

看看jedis redis库中的`redis.clients.util.MurmurHash吧。你可以在https://github.com/xetorthio/jedis上找到它

*编辑:示例

代码语言:javascript
复制
        UUID uuid = UUID.randomUUID();
        ByteBuffer buf = ByteBuffer.allocate(16).putLong(uuid.getMostSignificantBits()).putLong(uuid.getLeastSignificantBits());
        buf.flip();
        int useMe= MurmurHash.hash(buf, 123);
票数 3
EN

Stack Overflow用户

发布于 2012-07-16 10:18:45

这可能足够小,可以直接使用完整的UUID作为散列键。如果less memory适合您的需要,也可以使用它进行近似。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11496277

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档