`

根据系统ID、日期、IP地址、自增数生成LOGID

 
阅读更多
import java.net.InetAddress;
import java.text.DateFormat;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Random;
import java.util.concurrent.atomic.AtomicInteger;

import org.apache.commons.lang.StringUtils;

public class LogIdUtil {

	private static String machineIp;
	
	private static final transient AtomicInteger ID = new AtomicInteger(new Random().nextInt(99999999));
	private static final DateFormat df = new SimpleDateFormat("yyMMddHHmmss");
	
	static {
		try {
			String[] ips = InetAddress.getLocalHost().getHostAddress().split("\\.");
			machineIp = StringUtils.leftPad(Integer.toHexString(Integer.parseInt(ips[2])), 2, '0') 
				+ StringUtils.leftPad(Integer.toHexString(Integer.parseInt(ips[3])), 2, '0');
		} catch (Exception e) {
			throw new RuntimeException("Init machineIp failed", e);
		}
	}

	/**
	 * 根据系统ID、日期、IP地址、自增数生成LOGID
	 * @param systemId 四位系统ID
	 * @return
	 */
	public static String getId() {
		synchronized (LogIdUtil.class) {
			ID.compareAndSet(999999999, 0);
			return df.format(new Date())
					+ machineIp
					+ StringUtils.leftPad(String.valueOf(ID.incrementAndGet()), 10, '0');
		}

	}
	
}
分享到:
评论

相关推荐

    ID自增JAVA类方法

    ID自增的java类方法,不用数据库主键自增的可以考虑试试这个,自己定义方式

    java web在高并发和分布式下实现订单号生成唯一的解决方案

    由于程序是顺序执行的,不同订单的生成时间戳正常不同,因此用时间戳+随机数(或自增数)就可以区分各个订单。 方案二:使用时间戳、用户ID 和随机数 在存在并发的情况下,我们可以使用时间戳、用户ID 和随机数来...

    zUID:基于ZeroMQ的唯一ID生成器

    从 0 到 15 mashine 编号后的 3 位是线程编号,从 0 到 7 开始硬编码11 位用作舍入自增数最低有效位 45 位是以毫秒为单位的系统时间戳唯一性保证理论上,如果整个 zUID 集群中的单个线程(最多 16 个 mashine,每个...

    银联订单号永远不会重复的生成算法分析与示例20170224

    ### 银联订单号永不重复的生成算法分析 #### 背景介绍 随着互联网金融的快速发展,银联作为国内主要的支付清算组织之一,其业务量与日俱增。为了确保每一笔交易的准确性和安全性,银联订单号的生成机制显得尤为重要...

    PHP基于自增数据如何生成不重复的随机数示例

    `$n & $mask`用于提取自增数的最后几位作为索引,然后使用异或操作 (`^`) 与基数组的相应元素结合,生成新的随机数。最后,通过位运算恢复标志位并返回结果。 在示例中,用一个for循环生成1000000个不重复的随机数...

    2019年1月-2020年6月中国电信有线宽带用户净增数.xls

    2019年1月-2020年6月中国电信有线宽带用户净增数.xls

    2019年1月-2020年6月中国移动有线宽带用户净增数.xls

    2019年1月-2020年6月中国移动有线宽带用户净增数.xls

    行业数据-2019年1月-2020年6月中国电信有线宽带用户净增数.rar

    标题“行业数据-2019年1月-2020年6月中国电信有线宽带用户净增数.rar”揭示了这份压缩包文件的主要内容,即关于中国电信在指定时间段内的有线宽带用户净增数量的数据。这是一份重要的行业统计报告,对于分析电信市场...

    行业数据-2019年1月-2020年6月中国移动有线宽带用户净增数.rar

    标题和描述中提到的文件是“行业数据-2019年1月-2020年6月中国移动有线宽带用户净增数.rar”,这是一个压缩包,包含了一个名为“行业数据-2019年1月-2020年6月中国移动有线宽带用户净增数.xls”的Excel表格文件。...

    2019年1月-2020年6月中国联通固网宽带用户净增数.rar

    这个压缩包包含一个名为 "2019年1月-2020年6月中国联通固网宽带用户净增数.xls" 的Excel文件,通常此类文件会列出每个月的详细数据,如当月新增用户数、累计用户数等,帮助分析中国联通在这段时间内的业务表现。...

    毕业设计基于Django实现的高校毕业设计管理系统源码+数据库+详细课程设计报告,数据库课程设计

    用户登录代码 (利用session获取当前用户编号,判断用户身份,并根据用户身份登陆后跳转到不同的界面)(默认用户编号为“4位年份+2位院部+4位自增数”,院部编号为为1-5的为普通学院,编号为6的为科技处,用户最末位...

    node.js Sequelize实现单实例字段或批量自增、自减

    Sequelize 可以实现针对单个实例的一或多个字段的自增、自减操作,也可以对符合条件的数据进行批量的自增、自减操作。单个实例字段的自增、自减可以利用Instance的相应方法实现,而批量自增、自减则需要借助...

    2019年1月-2020年6月中国联通固网宽带用户净增数.xls

    2019年1月-2020年6月中国联通固网宽带用户净增数.xls

    jemter配置文档

    先准备一个 dat 文件保存在本地,然后选择”选项“---函数助手---__CSVRead--输入 dat 文件保存的路径如 C:\test.dat,点击生成并复制 ${__CSVRead(c:\test.dat,)},找到需参数化的页面--将复制的 ${__CSVRead(c:\...

    python代码打印100-999之间的回文数示例

    打印100-999之间的回文数(即百位和个位的数字相等),并每10个打印一行 i = 100 x = 0 # 使用计数器,每10个换行打印 while i <...——>明确基本结构三要素:开始标志,结束标志,自增数。 开始标志

    商品领出整理日报表模板.doc

    2. **日期**:日报表的日期信息是不可或缺的,它反映了特定日期内的商品流动情况,便于进行日、周、月度的销售分析和库存管理。 3. **商品名称**:商品名称是报表的核心内容,通过列出每种商品,可以明确了解哪些...

    vb增补数学公式模块

    热爱数学和VB编程的我总感觉VB的数学函数还是很缺乏的,所以我设计出了这个模块,里面有大概20多个(应该不止)数学的函数,一调用就行了。

    商品领出整理日报表(表格模板、DOC格式).doc

    - **销售分析**:根据销货额和增数,评估商品的销售表现,制定促销策略。 - **成本控制**:通过计算销货额与进货成本的差额,评估盈利状况。 - **决策支持**:数据支持决策,如是否调整商品结构,优化货架布局等。 ...

    DonutClicker-

    购买带有甜甜圈的甜甜圈乘数器检查您是否有足够的甜甜圈来购买甜甜圈乘数,每次购买甜甜圈乘数都会增加甜甜圈乘数的成本,从而增加计数每次购买甜甜圈倍增器的甜甜圈倍增系数的计算根据甜甜圈倍增数的计数计算每次...

Global site tag (gtag.js) - Google Analytics