求索

          Make it work, make it right, make it fast and make it open。
          posts - 8, comments - 11, trackbacks - 0, articles - 0
            BlogJava :: 首頁 :: 新隨筆 :: 聯系 :: 聚合  :: 管理

          2005年9月2日

          幾天之前就聽說Eclipse官方網站要改版,今天又看到了在EclipseZone上讓大家投票選首頁的Skin,網站上提供了三種皮膚。每個都不錯,不過我最喜歡第一個。

          eclipse.org (Click on the image for a bigger version)
          其他Skin:
          http://www.eclipsezone.com/java/forums/t44832.html
          自從我開始用Eclipse,看到的eclipse.org的頁面就一直是老樣子,原來內容少的時候用著還可以,現在內容多了很多,總感覺找起資料來非常費勁,有一種很亂的感覺。是該改一改了!

          posted @ 2005-09-02 12:54 Java求索 閱讀(674) | 評論 (0)編輯 收藏

          2005年8月14日

          感覺3.1好像昨天才剛剛發布,今天3.2M1就呈現在人們的面前。3.2M1在UI上的最大的改變就是啟動進度條終于集成到了Splash Screen上了。
          o_startup.png
          而傳說中的SWT.VERTICAL style Coolbars卻沒有出現。也許會在下一個版本中加入吧!期待中……。不過,Eclipse的UI真的是越來越漂亮了。
          更多New and Noteworthy
          下載

          posted @ 2005-08-14 08:05 Java求索 閱讀(906) | 評論 (1)編輯 收藏

          2005年7月27日

          我在試著使用Hyades測試項目的時候,知道了Eclipse還可以從控制臺啟動:
          在控制臺中輸入
          Java -XrunpiAgent -classpath ./startup.jar org.eclipse.core.launcher.Main -data ./my_workspace

          其中:
          -XrunpiAgent: 可以不加,這是為了啟動Hyades的Agent controller用的。
          -classpath ./startup.jar: 要是指定eclipse目錄下startup.jar文件的位置。
          -data ./workspace-new: -data常用的一個啟動參數,用來指定eclipse項目文件的位置。

          posted @ 2005-07-27 17:39 Java求索 閱讀(744) | 評論 (1)編輯 收藏

          2005年7月15日

          今天寫代碼涉及到大量的String操作,突然間想起一些關于String與其它class的不同之處,我是我以前在一篇文章上看到的,具體出處實在記不得了,現在加上一點兒自己的理解記錄下來,以作備忘。

          String的特殊之處就是它可以像int等簡單類型一樣,使用“=”來生成一個Object,而不必用new這個關鍵字,為什么呢?先來看下面的代碼:
          import junit.framework.TestCase;

          public class TestStringPool extends TestCase {

              
          private String string1;
              
          private String string2;

              
          protected void setUp() {
                  string1 
          = "abc";
                  string2 
          = "abc";
              }


              
          public void testStringPool() {
                  assertTrue(string1 
          == string2);
              }


              
          public void testNewString() {
                  string1 
          = new String("abc");
                  string2 
          = new String("abc");
                  assertFalse(
          "The objects don't use the 
                      string pool", string1 == string2);
              }

          }

          這里用到了JUnit,用來測試String pool

          第一個測試,說明兩個String是同一個Object,(==就是用來比較objectreference)。而第二個測試則說明兩個String Object不同。

          眾所周知,JavaString不可改變的字符串對象。為了提高效率,JavaString類提供了串池(String pool)。正如大家所看到的那樣,在第一個test中就使用了串池。當你重新聲明一個String型變量為abc時,將使用串池里原來的那個abc,而不重新分配內存,也就是說,string2string1將會指向同一塊內存。所以結果為true。在第二個test case中使用了普通對象的聲明方式,系統將會為string1string2各分配一塊內存。所以結果為false

           結論:我們比較兩個String的值,最好用equals()方法,而最好不要使用==。這就避免了一些不必要的麻煩。另外,聲明String的時候,最好用=,這樣就可以體現String pool的作用了。

          posted @ 2005-07-15 09:31 Java求索 閱讀(1152) | 評論 (1)編輯 收藏

          2005年7月13日

               原來一直聽說wordpress很好,是用php做的。由于前幾天開始接觸PHP,所以今天就試著在自己pc上安裝wordpress。我用的是PHP的最新版本,PHP5。剛開始我按照wordpress的readme文件一步步地安裝,首先apache http server,然后PHP5,wordpress。最后修改wp-config文件里的Database設置,打開瀏覽器,本以為可以大功告成了。但是運行/wp-admin目錄里的install.php文件,卻提示我"Your PHP installation appears to be missing the MySQL which is required for WordPress." 于是我就檢查mysql的DB_NAME,DB_USER,DB_PASSWORD,DB_HOST,都對啊。怎么會呢?

          百思不得其解,實在沒有辦法了,我就一遍一遍的查PHP的文檔,后來終于在FAQ里面找到了原因,原來是因為PHP5在默認情況下,不再提供mysql的支持,必須手動的設置。

          方法是:在PHP.ini文件激活php_mysql.dll擴展庫,此外,要將php_mysql.dll拷貝到適當的 %SYSTEMROOT% 目錄中.

          posted @ 2005-07-13 16:57 Java求索 閱讀(1216) | 評論 (1)編輯 收藏

          2005年7月6日

          維護一個J2EE項目,經常需要修改client端所連接的server. 最麻煩的就是每次都需要把client里面的所有的config和properties文件里的IP地址改一遍。如果不小心忘掉幾個,就會出現一些意想不到的錯誤。如果要避免這種麻煩的事情,可以用windows IP影射。

          具體方法:

          在windows安裝目錄修改\system32\drivers\etc\hosts:文件

          在文件里加上例如這樣的字段

          123.456.0.1           abcde

          前面一段為IP地址,后面為一個任意的server名字,可以是任意的字符串。然后,在所有的屬性文件里使用這個名字。以后再想更改server,就只需要修改hosts文件就行了。

          posted @ 2005-07-06 17:50 Java求索 閱讀(919) | 評論 (1)編輯 收藏

          JDK5.0已經release很久了,但一直沒機會好好學習一下,今天可有機會了。

          先來看一段代碼:

          public class TestDate {

              
          public static void main(String[] args) {
                  Date date 
          = new Date();
                  Object 
          object = new Object();
                  Timestamp stamp 
          = new Timestamp(date.getTime());
                  System.
          out.println("date&stamp:" + date.compareTo(stamp));
                  System.
          out.println("stamp&date:" + stamp.compareTo(date));
                  System.
          out.println("date&object:" + date.compareTo(object));
              }
          }


          這段代碼看上去很普通,但是如果用1.4和1.5分別編譯就會出現不同的結果。先來說用1.4編譯的情況:首先用1.4編譯,編譯器不會報錯,如果運行的話,前面兩個輸出語句會分別打印“0,0”,而第三個會throw一個ClassCast exception. 因為Date不能與object比較,但是為什么能編譯通過呢?察看JDK源代碼就可以知道了,Date實現了Comparable接口,這個接口中的CompareTo()方法的參數就是Object。所以Date也不得不有一個以Object為參數的CompareTo()方法,但是這個方法是沒有意義的,Date應該與Date比較,所以Date這個Class里面就出現了兩個ComparaTo方法,一個是以Date為參數,另一個是以Object為參數,這是1.4以前,不得不采用的方法。不然Date就沒法實現Comparable接口了。

          JDK1.5中Generics的出現解決了這個問題,如果看1.5中Date類的源代碼的話,就會發現它只有一個CompareTo()方法了,那它怎么來實現Comparable接口呢,這就是Generics的功勞了。在Date聲明時,實現Comparable接口是這么寫的:...Comparable...,并且Comparable接口的聲明是這樣的:Comparable。這個T代表Type。它可以是任何Object。Comparable的實現類只要說明T是什么具體類型就可以了。因此,Date就可以只有一個CompareTo()方法,又可以實現Comparable接口了。如果用1.5編譯上面的Code的話,就會發現這段Code是不能編譯通過的,編譯器會提示“Severity Description Resource In Folder Location Creation Time 2 The method compareTo(Date) in the type Date is not applicable for the arguments (Object)”,這就避免了1.4中出現的問題。我想如果使用了1.5以后咱們編寫代碼時,出現ClassCastException的幾率就會很小了,因為編譯器會替你發現這樣的錯誤。

          這就是Generics的好處了。

          但是還有一點值得考慮,如果我們去掉錯誤的那一行代碼,在1.5中編譯然后運行,會發現還有地方與1.4的不同。第一行輸出語句會打印1,而不是0,這說明1.5認為具有相同時間的timestamp和date是不同的,但1.4認為它們相同。我有看了一下1.5和1.4的源代碼,發現它們CompareTo(Date ...)的實現方法是不一樣的,可能問題就出現在這里。我沒有試著去讀它的代碼,等有時間,一定好好研究一下。

          最后,還有一個問題,如果用1.5編譯并運行,會throw一個ClassCastException,而用1.4則不會出現這個問題。我想這是因為timestamp繼承了Date的CompareTo()方法,所以一個timestamp就可以與Date比較了,但是應用了Generics以后這種情況是不允許的,而且代碼也沒有特殊處理,因此就會有Exception了。看來Generics也會帶來一些其他的問題。

          我想這種情況是可以避免的,原則就是只比較具有相同類型的兩個對象,而不與其父類或子類比較。如果必須比較的話,也應該用相應的方法轉化為相同的類,再進行比較。

          posted @ 2005-07-06 15:57 Java求索 閱讀(924) | 評論 (5)編輯 收藏

          2005年5月20日

               摘要: iBatis是一個簡單易學的ORM實現,相對于現在比較流行的Hibernate等實現,它的特點就是簡單,沒有一些復雜的不太實用的功能,而且它的速度也非常快的。這就是我選擇它的理由。iBatis的具體介紹,可以參考www.ibatis.com,并且網站上還提供中文文檔,學習起來真的很方便。  閱讀全文

          posted @ 2005-05-20 09:32 Java求索 閱讀(602) | 評論 (1)編輯 收藏

          主站蜘蛛池模板: 叙永县| 固始县| 雅安市| 湟中县| 陆河县| 康平县| 岑巩县| 北川| 嘉荫县| 吉隆县| 河曲县| 安吉县| 霍邱县| 武冈市| 收藏| 鹤庆县| 类乌齐县| 三台县| 麻阳| 宝鸡市| 四会市| 安阳市| 南丰县| 霍林郭勒市| 乐平市| 五台县| 西乡县| 涟源市| 张家港市| 太谷县| 屯昌县| 溧水县| 永济市| 湖南省| 伊金霍洛旗| 西平县| 东乡族自治县| 潮州市| 平定县| 仙游县| 湟中县|