隨筆 - 45, 文章 - 2, 評(píng)論 - 11, 引用 - 0
          數(shù)據(jù)加載中……

          jdbc批處理方法

          package cc.apl330;
          
          import java.sql.Connection;
          import java.sql.PreparedStatement;
          import java.sql.SQLException;
          
          import cc.apl330.dao.UserDAOException;
          
          
          //注意批處理在實(shí)際中應(yīng)用要注意同時(shí)打包太多的處理會(huì)引起內(nèi)存溢出.
          public class BatchTest {
          
          	/**
          	 * @param args
          	 */
          	public static void main(String[] args) {
          		long start = System.currentTimeMillis() ;
          		//常規(guī)方式提交處理
          		for(int i=0; i<200; i++){
          			create(i) ;
          		}
          		long end = System.currentTimeMillis() ;
          		System.out.println("crate:" + (end - start)) ;
          		
          		//成批提交處理
          		start = System.currentTimeMillis() ;
          		create1() ;
          		end = System.currentTimeMillis() ;
          		System.out.println("Batchcrate:" + (end - start)) ;
          
          	}
          	
          	//常規(guī)方式提交處理
          	static void create(int i){
          		String sql = "INSERT INTO USER(name,money) VALUES(?,?);";
          		Connection conn;
          		PreparedStatement ps;
          		try {
          			conn = JdbcUtil.getConnection();
          			ps = conn.prepareStatement(sql) ;
          			ps.setString(1, "name"+i) ;
          			ps.setFloat(2, 200f+i) ;
          			ps.executeUpdate();
          			JdbcUtil.free(null, ps, conn) ;
          		} catch (SQLException e) {
          			throw new UserDAOException(e.getMessage(),e) ;
          		}
          	}
          	
          	//成批提交處理
          	static void create1(){
          		String sql = "INSERT INTO USER(name,money) VALUES(?,?);";
          		Connection conn;
          		PreparedStatement ps;
          		try {
          			conn = JdbcUtil.getConnection();
          			ps = conn.prepareStatement(sql) ;
          			for(int i=200; i<400; i++){
          				ps.setString(1, "name"+i) ;
          				ps.setFloat(2, 200f+i) ;
          				ps.addBatch();//將處理打包
          			}
          			//執(zhí)行批處理
          			int[] is = ps.executeBatch() ;
          			System.out.println(is.length+"") ;
          			JdbcUtil.free(null, ps, conn) ;
          		} catch (SQLException e) {
          			throw new UserDAOException(e.getMessage(),e) ;
          		}
          	}
          }

          posted @ 2010-07-31 16:09 jack zhai 閱讀(189) | 評(píng)論 (0)編輯 收藏

          JAVA核心技術(shù)筆記1

          第一個(gè)JAVA程序:

          public class Hello{
            public static void main(String[] args ){
               System.out.println("hello world") ;
            }
          }

          使用文本編輯器輸入以上內(nèi)容,保存為java源文件擴(kuò)展名:Hello.java
          需要注意以下幾點(diǎn):
          JAVA對(duì)大小寫敏感(main 與 Main 代表不同的概念)
          源代碼的文件名必須與公有類的名字相同,并用.java作為擴(kuò)展名
          類的標(biāo)準(zhǔn)命名規(guī)范:類名是以大寫字母開關(guān)的名詞。
          程序總是從main方法開始運(yùn)行
          一對(duì)花括號(hào)表示方法的開始與結(jié)束語。程序中每條語句都以分號(hào)結(jié)束(就算分號(hào)前沒有寫任何,一個(gè)分號(hào)也算一句語句)。
          點(diǎn)號(hào)用來調(diào)用一個(gè)方法如 System.out.println() ;println()是一個(gè)方法。方法后的括號(hào)是必須,即便里什么也沒有。

          3.2 注釋
          單行注釋:   //
          多行注釋:  /**/
          第三種注釋:以/**開始 以*/結(jié)束。這種注釋用來自動(dòng)生成文檔

          單行注釋,注釋內(nèi)容從//開始到本行結(jié)尾  
          多行注釋內(nèi)不能再包括 /**/。意思是他們不能嵌套

          3.3數(shù)據(jù)類型
          java是一種強(qiáng)類型語言。這就意味每一個(gè)變量聲明一種類型。
          數(shù)據(jù)類型的大小與運(yùn)行代碼的機(jī)器無關(guān)。
          java一共有8種基本類型,4個(gè)整型,2個(gè)浮點(diǎn)類型,1個(gè)char類型,1個(gè)boolean類型(表示真假)
          整型
          整型又按照長度分為4種:int(4 byte) short(2 byte) long(8 byte) byte(1 byte)
          使用long類型需要加后綴L(400000000L),十六進(jìn)制數(shù)值有一個(gè)前綴0x(如0xCAFE),八進(jìn)制有一個(gè)前綴0(如010對(duì)應(yīng)八進(jìn)制中的8,建議不要使用八進(jìn)制常數(shù),因?yàn)樗容^容易混淆)
          浮點(diǎn)型
          浮點(diǎn)類型有兩種:float(4 byte) double(8 byte)
          浮點(diǎn)類型有一個(gè)后綴F(如2.12F),沒有加后綴的(如2.12)默認(rèn)為double類型,double后綴為D。
          使用浮點(diǎn)類型需要注意:浮點(diǎn)數(shù)的計(jì)算會(huì)有誤差。用2.0-1.1不會(huì)得到0.9,有可能得到0.89999。原因是浮點(diǎn)數(shù)點(diǎn)值是采用二進(jìn)制系統(tǒng)表示的,而在二進(jìn)制里無法精確的表示分?jǐn)?shù)1/10。就像二進(jìn)制無法精確的表示1/3一樣。如果需要在數(shù)值計(jì)算中不含舍入誤差,就應(yīng)該使用BigDecimal類。
          char類型
          在程序設(shè)計(jì)中盡量不要使用此類型
          boolean類型
          boolean(布爾)類型有兩個(gè)值:flase 和 true ; 這兩個(gè)值不能和整型相互轉(zhuǎn)換。
          3.4變量
          聲明變量方式為:
            double salary;
            int vacat ;
            long earth ;
          變量名必須是一個(gè)公字母開關(guān)的字母或數(shù)字序列。但,變量名命名不能為java保留字。
          3.4.1 初始化變量
          int i ; //申明變量i
          i = 1 ; //給變量i賦值
          也可以這樣賦值 int y = 10 ;
          3.4.2 常量
          關(guān)鍵字final用于聲明常量。常量只能被賦值一次。一旦被賦值之后,就不能夠再更改了。習(xí)慣上常量名使用大寫。
          有一種常量叫類常量,這種常量可以在各個(gè)類之間使用。定義方法: static final int sf = 90 ;
          實(shí)例:
          Changliang.java
              public class Changliang {
                  static final int ZHAI = 90 ;
              }
          IOtest.java
          public class IOtest {
              public static void main(String[] args) {
                  System.out.println(Changliang.ZHAI + "") ;
              }
          }

          3.5 運(yùn)算符
          JAVA中運(yùn)算符包括:+(加)-(減)*(乘)/(除)%(取模或者叫求余)
          / 號(hào)兩邊如果是整型,運(yùn)算的結(jié)果會(huì)截去小數(shù)點(diǎn)后的數(shù)字。如 15/2=7。如果是浮點(diǎn)型則是這樣15.0/2=7.5 。
          % 符使用如15%2=1
          為簡化編程,JAVA像C語言一樣有兩元運(yùn)算符。
               如{int i = 1 ;i = i+2 ;}可以簡化為{int i = 1; i += 2;}
          3.5.1自增自減
          以下源碼便說明:
          IOtest.java
          public  class IOtest {
              public strictfp static void main(String[] args) {
                  System.out.println("i++,是先用后加。當(dāng)然是在同一語句中") ;
                  int i = 1 ;
                  int y = 4 * i++ ;
                  System.out.println("i=" + i) ;
                  System.out.println("y=" + y) ;
                  System.out.println("++i,是先加后用。當(dāng)然是在同一語句中") ;
                  i =1 ;
                  int x = 4 * ++i ;
                  System.out.println("i=" + i) ;
                  System.out.println("x=" + x) ;
          //       
          //        i++,是先用后加。當(dāng)然是在同一語句中
          //        i=2
          //        y=4
          //        ++i,是先加后用。當(dāng)然是在同一語句中
          //        i=2
          //        x=8
                  //以下使用自增自減的效果是一樣的
                  int p = 1 ;
                  System.out.println("p="+ p) ;
                  p++ ;
                  System.out.println("p="+ p) ;
                  int q = 1 ;
                  System.out.println("q="+ q) ;
                  q++ ;
                  System.out.println("q="+ q) ;
          //        p=1
          //        p=2
          //        q=1
          //        q=2
              }
          }

          posted @ 2010-07-31 15:36 jack zhai 閱讀(353) | 評(píng)論 (0)編輯 收藏

          攔截器的實(shí)現(xiàn)原理

          運(yùn)行主類
          Main.java

          public class Main {
              public static void main(String[] args) {
                  new ActionInterceptor().invoke() ;
              }
          }

          /********************************/

          攔截器核心
          ActionInterceptor.java

          import java.util.ArrayList;
          import java.util.List;

          public class ActionInterceptor {
              List<Inte> intes = new ArrayList<Inte>() ;
              int index = -1 ;
              public ActionInterceptor() {
                  intes.add(new FistInte()) ;
                  intes.add(new SecondInte()) ;
              }
              public void invoke() {
                  index++ ;
                  if(index >= intes.size()) {
                      new Action().execute() ;
                  }else {
                      this.intes.get(index).inte(this) ;
                  }
              }
          }

          /********************************/

          接口:與攔截器之間的通訊接口
          Inte.java

          public interface Inte {
              void inte(ActionInterceptor actioninterceptor) ;
          }

          /********************************/

          接口使用類
          FistInte.java

          public class FistInte implements Inte {

              @Override
              public void inte(ActionInterceptor actioninterceptor) {
                  System.out.println(1) ;
                  actioninterceptor.invoke() ;
                  System.out.println(-1) ;
              }
          }

          SecondInte.java
          public class SecondInte implements Inte {

              @Override
              public void inte(ActionInterceptor actioninterceptor) {
                  System.out.println(2) ;
                  actioninterceptor.invoke() ;
                  System.out.println(-2) ;
              }
          }

          /********************************/

          動(dòng)作類

          Action.java
          public class Action {
              public void execute() {
                  System.out.println("execute!") ;
              }
          }

          posted @ 2010-07-31 15:19 jack zhai 閱讀(503) | 評(píng)論 (0)編輯 收藏

          僅列出標(biāo)題
          共5頁: 上一頁 1 2 3 4 5 
          主站蜘蛛池模板: 蒙自县| 淮滨县| 平昌县| 南投市| 营山县| 安庆市| 栖霞市| 湘潭市| 揭西县| 宁远县| 彰化市| 洛南县| 永仁县| 双柏县| 喀什市| 庄河市| 敦煌市| 阿拉尔市| 永仁县| 渑池县| 信阳市| 西乌珠穆沁旗| 吉水县| 滁州市| 米林县| 吕梁市| 周至县| 南汇区| 汉源县| 长泰县| 靖州| 若羌县| 化德县| 芦溪县| 五指山市| 高清| 鄂托克旗| 余干县| 黔江区| 罗甸县| 连州市|