gpt4 book ai didi

java - 任何生成类似于 YouTube 视频字符串的标识字符串的 Java 方法?

转载 作者:塔克拉玛干 更新时间:2023-11-01 21:29:52 25 4
gpt4 key购买 nike

YouTube 上的每个视频都有一个唯一的标识字符串,例如 1cru2fzUlEc。

是否有任何 Java 方法可以生成类似的东西?关闭是指字符串是唯一的、简短的,并且使用数字和字母(区分大小写)。

我需要像 YouTube 使用的那样使用这样的字符串:在后端系统中识别一条记录。我正在做一个 Java Web 应用程序。我不想使用 http://example.com?id=123 的方法。

我知道 Java 的 UUID 实现可以产生类似的结果,但与 YouTube 相比它太长了。

谢谢!

编辑 1:

非常感谢大家的回复。您的所有输入都是有用的!似乎没有完美的解决方案。任何完美的东西(如果不是 UUID)都必须生成并检查(以避免重复)。我说得对吗?

我可以肯定地说,YouTube 在生成自己的 12 个字符的视频字符串时遇到了与我们 Java 人员所做的相同的问题吗?

干杯!

编辑2:

我想使用全范围的字母数字字符,而不仅仅是十六进制数字。我将使用 Marcus Junius Brutus 的解决方案。我觉得它足够直观和安全。理论上我必须检查每个生成的字符串,但我不会这样做,因为每次检查都是另一个数据库调用。我将为生成的字符串 ID 向表字段添加唯一约束。我会让那个倒霉的用户在他第一次生成记录时失败。他需要做的是返回表单再次填写并保存(希望不会因为重复的字符串值而第二次失败)。最初我将使用 12 个字符的字符串,并且可以在需要时轻松增加长度。

我打算将此解决方案用于与同一个后端数据库通信的分布式 Web 应用程序,这意味着同一个应用程序有多个 JVM。

这是我的解决方案,我希望它能奏效。

    String sampleAlphabet = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789";
Random random = new Random();
char[] buf = new char[12];
for (int i = 0 ; i < 12 ; i++)
buf[i] = sampleAlphabet.charAt(random.nextInt(sampleAlphabet.length()));
return new String(buf);

谢谢大家的回复。它们都是可以接受的解决方案。我真的很感激。

祝大家好运!

最佳答案

你为什么不试试这个?它满足您的所有需求。

https://github.com/peet/hashids.java

关于java - 任何生成类似于 YouTube 视频字符串的标识字符串的 Java 方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16065338/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com