首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >生成唯一id

生成唯一id
EN

Stack Overflow用户
提问于 2012-07-03 22:33:15
回答 7查看 246.6K关注 0票数 72

我是一名大学生,我们的任务是创建一个搜索引擎。当添加到边界中时,我很难生成唯一的id来分配给每个url。我尝试使用SHA-256散列算法和Guid。下面是我用来实现guid的代码:

代码语言:javascript
复制
public string generateID(string url_add)
{
    long i = 1;

    foreach (byte b in Guid.NewGuid().ToByteArray())
    {
        i *= ((int)b + 1);
    }

    string number = String.Format("{0:d9}", (DateTime.Now.Ticks / 10) % 1000000000);

    return number;
}
EN

回答 7

Stack Overflow用户

回答已采纳

发布于 2012-07-03 22:36:14

为什么不直接使用ToString呢?

代码语言:javascript
复制
public string generateID()
{
    return Guid.NewGuid().ToString("N");
}

如果您希望它是基于URL的,您可以简单地执行以下操作:

代码语言:javascript
复制
public string generateID(string sourceUrl)
{
    return string.Format("{0}_{1:N}", sourceUrl, Guid.NewGuid());
}

如果你想隐藏网址,你可以在sourceURL上使用某种形式的SHA1,但我不确定这样做会有什么效果。

票数 115
EN

Stack Overflow用户

发布于 2012-07-03 22:34:55

为什么不使用GUID

代码语言:javascript
复制
Guid guid = Guid.NewGuid();
string str = guid.ToString();
票数 33
EN

Stack Overflow用户

发布于 2017-07-07 08:27:44

这是一个类似于“YouTube-video- id”的id生成器。"UcBKmq2XE5a“

代码语言:javascript
复制
StringBuilder builder = new StringBuilder();
Enumerable
   .Range(65, 26)
    .Select(e => ((char)e).ToString())
    .Concat(Enumerable.Range(97, 26).Select(e => ((char)e).ToString()))
    .Concat(Enumerable.Range(0, 10).Select(e => e.ToString()))
    .OrderBy(e => Guid.NewGuid())
    .Take(11)
    .ToList().ForEach(e => builder.Append(e));
string id = builder.ToString();

它创建11个字符大小的随机It。您也可以增加/减少它,只需更改Take方法的参数。

0.001%的重复项。

票数 28
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11313205

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档