阅读背景:

nextID 带时间戳 和序号 的主键

来源:互联网 

	// 初始化
	static AtomicInteger mySeq;

	/**
	 * 返回 【前缀】 + 【9位时光长整型的36进制数,左补0】 + "-" + 5位序列号
	 * 
	 * @param prefix
	 * @return
	 */
	public static String nextID(String prefix) {
		if (mySeq == null) {
			// 首次运行时的初始化
			String timeSeq = new SimpleDateFormat("HHmmss", Locale.getDefault()).format(new Date()).substring(1);
			mySeq = new AtomicInteger(Integer.parseInt(timeSeq));
		}

		// id前缀大写,补满2位
		if (prefix == null) {
			prefix = "??";
		}
		prefix = prefix.toUpperCase() + "__";
		prefix = prefix.substring(0, 2);

		// 9位时光长整型的36进制数,左补0
		String ts = lpadZero(Long.toString(System.currentTimeMillis(), Character.MAX_RADIX), 9);
		String id = prefix + ts + "-" + mySeq.getAndIncrement();
		return id;
	}

	// 初始化
	static AtomicInteger mySeq;

	/**
	 * 返回




你的当前访问异常,请进行认证后继续阅读剩余内容。

分享到: