9位全天唯一身份证

Rud*_*udy 3 java uniqueidentifier

有一个令人费解的要求.

基本上我需要使用这些标准创建唯一ID

  • 9位数字,当天唯一(如果第二天再次显示该数字,则表示没问题)
  • 实时生成; 仅限java(表示没有从数据库生成序列号 - 实际上根本没有数据库访问)
  • 生成的数字用于填充requestID,每天将生成大约1.000.000 id.
  • 不应使用UUID或UID(超过9位数)

这是我的考虑:

  • 使用序列号听起来不错,但是在JVM重启的情况下,可能会重新生成requestId.
  • 使用时间HHmmssSSS(小时分钟秒毫秒)有2个问题:

一个.系统时间可能由服务器管理员更改.
湾 如果在相同的毫秒内询问2个请求,则可能导致问题.

任何的想法?

mav*_*ato 5

没有从数据库生成序列号

我讨厌那种愚蠢的要求.我说你作弊并使用像H2HSQLDB这样的嵌入式数据库,并通过序列生成标识符.

编辑:让我向我展示为什么我提出这个"作弊":我对"无数据库"要求的理解是要么不安装数据库软件来处理这个要求,要么不能改变现有的数据库模式.使用嵌入式数据库与向项目添加新的jar文件是一回事.为什么你不应该这样做?当关系数据库已经为您解决了这个问题时,为什么要自己实现?