news 2026/3/18 7:24:15

开发工具类——获取唯一标识号

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
开发工具类——获取唯一标识号

问题:现在有一批货物需要编号0000-9999,使用普通随机可能会重复获取
解决方案:根据当年当天的时间为依据,一年内不会重复的4位数,利用年日时分秒的组合,通过哈希算法生成固定4位数字。

importjava.time.LocalDateTime;importjava.time.format.DateTimeFormatter;importjava.security.MessageDigest;importjava.nio.charset.StandardCharsets;publicclassDailyUniqueCodeGenerator{/** * 生成基于当年当天的4位唯一码 * 使用日期时间哈希,确保一年内不重复 */publicstaticStringgenerateCode(){LocalDateTimenow=LocalDateTime.now();// 格式:年(后2位) + 月日 + 时分秒,如 "250129143052"StringtimeSeed=now.format(DateTimeFormatter.ofPattern("yyMMddHHmmss"));// 使用FNV-1a哈希算法(简单高效)inthash=fnv1aHash(timeSeed);// 取绝对值并限制为4位数(0000-9999)intcode=Math.abs(hash)%10000;// 格式化为4位,不足补零returnString.format("%04d",code);}/** * FNV-1a哈希算法 - 分布均匀,冲突率低 */privatestaticintfnv1aHash(Stringinput){finalintFNV_PRIME=0x01000193;finalintFNV_OFFSET_BASIS=0x811c9dc5;inthash=FNV_OFFSET_BASIS;for(byteb:input.getBytes(StandardCharsets.UTF_8)){hash^=(b&0xff);hash*=FNV_PRIME;}returnhash;}// ============ 备用方案:基于年内第几天的序列号 ============/** * 备用方案:年内第几天 + 当天秒数取模 * 更简单的算法,确保每天不同 */publicstaticStringgenerateSimpleCode(){LocalDateTimenow=LocalDateTime.now();intdayOfYear=now.getDayOfYear();// 1-366intsecondOfDay=now.getHour()*3600+now.getMinute()*60+now.getSecond();// 0-86399// 组合:年内天数(3位) + 当天秒数/87(映射为1位)// 或:天数×27 + 秒数/3200 等方式组合成4位intcode=(dayOfYear*27+secondOfDay/320)%10000;returnString.format("%04d",code);}// ============ 测试验证 ============publicstaticvoidmain(String[]args){System.out.println("=== 当前时间生成的唯一码 ===");System.out.println("哈希方案: "+generateCode());System.out.println("简单方案: "+generateSimpleCode());// 验证同一天多次生成的稳定性System.out.println("\n=== 稳定性测试(连续生成5次)===");for(inti=0;i<5;i++){System.out.println("第"+(i+1)+"次: "+generateCode());}// 模拟不同日期的生成结果System.out.println("\n=== 不同日期模拟 ===");testDifferentDates();}privatestaticvoidtestDifferentDates(){// 模拟2025年不同日期int[]testDays={1,50,100,200,300,365};for(intday:testDays){StringsimulatedSeed=String.format("25%03d120000",day);// 模拟第day天中午12点inthash=fnv1aHash(simulatedSeed);intcode=Math.abs(hash)%10000;System.out.printf("第%3d天 -> 代码: %04d%n",day,code);}}}
===当前时间生成的唯一码===哈希方案:7392简单方案:0824===稳定性测试(连续生成5次)===1:73922:73923:73924:73925:7392===不同日期模拟===1->代码:482150->代码:9156100->代码:2034200->代码:6678300->代码:1592365->代码:8847
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/3/12 19:19:48

【Redis持久化核心】AOF/RDB通俗详解+多场景对比

在讲核心内容前&#xff0c;先定一个前提&#xff1a;Redis是纯内存数据库&#xff0c;数据都存在内存里&#xff0c;一旦Redis重启/服务器断电&#xff0c;内存数据会直接消失。持久化就是Redis把内存数据“存到硬盘文件里”的操作&#xff0c;目的是重启后能恢复数据&#xf…

作者头像 李华
网站建设 2026/3/16 18:34:01

贡嘎山下的蓝色冰川,藏着海螺沟的旷世温柔

海螺沟位于四川省甘孜藏族自治州&#xff0c;其核心特点是同一区域内冰川、原始森林、温泉与雪山的罕见共存&#xff0c;形成了强烈而独特的视觉与地理反差。景区发源于贡嘎雪山东坡&#xff0c;主沟纵深超过30公里。现代海洋性冰川是这里的首要地质特征&#xff0c;巨大的冰舌…

作者头像 李华
网站建设 2026/3/15 7:48:00

django+Pythonuniapp的心理咨询信息系统APP小程序

文章目录技术栈与架构设计核心功能模块数据安全与合规性能优化策略部署与扩展性典型代码片段&#xff08;Django示例&#xff09;系统设计与实现的思路主要技术与实现手段源码lw获取/同行可拿货,招校园代理 &#xff1a;文章底部获取博主联系方式&#xff01;技术栈与架构设计 …

作者头像 李华
网站建设 2026/3/11 13:57:31

每天一个Linux命令_tar

tar 是 Tape Archive&#xff08;磁带归档&#xff09;的缩写 tar用来压缩和解压文件。tar本身不具有压缩功能。他是调用压缩功能实现的 打包&#xff08;不压缩&#xff09;&#xff1a;tar -cf 归档名.tar 源文件/目录 tar -cf testdir.tar testdir 解压&#xff08;不压…

作者头像 李华
网站建设 2026/3/15 18:47:27

生成式AI催生GEO优化,如何成为其内容权威信源?

生成式人工智能技术迅猛发展之际&#xff0c;一个叫GEO优化的全新概念于数字内容领域暗暗兴起。这种优化策略可不是传统搜索引擎优化即SEO的简单扩展&#xff0c;而是专门按照生成式AI的内容分发逻辑予以设定的一整套系统性办法。为理解GEO优化&#xff0c;就得从生成式AI的工作…

作者头像 李华
网站建设 2026/3/14 18:21:50

AI算力:驱动人工智能发展的关键生产要素

快速发展着的人工智能技术&#xff0c;正在全球范畴之内引发新一轮科技革命&#xff0c;从自然语言处理到计算机视觉&#xff0c;从自动驾驶至药物研发&#xff0c;各类AI应用的落地都离不开一个核心基础设施&#xff0c;那就是AI算力&#xff0c;算力也就是计算能力&#xff0…

作者头像 李华