JAVA—咖啡館

          ——歡迎訪問rogerfan的博客,常來《JAVA——咖啡館》坐坐,喝杯濃香的咖啡,彼此探討一下JAVA技術,交流工作經驗,分享JAVA帶來的快樂!本網站部分轉載文章,如果有版權問題請與我聯系。

          BlogJava 首頁 新隨筆 聯系 聚合 管理
            447 Posts :: 145 Stories :: 368 Comments :: 0 Trackbacks

          11 2010 檔案

               摘要: 首 先在代碼與生產庫間建立一個Connection,將讀取到的數據放在ResultSet對象,然后再與開發庫建立一個Connection。從 ResultSet取出數據后通過TestConnection插入到開發庫,以此來實現Copy。代碼寫完后運行程序,速度太慢了,一秒鐘只能Copy 一千條數據,生產庫上有上億條數據,按照這個速度同步完要到猴年馬月呀,用PreparedStatement批處理速度也沒有提交多少。我想能不能用多 線程處理,多個人干活總比一個人干活速度要快。
          假設生產庫有1萬條數據,我開5個線程,每個線程分2000條數據,同時向開發庫里插數據,Oracle支持高并發這樣的話速度至少會提高好多倍,按照這 個思路重新進行了編碼,批處理設置為1萬條一提交,統計插入數量的變量使用 java.util.concurrent.atomic.AtomicLong,程序一運行,傳輸速度飛快CPU利用率在70%~90%,現在一秒鐘可 以拷貝50萬條記錄,沒過幾分鐘上億條數據一條不落地全部Copy到目標庫。  閱讀全文
          posted @ 2010-11-26 14:11 rogerfan 閱讀(982) | 評論 (0)  編輯

               摘要: 1. SELECT子句中避免使用 “*”
          當你想在SELECT子句中列出所有的COLUMN時,使用動態SQL列引用 ‘*’ 是一個方便的方法.不幸的是,這是一個非常低效的方法. 實際上,ORACLE在解析的過程中, 會將“*” 依次轉換成所有的列名, 這個工作是通過查詢數據字典完成的, 這意味著將耗費更多的時間.

          2.使用DECODE函數來減少處理時間
          使用DECODE函數可以避免重復掃描相同記錄或重復連接相同的表. 例如:
          Sql代碼 1.SELECT COUNT(*),SUM(SAL) FROM EMP WHERE DEPT_NO = 0020 AND ENAME LIKE ‘SMITH%’;
          2.SELECT COUNT(*),SUM(SAL) FROM EMP WHERE DEPT_NO = 0030 AND ENAME LIKE ‘SMITH%’;
          SELECT COUNT(*),SUM(SAL) FROM EMP WHERE DEPT_NO = 0020 AND ENAME LIKE ‘SMITH%’;   閱讀全文
          posted @ 2010-11-19 14:06 rogerfan 閱讀(558) | 評論 (0)  編輯

               摘要: 1、將文件checkout到本地目錄
          svn checkout path(path是服務器 上的目錄)
          例如:svn checkout svn://192.168.1.1/pro/domain
          簡寫:svn co

          2、往版本庫中添加新的文件
          svn add file
          例如:svn add test.php(添加test.php)
          svn add *.php(添加當前目錄下所有的php文件)

          3、將改動的文件提交到版本庫
          svn commit -m “LogMessage“ [-N] [--no-unlock] PATH(如果選擇了保持鎖,就使用–no-unlock開關)
          例如:svn commit -m “add test file for my test“ test.php
          簡寫:svn ci

          4、加鎖/解鎖
          svn lock -m “LockMessage“ [--force] PATH
          例如:svn lock -m “lock te  閱讀全文
          posted @ 2010-11-18 10:28 rogerfan 閱讀(1314) | 評論 (0)  編輯

          posted @ 2010-11-10 11:10 rogerfan 閱讀(788) | 評論 (0)  編輯

               摘要: 常見的內存溢出有以下兩種:

          java.lang.OutOfMemoryError: PermGen space

          java.lang.OutOfMemoryError: Java heap space



          ---------------------------------------------------------

          這里以tomcat環境為例,其它WEB服務器如jboss,weblogic等是同一個道理。


          一、java.lang.OutOfMemoryError: PermGen space

          PermGen space的全稱是Permanent Generation space,是指內存的永久保存區域,
          這塊內存主要是被JVM存放Class和Meta信息的,Class在被Loader時就會被放到PermGen space中,
          它和存放類實例(Instance)的Heap區域不同,GC(Garbage Collection)不會在主  閱讀全文
          posted @ 2010-11-08 14:57 rogerfan 閱讀(4910) | 評論 (0)  編輯

               摘要: 1. 環境:

          1.1. Red Hat Linux 9

          1.2. Tomcat 5.5.17

          2. 需要解決一下幾個問題

          2.1. 不同的tomcat啟動和關閉監聽不同的端口

          2.2. 不同的tomcat的啟動文件startup.sh 中要指定各自的CATALINA_HOME和CATALINA_BASE這兩個環境變量。