google Dapper自己实现Demo

来源:互联网 发布:lrc编辑器 mac 编辑:程序博客网 时间:2024/05/21 12:49
import java.util.ArrayList;  import java.util.List;      public class Test {        //idWorker就是为了生成一个唯一的id     private static SnowflakeIdWorker idWorker = new SnowflakeIdWorker(0, 0);      private static List<MessageVO> list = new ArrayList<MessageVO>();            public static void main(String[] args) {          long traceID =idWorker.nextId();           long spanID =idWorker.nextId();          MessageVO vo = new MessageVO("main方法开始了……", traceID, -1L, spanID);          list.add(vo);          doA(traceID,spanID);          doB(traceID,spanID);                    treeMenuList(-1L,0);      }            public static void treeMenuList(Long pid,int d){           int tmp =0;          for(MessageVO mu: list){                //遍历出父id等于参数的id               if(mu.getpID().equals(pid)){                   for(int i=0;i<d;i++){                      System.out.print("***");                   }                   System.out.println(mu);                  //递归遍历下一级                    if(tmp==0){                      tmp=d+1;                  }                  treeMenuList(mu.getSpanID(),tmp);                }            }        }                    private static void doA(long traceID,long pid) {          long spanID =idWorker.nextId();          MessageVO vo = new MessageVO("doA方法开始了……", traceID, pid, spanID);          list.add(vo);          doE(traceID,spanID);      }        private static void doB(long traceID,long pid) {          long spanID =idWorker.nextId();          MessageVO vo = new MessageVO("doB方法开始了……", traceID, pid, spanID);          list.add(vo);          doC(traceID,spanID);          doD(traceID,spanID);      }          private static void doD(long traceID,long pid) {          long spanID =idWorker.nextId();          MessageVO vo = new MessageVO("doD方法开始了……", traceID, pid, spanID);          list.add(vo);      }          private static void doC(long traceID,long pid) {          long spanID =idWorker.nextId();          MessageVO vo = new MessageVO("doC方法开始了……", traceID, pid, spanID);          list.add(vo);      }              private static void doE(long traceID,long pid) {          long spanID =idWorker.nextId();          MessageVO vo = new MessageVO("doE方法开始了……", traceID, pid, spanID);          list.add(vo);          doF(traceID,spanID);                }          private static void doF(long traceID,long pid) {          long spanID =idWorker.nextId();          MessageVO vo = new MessageVO("doF方法开始了……", traceID, pid, spanID);          list.add(vo);      }    }  


public class MessageVO {      private String messg; //内容      private Long traceID; //全局唯一的 TraceID      private Long pID; //上级id      private Long spanID; //全局唯一的 SpanID                  public MessageVO() {                }          public MessageVO(String messg, Long traceID, Long pID, Long spanID) {          this.messg = messg;          this.traceID = traceID;          this.pID = pID;          this.spanID = spanID;      }          public String getMessg() {          return messg;      }          public void setMessg(String messg) {          this.messg = messg;      }          public Long getTraceID() {          return traceID;      }          public void setTraceID(Long traceID) {          this.traceID = traceID;      }          public Long getpID() {          return pID;      }          public void setpID(Long pID) {          this.pID = pID;      }          public Long getSpanID() {          return spanID;      }          public void setSpanID(Long spanID) {          this.spanID = spanID;      }          @Override      public String toString() {          return  messg;      }              }  



运行结果如下: