俊星的BLOG

          #

          我的JAVA工具之網絡傳輸對象

          import java.io.ObjectInputStream;
          import java.io.ObjectOutputStream;
          import java.io.Serializable;
          import java.net.ServerSocket;
          import java.net.Socket;

          public class Tet {
              
          public static void main(String[] args) {
                  
          new Server().start();
                  
          new Client().start();
              }

          }


          class TestVO implements Serializable {
              
          private String name;
              
          private int id;

              
          public TestVO(int id, String name) {
                  
          super();
                  
          this.id = id;
                  
          this.name = name;
              }


              
          public String toString() {
                  
          return "id:" + id + " name:" + name;
              }

          }


          class Client extends Thread {
              
          public void run() {
                  
          try {
                      Socket client 
          = new Socket("localhost"8888);
                      ObjectInputStream ois 
          = new ObjectInputStream(client.getInputStream());
                      TestVO vo 
          = (TestVO) ois.readObject();
                      System.out.println(
          "client read:" + vo);
                      ois.close();
                      client.close();
                  }
           catch (Exception e) {
                      
          // TODO: handle exception
                      e.printStackTrace();
                  }

              }

          }


          class Server extends Thread {
              
          public void run() {
                  
          try {
                      ServerSocket ss 
          = new ServerSocket(8888);
                      Socket server 
          = ss.accept();
                      ObjectOutputStream oos 
          = new ObjectOutputStream(server.getOutputStream());
                      TestVO vo 
          = new TestVO(1"good job");
                      oos.writeObject(vo);
                      System.out.println(
          "server write:" + vo);
                      oos.close();
                      server.close();
                      ss.close();
                  }
           catch (Exception e) {
                      
          // TODO: handle exception
                  }

              }

          }

          輸出:
          server write:id:1 name:good job
          client read:id:
          1 name:good job

          posted @ 2009-05-19 21:40 俊星 閱讀(576) | 評論 (0)編輯 收藏

          趣味JAVA之九九乘法口訣表

              public static void main(String[] args) {
                  
          // i:行數 j:列數
                  
          // 方式一:嵌套循環
                  for (int i = 1; i <= 9; i++{
                      
          for (int j = 1; j <= i; j++{
                          System.out.print(i 
          + "X" + j + "=" + i * j + " ");
                      }

                      System.out.println();
                  }


                  System.out.println();
                  
          // 方式二:單循環
                  for (int i = 1, j = 1; i <= 9; j++{
                      System.out.print(i 
          + "X" + j + "=" + i * j + " ");
                      
          if (i == j) {
                          System.out.println();
                          i
          ++;
                          j 
          = 0;
                      }

                  }

              }

          輸出如下:
          1X1=1 
          2X1
          =2 2X2=4 
          3X1
          =3 3X2=6 3X3=9 
          4X1
          =4 4X2=8 4X3=12 4X4=16 
          5X1
          =5 5X2=10 5X3=15 5X4=20 5X5=25 
          6X1
          =6 6X2=12 6X3=18 6X4=24 6X5=30 6X6=36 
          7X1
          =7 7X2=14 7X3=21 7X4=28 7X5=35 7X6=42 7X7=49 
          8X1
          =8 8X2=16 8X3=24 8X4=32 8X5=40 8X6=48 8X7=56 8X8=64 
          9X1
          =9 9X2=18 9X3=27 9X4=36 9X5=45 9X6=54 9X7=63 9X8=72 9X9=81 

          1X1
          =1 
          2X1
          =2 2X2=4 
          3X1
          =3 3X2=6 3X3=9 
          4X1
          =4 4X2=8 4X3=12 4X4=16 
          5X1
          =5 5X2=10 5X3=15 5X4=20 5X5=25 
          6X1
          =6 6X2=12 6X3=18 6X4=24 6X5=30 6X6=36 
          7X1
          =7 7X2=14 7X3=21 7X4=28 7X5=35 7X6=42 7X7=49 
          8X1
          =8 8X2=16 8X3=24 8X4=32 8X5=40 8X6=48 8X7=56 8X8=64 
          9X1
          =9 9X2=18 9X3=27 9X4=36 9X5=45 9X6=54 9X7=63 9X8=72 9X9=81 

          posted @ 2009-05-19 21:14 俊星 閱讀(691) | 評論 (0)編輯 收藏

          我的JAVA工具之目錄結構輸出

          1、代碼:
          package test;

          import java.io.File;

          public class DMain {
              
          static int level = 0;

              
          /** 文件目錄迭代輸出 */
              
          static void pathPrint1(String root) {
                  File path 
          = new File(root);
                  
          if (path.isDirectory()) {
                      System.out.println(getMultiStr(
          " ", level) + (path.isDirectory() ? "<dir>" : ""+ path.getName());
                      level
          ++;
                      File[] files 
          = path.listFiles();
                      
          for (File f : files) {
                          
          if (f.isDirectory()) {
                              pathPrint1(f.getAbsolutePath());
                          } 
          else {
                              System.out.println(getMultiStr(
          " ", level) + f.getName());
                          }
                      }
                      level
          --;
                  }
              }

              
          static String getMultiStr(String str, int num) {
                  String s 
          = "";
                  
          for (int i = 0; i < num; i++) {
                      s 
          += str;
                  }
                  
          return s;
              }

              
          /** 以樹形結構輸出目錄 */
              
          static void printTree(String root, String init) {
                  File path 
          = new File(root);
                  
          if (path.isDirectory()) {
                      File[] files 
          = path.listFiles();
                      
          for (int i = 0, length = files.length; i < length; i++) {
                          File f 
          = files[i];
                          System.out.println(init 
          + "|" + getMultiStr("-"4+ f.getName());
                          
          if (f.isDirectory()) {
                              printTree(f.getAbsolutePath(), init 
          + (i == length - 1 ? " " : "|"+ getMultiStr(" "4));
                          }
                      }
                  }
              }

              
          public static void main(String[] args) {
                  String s 
          = "D:\\My Documents\\discuz!\\Discuz_7[1].0.0_SC_GBK\\upload\\forumdata";
                  pathPrint1(s);
                  System.out.println(
          "------------------------");
                  System.out.println(
          "ROOT");
                  printTree(s,
          "");

              }

          }

          2、得到的輸出:
          <dir>forumdata
           <dir>cache
            index.htm
           index.htm
           <dir>logs
            index.htm
           <dir>templates
            index.htm
           <dir>threadcaches
            index.htm
          ------------------------
          ROOT
          |----cache
          |    |----index.htm
          |----index.htm
          |----logs
          |    |----index.htm
          |----templates
          |    |----index.htm
          |----threadcaches
               |----index.htm


          posted @ 2009-05-18 20:18 俊星 閱讀(199) | 評論 (0)編輯 收藏

          Web4J之試用

               摘要: Web4J是一個比較新潮的Web框架,具體信息可以參考官網的相關說明:http://www.web4j.com/,下面是我的簡單試用 1、數據庫準備(MySQL): 創建一個數據庫和一個單表: create database test4j; use test4j; create table tbl_log(   ...  閱讀全文

          posted @ 2009-05-16 18:57 俊星 閱讀(924) | 評論 (0)編輯 收藏

          ORACLE Autonomous Transactions(自治事務)試用

          ORACLE自治事務是一個不錯的功能,關鍵字是AUTONOMOUS_TRANSACTION,下面是我試用:
          1、測試:
          創建一個測試表:
          CREATE TABLE TBL_TEST(
            TEST_ID 
          NUMBER NOT NULL,
            TEST_DESC 
          VARCHAR2(100NOT NULL
          );

          新增兩條記錄(注意沒有進行提交):
          INSERT INTO TBL_TEST VALUES(1,'DESC 1');
          INSERT INTO TBL_TEST VALUES(2,'DESC 2');

          通過自治事務添加6兩條記錄:
          DECLARE PRAGMA AUTONOMOUS_TRANSACTION;
          BEGIN
           
          FOR i IN 3..8 LOOP
            
          INSERT INTO TBL_TEST VALUES(i,'DESC '||i);
           
          END LOOP;
           
          COMMIT;
          END;
          /

          查看執行結果如下:
          SQL> SELECT * FROM TBL_TEST;
           
             TEST_ID TEST_DESC
          ---------- --------------------------------------------------------------------------------
                   
          1 DESC 1
                   
          2 DESC 2
                   
          3 DESC 3
                   
          4 DESC 4
                   
          5 DESC 5
                   
          6 DESC 6
                   
          7 DESC 7
                   
          8 DESC 8
           
          8 rows selected

          回滾后再次查看結果(通過結果可以看到采用自治事務的新增沒有被回滾掉):
          SQL> ROLLBACK;
           
          Rollback complete
          SQL> SELECT * FROM TBL_TEST
          ;
           
             TEST_ID TEST_DESC
          ---------- --------------------------------------------------------------------------------
                   
          3 DESC 3
                   
          4 DESC 4
                   
          5 DESC 5
                   
          6 DESC 6
                   
          7 DESC 7
                   
          8 DESC 8
           
          6 rows selected

          2、應用自治事務實現日志記錄:
          創建一個日志表:
          CREATE TABLE TBL_LOG(
            LOG_ID 
          NUMBER(10PRIMARY KEY,
            LOG_MSG 
          VARCHAR2(4000NOT NULL,
            LOG_TIME DATE 
          NOT NULL
          );

          創建一個序列:
          CREATE SEQUENCE SEQ_TBL_LOG;

          創建一個記錄日志的存儲過程:
          CREATE OR REPLACE PROCEDURE DO_LOG(P_MSG IN VARCHAR2AS 
           PRAGMA AUTONOMOUS_TRANSACTION;
          BEGIN
            
          INSERT INTO TBL_LOG VALUES(SEQ_TBL_LOG.NEXTVAL,P_MSG,SYSDATE);
            
          COMMIT;
          END;
          /

          測試上面的存儲過程:
          BEGIN
            
          INSERT INTO TBL_TEST VALUES (100,'DESC 100');
            
          -- test the do_log
            INSERT INTO TBL_TEST VALUES (101,NULL);
          EXCEPTION
            
          WHEN OTHERS THEN
              DO_LOG(P_MSG 
          =>SQLERRM);
              
          ROLLBACK;
          END;
          /

          查看運行結果:
          SQL> SELECT * FROM TBL_TEST WHERE TEST_ID>=100;
           
             TEST_ID TEST_DESC
          ---------- --------------------------------------------------------------------------------
          SQL> SELECT * FROM TBL_LOG
          ;
           
               LOG_ID LOG_MSG                                                                          LOG_TIME
          ----------- -------------------------------------------------------------------------------- -----------
                    
          1 ORA-01400: 無法將 NULL 插入 ("FWMS4ZH_TEST"."TBL_TEST"."TEST_DESC")              2009-5-15 2

          posted @ 2009-05-15 20:19 俊星 閱讀(246) | 評論 (0)編輯 收藏

          僅列出標題
          共10頁: First 上一頁 2 3 4 5 6 7 8 9 10 下一頁 
          主站蜘蛛池模板: 抚顺市| 贵州省| 塔城市| 岐山县| 江达县| 平和县| 海口市| 方山县| 东阳市| 潞西市| 阳泉市| 边坝县| 兴城市| 庆云县| 长岛县| 德保县| 乐业县| 克拉玛依市| 绥阳县| 万盛区| 东兰县| 禹州市| 肥东县| 仙居县| 尉犁县| 仁怀市| 葫芦岛市| 山阳县| 常山县| 呼和浩特市| 西城区| 沁水县| 当雄县| 太仆寺旗| 金昌市| 日照市| 巴南区| 越西县| 苏尼特右旗| 新乡市| 德庆县|