【技术实现步骤摘要】
ID的自动生成方法及装置
[0001]本申请涉及智能交通领域,尤其涉及一种ID的自动生成方法及装置。
技术介绍
[0002]软件项目开发过程中会创建很多对象,例如,模型、数据等,每个对象一般都会有一个字符串名称,可以称为字符ID。但是,对象之间可能存在引用关系,或者,一些需要存储到服务器数据库中的对象,都需要一个唯一的标识来表示该对象,在对数据库中的每条数据进行读取、写入或删除等访问动作时,通常会使用与之对应的主键(key)来进行操作。因此,数据库会为每条数据分配唯一的ID作为主键,如果ID不唯一则可能因主键冲突导致数据库操作失败。
[0003]相关技术中,为保证ID的唯一性,多采用在分配服务群组ID的基础上,添加数据库增序列。采用数据库自增序列,会造成每次执行事务都额外增加了数据库IO消耗,使性能下降,影响了存储性能及传输使用不便;同时此算法过度依赖分布式网络,在网络不稳定的情况下,生成ID的可靠性不足。
[0004]因此,现有本申请提供一种不依赖分布式网络,能够提高生成ID的稳定性的方法。
专利技 ...
【技术保护点】
【技术特征摘要】
1.一种ID的自动生成方法,其特征在于,包括:获取当前项目中每个对象已分配的ID;根据接收每个对象已分配的ID的顺序生成当前项目中每个对象的序列数,在相同项目内所述对象的序列数随着接收所述对象已分配ID的顺序依次递增;获取当前项目的时间戳,基于所述当前项目的时间戳和所述当前项目中每个对象的序列数,生成当前项目中每个对象的随机字符串;将所述当前项目的时间戳、所述当前项目中每个对象的序列数及所述当前项目中每个对象的随机字符串按照预设规则依次拼接,生成当前项目中每个对象的目标ID。2.根据权利要求1所述的方法,其特征在于,所述获取当前项目的时间戳之后,包括:将所述当前项目的时间戳转换为16进制字符串,得到当前项目的时间戳字符串。3.根据权利要求2所述的方法,其特征在于,所述序列数的位数范围至少包括第一预设范围和第二预设范围,所述第二预设范围的位数比所述第一预设范围的位数至少多一位,所述根据接收每个对象已分配的ID的顺序生成当前项目中每个对象的序列数,包括:根据接收所述每个对象已分配的ID的顺序,在第一预设范围内依次生成每个对象的序列数,其中,当前对象的序列数大于前一对象的序列数;在当所述当前对象的序列数超出所述第一预设范围的情况下,在所述第二预设范围内生成所述当前对象的序列数。4.根据权利要求3所述的方法,其特征在于,所述方法还包括:将所述每个对象的序列数转换为16进制字符串,得到每个对象的序列数字符串。5.根据权利要求4所述的方法,其特征在于,所述基于所述当前项目的时间戳和所述当前项目中每个对象的序列数,生成当前项目中每个对象的随机字符串,包括:确定创建目标ID的目标位数;根据当前项目的时间戳字符串的位数、每个对象的序列数字符串的位数、以及所述目标位数,确定每个对...
【专利技术属性】
技术研发人员:冯旭勃,贺伟伟,
申请(专利权)人:智道网联科技北京有限公司,
类型:发明
国别省市:
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。