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());
            
            
        }
    }
  • 相关阅读:
    C#与数据库访问技术总结(三)之 Connection对象的常用方法
    ConnectionState详解
    SQL Server 中 RAISERROR 的用法
    C# 捕获数据库自定义异常
    "在创建窗口句柄之前,不能在控件上调用 Invoke 或 BeginInvoke"
    查询sql语句的执行时间
    c# 多线程 创建对象实例
    C#中IDisposable的用法-垃圾回收
    c#中的引用类型和值类型
    C++运行出现"what(): std::bad_alloc"的解决办法
  • 原文地址:https://www.cnblogs.com/harry335/p/3957807.html
Copyright © 2011-2022 走看看