随笔 - 45, 文章 - 2, 评论 - 11, 引用 - 0
数据加载中……

jdbc批处理方法

package cc.apl330;

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.SQLException;

import cc.apl330.dao.UserDAOException;


//注意批处理在实际中应用要注意同时打包太多的处理会引起内存溢出.
public class BatchTest {

	/**
	 * @param args
	 */
	public static void main(String[] args) {
		long start = System.currentTimeMillis() ;
		//常规方式提交处理
		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)) ;

	}
	
	//常规方式提交处理
	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();//将处理打包
			}
			//执行批处理
			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 阅读(179) | 评论 (0)编辑 收藏

JAVA核心技术笔记1

第一个JAVA程序:

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

使用文本编辑器输入以上内容,保存为java源文件扩展名:Hello.java
需要注意以下几点:
JAVA对大小写敏感(main 与 Main 代表不同的概念)
源代码的文件名必须与公有类的名字相同,并用.java作为扩展名
类的标准命名规范:类名是以大写字母开关的名词。
程序总是从main方法开始运行
一对花括号表示方法的开始与结束语。程序中每条语句都以分号结束(就算分号前没有写任何,一个分号也算一句语句)。
点号用来调用一个方法如 System.out.println() ;println()是一个方法。方法后的括号是必须,即便里什么也没有。

3.2 注释
单行注释:   //
多行注释:  /**/
第三种注释:以/**开始 以*/结束。这种注释用来自动生成文档

单行注释,注释内容从//开始到本行结尾  
多行注释内不能再包括 /**/。意思是他们不能嵌套

3.3数据类型
java是一种强类型语言。这就意味每一个变量声明一种类型。
数据类型的大小与运行代码的机器无关。
java一共有8种基本类型,4个整型,2个浮点类型,1个char类型,1个boolean类型(表示真假)
整型
整型又按照长度分为4种:int(4 byte) short(2 byte) long(8 byte) byte(1 byte)
使用long类型需要加后缀L(400000000L),十六进制数值有一个前缀0x(如0xCAFE),八进制有一个前缀0(如010对应八进制中的8,建议不要使用八进制常数,因为他比较容易混淆)
浮点型
浮点类型有两种:float(4 byte) double(8 byte)
浮点类型有一个后缀F(如2.12F),没有加后缀的(如2.12)默认为double类型,double后缀为D。
使用浮点类型需要注意:浮点数的计算会有误差。用2.0-1.1不会得到0.9,有可能得到0.89999。原因是浮点数点值是采用二进制系统表示的,而在二进制里无法精确的表示分数1/10。就像二进制无法精确的表示1/3一样。如果需要在数值计算中不含舍入误差,就应该使用BigDecimal类。
char类型
在程序设计中尽量不要使用此类型
boolean类型
boolean(布尔)类型有两个值:flase 和 true ; 这两个值不能和整型相互转换。
3.4变量
声明变量方式为:
  double salary;
  int vacat ;
  long earth ;
变量名必须是一个公字母开关的字母或数字序列。但,变量名命名不能为java保留字。
3.4.1 初始化变量
int i ; //申明变量i
i = 1 ; //给变量i赋值
也可以这样赋值 int y = 10 ;
3.4.2 常量
关键字final用于声明常量。常量只能被赋值一次。一旦被赋值之后,就不能够再更改了。习惯上常量名使用大写。
有一种常量叫类常量,这种常量可以在各个类之间使用。定义方法: static final int sf = 90 ;
实例:
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 运算符
JAVA中运算符包括:+(加)-(减)*(乘)/(除)%(取模或者叫求余)
/ 号两边如果是整型,运算的结果会截去小数点后的数字。如 15/2=7。如果是浮点型则是这样15.0/2=7.5 。
% 符使用如15%2=1
为简化编程,JAVA像C语言一样有两元运算符。
     如{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++,是先用后加。当然是在同一语句中") ;
        int i = 1 ;
        int y = 4 * i++ ;
        System.out.println("i=" + i) ;
        System.out.println("y=" + y) ;
        System.out.println("++i,是先加后用。当然是在同一语句中") ;
        i =1 ;
        int x = 4 * ++i ;
        System.out.println("i=" + i) ;
        System.out.println("x=" + x) ;
//       
//        i++,是先用后加。当然是在同一语句中
//        i=2
//        y=4
//        ++i,是先加后用。当然是在同一语句中
//        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 阅读(341) | 评论 (0)编辑 收藏

拦截器的实现原理

运行主类
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) ;
    }
}

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

动作类

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

posted @ 2010-07-31 15:19 jack zhai 阅读(456) | 评论 (0)编辑 收藏

仅列出标题
共5页: 上一页 1 2 3 4 5