关键词:
记录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;
}
超级表格
分享到:
相关推荐
易语言超级表格控件支持库源码,超级表格控件
易语言VS超级表格(已汉化) 采用的VS超级表格OCX汉化到易语言使用非常强大的组件,远超易语言高级表格功能!
Excel根据表格,生成sql语句 ,生成建表语句,自行到数据库中执行, 需要excel启用宏,按规则填充表格后可生成表格目录及生成sqlserver语句。
超级表格控件
数据展示时候,经常从后台传入大小不等的矩阵。这里给出了根据不同矩阵大小,通过jquery的html()和append()方法动态生成html表格的实例。
python百度paddle表格文字识别生成excel 介绍链接:https://blog.csdn.net/xifenglie123321/article/details/124858738
运用C#制作超级表格,绝对实用,大家可以下载看看
通过对易语言的超级表格模块化,可以实现静态编译
使用JS调用动态链接库操作WORD并绘制表格
extjs动态生成表格,前台+后台extjs动态生成表格,前台+后台extjs动态生成表格,前台+后台extjs动态生成表格,前台+后台extjs动态生成表格,前台+后台extjs动态生成表格,前台+后台
android表格控件动态生成表格源码Eclipse 使用滚动条避免显示不完全问题
如何用java生成动态word表格,以及在表格中插入图片是一个难题,花了两天时间做出来的,希望对大家有帮助 需要jar包:iText-2.1.7.jar, iText-rtf-2.1.7.jar, iTextAsian.jar和jxl.jar 注意前两个jar包的版本要能...
jQuery表格生成插件Table.js。操作简单,资源中附带该类API,只需要使用几个简单的方法就可以生成一个漂亮的表格。
简单而强大的工具.指定CRC多项式的值,直接生成表格.让烦恼的CRC变得简单无比.
RX超级表格静态模块.rar
MFC生成电子表格和随机数,对于MFC操作电子表格有用
Bootstrap显示表格动态生成插件,现在的项目一直在用bootstraptable作为前端框架。根据客户要求,动态显示需要的列数据。
使用Java原生代码生成表格图片,支持标题行列合并,可运行的简单demo给大家扩展思路,用于彩信、邮件、消息等场景
Java freemarker 模板生成word动态表格
易语言超级表格源码,超级表格,保存提醒,加修标识列,打开数易据库表,运行环境设置,打开易表格,打开好牛表,状态行显示,更新行号,添加行,添加列,保存到数据库,保存到好牛表,行号名称,另存到数据库表,保存到CSV文本文件,...