<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    少年阿賓

    那些青春的歲月

      BlogJava :: 首頁 :: 聯系 :: 聚合  :: 管理
      500 Posts :: 0 Stories :: 135 Comments :: 0 Trackbacks

    #

    主鍵與唯一索引的區別:
    主鍵是一種約束,唯一索引是一種索引,兩者在本質上是不同的。

    主鍵創建后一定包含一個唯一性索引,唯一性索引并不一定就是主鍵。

    唯一性索引列允許空值,而主鍵列不允許為空值。

    主鍵列在創建時,已經默認為空值 + 唯一索引了。

    主鍵可以被其他表引用為外鍵,而唯一索引不能。

    一個表最多只能創建一個主鍵,但可以創建多個唯一索引。

    主鍵更適合那些不容易更改的唯一標識,如自動遞增列、身份證號等。


    很簡單,主鍵約束不能重復,不可為空(NULL)。
    唯一性約束,不能重復,可為空(NULL),但是只能由一個NULL。
    posted @ 2012-09-04 22:56 abin 閱讀(453) | 評論 (0)編輯 收藏

    package com.abin.lee.collection.pool;

    import java.sql.Connection;
    import java.sql.DriverManager;
    import java.sql.SQLException;
    import java.util.ArrayList;
    import java.util.List;

    public class ConnectionPool {
     private List<Connection> pool;
     private static final String Url = "jdbc:oracle:thin:@localhost:1521:XE";
     private static final String USERNAME = "abing";
     private static final String PASSWORD = "abing";
     private static final String DRIVER = "oracle.jdbc.driver.OracleDriver";
     private int poolSize = 10;
     private static volatile ConnectionPool instance = null;

     private ConnectionPool() {
      init();
     }

     public void init() {
      pool = new ArrayList<Connection>(poolSize);
      addConnection();
     }

     public synchronized void release(Connection conn) {
      pool.add(conn);
     }

     public synchronized void closePool() {
      for (int i = 0; i < pool.size(); i++) {
       try {
        ((Connection) pool.get(i)).close();
       } catch (SQLException e) {
        e.printStackTrace();
       }
       pool.remove(i);
      }
     }

     public static ConnectionPool getInstance() {
      if (null == instance) {
       synchronized (ConnectionPool.class) {
        if (null == instance) {
         return new ConnectionPool();
        }
       }
      }
      return instance;
     }

     public synchronized Connection getConnection() {
      if (pool.size() > 0) {
       Connection conn = pool.get(0);
       if(conn!=null){
        System.out.println("Connection Pool Create Success");
       }
       pool.remove(conn);
       return conn;
      }else{
       return null;
      }
     }

     public void addConnection() {
      Connection conn = null;
      for (int i = 0; i < poolSize; i++) {
       try {
        Class.forName(DRIVER);
        conn = DriverManager.getConnection(Url, USERNAME, PASSWORD);
        pool.add(conn);
       } catch (Exception e) {
        e.printStackTrace();
       }

      }
     }

    }







    測試代碼:

    package com.abin.lee.collection.pool;

    import java.sql.Connection;
    import java.sql.PreparedStatement;
    import java.sql.ResultSet;
    import java.util.ArrayList;
    import java.util.List;

    import com.abin.lee.collection.threadlocal.UserBean;

    public class TestConnectionPool {

     public static List<UserBean> findAll(){
      Connection conn=null;
      PreparedStatement ps=null;
      ResultSet rs=null;
      String sql="select * from userbean order by id desc";
      List<UserBean> list=new ArrayList<UserBean>();
      UserBean user=null;
      try {
       conn=ConnectionPool.getInstance().getConnection();
       ps=conn.prepareStatement(sql);
       rs=ps.executeQuery();
       while (rs.next()&&rs!=null) {
        user=new UserBean();
        user.setId(rs.getString("id"));
        user.setUsername(rs.getString("username"));
        user.setPassword(rs.getString("password"));
        list.add(user);
       }
      } catch (Exception e) {
       e.printStackTrace();
      }
      return list;
     }
     public static void main(String[] args) {
      List<UserBean> list=findAll();
      for(UserBean lst:list){
       System.out.println("id="+lst.getId());
       System.out.println("username="+lst.getUsername());
       System.out.println("id="+lst.getPassword());
      }
     }


    }

    posted @ 2012-09-04 00:20 abin 閱讀(447) | 評論 (0)編輯 收藏

    package com.abin.lee.collection.pool;

    import java.sql.Connection;
    import java.sql.DriverManager;
    import java.sql.SQLException;
    import java.util.LinkedList;
    import java.util.List;

    public class ConnectionManage {
     private static List<Connection> pool=new LinkedList<Connection>();;
     private static final String Url = "jdbc:oracle:thin:@localhost:1521:XE";
     private static final String USERNAME = "abing";
     private static final String PASSWORD = "abing";
     private static final String DRIVER = "oracle.jdbc.driver.OracleDriver";
     private static int initCount = 5;
     private static int maxCount = 10;
     private static int currentCount = 5;
     private static volatile ConnectionManage instance = null;
     private ConnectionManage(){
      init();
     }
     public static ConnectionManage getInstance(){
      if(null == instance){
       synchronized (ConnectionManage.class) {
        if(null == instance){
         return new ConnectionManage();
        }
       }
      }
      return instance;
     }
     public void init(){
      addConnection();
     }
     public static Connection createConnection() throws ClassNotFoundException {
      Connection conn=null;
      try {
       Class.forName(DRIVER);
       conn=DriverManager.getConnection(Url, USERNAME, PASSWORD);
      } catch (SQLException e) {
       e.printStackTrace();
      }
      return conn;
     }
     public static void addConnection(){
      for(int i=0;i<initCount;i++){
       try {
        pool.add(createConnection());
       } catch (ClassNotFoundException e) {
        e.printStackTrace();
       }
      }
     }
     
     public static void release(Connection conn){
      pool.add(conn);
     }
     public static Connection getConnection() throws SQLException, ClassNotFoundException{
      synchronized (pool) {
       if(pool.size()>0){
        System.out.println("Current Connection size is:"+pool.size());
        return pool.get(0);
       }else if(currentCount<maxCount){
        Class.forName(DRIVER);
        Connection conn=createConnection();
        pool.add(conn);
        currentCount++;
        return conn;
       }else{
        throw new SQLException("Current Connection is Zero");
       }
      }
     }

    }





    測試代碼:

    package com.abin.lee.collection.pool;

    import java.sql.Connection;
    import java.sql.PreparedStatement;
    import java.sql.ResultSet;
    import java.util.ArrayList;
    import java.util.List;

    import com.abin.lee.collection.threadlocal.UserBean;

    public class TestConnectionPool {

     public static List<UserBean> findAll(){
      Connection conn=null;
      PreparedStatement ps=null;
      ResultSet rs=null;
      String sql="select * from userbean order by id desc";
      List<UserBean> list=new ArrayList<UserBean>();
      UserBean user=null;
      try {
       conn=ConnectionManage.getInstance().getConnection();
       ps=conn.prepareStatement(sql);
       rs=ps.executeQuery();
       while (rs.next()&&rs!=null) {
        user=new UserBean();
        user.setId(rs.getString("id"));
        user.setUsername(rs.getString("username"));
        user.setPassword(rs.getString("password"));
        list.add(user);
       }
      } catch (Exception e) {
       e.printStackTrace();
      }
      return list;
     }
     public static void main(String[] args) {
      List<UserBean> list=findAll();
      for(UserBean lst:list){
       System.out.println("id="+lst.getId());
       System.out.println("username="+lst.getUsername());
       System.out.println("id="+lst.getPassword());
      }
     }


    }

    posted @ 2012-09-04 00:18 abin 閱讀(1547) | 評論 (0)編輯 收藏

    http://06peng.com/read.php/13.htm
    http://blog.sina.com.cn/s/blog_70ce7e9e0100v9dh.html
    http://blog.163.com/lgw1984_12/blog/static/4122245520096239913479/
    http://mzba520.iteye.com/blog/939691
    http://blog.csdn.net/java_blue/article/details/6581480
    http://blog.csdn.net/a600423444/article/details/6542521
    http://blog.csdn.net/caoyinghui1986/article/details/2315864

    posted @ 2012-09-03 21:56 abin 閱讀(362) | 評論 (0)編輯 收藏

    下面是以前學java 的時候寫的一個實現,沒有考慮很多,比如同步處理等等。懶得改,你就看看吧。

    package com.wangjia.tools;

    import java.io.Serializable;
    import java.sql.*;
    import java.util.*;

    /**
    * 數據庫連接池的簡單實現
    * @author wangjia
    * @version 1.0
    *@serial 2301410997974776106L
    */
    public class DbConn implements Serializable{

    /**
    * 
    */
    private static final long serialVersionUID = 2301410997974776106L;
    private static List<Connection> connList=new ArrayList<Connection>();
    //private static String driver="com.microsoft.jdbc.sqlserver.SQLServerDriver";//sql2000
    private static String driver="com.microsoft.sqlserver.jdbc.SQLServerDriver";//sql2005
    private static String url="jdbc:sqlserver://127.0.0.1:1433;DatabaseName=Forum";
    private static String userName="sa";
    private static String password="sa";
    private static int maxConn=20;
    private static int minConn=5;
    private static int usedConn=0;
    private static DbConn dbconn=null;
    // private static int flag=1;
    /**
    * 設置數據庫連接的驅動
    * @param driver 數據庫連接的驅動<br/>例如:"com.microsoft.sqlserver.jdbc.SQLServerDriver"
    */
    public static void setDriver(String driver) {
    DbConn.driver = driver;
    }

    /**
    * 設置數據庫連接池的最小數
    * @param maxConn 數據庫連接池的最小數量
    */
    public static void setMaxConn(int maxConn) {
    DbConn.maxConn = maxConn;
    }

    /**
    * 設置數據庫連接池的最大數
    * @param minConn 數據庫連接池的最大數量
    */
    public static void setMinConn(int minConn) {
    DbConn.minConn = minConn;
    }

    /**
    * 設置數據庫連接的URL
    * @param url 數據庫連接的URL,包括數據庫的名稱<br/>例如: "jdbc:sqlserver://127.0.0.1:1433;DatabaseName=master"
    */
    public static void setUrl(String url) {
    DbConn.url = url;
    }

    private DbConn() throws MyException{
    try{
    Class.forName(driver);
    for(int i=0;i<minConn;i++){
    connList.add(DriverManager.getConnection(url,userName.toString(),password.toString()));
    }
    }catch(ClassNotFoundException e){
    throw new MyException("請設置正確的數據庫連接驅動!\nusing: DbConn.setDriver(String driver)");

    }catch(SQLException e){
    throw new MyException("請設置正確的數據庫連接URL以及用于連接的用戶名和密碼!\n" +
    "using: DbConn.setUrl(String url),DbConn.setUserName(String userName),DbConn.setPassword(String password)");

    }
    }
    /**
    * 用于得到DbConn對象
    * @return 返回一個DbConn對像
    */

    public static Connection getConn() throws MyException{
    // flag++;
    if(dbconn==null)dbconn=new DbConn();
    // System.out.println("falg="+flag);
    // System.out.println("usedConn="+usedConn);
    if(connList.size()==0){
    throw new MyException("沒有正確的設置相關信息,以至連接池未初始化");
    }
    if(usedConn==maxConn){

    Thread thread=new Thread(new Runnable(){

    @SuppressWarnings("static-access")
    public void run() {
    if(usedConn<maxConn){
    try {
    try {
    Thread.currentThread().sleep(2000);
    } catch (InterruptedException e) {
    e.printStackTrace();
    }
    getConn();
    } catch (MyException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
    }
    }

    }

    });
    thread.start();
    }
    if(usedConn>=minConn&&usedConn<maxConn){
    try {
    connList.add(DriverManager.getConnection(url,userName.toString(),password.toString()));
    } catch (SQLException e) {

    }
    return connList.get(usedConn++);
    }
    if(usedConn<5){
    return connList.get(usedConn++);
    }
    return null;
    }

    public static void close(){
    try {
    if(usedConn>5)
    connList.get(--usedConn).close();
    else usedConn--;
    } catch (SQLException e) {
    // TODO 自動生成 catch 塊
    e.printStackTrace();
    }

    }

    /**
    * 設置用于連接數據庫的密碼
    * @param password 用于連接數據庫的密碼
    */
    public static void setPassword(String password) {
    DbConn.password = password;
    }

    /**
    * 設置用于連接數據庫的用戶名
    * @param userName 用于連接數據庫的用戶名
    */
    public static void setUserName(String userName) {
    DbConn.userName = userName;
    }

    }

    在項目中用到連接池的話,一般會直接使用已有的開源連接池實現,比如用 apache 的common-dbcp.jar和common-pool.jar 相結合,很少去自己實現。

    posted @ 2012-09-03 21:55 abin 閱讀(514) | 評論 (0)編輯 收藏

    http://blog.csdn.net/ohmygirl/article/details/7776013 

    http://blog.csdn.net/laigood12345/article/details/7350295
    posted @ 2012-09-03 13:14 abin 閱讀(487) | 評論 (0)編輯 收藏

    1、去官網下載hession的java架包:
    官網地址:http://hessian.caucho.com/
    我這里下載的是hessian-4.0.7.jar


    2、編寫接口:
    package com.abin.lee.hession;
    public interface IBasicSource {
    public String getMessage(String name);
    public UserBean getUserBean();
    }

    3、編寫接口實現類:
    package com.abin.lee.hession;
    public class BasicSource implements IBasicSource{
    public String getMessage(String name) {
    return "hello,"+name;
    }
    public UserBean getUserBean() {
    UserBean userBean=new UserBean();
    userBean.setId(1);
    userBean.setAddress("liangcheng");
    userBean.setName("lee");
    return userBean;
    }
    }
    4、實體類,這里需要注意一下,這里必須的實現序列化接口Serializable,因為是需要網絡傳輸的

    package com.abin.lee.hession;
    import java.io.Serializable;
    public class UserBean implements Serializable{
    private static final long serialVersionUID = -8931696839145847364L;
    private int id;
    private String name;
    private String address;
    public int getId() {
    return id;
    }
    public void setId(int id) {
    this.id = id;
    }
    public String getName() {
    return name;
    }
    public void setName(String name) {
    this.name = name;
    }
    public String getAddress() {
    return address;
    }
    public void setAddress(String address) {
    this.address = address;
    }
    }

    5、配置web.xml
    <!--下面是Hession的配置-->
    <servlet>
    <servlet-name>hessianServlet</servlet-name>
    <servlet-class>com.caucho.hessian.server.HessianServlet</servlet-class>
    <init-param>  
    <param-name>home-class</param-name>
    <param-value>com.abin.lee.hession.BasicSource</param-value>
    </init-param>
    <init-param>
    <param-name>home-api</param-name>
    <param-value>com.abin.lee.hession.IBasicSource</param-value>
    </init-param>
    </servlet>
    <servlet-mapping>
    <servlet-name>hessianServlet</servlet-name>
    <url-pattern>/hessianServlet</url-pattern>
    </servlet-mapping>



    6、編寫測試類:

    package com.abin.lee.hession.test;
    import java.net.MalformedURLException;
    import junit.framework.TestCase;
    import com.abin.lee.hession.IBasicSource;
    import com.abin.lee.hession.UserBean;
    import com.caucho.hessian.client.HessianProxyFactory;
    public class TestHession extends TestCase{
    private static final String HESSION_URL="http://localhost:8081/universal/hessianServlet";
    public void testHession() throws MalformedURLException{
    HessianProxyFactory factory=new HessianProxyFactory(); 
    IBasicSource basic=(IBasicSource)factory.create(IBasicSource.class, HESSION_URL);
    String result=basic.getMessage("abin");
    System.out.println("result="+result);
    UserBean user=basic.getUserBean();
    System.out.println("ID="+user.getId()+",NAME="+user.getName()+",ADDRESS="+user.getAddress());
    }
    }


    測試結果:
    result=hello,abin
    ID=1,NAME=lee,ADDRESS=liangcheng

    到了這里就成功了。
    posted @ 2012-09-02 19:11 abin 閱讀(1895) | 評論 (0)編輯 收藏

    package com.abin.lee.collection.inner;
    public class XiXiang {
    public static enum IdType{
    ONE("one"),TWO("two"),THREE("three");
    private String textVal;
    private IdType(String textVal){
    this.textVal=textVal;
    }
    private String getString(){
    return textVal;
    }
    }
    public static String get(IdType type,String id){
    String status=null;
    final class get{
    String result=null;
    public String getName(String id){
    if(id.equals("1")){
    result="lee";
    }
    return result;
    }
    }
    if(type==IdType.valueOf("ONE")){
    status=new get().getName(id);
    }
    return status;
    }
    public static void main(String[] args) {
    String id="1";
    IdType type=IdType.valueOf("ONE");
    String result=new XiXiang().get(type,id);
    System.out.println("result="+result);
    }
    }
    posted @ 2012-09-02 18:00 abin 閱讀(2383) | 評論 (0)編輯 收藏

    package com.abin.lee.collection.inner;
    public class LiangCheng {
    public static String LocalProcess(String wu, String id) {
    String well = null;
    if (wu.equalsIgnoreCase("abin")) {
    LiangCheng liangCheng=new LiangCheng();
    LiangCheng.Process process=liangCheng.new Process();
    well=process.getNameById(id);
    }
    return well;
    }
    public class Process {
    private String result = null;
    public String getNameById(String id) {
    if (id.equalsIgnoreCase("15")) {
    result = "lee";
    }
    return result;
    }
    }
    public static void main(String[] args) {
    LiangCheng liangCheng=new LiangCheng();
    String wu="abin";
    String id="15";
    String result=liangCheng.LocalProcess(wu, id);
    System.out.println("result="+result);
    }
    }
    posted @ 2012-09-02 16:43 abin 閱讀(456) | 評論 (0)編輯 收藏

    package com.abin.lee.collection.enumer;
    public class ChangeType {
    public static enum stype{
    CHINA("china"),JAPAN("japan"),GERMAN("german");
    private String textVal;
    private stype(String textVal){
    this.textVal=textVal;
    }
    public String toString(){
    return textVal;
    }
    }
    public static void main(String[] args) {
    String abin=stype.CHINA.toString();
    System.out.println(abin);
    stype abing=stype.valueOf("CHINA");//注意這里不應該傳china、japan、german,必須傳CHINA,JAPAN,GERMAN
    System.out.println("abing="+abing);
    }
    }
    posted @ 2012-09-02 15:46 abin 閱讀(413) | 評論 (0)編輯 收藏

    僅列出標題
    共50頁: First 上一頁 29 30 31 32 33 34 35 36 37 下一頁 Last 
    主站蜘蛛池模板: 亚洲一区二区影院| 日本高清免费网站| 久久99国产亚洲精品观看| 黄视频在线观看免费| 免费大黄网站在线观看| 免费看一级高潮毛片| 亚洲一级黄色视频| 好男人资源在线WWW免费| 亚洲色偷偷综合亚洲AVYP| 最新国产乱人伦偷精品免费网站| 国产成人精品日本亚洲| 6080午夜一级毛片免费看 | 亚洲人成网国产最新在线| 毛片a级毛片免费观看品善网| 亚洲一区二区三区无码国产| 在线视频免费观看高清| **一级毛片免费完整视| 亚洲视频免费在线播放| 野花高清在线观看免费完整版中文 | 国产国拍亚洲精品福利 | a级毛片无码免费真人久久| 亚洲AV无码成人专区片在线观看| 99爱在线观看免费完整版| 亚洲欧洲日产韩国在线| 成人人观看的免费毛片| 人妻巨大乳hd免费看| 亚洲大成色www永久网站| 国产精品爱啪在线线免费观看| 中文字幕在线日亚洲9| 亚洲v国产v天堂a无码久久| a级毛片免费在线观看| 亚洲成AV人片久久| 国产hs免费高清在线观看| 一级一级一级毛片免费毛片| 亚洲一区二区三区夜色| 日本免费人成黄页网观看视频| 9久热精品免费观看视频| 亚洲精品视频在线免费| 亚洲AV日韩精品一区二区三区| 国产成人精品免费久久久久| 亚洲日韩中文字幕一区|