如何生成16位流水号

简介: 原文:如何生成16位流水号 /** * @Description: 获取long类型16流水号 * @return serialNo long类型16流水号 * @date 2017年07月20日 下午03:55:21 */ public...
原文: 如何生成16位流水号

/**
     * @Description: 获取long类型16流水号
     * @return serialNo long类型16流水号
     * @date 2017年07月20日 下午03:55:21
     */
    public static long getTimeSerialNo(){
        long serialNo;
        Random r = new Random();
        Calendar c = Calendar.getInstance();
        int year = c.get(Calendar.YEAR)-2000;
        int month = c.get(Calendar.MONTH) + 1;
        int day = c.get(Calendar.DAY_OF_MONTH);
        int hour = c.get(Calendar.HOUR_OF_DAY);
        int minute = c.get(Calendar.MINUTE);
        int second = c.get(Calendar.SECOND);
        int ms = c.get(Calendar.MILLISECOND);
        serialNo = (long)(year * 10000 + month * 100 + day);
        serialNo = serialNo * 1000000 + hour * 10000 + minute * 100 + second;
        serialNo = ( serialNo * 1000 + ms ) * 1000 + r.nextInt(1000);
        return serialNo;
    }
    
    /**
     * @Description: 获取String类型16流水号
     * @return  String类型16流水号
     * @date 2017年07月20日 下午03:55:21
     */
    public static String getTimeSerialNoStr(){
        StringBuilder serialNo=new StringBuilder();
        Random r = new Random();
        Calendar c = Calendar.getInstance();
        int year = c.get(Calendar.YEAR)-2000;
        int month = c.get(Calendar.MONTH) + 1;
        int day = c.get(Calendar.DAY_OF_MONTH);
        int hour = c.get(Calendar.HOUR_OF_DAY);
        int minute = c.get(Calendar.MINUTE);
        int second = c.get(Calendar.SECOND);
        int ms = c.get(Calendar.MILLISECOND);
        serialNo.append(year).append(month).append(day)
        .append(hour).append(minute).append(second)
        .append(ms).append(r.nextInt(1000));
        return serialNo.toString();
    }

 

目录
相关文章
|
存储 缓存 安全
【服务器开发系列】订单号生成策略
订单是整个电子商务的核心,整个电子商务的流程也是围绕订单展开的;本文与大家分享一下各大电子商务网站订单号的生成方式。
811 0
|
NoSQL Java Redis
服务端如何防止订单重复支付!
如图是一个简化的下单流程,首先是提交订单,然后是支付。 支付的话,一般是走支付网关(支付中心),然后支付中心与第三方支付渠道(微信、支付宝、银联)交互。 支付成功以后,异步通知支付中心,支付中心更新自身支付订单状态,再通知业务应用,各业务再更新各自订单状态。
服务端如何防止订单重复支付!
|
2月前
|
安全 算法 NoSQL
记一次订单号重复的事故,快看看你的 UUID 在并发下还正确吗
记一次订单号重复的事故,快看看你的 UUID 在并发下还正确吗
15 0
|
5月前
|
API
taobao.trade.memo.update( 修改交易备注 ) 丨淘宝店铺订单接口
taobao.trade.memo.update( 修改交易备注 ) 丨淘宝店铺订单接口
29 0
|
8月前
|
算法 安全 Java
简单介绍订单号或者流水号的生成方法
简单介绍订单号或者流水号的生成方法
|
10月前
|
存储 NoSQL Redis
下单接口防重提交问题
下单接口防重提交问题
|
前端开发 应用服务中间件 API
订单异步通知修改订单状态
订单异步通知修改订单状态
订单异步通知修改订单状态
|
Java
java 获取一定长度的随机字符串 可用于生成交易订单号交易号等
java 获取一定长度的随机字符串 可用于生成交易订单号交易号等
109 0
out_trade_no商户订单号参数详解-参数解读系列
说明 out_trade_no,商户订单号,64个字符以内,可以包含字母、数字、下划线;需保证在商户端不重复。 这个参数是对接支付宝支付接口的商户自己定义传值的一个参数,商户需要保证这个参数不会重复,所以不能使用同一个订单号去请求接口,当然交易未在支付宝这边创建是可以使用相同订单号去请求的,不同接口交易创建的时机各有不同,下面就详细介绍各个接口如何配置订单号(JAVA代码示例)、及已存在支付成功的交易再用相同订单号去请求所报的错误。
3550 0
商户会员卡-valid_date(会员卡有效期)参数解读系列
说明:   目前商户咨询会员卡开卡接口、会员卡更新接口中的 valid_date(会员卡有效期)参数,调用开卡接口时,请求中传入了valid_date参数,到了设置的时间(注:可能存在一定的延时),会员卡会自动失效,从支付宝卡包跳转到失效卡中,从而达到会员卡不可用的效果。
663 0