土豆网中的主键是怎么生成的?? 如:AqK4XVaSiYE ,nXDh2lsb_Tc
土豆网中的键是 怎么生成的??
http://www.tudou.com/programs/view/nXDh2lsb_Tc/
http://www.tudou.com/programs/view/AqK4XVaSiYE/
我发现很多网站的主键 不是int自增,也不是guid, 而是类似AqK4XVaSiYE的这种方式.
请问这是怎么实现的?? 有什么优点吗??
------解决方案--------------------安全性高啊
------解决方案--------------------防盗链 呵呵
防采集 呵呵呵呵
------解决方案--------------------是11位的随机数作为主键。
因为这种随机数的重覆机率基本不会出现。
之所以用这个随机数,是考虑到并发问题。
------解决方案--------------------public static String generateKey(int total) {
String base = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456_-=# ";
StringBuffer sb = new StringBuffer(total);
for (int i = 0; i < total; i++) {
int index = (int) (Math.random() * base.length());
sb.append(base.charAt(index));
}
return sb.toString();
}
不知道是不是这样做的。
------解决方案--------------------学习 可能是在数据库里生成的
------解决方案--------------------public static String generateKey2(int total){
StringBuffer sb = new StringBuffer(total);
for (int i = 0; i < total; i++) {
char index = (char) (Math.random() * (127 - 33) + 33);
sb.append(index);
}
return sb.toString();
}
这个生成的安全性更高些,而且更快。
------解决方案--------------------随机生成11位字符 安全性高
------解决方案--------------------多数都是MD5加密
------解决方案--------------------我也想学习下那种,懂的人交交下
我老大叫我这样,id为当前时间yyyymmdd0001-yyyymmdd9999,(一天不会有1万个记录)
不知道好不好?
------解决方案--------------------ls那种方法,与自动增长列有什么区别呢?没有随机性可言。
------解决方案--------------------在ORACLE中运用函数来产生全球唯一标识,也可以 哦。