[发明专利]ID的自动生成方法及装置在审
申请号: | 202210316891.6 | 申请日: | 2022-03-29 |
公开(公告)号: | CN114676137A | 公开(公告)日: | 2022-06-28 |
发明(设计)人: | 冯旭勃;贺伟伟 | 申请(专利权)人: | 智道网联科技(北京)有限公司 |
主分类号: | G06F16/22 | 分类号: | G06F16/22;G06F16/2458;G06F40/126 |
代理公司: | 北京汇鑫君达知识产权代理有限公司 11769 | 代理人: | 黄启法 |
地址: | 100013 北京市东*** | 国省代码: | 北京;11 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | id 自动 生成 方法 装置 | ||
本申请涉及一种ID的自动生成方法及装置。该方法包括:获取当前项目中每个对象已分配的ID;根据接收每个对象已分配的ID的顺序生成当前项目中每个对象的序列数,在相同项目内对象的序列数随着接收对象已分配ID的顺序依次递增;获取当前项目的时间戳,基于当前项目的时间戳和当前项目中每个对象的序列数,生成当前项目中每个对象的随机字符串;将当前项目的时间戳、当前项目中每个对象的序列数及当前项目中每个对象的随机字符串按照预设规则依次拼接,生成当前项目中每个对象的目标ID。本申请仅根据项目的时间戳、自生成序列和随机数就可以生成唯一ID,在不依赖分布式网络的情况下,保证了本发明的ID的唯一性,同时还可以解决跨机环境下的存储问题。
技术领域
本申请涉及智能交通领域,尤其涉及一种ID的自动生成方法及装置。
背景技术
软件项目开发过程中会创建很多对象,例如,模型、数据等,每个对象一般都会有一个字符串名称,可以称为字符ID。但是,对象之间可能存在引用关系,或者,一些需要存储到服务器数据库中的对象,都需要一个唯一的标识来表示该对象,在对数据库中的每条数据进行读取、写入或删除等访问动作时,通常会使用与之对应的主键(key)来进行操作。因此,数据库会为每条数据分配唯一的ID作为主键,如果ID不唯一则可能因主键冲突导致数据库操作失败。
相关技术中,为保证ID的唯一性,多采用在分配服务群组ID的基础上,添加数据库增序列。采用数据库自增序列,会造成每次执行事务都额外增加了数据库IO消耗,使性能下降,影响了存储性能及传输使用不便;同时此算法过度依赖分布式网络,在网络不稳定的情况下,生成ID的可靠性不足。
因此,现有本申请提供一种不依赖分布式网络,能够提高生成ID的稳定性的方法。
发明内容
为解决或部分解决相关技术中存在的问题,本申请提供一种不依赖分布式网络,能够提高生成ID的稳定性的方法。
本申请第一方面,提供一种ID的自动生成方法,包括:
获取当前项目中每个对象已分配的ID;
根据接收每个对象已分配的ID的顺序生成当前项目中每个对象的序列数,在相同项目内对象的序列数随着接收对象已分配ID的顺序依次递增;
获取当前项目的时间戳,基于当前项目的时间戳和当前项目中每个对象的序列数,生成当前项目中每个对象的随机字符串;
将当前项目的时间戳、当前项目中每个对象的序列数及当前项目中每个对象的随机字符串按照预设规则依次拼接,生成当前项目中每个对象的目标ID。
可选地,获取当前项目的时间戳之后,包括:
将当前项目的时间戳转换为16进制字符串,得到当前项目的时间戳字符串。
可选地,序列数的位数范围至少包括第一预设范围和第二预设范围,第二预设范围的位数比第一预设范围的位数至少多一位,根据接收每个对象已分配的ID的顺序生成当前项目中每个对象的序列数,包括:
在第一预设范围内依次生成每个对象的序列数,其中,当前对象的序列数大于前一对象的序列数;
在当前对象的序列数超出第一预设范围的情况下,在第二预设范围内生成对象的序列数。
可选地,方法还包括:将每个对象的序列数转换为16进制字符串,得到每个对象的序列数字符串。
可选地,基于当前项目的时间戳和当前项目中每个对象的序列数,生成当前项目中每个对象的随机字符串,包括:
确定创建目标ID的目标位数;
根据当前项目的时间戳字符串的位数、每个对象的序列数字符串的位数、以及目标位数,确定每个对象的随机字符串的位数;
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于智道网联科技(北京)有限公司,未经智道网联科技(北京)有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/202210316891.6/2.html,转载请声明来源钻瓜专利网。
- 上一篇:全球多制式合一智能系统电视
- 下一篇:一种高速永磁电机转子温度的实时监测方法