紀(jì)念SUN

          Powered By Andy

          2010年1月22日

          package cn.xx

          import java.io.ByteArrayInputStream;
          import java.io.ByteArrayOutputStream;
          import java.io.IOException;
          import java.io.ObjectInputStream;
          import java.io.ObjectOutputStream;
          import java.io.Serializable;
          import java.lang.reflect.InvocationTargetException;
          import java.lang.reflect.Method;
          import java.util.Arrays;

          /**
           * <pre>
           * @Types   role : 測(cè)試clone

           * @Create  time : 2011-12-26 : 上午10:49:39
           * @ver     curr : 1.0
           * </pre>
           */
          public class TestClone implements Serializable{

              private static final long serialVersionUID = -7340886443308126418L;

              /**
               * <pre>
               * @Methods role : 對(duì)象的Clone
               * 注: 要clone對(duì)象必須要實(shí)現(xiàn)Serializable接口, 不然拋NoSerializableException
               * </pre>
               * @param obj
               * @return
               * @throws IOException
               * @throws ClassNotFoundException
               * @Create  time : 2011-12-23 : 下午5:26:57
               * @ver     curr : 1.0
               */
              @SuppressWarnings("unchecked")
              public static <T> T invokeCopy(T obj) throws IOException, ClassNotFoundException{
                  //T newObj = null;
                  // write object to memory
                  ByteArrayOutputStream bos = new ByteArrayOutputStream();
                  ObjectOutputStream oos = new ObjectOutputStream(bos);
                  oos.writeObject(obj);
                  oos.flush();
                  
                  // read object come from memory
                  ByteArrayInputStream bis = new ByteArrayInputStream(bos.toByteArray());
                  ObjectInputStream ois = new ObjectInputStream(bis);
                  //newObj = (T)ois.readObject();
                  
                  //bis.close();
                  //oos.close();
                  // return clone object
                  return (T)ois.readObject();
                  
                  
              }
              
              /**
               * <pre>
               * @Methods role : 實(shí)現(xiàn)對(duì)象的clone
               * 兩種方案(二選一實(shí)現(xiàn)都可以):
               * 1: 實(shí)現(xiàn)Cloneable接口, 深度clone自己重寫(xiě)clone()實(shí)現(xiàn),此方法只實(shí)現(xiàn)淺度clone
               * 2: 實(shí)現(xiàn)Serializable接口
               * @param obj
               * @return
               * @throws NoSuchMethodException
               * @throws SecurityException
               * @throws IllegalAccessException
               * @throws IllegalArgumentException
               * @throws InvocationTargetException
               * @throws ClassNotFoundException
               * @throws IOException
               * @throws CloneNotSupportedException
               * @Create  time : 2011-12-26 : 上午10:31:37
               * @ver     curr : 1.0
               * </pre>
               */
              public static<T> T clone(T obj) throws NoSuchMethodException, SecurityException, IllegalAccessException, IllegalArgumentException, InvocationTargetException, ClassNotFoundException, IOException, CloneNotSupportedException{
                  // is null
                  if(null == obj) return null;
                  
                  // is instanceof Cloneable
                  if(obj instanceof Cloneable){
                      return invokeClone(obj);
                  }
                  // is instanceof Serializable
                  else if(obj instanceof Serializable){
                      return invokeCopy(obj);
                  }
                  
                  // is not supported clone
                  throw new java.lang.CloneNotSupportedException();
              }

              @SuppressWarnings("unchecked")
              public static <T> T invokeClone(T obj) throws NoSuchMethodException,
                      IllegalAccessException, InvocationTargetException {
                  Class<? extends Object> classObject = obj.getClass();
                  Method method = classObject.getDeclaredMethod("clone");
                  return (T)method.invoke(obj);
              }
              
              public static void main(String[] args) throws ClassNotFoundException, IOException {
                  String x = "123";
                  String v = invokeCopy(x);
                  
                  String[][] array = {{"1", "2"},{ "3", "2","2","3"},{"V","3"}}, array2;
                  
                  
                  System.out.println(x);
                  System.out.println(v);
                  array2 = invokeCopy(array);
                  System.out.println(Arrays.deepToString(array2));
                  
                  int[] a = {1,48,2}, b = {1, 20, 19};
                  System.out.println("a --- hashCode: " + a.hashCode() + "---b: hashCode:" + b.hashCode());
                  b = invokeCopy(a);
                  System.out.println(b.hashCode());
                  System.out.println(Arrays.toString(b));
                  short age = 25;
                  Person p = new TestClone(). new Person(1l, "andy", age), ps, pe;
                  
                  ps = invokeCopy(p);
                  
                  System.out.println(ps);
                  
                  try {
                      //pe = clone(p);
                      pe = invokeClone(p);
                      System.out.println(pe);
                  } catch (NoSuchMethodException e) {
                      // TODO Auto-generated catch block
                      e.printStackTrace();
                  } catch (SecurityException e) {
                      // TODO Auto-generated catch block
                      e.printStackTrace();
                  } catch (IllegalAccessException e) {
                      // TODO Auto-generated catch block
                      e.printStackTrace();
                  } catch (IllegalArgumentException e) {
                      // TODO Auto-generated catch block
                      e.printStackTrace();
                  } catch (InvocationTargetException e) {
                      // TODO Auto-generated catch block
                      e.printStackTrace();
                  }
              }
              
              class Person implements Serializable{//, Cloneable{
                  private static final long serialVersionUID = 7605971168826706980L;
                  private Long id;
                  private String name;
                  private short age;
                  
                  
                  public Person() {
                  }
                  
                  
                  public Person(Long id, String name, short age) {
                      super();
                      this.id = id;
                      this.name = name;
                      this.age = age;
                  }


                  public Long getId() {
                      return id;
                  }
                  public void setId(Long id) {
                      this.id = id;
                  }
                  public String getName() {
                      return name;
                  }
                  public void setName(String name) {
                      this.name = name;
                  }
                  public short getAge() {
                      return age;
                  }
                  public void setAge(short age) {
                      this.age = age;
                  }


                  public String toString() {
                      return "Person [id=" + id + ", name=" + name + ", age=" + age + "]";
                  }
                  
                  /*protected Object clone() throws CloneNotSupportedException {
                      // TODO Auto-generated method stub
                      return super.clone();
                  }*/
                  
              }
          }
          posted @ 2011-12-26 10:54 Powered By Andy 閱讀(261) | 評(píng)論 (0)編輯 收藏
          package cn.webmctv.test;

          import java.io.File;
          import java.io.FileInputStream;
          import java.io.FileNotFoundException;
          import java.io.IOException;
          import java.io.InputStream;

          public class TestInputStream {

              public static void main(String[] args) {
                  /* 為什么要關(guān)閉和io流, 由于java底層是用c實(shí)現(xiàn)的, 所以當(dāng)我們不停的調(diào)用new InputStream -> impl
                   * 時(shí)候, c打開(kāi)的文件會(huì)一直沒(méi)有關(guān)閉,而導(dǎo)致文件刪除不了,別的程序訪問(wèn)不了的問(wèn)題,和操作系統(tǒng)打開(kāi)文件
                   * 超過(guò)最大數(shù)異常。而下面new FileInputStream(new File("c:/q.txt"));這種方式?jīng)]有關(guān)閉c打開(kāi)的
                   * 文件一直new 就會(huì)出現(xiàn)打開(kāi)文件太多異常。
                  short count = 0;
                  InputStream inStream = null;
                      try {
                          for (int i = 0; i < Short.MAX_VALUE; i++) {
                              //inStream.
                              inStream = new FileInputStream(new File("/root/install.log"));
                              //count ++;
                              System.out.println("count: " + count++);
                          }
                          //p.load(inStream);
                      } catch (FileNotFoundException e) {
                          // TODO Auto-generated catch block
                          e.printStackTrace();
                      } finally{
                          if(inStream != null) try{ inStream.close(); } catch(IOException e){};
                      }
                  
                  System.out.println(Short.MAX_VALUE);
                  */
                  short count = 0;
                  InputStream inStream = null;
                  for (int i = 0; i < Short.MAX_VALUE; i++) {
                      try {
                              //inStream.
                              inStream = new FileInputStream(new File("/root/install.log"));
                              //count ++;
                              System.out.println("count: " + count++);
                          
                          //p.load(inStream);
                      } catch (FileNotFoundException e) {
                          // TODO Auto-generated catch block
                          e.printStackTrace();
                      } finally{
                          if(inStream != null) try{ inStream.close(); } catch(IOException e){};
                      }
                  }
                  
                  System.out.println(Short.MAX_VALUE);
                  
              }
          }
          posted @ 2011-11-18 10:09 Powered By Andy 閱讀(3224) | 評(píng)論 (0)編輯 收藏
          package cn.coder.y2010.m03.d27;

          /**
           * 兩個(gè)變量不通過(guò)第三個(gè)變量交換值
           
          */

          public class SwitchIntValue {

              
          public static void main(String[] args) {
              
          int i = 5,j = 3;
              i 
          = i + j; // 5 + 3;
              j = i - j; // 8 - 3;
              i = i - j; // 8 - 5;
              System.out.println(i + " - : - " + j);
              }

          }
          posted @ 2010-03-27 11:12 Powered By Andy 閱讀(337) | 評(píng)論 (0)編輯 收藏
           1    public static String md5(String pwd) throws NoSuchAlgorithmException {
           2
           3    StringBuilder sb = new StringBuilder();
           4    MessageDigest digest = MessageDigest.getInstance("md5");
           5    byte[] b = digest.digest(pwd.getBytes());
           6    // 與16進(jìn)制進(jìn)行與
           7    // 16 59 1011001
           8    // 59>>>4&0xf 101 | 59&0xf 1011001
           9    // &1111 | &00001111
          10    // 結(jié)果 101 | 00001001
          11    // 16進(jìn)制 5 9
          12    for (byte s : b) {
          13        // 左邊的四位0101
          14        //sb.append(Character.forDigit(
          15        //    ((s >>> 4) & 0xf) > 4 ? (s >>> 4) & 0xf ^ 0xe
          16        //        : (s >>> 4) & 0xf, 16));
          17        sb.append(Character.forDigit((s >>> 4& 0xf16));
          18        // 右邊的四位1001
          19        sb.append(Character.forDigit(s & 0xf16));
          20    }

          21    // 所有MD5的生面0-f之間的字母與數(shù)字
          22    return sb.toString().toUpperCase();
          23    }
          posted @ 2010-02-25 20:46 Powered By Andy 閱讀(258) | 評(píng)論 (0)編輯 收藏
               摘要:   閱讀全文
          posted @ 2010-02-22 18:57 Powered By Andy 閱讀(2002) | 評(píng)論 (0)編輯 收藏

          package cn.test;

          import java.io.File;
          import java.io.FileInputStream;
          import java.io.FileNotFoundException;
          import java.io.FileOutputStream;
          import java.io.IOException;
          import java.io.ObjectInputStream;
          import java.io.ObjectOutputStream;
          import java.io.Serializable;

          public class TestSeralizable implements Serializable{

              private static final long serialVersionUID = -2495488416590182981L;

              /**
               * 保存序列化的對(duì)像
               * @param path
               * @param o
               */
              public void writeObject(String path, Object o){
           File file = new File(path);
           if(file.exists()){
               file.delete();
           }
           
           FileOutputStream stream = null;
           ObjectOutputStream outputStream = null;
           
           try {
               stream = new FileOutputStream(file);
               outputStream = new ObjectOutputStream(stream);
               outputStream.writeObject(o);
           } catch (IOException e) {
               // TODO Auto-generated catch block
               e.printStackTrace();
           } finally{
               try {
            stream.close();
            outputStream.close();
               } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
               } finally{
            stream = null;
            outputStream = null;
               }
           }
           
              }
             
              /**
               * 讀取序列化對(duì)像
               * @param <T>
               * @param path
               * @return
               */
              @SuppressWarnings("unchecked")
              public <T> T  readObject(String path){
           File file = new File(path);
           if(!file.exists()){
               return null;
           }
           FileInputStream stream = null;
           ObjectInputStream inputStream = null;
           
           try {
               stream = new FileInputStream(file);
               inputStream = new ObjectInputStream(stream);
              
               return  (T)inputStream.readObject();
           } catch (FileNotFoundException e) {
               // TODO Auto-generated catch block
               e.printStackTrace();
           } catch (IOException e) {
               // TODO Auto-generated catch block
               e.printStackTrace();
           } catch (ClassNotFoundException e) {
               // TODO Auto-generated catch block
               e.printStackTrace();
           } finally{
               try {
            stream.close();
            inputStream.close();
               } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
               } finally{
            stream = null;
            inputStream = null;
               }
           }
           
           return null;
              }
             
              public static void main(String[] args) {
           // ---------------  創(chuàng)建序列化實(shí)例   ----------------------//
           
           TestSeralizable test = new TestSeralizable();
           TestSeralizable.UserBean user = new TestSeralizable().new UserBean();
           user.setName("wkw");
           user.setAge(24);
           user.setEmail("wkw11@163.com");
           user.setPassword("123");
           
           // ---------------  保存序列化實(shí)例   ----------------------//
           test.writeObject("c:/qq.tmp", user);
           
           // ---------------  讀取序列化實(shí)例   ----------------------//
           UserBean unSeralizableObject = test.readObject("c:/qq.tmp");
           System.out.println(unSeralizableObject);
              }
             
              /**
               * 內(nèi)部類(lèi)
               * @author Administrator
               *
               */
              public class UserBean  implements Serializable{

               private String name;
               private String password;
               private Integer age;
               private String email;
              
              
              
               /**
                *
                */
               public UserBean() {
            super();
            // TODO Auto-generated constructor stub
               }

           

               /**
                * @param name
                * @param password
                * @param age
                * @param email
                */
               public UserBean(String name, String password, Integer age, String email) {
            super();
            this.name = name;
            this.password = password;
            this.age = age;
            this.email = email;
               }

           

               public String getName() {
                   return name;
               }

           

               public void setName(String name) {
                   this.name = name;
               }

           

               public String getPassword() {
                   return password;
               }

           

               public void setPassword(String password) {
                   this.password = password;
               }

           

               public Integer getAge() {
                   return age;
               }

           

               public void setAge(Integer age) {
                   this.age = age;
               }

           

               public String getEmail() {
                   return email;
               }

           

               public void setEmail(String email) {
                   this.email = email;
               }


              

               private static final long serialVersionUID = 7645220056029053735L;

           

               @Override
               public String toString() {
            // TODO Auto-generated method stub
            return "[" + this.name + "," + this.password + "," + this.age + "," + this.email +"]";
               }

           


           }
          }

          posted @ 2010-01-22 20:52 Powered By Andy 閱讀(1942) | 評(píng)論 (0)編輯 收藏

          導(dǎo)航

          <2010年1月>
          272829303112
          3456789
          10111213141516
          17181920212223
          24252627282930
          31123456

          統(tǒng)計(jì)

          常用鏈接

          留言簿

          隨筆檔案

          搜索

          最新評(píng)論

          閱讀排行榜

          評(píng)論排行榜

          主站蜘蛛池模板: 太和县| 罗定市| 望都县| 乌兰浩特市| 合江县| 桓仁| 关岭| 故城县| 兰州市| 府谷县| 玉山县| 湘潭县| 五寨县| 祥云县| 乌兰浩特市| 镇康县| 无锡市| 宜阳县| 台南市| 杭州市| 靖边县| 芮城县| 瑞金市| 洪雅县| 龙里县| 门源| 临猗县| 清水河县| 邹城市| 峡江县| 桂林市| 高要市| 肇庆市| 河南省| 玉山县| 仪征市| 吉木萨尔县| 泊头市| 南川市| 金乡县| 张北县|