- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
每天需要处理 > 1000 但 < 10000 条新记录
不能使用 GUID/UUID、自动递增数字等。
理想情况下应该是 5 或 6 个字符长,当然可以是 alpha
想要重用现有的、知名的算法(如果可用的话)
有什么东西吗?
最佳答案
tinyurl 和 bit.ly 使用 Base 62 作为缩略网址。这是创建“唯一的”、人类可读的 ID 的一种易于理解的方法。 当然,您必须存储创建的 ID 并在创建时检查重复项以确保唯一性。(请参阅答案底部的代码)
Base 62 唯一性指标
以 62 为基数的 5 个字符将为您提供 62^5 个唯一 ID = 916,132,832(约 10 亿)每天 10,000 个 ID,您可以使用 91,000 天以上
6 个 base 62 字符将为您提供 62^6 个唯一 ID = 56,800,235,584(56+ 十亿)每天 1 万个 ID,你将在 5 亿多天里都没事
Base 36 唯一性指标
6 个字符将为您提供 36^6 个唯一 ID = 2,176,782,336(2+ 十亿)
7 个字符将为您提供 36^7 个唯一 ID = 78,364,164,096(78+ 十亿)
代码:
public void TestRandomIdGenerator()
{
// create five IDs of six, base 62 characters
for (int i=0; i<5; i++) Console.WriteLine(RandomIdGenerator.GetBase62(6));
// create five IDs of eight base 36 characters
for (int i=0; i<5; i++) Console.WriteLine(RandomIdGenerator.GetBase36(8));
}
public static class RandomIdGenerator
{
private static char[] _base62chars =
"0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz"
.ToCharArray();
private static Random _random = new Random();
public static string GetBase62(int length)
{
var sb = new StringBuilder(length);
for (int i=0; i<length; i++)
sb.Append(_base62chars[_random.Next(62)]);
return sb.ToString();
}
public static string GetBase36(int length)
{
var sb = new StringBuilder(length);
for (int i=0; i<length; i++)
sb.Append(_base62chars[_random.Next(36)]);
return sb.ToString();
}
}
输出:
z5KyMgwd4SUpuSzQtHUPrGATUIf2ISQCF9GNM50UV3TFSS3MG91VKP7NTRF10TAJK3AJU7
关于.net - 生成人类可读/可用、简短但唯一的 ID,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9543715/
有没有一种方法(程序、库)可以大致了解文档是用哪种语言编写的? 我有一堆混合语言的文本文档(~500K),需要导入支持 i18n 的 CMS (Drupal).. 我不需要完美的匹配,只需要一些猜测。
Closed. This question needs details or clarity。它当前不接受答案。
使用 UTF-8 编码。 (Multiple languages in one HTML page)。 跨不同浏览器(包括 iPad 上的 Safari)在单个网页上正确显示多种人类语言的最佳做法是什
我有一个完全可用的代码,它是为 Windows 编写的,是用 Visual Studio 构建的。 我想做的是为该软件添加另一种语言。我的想法是在窗口角落放置两个标志(一个英语和一个德语),并在用户点
我刚刚得到一个脚本,我想对其进行一些更改,我正在寻找某人为我开发一份自由职业,以使我将提供的加载字符串可读以进行编辑。 Lua代码是这样的: ------------------------- ENG
有没有不是简单逐字翻译的语言翻译项目?一个具有先进算法/设计的? 目前主流和流行的翻译软件,例如谷歌翻译,似乎是查找一个词或一组连续的词,然后将其直接翻译成不知何故确定为最佳匹配的内容。但是因为它不是
基于 Twilio 的人类/非人类检测 - 我正在尝试通过如下所示的代码来检测调用是否被人类或机器人接听 HashMap params = new HashMap(); params.put("Fro
这是目前(不确定)我能想到的处理多语言网站的最佳方式,它不涉及 gettext、zend_translate 或任何 php 插件或框架。 我认为它非常简单:我有 3 种语言,我将它们的“内容”写在不
我是一名优秀的程序员,十分优秀!