一个 “缩短的URL “有多少种模式?

用字母(大写和小写)+数字[a-zA-Z0-9]^5,用哈希值发出916,132,832种可能的方式。
从URL获得的哈希值对应于缩短的URL的可变部分。

散列函数的设计方式是使散列值尽可能地取唯一的值。
尽管如此,如果原始字符串的长度(信息内容)不受限制,就可能发生冲突(即不同的URL有相同的哈希值)。
有几种变通方法,其中之一是使用以下值作为哈希值

其中一个变通方法是使用下一个值作为哈希值。”如果使用下一个值呢?”这是事实,但哈希函数的设计是在输入类似数据时尽可能地分散数值,因此当发生碰撞时,下一个值往往是空闲的。

当创建一个缩短的URL时,其过程如下

1. 从URL字符串中,创建一个适合5位十六进制数字的哈希值(916,132,832)。
2. 在一个带列的表中注册哈希值和URL(哈希值列是主键)。
3. 如果URL已经被注册在表中
a. 如果URL已经被注册,则使用哈希值。
b. 如果URL没有被注册,则将哈希值增加1,并尝试注册它。

要从一个缩短的URL中获得实际的URL,只需在表中查找即可。
RDB的设计是为了加快从主键识别记录的过程。

因为这个过程是在寻找注册表的空闲空间时进行的,所以在全部用完之前,916,132,832不会用完,但如果有很多哈希碰撞,性能会下降。
然而,这个 “性能 “只与缩短的URL的注册有关,对搜索过程没有影响,所以由于服务的性质,在91亿个组合全部用完之前是足够的。

即使这个数字用完了,也可以通过增加一个字符或一个数字来增加可能的组合数。