zoukankan      html  css  js  c++  java
  • 自定义流水号。

    import java.text.Format;
    import java.text.SimpleDateFormat;
    import java.util.Date;
    import java.util.HashMap;
    import java.util.Map;
     
    /**
     * 
     * @author Phonnie
     *
     */
    public class StreamId {
         
        private static final int MAX_VALUE=9999;
        private static final String FORMAT = "yyMMdd";
        private static final Format DF= new SimpleDateFormat(FORMAT);
        private static final byte[] lock = new byte[0];
        private String prefix = null;
        private Date date = null;
        private int number=1;
        private static Map<String, StreamId> map = new HashMap<String, StreamId>();
         
        private StreamId(String prefix,Date date){
            this.prefix = prefix;
            this.date = date;
        }
         
        public static StreamId newInstance(String prefix){
            Date date = new Date();
            return newInstance(prefix,date);
        } 
         
        public static StreamId newInstance(String prefix,Date date){
            StreamId o = null;
            synchronized (lock) {
                String key = getKey(prefix, date);
                if(map.containsKey(key)){
                    o = map.get(key);
                    int number = o.getNumber();
                    if(number<MAX_VALUE){
                        o.setNumber(number+1);
                    }else {
                        o.setNumber(1);
                    }
                     
                } else {
                     o = new StreamId(prefix,date);
                     map.put(key, o);
                }
            }
            return o;
        }
         
         
         
        private static String getKey(String prefix,Date date){
            return prefix+format(date);
        }
     
        private static String format(Date date){
            return DF.format(date);
        }
         
        public String toString(){
            return  prefix+ format(date) + String.format("%04d", number);
        }
     
        public void setNumber(int number) {
            this.number = number;
        }
     
        public int getNumber() {
            return number;
        }
        
        public static void main(String[] args){
            StreamId sid=newInstance("AA") ;
            System.out.println("StreamId.main().sid="+sid.toString());
            StreamId sida=newInstance("AA") ;
            System.out.println("StreamId.main().sid="+sida.toString());
            
            
        }
    }
  • 相关阅读:
    爬虫学习笔记(二)http请求详解
    学习自动化的正确姿势
    binascii模块
    python一些内置函数及方法
    C小点,随便记记
    C:<conio.h>
    C,动态数组
    php intval()函数漏洞,is_numeric() 漏洞,绕过回文判断
    Mp3stego使用,附题,实验吧misc-Canon
    原生js实现Ajax
  • 原文地址:https://www.cnblogs.com/harry335/p/3957807.html
Copyright © 2011-2022 走看看