加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Java > 正文

生成与YouTube视频字符串类似的识别字符串的任何Java方式?

发布时间:2020-12-15 05:10:44 所属栏目:Java 来源:网络整理
导读:YouTube上的每个视频都有一个唯一的识别字符串,例如1cru2fzUlEc. 是否有任何Java方法可以生成接近它的东西?关闭我的意思是字符串是唯一的,短的,并使用数字和字母(区分大小写). 我需要像YouTube使用的那样使用这样的字符串:在后端系统中识别记录.我正在做一
YouTube上的每个视频都有一个唯一的识别字符串,例如1cru2fzUlEc.

是否有任何Java方法可以生成接近它的东西?关闭我的意思是字符串是唯一的,短的,并使用数字和字母(区分大小写).

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

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

谢谢!

编辑1:

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

我可以肯定地说,在生成自己的12个字符的视频字符串时,YouTube会像Java人一样面临同样的问题吗?

干杯!

编辑2:

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

我将使用此解决方案用于与同一后端数据库通信的分布式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

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读