首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在Scala中生成简短的、合理的无序键(唯一的web链接)

如何在Scala中生成简短的、合理的无序键(唯一的web链接)
EN

Stack Overflow用户
提问于 2015-06-29 04:36:07
回答 1查看 499关注 0票数 1

我敢肯定有人已经创建了一个伟大的,简洁的,有效的Scala函数,用于生成短的非连续键,适合在web链接中使用。我希望密钥是很难按顺序猜测的。我不希望有人只是“浏览”通过链接的- but,随机点击一个不是什么大问题。

有一些相关的帖子(this onethis other one),但它们并没有真正解决这个问题(而且它们使用的是错误的语言)。这个想法是为了让URL键看起来像是随机的,相当短。像Vimeo或Youtube这样的短链接就可以了,但不要太短(http://watever.com/abc太容易猜/浏览了),也不要太长(http://watever.com/de305d54-75b4-431b-adb2-eb6b9e546014太长了)。一个令人满意的媒介将是最理想的:http://watever.com/de8f43a3

它们的键最终将存储在关系数据库中,因此我可以选择检查唯一性,然后重试,直到“走运”为止。

有什么想法吗?或者希望是一个圆滑的小算法?

EN

回答 1

Stack Overflow用户

发布于 2015-06-29 07:45:07

最终得到了下面的结果,看起来效果很好。它可能会生成重复项,所以我必须仔细检查预先存在的键- but,我认为获得重复项的几率很低,因此它将是罕见的(并且足够容易重试):

代码语言:javascript
复制
def shortCode(id: Int): String = {
    val size = (log10(id) + 4).toInt
    Random.alphanumeric.take(Random.nextInt(size) + 1).mkString
}

在本例中,我使用主键作为id,因此一个较小的键(1)将获得一个4位数的序列键。较大的密钥(1,000,000)将获得11位密钥。使用较大的键大小和字母数字基会使“浏览”URL变得相当困难。

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

https://stackoverflow.com/questions/31104492

复制
相关文章

相似问题

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