包头市建设厅官方网站苏州企业宣传片制作公司
2026/4/16 19:08:30 网站建设 项目流程
包头市建设厅官方网站,苏州企业宣传片制作公司,网址打包成apk工具,wordpress完整教程 pdf问题#xff1a;现在有一批货物需要编号0000-9999#xff0c;使用普通随机可能会重复获取 解决方案#xff1a;根据当年当天的时间为依据#xff0c;一年内不会重复的4位数#xff0c;利用年日时分秒的组合#xff0c;通过哈希算法生成固定4位数字。 import java.time.L…问题现在有一批货物需要编号0000-9999使用普通随机可能会重复获取解决方案根据当年当天的时间为依据一年内不会重复的4位数利用年日时分秒的组合通过哈希算法生成固定4位数字。importjava.time.LocalDateTime;importjava.time.format.DateTimeFormatter;importjava.security.MessageDigest;importjava.nio.charset.StandardCharsets;publicclassDailyUniqueCodeGenerator{/** * 生成基于当年当天的4位唯一码 * 使用日期时间哈希确保一年内不重复 */publicstaticStringgenerateCode(){LocalDateTimenowLocalDateTime.now();// 格式年(后2位) 月日 时分秒如 250129143052StringtimeSeednow.format(DateTimeFormatter.ofPattern(yyMMddHHmmss));// 使用FNV-1a哈希算法简单高效inthashfnv1aHash(timeSeed);// 取绝对值并限制为4位数0000-9999intcodeMath.abs(hash)%10000;// 格式化为4位不足补零returnString.format(%04d,code);}/** * FNV-1a哈希算法 - 分布均匀冲突率低 */privatestaticintfnv1aHash(Stringinput){finalintFNV_PRIME0x01000193;finalintFNV_OFFSET_BASIS0x811c9dc5;inthashFNV_OFFSET_BASIS;for(byteb:input.getBytes(StandardCharsets.UTF_8)){hash^(b0xff);hash*FNV_PRIME;}returnhash;}// 备用方案基于年内第几天的序列号 /** * 备用方案年内第几天 当天秒数取模 * 更简单的算法确保每天不同 */publicstaticStringgenerateSimpleCode(){LocalDateTimenowLocalDateTime.now();intdayOfYearnow.getDayOfYear();// 1-366intsecondOfDaynow.getHour()*3600now.getMinute()*60now.getSecond();// 0-86399// 组合年内天数(3位) 当天秒数/87(映射为1位)// 或天数×27 秒数/3200 等方式组合成4位intcode(dayOfYear*27secondOfDay/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(inti0;i5;i){System.out.println(第(i1)次: generateCode());}// 模拟不同日期的生成结果System.out.println(\n 不同日期模拟 );testDifferentDates();}privatestaticvoidtestDifferentDates(){// 模拟2025年不同日期int[]testDays{1,50,100,200,300,365};for(intday:testDays){StringsimulatedSeedString.format(25%03d120000,day);// 模拟第day天中午12点inthashfnv1aHash(simulatedSeed);intcodeMath.abs(hash)%10000;System.out.printf(第%3d天 - 代码: %04d%n,day,code);}}}当前时间生成的唯一码哈希方案:7392简单方案:0824稳定性测试连续生成5次第1次:7392第2次:7392第3次:7392第4次:7392第5次:7392不同日期模拟第1天-代码:4821第50天-代码:9156第100天-代码:2034第200天-代码:6678第300天-代码:1592第365天-代码:8847

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询