Javascript 如何生成只有7个字符的UID并排除重复,如imgur.com

Javascript 如何生成只有7个字符的UID并排除重复,如imgur.com,javascript,php,algorithm,Javascript,Php,Algorithm,请查看此URL: 您将看到URL生成了一个看似随机的字符串,它是由7个字符组成的 小写字母(26个字符) 大写字母(26个字符) 数字(10个) n=(26+26+10)=62 我想知道如何生成一个仅包含7个字符的随机字符串,该字符串用作GUID imgur仅使用7个字符,就可以生成3.521.614.606.208个变体(62到7的幂)。现在的问题是,imgur如何处理每个用作标识符的变体,因为这些数字似乎是随机生成的 有没有办法找出,如何使用7个字符作为UID并确保它们不会重复 一种解决方案

请查看此URL:

您将看到URL生成了一个看似随机的字符串,它是由7个字符组成的

  • 小写字母(26个字符)
  • 大写字母(26个字符)
  • 数字(10个)
  • n=(26+26+10)=62

    我想知道如何生成一个仅包含7个字符的随机字符串,该字符串用作GUID

    imgur仅使用7个字符,就可以生成3.521.614.606.208个变体(62到7的幂)。现在的问题是,imgur如何处理每个用作标识符的变体,因为这些数字似乎是随机生成的

    有没有办法找出,如何使用7个字符作为UID并确保它们不会重复

    一种解决方案是,将它们分块生成,然后一个接一个地使用。看起来不太好

    任何一种感谢

    顺便说一句。
    随机Strin最好是在PHP中生成的,我假设它们在后端有一个数据库,并处理冲突。生成一个标识符,看看它是否仍然存在,然后生成另一个标识符,直到得到一个不存在的标识符


    或者,他们刚刚增加了一些64位整数,并从中生成了一个字符串。

    您可以使用这个一行程序生成一个随机字符串:

    substr(
        str_shuffle(
            str_repeat('abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890', 7)
        ), 
        0, 
        7
    )
    
    然后,您可以检查数据库是否已被使用,例如:

    while(
        existsInTheDB(
            $str = substr(
                str_shuffle(
                    str_repeat(
                        'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890',
                        7
                    )
                ), 
                0, 
                7
            )
        )
    ){}
    
    //now you can use $str
    

    由7个字符组成的随机字符串不会也不能用作
    GUID
    GUID
    有它的定义,它的长度存在显然是有原因的。您可以做的是生成一个随机字符串。但是,它永远不会作为GUID.Agree运行。显然,即使stackoverflow使用随机数/递增数作为唯一标识符,即使根据定义它们不是GUID: