ID的自动生成方法及装置制造方法及图纸

技术编号:33958672 阅读:53 留言:0更新日期:2022-06-30 00:06
本申请涉及一种ID的自动生成方法及装置。该方法包括:获取当前项目中每个对象已分配的ID;根据接收每个对象已分配的ID的顺序生成当前项目中每个对象的序列数,在相同项目内对象的序列数随着接收对象已分配ID的顺序依次递增;获取当前项目的时间戳,基于当前项目的时间戳和当前项目中每个对象的序列数,生成当前项目中每个对象的随机字符串;将当前项目的时间戳、当前项目中每个对象的序列数及当前项目中每个对象的随机字符串按照预设规则依次拼接,生成当前项目中每个对象的目标ID。本申请仅根据项目的时间戳、自生成序列和随机数就可以生成唯一ID,在不依赖分布式网络的情况下,保证了本发明专利技术的ID的唯一性,同时还可以解决跨机环境下的存储问题。机环境下的存储问题。机环境下的存储问题。

【技术实现步骤摘要】
ID的自动生成方法及装置


[0001]本申请涉及智能交通领域,尤其涉及一种ID的自动生成方法及装置。

技术介绍

[0002]软件项目开发过程中会创建很多对象,例如,模型、数据等,每个对象一般都会有一个字符串名称,可以称为字符ID。但是,对象之间可能存在引用关系,或者,一些需要存储到服务器数据库中的对象,都需要一个唯一的标识来表示该对象,在对数据库中的每条数据进行读取、写入或删除等访问动作时,通常会使用与之对应的主键(key)来进行操作。因此,数据库会为每条数据分配唯一的ID作为主键,如果ID不唯一则可能因主键冲突导致数据库操作失败。
[0003]相关技术中,为保证ID的唯一性,多采用在分配服务群组ID的基础上,添加数据库增序列。采用数据库自增序列,会造成每次执行事务都额外增加了数据库IO消耗,使性能下降,影响了存储性能及传输使用不便;同时此算法过度依赖分布式网络,在网络不稳定的情况下,生成ID的可靠性不足。
[0004]因此,现有本申请提供一种不依赖分布式网络,能够提高生成ID的稳定性的方法。

技术实现思路

[0005]为解决或部分解决相关技术中存在的问题,本申请提供一种不依赖分布式网络,能够提高生成ID的稳定性的方法。
[0006]本申请第一方面,提供一种ID的自动生成方法,包括:
[0007]获取当前项目中每个对象已分配的ID;
[0008]根据接收每个对象已分配的ID的顺序生成当前项目中每个对象的序列数,在相同项目内对象的序列数随着接收对象已分配ID的顺序依次递增;
[0009]获取当前项目的时间戳,基于当前项目的时间戳和当前项目中每个对象的序列数,生成当前项目中每个对象的随机字符串;
[0010]将当前项目的时间戳、当前项目中每个对象的序列数及当前项目中每个对象的随机字符串按照预设规则依次拼接,生成当前项目中每个对象的目标ID。
[0011]可选地,获取当前项目的时间戳之后,包括:
[0012]将当前项目的时间戳转换为16进制字符串,得到当前项目的时间戳字符串。
[0013]可选地,序列数的位数范围至少包括第一预设范围和第二预设范围,第二预设范围的位数比第一预设范围的位数至少多一位,根据接收每个对象已分配的ID的顺序生成当前项目中每个对象的序列数,包括:
[0014]在第一预设范围内依次生成每个对象的序列数,其中,当前对象的序列数大于前一对象的序列数;
[0015]在当前对象的序列数超出第一预设范围的情况下,在第二预设范围内生成对象的序列数。
[0016]可选地,方法还包括:将每个对象的序列数转换为16进制字符串,得到每个对象的序列数字符串。
[0017]可选地,基于当前项目的时间戳和当前项目中每个对象的序列数,生成当前项目中每个对象的随机字符串,包括:
[0018]确定创建目标ID的目标位数;
[0019]根据当前项目的时间戳字符串的位数、每个对象的序列数字符串的位数、以及目标位数,确定每个对象的随机字符串的位数;
[0020]根据每个对象的随机字符串的位数,查询随机字符串表,得到每个对象的随机字符串。
[0021]可选地,查询随机字符串表,得到每个对象的随机字符串,之后包括:
[0022]在随机字符串表中删除每个对象的随机字符串,以使每个对象对应唯一随机字符串。
[0023]可选地,生成当前项目中每个对象的目标ID后,包括:
[0024]将对象的目标ID发送给客户端,以使客户端根据对象的目标ID更新对象已分配的ID;
[0025]当接收到服务器返回的更新成功响应消息后,确定目标ID更新成功。
[0026]本申请第二方面提供一种ID的自动生成装置,其特征在于,包括:
[0027]获取模块,用于获取当前项目中每个对象已分配的ID;
[0028]第一生成模块,用于根据接收每个对象已分配的ID的顺序生成当前项目中每个对象的序列数,在相同项目内对象的序列数随着接收对象已分配ID的顺序依次递增;
[0029]第二生成模块,用于获取当前项目的时间戳,基于当前项目的时间戳和当前项目中每个对象的序列数,生成当前项目中每个对象的随机字符串;
[0030]确定模块,用于将当前项目的时间戳、当前项目中每个对象的序列数及当前项目中每个对象的随机字符串按照预设规则依次拼接,生成当前项目中每个对象的目标ID。
[0031]本申请第三方面提供一种电子设备,包括:
[0032]处理器;以及
[0033]存储器,其上存储有可执行代码,当可执行代码被处理器执行时,使处理器执行如上的方法。
[0034]本申请第四方面提供一种计算机可读存储介质,其上存储有可执行代码,当可执行代码被电子设备的处理器执行时,使处理器执行如上的方法。
[0035]本申请提供的技术方案可以包括以下有益效果:本申请通过获取当前项目对应的ID信息,ID信息包括当前项目中每个对象的ID;根据接收ID的顺序生成当前ID的序列数,在相同项目内ID的序列数随着接收ID的顺序依次递增;获取每个项目对应的时间戳,基于当前ID对应项目的时间戳和当前ID的序列数,生成当前ID的随机字符串;将当前ID对应的时间戳、当前ID对应的序列数以及当前ID对应的随机字符串按照预设规则依次拼接,以生成当前ID对应的目标ID。本申请仅根据项目的时间戳、自生成序列和随机数就可以生成唯一ID,在不依赖分布式网络的情况下,保证了本专利技术的ID的唯一性,同时还可以解决跨机环境下的存储问题。
[0036]应当理解的是,以上的一般描述和后文的细节描述仅是示例性和解释性的,并不
能限制本申请。
附图说明
[0037]通过结合附图对本申请示例性实施方式进行更详细地描述,本申请的上述以及其它目的、特征和优势将变得更加明显,其中,在本申请示例性实施方式中,相同的参考标号通常代表相同部件。
[0038]图1是本申请实施例示出的ID的自动生成方法的应用环境示意图;
[0039]图2是本申请实施例示出的ID的自动生成方法的流程示意图;
[0040]图3是本申请实施例示出的ID的自动生成方法装置的结构示意图;
[0041]图4是本申请实施例示出的电子设备的结构示意图。
具体实施方式
[0042]下面将参照附图更详细地描述本申请的实施方式。虽然附图中显示了本申请的实施方式,然而应该理解,可以以各种形式实现本申请而不应被这里阐述的实施方式所限制。相反,提供这些实施方式是为了使本申请更加透彻和完整,并且能够将本申请的范围完整地传达给本领域的技术人员。
[0043]在本申请使用的术语是仅仅出于描述特定实施例的目的,而非旨在限制本申请。在本申请和所附权利要求书中所使用的单数形式的“一种”、“所述”和“该”也旨在包括多数形式,除非上下文清楚地表示其他含义。还应当理解,本文中使用的术语“和/或”是指并包含一个或多个相关联的列出本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种ID的自动生成方法,其特征在于,包括:获取当前项目中每个对象已分配的ID;根据接收每个对象已分配的ID的顺序生成当前项目中每个对象的序列数,在相同项目内所述对象的序列数随着接收所述对象已分配ID的顺序依次递增;获取当前项目的时间戳,基于所述当前项目的时间戳和所述当前项目中每个对象的序列数,生成当前项目中每个对象的随机字符串;将所述当前项目的时间戳、所述当前项目中每个对象的序列数及所述当前项目中每个对象的随机字符串按照预设规则依次拼接,生成当前项目中每个对象的目标ID。2.根据权利要求1所述的方法,其特征在于,所述获取当前项目的时间戳之后,包括:将所述当前项目的时间戳转换为16进制字符串,得到当前项目的时间戳字符串。3.根据权利要求2所述的方法,其特征在于,所述序列数的位数范围至少包括第一预设范围和第二预设范围,所述第二预设范围的位数比所述第一预设范围的位数至少多一位,所述根据接收每个对象已分配的ID的顺序生成当前项目中每个对象的序列数,包括:根据接收所述每个对象已分配的ID的顺序,在第一预设范围内依次生成每个对象的序列数,其中,当前对象的序列数大于前一对象的序列数;在当所述当前对象的序列数超出所述第一预设范围的情况下,在所述第二预设范围内生成所述当前对象的序列数。4.根据权利要求3所述的方法,其特征在于,所述方法还包括:将所述每个对象的序列数转换为16进制字符串,得到每个对象的序列数字符串。5.根据权利要求4所述的方法,其特征在于,所述基于所述当前项目的时间戳和所述当前项目中每个对象的序列数,生成当前项目中每个对象的随机字符串,包括:确定创建目标ID的目标位数;根据当前项目的时间戳字符串的位数、每个对象的序列数字符串的位数、以及所述目标位数,确定每个对...

【专利技术属性】
技术研发人员:冯旭勃贺伟伟
申请(专利权)人:智道网联科技北京有限公司
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1