什么是检查随机字符串I've生成了has't是我以前生成的
What is the quickest way to check that the random string I've generated hasn't been generated by me before?
我很好奇像imgur这样的地方(通过一个唯一的5位数引脚识别每个图像)是如何实现这一点的。很明显,一个人至少会有一个O(n)
解决方案(或者根据算法,最多有O(n log (n))
),但由于我预计n
将是数百万,这将是一个不可行的解决方案。
您可以将这些数字任意组合,包括imgur使用的字母数字组合。一种方法是使用基数为36的编码器,对于数字12345678,该编码器将返回
7CLZI
在Javascript中很容易做到:
(1234567890).toString(36) // => "kf12oi"
parseInt("kf12oi",36) // => 1234567890
尽管您很可能会在服务器上进行这些转换,而不是在浏览器中。
base58,将获得大写和小写字母以及数字:
15FsU
另请参阅
http://convertxy.com/index.php/numberbases/
您可以使用顺序数字键,然后使用乘法逆变换。然后,以64为基数对其进行编码以获得字符串。
好的是,恢复密钥很容易:基于64的解码,再次进行乘法逆运算,就有了密钥。
这可以通过http://en.wikipedia.org/wiki/Bloom_filter.这是一个非常有效的算法。它确实有少量假阳性的缺点。
我不确定这里是否有正确的结尾,但假设你想生成一个随机字符串,然后存储它来访问一些东西,你只需要检查它是否在你的存储中。
如果您有一个SQL数据库表,在字符串上有一个唯一的索引,您可以尝试插入。如果插入失败是由于重复的唯一密钥,你会知道你用过它。这几乎是即时的。
相关文章:
- Javascript GetElementByID has no value
- Cucumber+Mongoose给了我Schema has'尚未注册型号
- .has() 函数在 if 语句 (jQuery) 中不起作用
- 什么是检查随机字符串I've生成了has't是我以前生成的
- jquery has() 似乎没有按预期工作
- react-click event has empty event.target
- jQuery alter element if has class
- 如何将 jQuery has() 与复选框输入一起使用
- $(this).hasClass('has-success') 总是返回 false
- 未捕获的类型错误:对象 #
没有方法“has” - Backbone.model:对象函数 (a){return new n(a)} 没有方法 'has'
- 将 .has() 与 keyup 事件一起使用
- 依赖关系中“./has!dom-addeventlistener?:./aspect”是什么意思
- Google Analytics Site Speed with siteSpeedSampleRate set has
- Firefox 24 has javascript version 1.5
- JQuery :has(),我需要只选择孩子
- 一起使用 jQuery :has() 和 :contains() 选择器
- 使Javascript工具提示仅在I've指定了内容
- jquery Form Validation uses GET when I've specified POST
- 一个变量I'当我试图在下一行代码中使用ve initialized时,它是未定义的