自动生成编号,id,序号,采用不同策略生成

简介:   各种id生成策略    1:随机编号 1 public static String genImageName() { 2 //取当前时间的长整形值包含毫秒 3 long millis = System.

  各种id生成策略

  

1:随机编号

 1 public static String genImageName() {  
 2         //取当前时间的长整形值包含毫秒  3 long millis = System.currentTimeMillis();  4 //加上三位随机数  5 Random random = new Random();  6 int end3 = random.nextInt(999);//该方法的作用是生成一个随机的int值,该值介于[0,n]的区间,也就是0到n之间的随机int值,包含0而不包含n。  7 //如果不足三位前面补0 String.format("%03d", end3); 3代表要获得的总长度,0代表传入的参数不够的时候会用0作为填充,d会被传入的参数替代  8 String str = millis + String.format("%03d", end3);  9 return str; 10 } 

  也可以根据需要在str的前面拼接上前缀:

   

 

 

2:流水编号

 1  public static String getstr(){
 2          String Orderno = null;
 3          String maxOrderno = "NO201601270001"; // 从数据库查询出的最大编号
 4          SimpleDateFormat format = new SimpleDateFormat("yyyyMMdd"); // 时间字符串产生方式
 5          String uid_pfix = "NO" + format.format(new Date()); // 组合流水号前一部分,NO+时间字符串,如:NO20160126
 6          if (maxOrderno != null && maxOrderno.contains(uid_pfix)) {
 7              String uid_end = maxOrderno.substring(10, 14); // 截取字符串最后四位,结果:0001
 8              System.out.println("uid_end=" + uid_end);
 9              int endNum = Integer.parseInt(uid_end); // 把String类型的0001转化为int类型的1
10              System.out.println("endNum=" + endNum);
11              int tmpNum = 10000 + endNum + 1; // 结果10002
12              System.out.println("tmpNum=" + tmpNum);
13              Orderno = uid_pfix +subStr("" + tmpNum, 1);// 把10002首位的1去掉,再拼成NO201601260002字符串
14          } else {
15              Orderno = uid_pfix + "0001";
16          }
17         return Orderno;
18     }
19     
20     public static String subStr(String str, int start) {
21         if (str == null || str.equals("") || str.length() == 0)
22             return "";
23         if (start < str.length()) {
24             return str.substring(start);
25         } else {
26             return "";
27         }
28     }

 

 

3:uuid获取

 1 /*UUID.randomUUID().toString()是javaJDK提供的一个自动生成主键的方法。
 2      * UUID(Universally Unique Identifier)全局唯一标识符,是指在一台机器上生成的数字,
 3      * 它保证对在同一时空中的所有机器都是唯一的,是由一个十六位的数字组成,表现出来的形式。
 4      * 由以下几部分的组合:当前日期和时间(UUID的第一个部分与时间有关,如果你在生成一个UUID之后,
 5      * 过几秒又生成一个UUID,则第一个部分不同,其余相同),时钟序列,全局唯一的IEEE机器识别号
 6      * (如果有网卡,从网卡获得,没有网卡以其他方式获得),UUID的唯一缺陷在于生成的结果串会比较长。
 7      * */
 8     public static String getUUID() {
 9         return UUID.randomUUID().toString().replace("-","");
10       }

 

欢迎大家一起说出自己的想法。
目录
相关文章
|
10月前
|
存储 人工智能 运维
最新榜单 | 盘点2024年10大主流工单系统
随着互联网的发展,工单系统因其多样化功能和高效管理能力,成为企业运营的重要工具。本文介绍了10大主流工单系统,包括合力亿捷、阿里云服务中台、华为云ROMA ServiceCore等,它们各具特色,帮助企业提升服务质量和运营效率,实现数字化转型。
413 7
|
8月前
|
机器学习/深度学习 人工智能 缓存
探秘 DeepSeek:那些你必须了解的事
DeepSeek是一家由中国幻方量化支持的创新型AI公司,专注于开发高性能、低成本的大语言模型。其独特的技术路径打破了参数规模、能耗成本和认知可靠性之间的“三元悖论”,实现了在单张显卡上运行170亿参数模型的突破。DeepSeek通过开源策略和高性价比模型(如DeepSeek-R1),大幅降低了AI应用门槛,推动了全球开发者社区的发展。其应用场景广泛覆盖教育、医疗、金融等领域,显著提升了工作效率和服务质量。DeepSeek的成功不仅在于技术创新,更在于其开放合作的理念,正引领AI行业的新变革。
880 9
探秘 DeepSeek:那些你必须了解的事
|
9月前
|
Java
Java快速入门之判断与循环
本文介绍了编程中的流程控制语句,主要包括顺序结构、判断结构(if语句和switch语句)以及循环结构(for、while和do...while)。通过这些语句可以精确控制程序的执行流程。if语句有三种格式,分别用于简单条件判断、二选一判断和多条件判断。switch语句适用于有限个离散值的选择判断,而循环结构则用于重复执行某段代码,其中for循环适合已知次数的情况,while循环适合未知次数但有明确结束条件的情况,do...while则是先执行后判断。文中还提供了多个示例和练习,帮助读者理解并掌握这些重要的编程概念。
|
监控 前端开发 JavaScript
记录浏览器节能机制导致Websocket断连问题
近期,在使用WebSocket(WS)连接时遇到了频繁断连的问题,这种情况在单个用户上每天发生数百次。尽管利用了socket.io的自动重连机制能够在断连后迅速恢复连接,但这并不保证每一次重连都能成功接收WS消息。因此,我们进行了一些的排查和测试工作。
716 1
记录浏览器节能机制导致Websocket断连问题
|
运维 监控 数据可视化
cerebro【ElasticSearch可视化工具】
cerebro【ElasticSearch可视化工具】
203 1
|
小程序 JavaScript 前端开发
微信小程序开发必备前置知识:基本代码构成与语法
【8月更文挑战第8天】微信小程序的基本代码构成与语法
421 0
微信小程序开发必备前置知识:基本代码构成与语法
|
传感器 安全 物联网
物联网(IoT)设备的硬件选型与集成技术博文
【6月更文挑战第28天】物联网设备硬件选型与集成聚焦关键要素:功能匹配、性能稳定性、兼容扩展及成本效益。嵌入式系统、通信协议、数据处理和安全性技术确保集成效果,支撑高效、智能的IoT系统,驱动家居、城市与工业自动化变革。
WebStorm、Idea编辑器中右侧的SVN下拉,提交标志不见了呢?--已解决
WebStorm、Idea编辑器中右侧的SVN下拉,提交标志不见了呢?--已解决
656 0
|
关系型数据库 MySQL 机器人
【MySQL】两个脚本自动化搞定 MySQL 备份恢复--XtraBackup
【MySQL】两个脚本自动化搞定 MySQL 备份恢复--XtraBackup
|
监控 Java Maven
使用AspectJ实现Java代码的运行时织入
使用AspectJ实现Java代码的运行时织入