分享超级表格的id号的生成规则
来源:互联网 发布:python 流程图 编辑:程序博客网 时间:2024/06/17 12:56
关键词:
记录ID
GUID
如何生成唯一ID
如何生成不太长的纯数字ID
超级表格
表记录的关键字段(一般取名为id)的值的生成方式,通常有下列几种:
1、数据库自增,即从0开始,每次加1。在记录插入到数据库表时生成;这是mysql数据库的用户最多人的选择。不足之处是在新记录插入数据库前,并不知道它的值;第二个不足是无法在多个表记录间保持id唯一(某些系统会要求这点,这个理解起来有一定困难。)2、GUID字符串:全局唯一标识符(GUID,Globally Unique Identifier)。GUID是一种由算法生成的二进制长度为128位的数字标识符。GUID主要用于在拥有多个节点、多台计算机的网络或系统中。在理想情况下,任何计算机和计算机集群都不会生成两个相同的GUID。GUID 的总数达到了2^128(3.4×10^38)个,所以随机生成两个相同GUID的可能性非常小,但并不为0。GUID一词有时也专指微软对UUID标准的实现。
不足是字段类型必须是字符串,排序和性能都不如数字类型。
3、时间戳:精确到毫秒,意味着当同一个毫秒有多条记录生成时,id就可能重复,导致新记录无法插入。
4、自定义函数
超级表格某些关键表的id的生成,有下列要求:
1、高性能,最好是数字类型,而不是字符串;
2、提前生成(而不是在插入数据库后才生成),即在用户输入页面时就生成;
3、不但要求本表唯一,而且不能与其它表记录的id重复。因为有些公共的表会把来自不同表的记录的id记录在一起。
4、足够低的重复概率,能满足超级表的数量的要求。
为满足这些要求,我们设计了一个简单而实用的timeid的生成方式。
首先用时间函数生成一个包括年、月、日、时、分、秒、毫秒的数字类型的字符串。例如2013年12月3日14时50分12秒345毫秒,对应的字符串是131203145012345。
我们只取年分的最后两位,这样可以节省两位数,而且能满足100年不重复(足够了)。
如果只是这个算法生成的id,万一在同一毫秒生成了多个id,那就重复了。为了继续减少重复概率,我们又加上了从10000到99999之间的一个随机数。
这意味着,在同一时间(精确到毫秒),有10万分之一的重复概率。足够低了,足以满足超级表格的数量级别要求。
timeid除了重复率足够低,因为完全是数字组成,可以存储为数字类型,性能高;而且是按时间先后顺序生成,id基本也是递增的(之所以说是“基本”,因为同一毫秒内的id可能不是递增)。
不足是数字位数达20位,显得稍多,需用double类型存储。
下面就是生成timeid的函数js代码:
//获得时间随机数,从年份的最后2位,到毫秒,最后加5 位随机数,共20位。例如13112918400745636211
function getTimeId()
{
var date1=new Date();
var r="";
r=date1.getFullYear().toString().substring(2);
var d=date1.getMonth()+1;
if (d<10)r+="0"+d;else r+=d;
d=date1.getDate();
if (d<10)r+="0"+d;else r+=d;
d=date1.getHours();
if (d<10)r+="0"+d;else r+=d;
d=date1.getMinutes();
if (d<10)r+="0"+d;else r+=""+d;
d=date1.getSeconds();
if (d<10)r+="0"+d;else r+=""+d;
var d=date1.getMilliseconds();
if (d<10)r+="0"+d;
else
if (d<100)r+="00"+d;
else r+=d;
var x="0123456789";
var tmp="";
for(var i=0;i<5;i++)
tmp+=x.charAt(Math.ceil(Math.random()*100000000)%x.length);
r+=tmp;
return r;
}
超级表格
- 分享超级表格的id号的生成规则
- 分享超级表格用户在知乎上与我们的对话
- 超级NB的表格操作
- 超级强悍的JS表格
- 超级玛丽之Android的权限规则
- 超级漂亮的表格:彩色背景
- 甘特图的一些创新尝试-超级表格
- 生成唯一的ID
- iText5 表格的生成
- VC 表格的生成
- 对动态生成的表格加CSS样式(通过匹配ID的公用部分实现)
- 超级表格发布表格的批量修改功能
- 超级表格发布表格的批量修改功能
- android 资源ID生成规则
- 服务器唯一id生成规则
- 分享一个项目中用到的简单的id生成工具
- 分享几个超级不错的流量操作方法
- ShareSDK超级强大的社会化分享库
- 【转】JS获取网页高度
- directshow 找不到入口点 dllregisterserver
- 六、UsbDeviceManager及功能设置流程
- Ubuntu 12.04 卸载自带OpenJDK,安装JDK1.6
- 解决PLSQL查询表时中文显示乱码
- 分享超级表格的id号的生成规则
- Java -- 利用反射 操作任意数组,包括对象数组 和 基本数据类型的数组
- POJ_2449_Remmarguts' Date
- 深入剖析hibernate的N+1问题和缓存问题
- SAP固定资产减值准备的处理方法
- jira的详细安装和破解
- 数据泵expdp中query的使用及注意事项
- JS中的left,pixelLeft,posLeft,offsetLeft
- 矩阵分析(一)线性空间和线性变换