码迷,mamicode.com
首页 > 其他好文 > 详细

生成订单号

时间:2014-08-04 21:38:48      阅读:302      评论:0      收藏:0      [点我收藏+]

标签:hashcode   并发   uuid   


生成订单号,最大的问题是要考虑高并发的时候.在网上找的一些方案往往在这种情况下难以适用,比如,查询订单序列最大数,根据系统时间生成等.

再考虑另一种可行的方案:数据库递增序列,没错,确实能解决高并发的问题,但在集群等情况下对数据库压力比较大,而且有些数据库对递增序列没有很好的支持,同时递增序列的位数是一直增加的,也有可能会超出数据库表字段限制.


最好的方案是用java的uuid工具类生成唯一的字符串,然后再取这个字符串对象的hashcode值,因为字符串的值是唯一的,它的hashcode也是唯一的.

可参考如下代码:


 /** 生成订单号,订单号的组成: 两位年+两位月+两位日+uuid哈希号(由于hashcode返回类型是int,最大为2147483648,不超过十位,所以此订单号不超过16位) 
   * @return
   * @throws Exception 
  **/

public  String buildOrderSn() throws Exception {
		Date createDate = new  Date();
		SimpleDateFormat dateFormat = new SimpleDateFormat("yyMMdd");
		StringBuilder out  = new StringBuilder(dateFormat.format(createDate));
		dateFormat = new SimpleDateFormat("yyyy-MM-dd");
		int uuidNum = UUID.randomUUID().toString().hashCode();
		out.append(uuidNum);
		return out.toString();
	}


生成订单号,布布扣,bubuko.com

生成订单号

标签:hashcode   并发   uuid   

原文地址:http://blog.csdn.net/gufachongyang02/article/details/38374025

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!