日期:2014-05-18  浏览次数:20706 次

土豆网中的主键是怎么生成的?? 如: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中运用函数来产生全球唯一标识,也可以 哦。