如题,请问大家有没有什么想法?有没有成熟的解决方案。谢谢。
目前在一个短链接算法中,我使用的是如下的方案:
1,为字符串分别使用3个不同的hash算法,生成三个hash值(用于定位)
2,通过3个hash值去数据库中查询是否存在该字符串的记录。(不用MD5是因为MD5是值本身是字符串序列,查找效率地)
3. 不存在记录则通过自增ID,为该字符串分配一个唯一的ID序列,然后将ID,3个hash值,字符串本身存入数据库
只有3个hash值不同时相等(基本不可能)ID值就是唯一的,而且通过设置自增ID的初始值,可以精确指定ID值的范围
字符串可以无限长, 除非数字无限大。。。
1、能否设定字符串范围;如多长;
2、不用这种方式不行吗? 为什么要这样
如果字符串不会无限大,最方便的就是用asc码。
如果还有英文以外的用unicode码。
java里面最方便了。
你可以自己试试,比如
[code="java"]
String test = "azAZ";
StringBuilder sb = new StringBuilder();
for (char c : test.toCharArray()) {
sb.append((int) c);
}
[/code]
如果还不方向,后方补0之类的手段也可以啊。
获取字符串hashCode 就搞定了
直接HashCode吧
使用md5加密一下。
这个问题学习写程序的第一个月就应该会呀。字符串里面的字符,每个都对应着ASCII码表的相应字符,把String里面的字符用charAt方法逐个取出来,直接放到int型变量里面就可以了,原理是int型和char型本质都是ASCII码表的对应数字。
为什么要用MD5或SHA呢,你的字符串本身就可以表明它自己的身份,为什么还要用MD5和SHA的字符串去表示呢?
是这个意思么?你这是想做一件什么事情,好无聊啊
数字范围有限,无论你采用什么方法,不同的字符串也可能会产生重复的数字id
如果没有加密需求的话,既然字符串不同,ID号就不同,那直接用字符串表示,行吗?
如果有加密需求,可以考虑hash!