Java && C#

          要學得東西很多,但我們的時間卻不是很多!
          數據加載中……

          2007年3月23日

          點點滴滴

               N長時間沒有來了.......
               忙中偷閑,整理點代碼。
               /** 
               *  復制單個文件 
               *  @param  oldPath  String  原文件路徑  如:c:/fqf.txt 
               *  @param  newPath  String  復制后路徑  如:f:/fqf.txt 
               *  @return  boolean 
               */ 
             public  void  copyFile(String  oldPath,  String  newPath) 
             { 
                 try  { 
                     int  bytesum  =  0; 
                     int  byteread  =  0; 
                     File  oldfile  =  new  File(oldPath); 
                     if  (oldfile.exists())  {  //文件存在時 
                         InputStream  inStream  =  new  FileInputStream(oldPath);  //讀入原文件 
                         FileOutputStream  fs  =  new  FileOutputStream(newPath); 
                         byte[]  buffer  =  new  byte[1444]; 
                         int  length; 
                         while  (  (byteread  =  inStream.read(buffer))  !=  -1)  { 
                             bytesum  +=  byteread;  //字節數  文件大小 
                             System.out.println(bytesum); 
                             fs.write(buffer,  0,  byteread); 
                         } 
                         inStream.close(); 
                     } 
                 } 
                 catch  (Exception  e)  { 
                     System.out.println("復制單個文件操作出錯"); 
                     e.printStackTrace();  
                 }  
             }  

          //保存文件的方法
          public String Savefiles(FormFile file,String path)
           {  
            String fileName= file.getFileName();
            String contentType = file.getContentType();
            String size = (file.getFileSize() + " bytes");
            try
            {
             ByteArrayOutputStream baos = new ByteArrayOutputStream();
             InputStream stream = file.getInputStream();
             OutputStream bos = new FileOutputStream(path+fileName);
             int bytesRead = 0;
             byte[] buffer = new byte[8192];
             while ((bytesRead = stream.read(buffer, 0, 8192)) != -1) {
              bos.write(buffer, 0, bytesRead);
             }
             bos.close();      
             stream.close();  
            }
            catch (IOException e) {
             return e.getMessage();
            }
            return "1";
           }

          //生成15位的字符串
          public String GenTradeId()
           {
            String tradeId = "";
            RandomStrg.setCharset("a-zA-Z0-9");  
            RandomStrg.setLength("15");  
            try
            {
             RandomStrg.generateRandomObject();
             tradeId=RandomStrg.getRandom();   
            }
            catch (Exception e)
            {    
            }
            return tradeId;  
           }

          /**
            * 刪除字符串中的空格,至多只保留一個空格
            * 
            * @String txt:輸入需要處理的字符串
            * @return String :返回處理后的字符串
            * 
            */
           public String deleteWhitespace(String txt){
            if((txt!=null)&&(txt.trim().length()>1)){
             
            }
            else{
             return "";
            }
            
            txt = txt.replaceAll("\n"," ").replaceAll("\t"," ");
            String temp="";
            try{
             int flag =0,num=0;
             char c = 'x';
             StringBuffer sb = new StringBuffer("");
             for(int x=0;x<txt.length();x++){
              c = txt.charAt(x);
              if((c==' ')&&(flag==0)){
               sb.append(c);
               flag =1;
              }
              else if((c!=' ')){
               sb.append(c);
               flag =0;
              }
             }
             temp = sb.toString().trim();
            }
            catch(Exception e){
             ;
            }
            return temp;
           }

          posted @ 2007-08-08 11:03 Bill111 閱讀(1536) | 評論 (0)編輯 收藏
          JavaScript Example

               摘要: 1.文本框焦點問題onBlur:當失去輸入焦點后產生該事件onFocus:當輸入獲得焦點后,產生該文件Onchange:當文字值改變時,產生該事件Onselect:當文字加亮后,產生該文件 <input type="text" value="郭強" onfocus="if(value=='郭強') {value=''}" onblur="if (value=='')...  閱讀全文

          posted @ 2007-03-27 17:18 Bill111 閱讀(2254) | 評論 (0)編輯 收藏
          SQL執行效率

          SQL語句中,IN、EXISTS、NOT IN、NOT EXISTS的效率較低,尤其是后兩種語句,當數據量較大時,更常給人一種死機般的感覺。本文提供一種使用連接的方法代替以上的四種語句,可大副提高SQL語句的運行效率。以NOT IN為例,當數據量達到一萬時,效率可提高20倍,數據量越大,效率提高的幅度也就越大。

          本文所舉的例子在Oracle 7.0下運行通過,但本文所推薦的方法在各種大型數據庫上皆適用。
          為了能夠更好的說明問題,我們采用示例的方式來說明問題。下面,我們將創建一些數據庫表和數據,用于在舉例時使用。

          下面的語句將創建我們示例中將使用的表,并分別在表1(TAB1)中存入10000條數據,表2(TAB2)中存入5000條數據。

          SQL語句如下:

          CREATE TABLE TAB1
          (
          COL1 VARCHAR(20) NOT NULL,
          COL2 INTEGER,
          PRIMARY KEY(COL1)
          );
          CREATE TABLE TAB2
          (
          COL1 VARCHAR(20) NOT NULL,
          PRIMARY KEY(COL1)
          );
          CREATE TABLE TAB3
          (
          COL1 VARCHAR(20) NOT NULL,
          PRIMARY KEY(COL1)
          );
          CREATE OR REPLACE TRIGGER T_TAB3 BEFORE INSERT ON TAB3 FOR EACH ROW
          DECLARE
          NUM1 NUMBER;
          BEGIN
          NUM1:=1;
          LOOP
          EXIT WHEN NUM1>10000;
          INSERT INTO TAB1 VALUES (NUM1,NUM1);
          IF NUM1<=5000 THEN INSERT INTO TAB2 VALUES (NUM1);
          END IF;
          NUM1:=NUM1+1;
          END LOOP;
          END;
          INSERT INTO TAB3 VALUES('1');

          下面,我們將舉2個例子來具體說明使用連接替換IN、NOT IN、EXISTS、NOT EXISTS的方法。

           讀取表1中第2列(COL2)數據的總和,且其第1列數據存在于表2的第1列中。

          1. 使用IN的SQL語句:

          SELECT SUM(COL2) FROM TAB1 WHERE COL1 IN(SELECT COL1 FROM TAB2)

          2. 使用EXISTS的SQL語句:

          SELECT SUM(COL2) FROM TAB1 WHERE EXISTS(SELECT * FROM TAB2 WHERE TAB1.COL1=TAB2.COL1)

          3. 使用連接的SQL語句:

          SELECT SUM(A.COL2) FROM TAB1 A,TAB2 B

          WHERE A.COL1=B.COL1

           讀取表1中第2列(COL2)數據的總和,且其第1列數據不存在于表2的第1列中。


          1. 使用NOT IN的SQL語句:

          SELECT SUM(COL2) FROM TAB1 WHERE COL1 NOT IN(SELECT COL1 FROM TAB2)

          2. 使用NOT EXISTS的SQL語句:

          SELECT SUM(COL2) FROM TAB1 WHERE NOT EXISTS(SELECT * FROM TAB2 WHERE
          TAB1.COL1=TAB2.COL1)

          3. 使用外連接的SQL語句:

          SELECT SUM(A.COL2) FROM TAB1 A,TAB2 B WHERE A.COL1=B.COL1(+) AND B.COL1 IS NULL

          下面介紹IN、NOT IN、EXIST、NOT EXIST在DELETE和UPDATE語句中的效率提高方法。

          下面所舉的例子在Microsoft SQL Server 7.0下運行通過,但所推薦的方法在各種大型數據庫上皆適用。下面,我們將創建一些數據庫表和數據,用于舉例說明。我們將分別在表A(TA)中存入 10000條數據,表B(TB)中存入5000條數據。

          SQL語句如下:

          CREATE TABLE TA
          (
          CA INT
          )
          CREATE TABLE TB
          (
          CA INT
          )
          CREATE TABLE TC
          (
          CA INT
          )
          CREATE TRIGGER TRA ON TC
          FOR INSERT
          AS
          DECLARE @MINT INT
          BEGIN
          SELECT @MINT=1
          WHILE (@MINT<=5000)
          BEGIN
          INSERT INTO TA VALUES(@MINT)
          INSERT INTO TB VALUES(@MINT)
          SELECT @MINT=@MINT+1
          END
          WHILE (@MINT<=10000)
          BEGIN
          INSERT INTO TA VALUES(@MINT)
          SELECT @MINT=@MINT+1
          END
          END
          GO
          INSERT INTO TC VALUES(1)
          GO

           刪除表A中表A和表B相同的數據

          1. 用IN的SQL語句:
          DELETE FROM TA WHERE TA.CA IN (SELECT CA FROM TB)

          2. 用EXISTS的SQL語句:
          DELETE FROM TA WHERE EXISTS (SELECT * FROM TB WHERE TB.CA=TA.CA)

          3. 使用連接的SQL語句:
          DELETE TA FROM TA,TB WHERE TA.CA=TB.CA

           刪除表A中表A存在但表B中不存在的數據

          1. 使用IN的SQL語句:
          DELETE FROM TA WHERE TA.CA NOT IN (SELECT CA FROM TB)

          2. 使用EXISTS的SQL語句:
          DELETE FROM TA WHERE NOT EXISTS (SELECT CA FROM TB WHERE TB.CA=TA.CA)

          3. 使用連接的SQL語句:
          DELETE TA FROM TA LEFT OUTER JOIN TB ON TA.CA=TB.CA WHERE TB.CA IS NULL


           更新表A中表A和表B相同的數據
          1. 使用IN的SQL語句:
          UPDATE TA SET CA=CA+10000 WHERE CA IN (SELECT CA FROM TB)

          2. 使用EXISTS的SQL語句:
          UPDATE TA SET CA=CA+10000 WHERE EXISTS (SELECT CA FROM TB WHERE TB.CA=TA.CA)

          3. 使用連接的SQL語句:
          UPDATE TA SET TA.CA=TA.CA+10000 FROM TA,TB WHERE TA.CA=TB.CA


           更新表A中表A存在但表B中不存在的數據

          1. 使用IN的SQL語句:
          UPDATE TA SET CA=CA+10000 WHERE CA NOT IN (SELECT CA FROM TB)

          2. 使用EXISTS的SQL語句:
          UPDATE TA SET CA=CA+10000 WHERE NOT EXISTS (SELECT CA FROM TB WHERE TB.CA=TA.CA)

          3. 使用連接的SQL語句:
          UPDATE TA SET TA.CA=TA.CA+10000 FROM TA LEFT OUTER JOIN TB ON TA.CA=TB.CA WHERE TB.CA IS NULL

          posted @ 2007-03-23 13:50 Bill111 閱讀(3624) | 評論 (2)編輯 收藏
          主站蜘蛛池模板: 永宁县| 江阴市| 邢台市| 于都县| 建德市| 武夷山市| 迁西县| 盐亭县| 新巴尔虎左旗| 黑河市| 大名县| 滦平县| 广水市| 北海市| 南阳市| 高邮市| 江山市| 榆社县| 乌鲁木齐市| 巴彦淖尔市| 车险| 简阳市| 灵宝市| 乌拉特后旗| 鄂尔多斯市| 疏附县| 南岸区| 手游| 德州市| 伊宁市| 尤溪县| 弥渡县| 大庆市| 新丰县| 商洛市| 巴楚县| 保亭| 类乌齐县| 娱乐| 英超| 禄丰县|