前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >java代码薄:递增序列

java代码薄:递增序列

作者头像
cosmozhu
发布2020-06-15 06:42:58
1.1K0
发布2020-06-15 06:42:58
举报
文章被收录于专栏:cosmozhu技术篇

通常需要seq时很多时候一般直接用数据库或者第三方服务来满足我们的需求。但在特定的时候我们并不想引入太多的三方服务,也许我们仅仅只想要做一个demo,这个demo中需要一个序列号,这个自己实现起来有很多方式,并且也不难。但是如果有直接可以拿来用的,为什么还要再造一个轮子呢?

生成递增序列号

代码语言:javascript
复制
import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;
import java.util.concurrent.atomic.AtomicInteger;
/**
 * 生成递增序列号-线程安全
 * @java version 8
 * @author cosmozhu
 * @mail zhuchao1103@gmail.com
 * @site https://www.cosmozhu.fun
 */
public class GenSequence {
	private final static AtomicInteger ai = new AtomicInteger(0);
	/**
	 * 生成格式为yyyyMMddHHmmssxxxxx数字型序列号
	 * @param scale 1-10之间的整数
	 * @return 序列号
	 */
	public static String getSeq(int scale) {
		if (scale < 0 || scale > 10) {
			throw new IllegalArgumentException("scale应为[1-10]之间的整数。");
		}
		
		LocalDateTime now = LocalDateTime.now();
		StringBuilder dateTime = new StringBuilder(now.format(DateTimeFormatter.ofPattern("yyyyMMddHHmmss")));
		ai.compareAndSet(Integer.MAX_VALUE, 0);
		int incrementAndGet = ai.incrementAndGet();
		StringBuilder str = new StringBuilder(String.format("%0"+scale+"d", incrementAndGet));      
		return dateTime.append(str.substring(str.length()-scale, str.length())).toString();
	}
	
	public static void main(String[] args) {
		for(int i=0;i<4;i++) {
			System.out.println(GenSequence.getSeq(1));
		}
	}
}

作者:cosmozhu --90后的老父亲,专注于保护地球的程序员

个人网站:https://www.cosmozhu.fun

欢迎转载,转载时请注明出处。

相关文章

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 生成递增序列号
    • 相关文章
    相关产品与服务
    对象存储
    对象存储(Cloud Object Storage,COS)是由腾讯云推出的无目录层次结构、无数据格式限制,可容纳海量数据且支持 HTTP/HTTPS 协议访问的分布式存储服务。腾讯云 COS 的存储桶空间无容量上限,无需分区管理,适用于 CDN 数据分发、数据万象处理或大数据计算与分析的数据湖等多种场景。
    领券
    问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档