amp@java

            BlogJava :: 首頁 :: 新隨筆 :: 聯(lián)系 :: 聚合  :: 管理 ::
            99 隨筆 :: 0 文章 :: 228 評論 :: 0 Trackbacks

          #

          使用AVG,SUM等SQL聚合函數(shù)在Access查詢,速度慢得要命,7個整數(shù)的求和或平均居然要幾秒才能算出來;通過JDBC連接,把數(shù)據(jù)查出來后再自己求和或求平均,速度不知道要快多少。
          奇怪,不知道Access是怎么搞的,求平均可能因為浮點運算慢,但整數(shù)求和為什么也會慢呢?
          posted @ 2007-07-09 22:26 amp@java 閱讀(1582) | 評論 (3)編輯 收藏

          更新了某個webapp,把新的WAR包放到webapps目錄下,Tomcat就會自動把原來的同名webapp刪除,并把WAR包解壓,運行新的webapp。但是,有時候Tomcat并不能把舊的webapp完全刪除,通常會留下WEB-INF/lib下的某個jar包,必須關閉Tomcat才能刪除,這就導致自動部署失敗。
          解決方法是在<Context>元素中增加一個屬性antiResourceLocking="true",默認是"false"。但是這樣會帶來一個問題,Tomcat在運行對應的webapp時,會把下面的文件復制到一個臨時目錄里,所以如果你在服務器運行的時候修改了某個JSP,Tomcat并不會發(fā)現(xiàn),看到的還是修改前的那個頁面。

          以下內(nèi)容來自Tomcat文檔:Context標簽的位置

          Context elements may be explicitly defined:

          • in the $CATALINA_HOME/conf/context.xml file: the Context element information will be loaded by all webapps
          • in the $CATALINA_HOME/conf/[enginename]/[hostname]/context.xml.default file: the Context element information will be loaded by all webapps of that host
          • in individual files (with a ".xml" extension) in the $CATALINA_HOME/conf/[enginename]/[hostname]/ directory. The name of the file (less the .xml) extension will be used as the context path. Multi-level context paths may be defined using #, e.g. context#path.xml. The default web application may be defined by using a file called ROOT.xml.
          • if the previous file was not found for this application, in an individual file at /META-INF/context.xml inside the application files
          • inside a Host element in the main conf/server.xml


          參考資料:
          Tomcat 5.5 文檔:http://tomcat.apache.org/tomcat-5.5-doc/config/context.html
          關于antiResourceLocking的bug:http://issues.apache.org/bugzilla/show_bug.cgi?id=37668
          posted @ 2007-06-27 09:35 amp@java 閱讀(1477) | 評論 (1)編輯 收藏


          Google ADSense

          posted @ 2007-05-08 18:07 amp@java 閱讀(596) | 評論 (6)編輯 收藏

          數(shù)據(jù)庫服務器更換時,要把數(shù)據(jù)庫整個備份出來,轉移到另外的服務器上,在SQL Server 2000中,一般通過數(shù)據(jù)庫的備份生成一個文件,然后在新的服務器上通過數(shù)據(jù)庫的還原把數(shù)據(jù)導回來,整個過程都有圖形界面,操作簡單直觀。
          在ORACLE里,有相似功能的工具,但卻是通過命令行方式。
          首先,數(shù)據(jù)庫的備份可以通過exp命令進行。exp命令有三種運行方式:交互式、命令行和參數(shù)文件。使用交互式一步步提示,用戶只需簡單輸入即可進行,它的使用方法如下:
          1、輸入exp命令;
          2、提示輸入用戶名,可以使用SYSTEM帳號,不能使用SYS帳號;
          3、提示輸入密碼;
          4、依次提示導出文件名及其他選項。

          備份出一個文件之后,可以通過imp命令導入到新的服務器中,imp命令與exp命令有很多相似的地方,有些選項是相同的。采用全庫導出之后的文件,通過imp完全導入的時候會出現(xiàn)表創(chuàng)建錯誤的提示,如果新的數(shù)據(jù)庫中沒有舊庫中對應的用戶,也會出現(xiàn)無法導入的提示,解決方法就是在新的數(shù)據(jù)庫中建立同樣的用戶,并賦予同樣權限(?)。

          exp和imp的使用方法見:
          http://oracle.chinaitlab.com/backup/36902.html
          http://oracle.chinaitlab.com/backup/36901.html

          posted @ 2007-04-17 17:23 amp@java 閱讀(527) | 評論 (0)編輯 收藏

          JavaScript里的Array有一個sort方法:

          來自微軟的Jscript文檔

          返回一個元素已經(jīng)進行了排序的 Array 對象。

          arrayobj.sort(sortfunction) 

          參數(shù)

          arrayObj
          必選項。任意 Array 對象。
          sortFunction
          可選項。是用來確定元素順序的函數(shù)的名稱。如果這個參數(shù)被省略,那么元素將按照 ASCII 字符順序進行升序排列。

          說明

          sort 方法將 Array 對象進行適當?shù)呐判颍辉趫?zhí)行過程中并不會創(chuàng)建新的 Array 對象。

          如果為 sortfunction 參數(shù)提供了一個函數(shù),那么該函數(shù)必須返回下列值之一:

          • 負值,如果所傳遞的第一個參數(shù)比第二個參數(shù)小。
          • 零,如果兩個參數(shù)相等。
          • 正值,如果第一個參數(shù)比第二個參數(shù)大。


          因此,排序的關鍵就在于如何設置sortfunction這個函數(shù)了。
          在JavaScript中,字符串有一個localeCompare方法,能夠根據(jù)區(qū)域設置來排序,中文的話就是按照拼音排序了。

          來自微軟的Jscript文檔

          返回一個值,指出在當前的區(qū)域設置中兩個字符串是否相同。

          stringVar.localeCompare(stringExp)

          參數(shù)

          stringVar
          必選項。一個 String 對象文字。
          stringExp
          必選項。將與 stringVar 進行比較的字符串。

          說明

          localeCompare 可以對 stringVarstringExp 進行一個區(qū)分區(qū)域設置的字符串比較并返回 –1、0 或 +1,這取決于系統(tǒng)中缺省區(qū)域設置的排序。

          如果 stringVar 排序在 stringExp 之前,那么 localeCompare 返回 –1;如果 stringVar 排序在 stringExp 之后,則返回 +1。如果返回值為 0,那就說明這兩個字符串是相同的。


          把以上兩個方法結合,就可以輕松實現(xiàn)按照拼音順序對多個字符串進行排序了。

          例子可以見這里:
          http://hi.baidu.com/aaxh/blog/item/eb6ddaf953327858252df218.html
          posted @ 2007-04-16 15:08 amp@java 閱讀(1000) | 評論 (0)編輯 收藏

          打開了連接服務器的一個Socket后,隔了一段時間沒用,Socket就會自動關閉(為什么?),這時候如果獲取該Socket的OutputStream,并往里面寫東西,在flush的時候就會出現(xiàn):
          java.net.SocketException: Software caused connection abort: socket write error
          的異常。因此,如果隔了一段時間沒有使用某個Socket,需要重新使用它的時候,就要先判斷它究竟是否還在連接當中,一共嘗試了Socket的三個方法:
          1、isClosed()
          2、isOutputShutdown()
          3、isConnected()
          發(fā)現(xiàn)前兩個都沒用,即使已經(jīng)斷開了,返回的還是false,只有第三個可以解決問題。
          具體原因未知。

          2007-4-19更新:
          第三個也解決不了問題,還會出現(xiàn)同樣的異常,目前的解決方法是catch SocketException,不管socket的狀態(tài)如何,都把它關閉了重新再連,但是SocketException的種類有很多,不一定是因為Socket已關閉,所以這種方法有點粗魯,但找不到更好的方法。

          posted @ 2007-04-12 12:21 amp@java 閱讀(13156) | 評論 (8)編輯 收藏

          通過
          Runtime.getRuntime().addShutdownHook(Thread hook)
          方法可以給當前的進程注冊一個清理線程,當進程退出的時候,會執(zhí)行線程中的代碼。

          1、為了統(tǒng)一清理線程的實現(xiàn),可以做一個Destroyable接口,實現(xiàn)此接口的類都有一個destroy()方法,里面包含了該類的清理過程,例如關閉數(shù)據(jù)庫連接、關閉Socket連接等。
          Destroyable接口的代碼:
           1 package net.blogjava.amplifier;
           2 
           3 /**
           4  * 建立此接口的目的是為了實現(xiàn)程序退出時的清理
           5  * 在Java控制臺程序中,用戶可以通過關閉命令行窗口或按下Ctrl+C來結束程序的運行
           6  * 這時候應該保證資源能夠被正確釋放,例如數(shù)據(jù)庫的連接、Socket的連接應該關閉
           7  * 實現(xiàn)了本接口的類的實例引用可以由一個ShutdownHook線程來操作
           8  * 此線程在虛擬機退出時執(zhí)行,詳見Runtime.addShutdownHook()方法
           9  * @author amplifier
          10  *
          11  */
          12 public interface Destroyable {
          13     /**
          14      * 實現(xiàn)本接口的類需要實現(xiàn)此方法,方法中包含該類的清理代碼,
          15      * 例如關閉數(shù)據(jù)庫連接、關閉Socket連接等
          16      *
          17      */
          18     void destroy();
          19 }

          2、建立一個繼承于Thread的類ShutdownHook,里面的一個域是Destroyable實現(xiàn)類的引用,在該類的構造函數(shù)中可以傳入該Destroyable實現(xiàn)類。
          ShutdownHook的代碼:
           1 package net.blogjava.amplifier;
           2 
           3 public class ShutdownHook extends Thread {
           4 
           5     private Destroyable desObj;
           6     
           7     public ShutdownHook(Destroyable desObj){
           8         this.desObj = desObj;
           9             }
          10     
          11     @Override
          12     public void run() {
          13         if(this.desObj!=null){
          14             try{
          15                 this.desObj.destroy();
          16             }
          17             catch (Exception e) {
          18             }
          19         }
          20     }
          21 
          22     /** *//**
          23      * @param args
          24      */
          25     public static void main(String[] args) {
          26     
          27 
          28     }
          29 
          30 }

          3、在main()方法中注冊ShutdownHook。
           1     public static void main(String[] args){
           2         DestroyableImpl di = new DestroyableImpl();
           3         ShutdownHook sh = new ShutdownHook(di);
           4         Runtime.getRuntime().addShutdownHook(sh);
           5         Runtime.getRuntime().addShutdownHook(new Thread(){
           6             public void run(){
           7                 System.out.println("正在退出……");
           8             }
           9         });
          10         di.otherMethod();
          11     }
          posted @ 2007-04-12 10:08 amp@java 閱讀(2658) | 評論 (0)編輯 收藏

             原來用的是搜狗拼音輸入法,1.0還好,速度比較快,詞庫也比較全,到了2.0,速度慢得受不了,可能我的破電腦跟不上時代發(fā)展了,每次輸入一個詞都要等一會才能看到字,這樣用起來太沒意思了,于是把它卸了,裝了個最近新出的google拼音輸入法,還是1.0的,開始的時候居然和搜狗2.0一樣慢,差點就心涼了,不過用了一會發(fā)現(xiàn)速度快了很多,輸入的準確率也比較高,有一個搜狗拼音輸入法不具備的特點是它跟google賬戶聯(lián)系起來了,可以同步詞庫,所以到了其他電腦上也可以用自己的詞庫了,這個特點不錯,Google不愧是互聯(lián)網(wǎng)公司,什么都跟互聯(lián)網(wǎng)聯(lián)系起來,呵呵。
          Google,我看行!
          posted @ 2007-04-12 01:11 amp@java 閱讀(270) | 評論 (0)編輯 收藏

          在Tomcat 5.5.20里,把一個war包丟在Tomcat的webapps目錄下,啟動Tomcat后并不會自動啟動那個應用,需要進入Tomcat manager,手動啟動那個應用。為了實現(xiàn)應用的自動啟動,需要在Tomcat的conf/server.xml里的
          <Host></Host>
          之間加入一個
          <Context?docBase="應用的根"?path="應用程序相對webapps的目錄"?reloadable="當配置修改時是否需要自動重新加載,是則為true,否則為false"></Context>

          特此備忘!
          posted @ 2007-03-19 21:59 amp@java 閱讀(724) | 評論 (0)編輯 收藏

          JFreeChart的lib里有gnujaxp.jar包,添加到WEB-INF/lib里之后,解析faces-configv.xml的時候就會使用gnujaxp包里面的東西,會出現(xiàn)java.net.MalformedURLException: no protocol的異常,google也找不到相關的例子,仔細看了一下錯誤輸出,看到有個org.gnu.jaxp...之類的語句,才知道是這個包引起的錯誤,把它刪掉就好了。

          posted @ 2007-01-23 15:01 amp@java 閱讀(540) | 評論 (0)編輯 收藏

          僅列出標題
          共10頁: First 上一頁 2 3 4 5 6 7 8 9 10 下一頁 
          主站蜘蛛池模板: 亚东县| 都江堰市| 岑溪市| 黔江区| 汉寿县| 正定县| 梅河口市| 颍上县| 无极县| 招远市| 鹤庆县| 衡阳县| 荥经县| 巴彦县| 锡林浩特市| 股票| 乌兰浩特市| 得荣县| 伊吾县| 二手房| 建水县| 巫溪县| 盐源县| 庆元县| 宁化县| 阿图什市| 固阳县| 筠连县| 汉寿县| 新竹县| 泸溪县| 长兴县| 夏河县| 宁明县| 墨江| 德阳市| 弥渡县| 米泉市| 政和县| 平阴县| 凤台县|