news 2026/4/23 9:53:41

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

作者头像

张小明

前端开发工程师

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/4/23 9:52:49

腾讯云渠道商:轻量服务器低成本托管小型网站的 5 个关键实践

一、引言 随着云计算普及&#xff0c;越来越多的用户选择腾讯云轻量应用服务器托管小型网站。但服务器运维直接影响网站稳定性和安全性。本文结合行业实践&#xff0c;总结低成本托管小型网站的 5 个关键实践&#xff0c;帮助您高效管理云服务器。 二、5 大关键运维实践&#…

作者头像 李华
网站建设 2026/4/17 21:06:10

页面加载性能手动检查指南

在软件测试领域&#xff0c;页面加载性能直接影响用户体验和业务转化率。作为测试从业者&#xff0c;手动检查能深入定位瓶颈&#xff0c;避免依赖自动化工具的局限性。本文系统介绍手动检查的核心方法、工具使用和优化策略&#xff0c;帮助测试人员高效评估Web应用性能。 一、…

作者头像 李华
网站建设 2026/4/18 8:42:48

车载智能洗手器设计与实现

车载智能洗手器设计与实现 一、设计背景与意义 车载场景中&#xff0c;驾乘人员在长途行驶、户外露营或接触污渍后&#xff0c;存在手部清洁需求&#xff0c;但传统车载清洁依赖瓶装水纸巾&#xff0c;存在浪费水资源、清洁不彻底、操作不便等问题。现有便携洗手器多为手动按压…

作者头像 李华
网站建设 2026/4/18 5:16:55

全国首家网络空间安全大学要来了,560分可以被录取吗?

收藏 | 网络安全人才缺口将达327万&#xff01;武汉网络空间安全学院报考全攻略&#xff0c;录取分数线预测 武汉网络空间安全学院是唯一以"网络空间安全"命名的独立高校&#xff0c;首批开设6个相关专业。网络安全行业前景广阔&#xff0c;到2027年人才缺口将达327…

作者头像 李华
网站建设 2026/4/18 4:23:29

职场进阶:网络安全高含金量证书盘点

【收藏】网络安全考证指南&#xff1a;CISSP、CISP、NISP哪个更适合你&#xff1f; 文章介绍网络安全领域三大权威认证&#xff1a;CISSP&#xff08;国际认可度高&#xff0c;适合有经验者&#xff09;、CISP&#xff08;国内权威&#xff0c;适合政府/国企发展&#xff09;、…

作者头像 李华
网站建设 2026/4/15 16:51:58

Texas Instruments 01-30918-800

Texas Instruments 01-30918-800 板卡概述Texas Instruments 01-30918-800 是一款用于工业或嵌入式系统的板卡&#xff0c;通常与TI的处理器或微控制器配套使用。这类板卡可能属于开发套件的一部分&#xff0c;用于原型设计、测试或特定应用的硬件开发。主要功能与用途该板卡可…

作者头像 李华