求索

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

          2005年7月6日

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

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

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

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

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

          我在試著使用Hyades測(cè)試項(xiàng)目的時(shí)候,知道了Eclipse還可以從控制臺(tái)啟動(dòng):
          在控制臺(tái)中輸入
          Java -XrunpiAgent -classpath ./startup.jar org.eclipse.core.launcher.Main -data ./my_workspace

          其中:
          -XrunpiAgent: 可以不加,這是為了啟動(dòng)Hyades的Agent controller用的。
          -classpath ./startup.jar: 要是指定eclipse目錄下startup.jar文件的位置。
          -data ./workspace-new: -data常用的一個(gè)啟動(dòng)參數(shù),用來(lái)指定eclipse項(xiàng)目文件的位置。

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

          今天寫代碼涉及到大量的String操作,突然間想起一些關(guān)于String與其它c(diǎn)lass的不同之處,我是我以前在一篇文章上看到的,具體出處實(shí)在記不得了,現(xiàn)在加上一點(diǎn)兒自己的理解記錄下來(lái),以作備忘。

          String的特殊之處就是它可以像int等簡(jiǎn)單類型一樣,使用“=”來(lái)生成一個(gè)Object,而不必用new這個(gè)關(guān)鍵字,為什么呢?先來(lái)看下面的代碼:
          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,用來(lái)測(cè)試String pool

          第一個(gè)測(cè)試,說(shuō)明兩個(gè)String是同一個(gè)Object,(==就是用來(lái)比較objectreference)。而第二個(gè)測(cè)試則說(shuō)明兩個(gè)String Object不同。

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

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

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

               原來(lái)一直聽說(shuō)wordpress很好,是用php做的。由于前幾天開始接觸PHP,所以今天就試著在自己pc上安裝wordpress。我用的是PHP的最新版本,PHP5。剛開始我按照wordpress的readme文件一步步地安裝,首先apache http server,然后PHP5,wordpress。最后修改wp-config文件里的Database設(shè)置,打開瀏覽器,本以為可以大功告成了。但是運(yùn)行/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,都對(duì)啊。怎么會(huì)呢?

          百思不得其解,實(shí)在沒有辦法了,我就一遍一遍的查PHP的文檔,后來(lái)終于在FAQ里面找到了原因,原來(lái)是因?yàn)镻HP5在默認(rèn)情況下,不再提供mysql的支持,必須手動(dòng)的設(shè)置。

          方法是:在PHP.ini文件激活php_mysql.dll擴(kuò)展庫(kù),此外,要將php_mysql.dll拷貝到適當(dāng)?shù)?%SYSTEMROOT% 目錄中.

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

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

          具體方法:

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

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

          123.456.0.1           abcde

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

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

          JDK5.0已經(jīng)release很久了,但一直沒機(jī)會(huì)好好學(xué)習(xí)一下,今天可有機(jī)會(huì)了。

          先來(lái)看一段代碼:

          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分別編譯就會(huì)出現(xiàn)不同的結(jié)果。先來(lái)說(shuō)用1.4編譯的情況:首先用1.4編譯,編譯器不會(huì)報(bào)錯(cuò),如果運(yùn)行的話,前面兩個(gè)輸出語(yǔ)句會(huì)分別打印“0,0”,而第三個(gè)會(huì)throw一個(gè)ClassCast exception. 因?yàn)镈ate不能與object比較,但是為什么能編譯通過呢?察看JDK源代碼就可以知道了,Date實(shí)現(xiàn)了Comparable接口,這個(gè)接口中的CompareTo()方法的參數(shù)就是Object。所以Date也不得不有一個(gè)以O(shè)bject為參數(shù)的CompareTo()方法,但是這個(gè)方法是沒有意義的,Date應(yīng)該與Date比較,所以Date這個(gè)Class里面就出現(xiàn)了兩個(gè)ComparaTo方法,一個(gè)是以Date為參數(shù),另一個(gè)是以O(shè)bject為參數(shù),這是1.4以前,不得不采用的方法。不然Date就沒法實(shí)現(xiàn)Comparable接口了。

          JDK1.5中Generics的出現(xiàn)解決了這個(gè)問題,如果看1.5中Date類的源代碼的話,就會(huì)發(fā)現(xiàn)它只有一個(gè)CompareTo()方法了,那它怎么來(lái)實(shí)現(xiàn)Comparable接口呢,這就是Generics的功勞了。在Date聲明時(shí),實(shí)現(xiàn)Comparable接口是這么寫的:...Comparable...,并且Comparable接口的聲明是這樣的:Comparable。這個(gè)T代表Type。它可以是任何Object。Comparable的實(shí)現(xiàn)類只要說(shuō)明T是什么具體類型就可以了。因此,Date就可以只有一個(gè)CompareTo()方法,又可以實(shí)現(xiàn)Comparable接口了。如果用1.5編譯上面的Code的話,就會(huì)發(fā)現(xiàn)這段Code是不能編譯通過的,編譯器會(huì)提示“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中出現(xiàn)的問題。我想如果使用了1.5以后咱們編寫代碼時(shí),出現(xiàn)ClassCastException的幾率就會(huì)很小了,因?yàn)榫幾g器會(huì)替你發(fā)現(xiàn)這樣的錯(cuò)誤。

          這就是Generics的好處了。

          但是還有一點(diǎn)值得考慮,如果我們?nèi)サ翦e(cuò)誤的那一行代碼,在1.5中編譯然后運(yùn)行,會(huì)發(fā)現(xiàn)還有地方與1.4的不同。第一行輸出語(yǔ)句會(huì)打印1,而不是0,這說(shuō)明1.5認(rèn)為具有相同時(shí)間的timestamp和date是不同的,但1.4認(rèn)為它們相同。我有看了一下1.5和1.4的源代碼,發(fā)現(xiàn)它們CompareTo(Date ...)的實(shí)現(xiàn)方法是不一樣的,可能問題就出現(xiàn)在這里。我沒有試著去讀它的代碼,等有時(shí)間,一定好好研究一下。

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

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

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

          主站蜘蛛池模板: 香港 | 民权县| 鄢陵县| 桐庐县| 丽水市| 大名县| 宜章县| 香港 | 吴川市| 蕉岭县| 南涧| 北京市| 云和县| 宣城市| 梧州市| 黔西县| 高陵县| 信宜市| 宣恩县| 徐闻县| 黄冈市| 松溪县| 海宁市| 翼城县| 东乡族自治县| 邢台市| 隆子县| 茶陵县| 吴江市| 九台市| 陇西县| 蒙山县| 孝义市| 湖南省| 灵台县| 邵阳县| 洛川县| 大田县| 五华县| 三穗县| 泾阳县|