生成与YouTube视频字符串类似的识别字符串的任何Java方式?
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 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |