我的JAVA窩! - BlogJava

          2006年12月19日

          Got Source Code of Kettle

            Using Kettle for more than one year in my project, but still have no time to read the source code of Kettle untill couple of days before (busy or actually lazy?). Yeah, I am a lazy dog...
            Since the source code is not available directly from the Pentato website, I had no choice but to go thru some posts on the Pentaho forum one by one. It didn't take me much effor before I found the relevant post, thx god:) The source code of Kettle now is maintained in SVN of JavaForge, and anybody "can get the latest(subversion trunk) code changes with on this URL: http://svn.javaforge.com/svn/Kettle/trunk", the username is "anonymous" and password is "anon".
            Besides, I had to download a SVN tool. I am using TortoiseSVN in my company, and the ux satisfied me, so I chose it again.
            It taked about 30 minutes to check out all the source code (still very fast I think, my bandwidth is 2M).
            When it done, I imported it as a general project into eclipse, and one thing surprised me a little bit was that, I didn't have to compile the source code or import some jars even than execute a Ant target manually as I built the source code of Spring before. Hah, Kettle is developed by using eclipse?! (you can find some eclipse project files in the trunk).
            Anyway, the work was going on smoothly, no more than 40 minutes. Now I can debug the Kettle, and from my experience, in some scenarios Kettle doesn't work in good performace than I expect, and even sometimes it runs into some bugs when I do the multitudinous insert or update operations. Here I get the opportunity to look into the code and figure out the problem.

            Keep moving forward...

          posted @ 2008-09-15 18:24 J2S 閱讀(1602) | 評(píng)論 (3)編輯 收藏

          集合框架類筆記的補(bǔ)充

          java .util.*定義了一系列的接口和類,告訴我們用什么類NEW出一個(gè)對(duì)象,可以進(jìn)行超越數(shù)組的操作。
          (注:JAVA1.5對(duì)JAVA1.4的最大改進(jìn)就是增加了對(duì)范型的支持)

          Set接口是數(shù)學(xué)中集合的概念:其元素?zé)o序,且不可重復(fù)。(正好與List對(duì)應(yīng))

          !!注意數(shù)組和集合的區(qū)別:數(shù)組中只能存簡(jiǎn)單數(shù)據(jù)類型。Collection接口和Map接口只能存對(duì)象。

          只有List可用get和size。而Set則不可用(因其無(wú)序)。

          集合中每一個(gè)元素都有對(duì)象,如有字符串要經(jīng)過(guò)強(qiáng)制類型轉(zhuǎn)換。

          Collections是工具類,所有方法均為有用方法,且方法為static。


          Collections.Sort()分為兩部分,一部分為排序規(guī)則;一部分為排序算法。
          規(guī)則用來(lái)判斷對(duì)象;算法是考慮如何排序。
          對(duì)于自定義對(duì)象,Sort不知道規(guī)則,所以無(wú)法比較。這種情況下一定要定義排序規(guī)則。方式有兩種:
          java.lang下面有一個(gè)接口:Comparable(可比較的)
          可以讓自定義對(duì)象實(shí)現(xiàn)一個(gè)接口,這個(gè)接口只有一個(gè)方法comparableTo(Object o)
          其規(guī)則是當(dāng)前對(duì)象與o對(duì)象進(jìn)行比較,其返回一個(gè)int值,系統(tǒng)根據(jù)此值來(lái)進(jìn)行排序。
          如 當(dāng)前對(duì)象>o對(duì)象,則返回值>0;(可將返回值定義為1)
          如 當(dāng)前對(duì)象=o對(duì)象,則返回值=0;
          如 當(dāng)前對(duì)象<o對(duì)象,則返回值〈0。(可將返回值定義為-1)
          看TestArraylist的java代碼。
          我們通過(guò)返回值1和-1位置的調(diào)換來(lái)實(shí)現(xiàn)升序和降序排列的轉(zhuǎn)換。

          java.util下有一個(gè)Comparator(比較器)
          它擁有compare(),用來(lái)比較兩個(gè)方法。
          要生成比較器,則用Sort中Sort(List,List(Compate))
          第二種方法更靈活,且在運(yùn)行的時(shí)候不用編譯。

          注意:要想實(shí)現(xiàn)comparTo()就必須在主方法中寫(xiě)上implement comparable.


          集合的最大缺點(diǎn)是無(wú)法進(jìn)行類型判定(這個(gè)缺點(diǎn)在JAVA1.5中已經(jīng)解決),這樣就可能出現(xiàn)因?yàn)轭愋筒煌霈F(xiàn)類型錯(cuò)誤。
          解決的方法是添加類型的判斷。

          而在LinkedList的底層是一種雙向循環(huán)鏈表。在此鏈表上每一個(gè)數(shù)據(jù)節(jié)點(diǎn)都由三部分組成:前指針(指向前面的節(jié)點(diǎn)的位置),數(shù)據(jù),后指針(指向后面的節(jié)點(diǎn)的位置)。最后一個(gè)節(jié)點(diǎn)的后指針指向第一個(gè)節(jié)點(diǎn)的前指針,形成一個(gè)循環(huán)。

          LinkedList經(jīng)常用在增刪操作較多而查詢操作很少的情況下:隊(duì)列和堆棧。
          隊(duì)列:先進(jìn)先出的數(shù)據(jù)結(jié)構(gòu)。
          堆棧:后進(jìn)先出的數(shù)據(jù)結(jié)構(gòu)。
          注意:使用堆棧的時(shí)候一定不能提供方法讓不是最后一個(gè)元素的元素獲得出棧的機(jī)會(huì)。
          LinkedList提供以下方法:(ArrayList無(wú)此類方法)
          addFirst();
          removeFirst();
          addLast();
          removeLast();


          Push用addFirst();pop用removeFirst(),實(shí)現(xiàn)后進(jìn)先出。
          用isEmpty()--其父類的方法,來(lái)判斷棧是否為空。

          在隊(duì)列中,put為入隊(duì)列操作,get為出隊(duì)列操作。
          Put用addFirst(),get用removeLast()實(shí)現(xiàn)隊(duì)列。

          List接口的實(shí)現(xiàn)類(Vector)(與ArrayList相似,區(qū)別是Vector是重量級(jí)的組件,使用使消耗的資源比較多。)
          結(jié)論:在考慮并發(fā)的情況下用Vector(保證線程的安全)。
          在不考慮并發(fā)的情況下用ArrayList(不能保證線程的安全)。

          面試經(jīng)驗(yàn)(知識(shí)點(diǎn)):
          java.util.stack(stack即為堆棧)的父類為Vector。可是stack的父類是最不應(yīng)該為Vector的。因?yàn)閂ector的底層是數(shù)組,且Vector有g(shù)et方法(意味著它可能訪問(wèn)到并不屬于最后一個(gè)位置元素的其他元素,很不安全)。
          對(duì)于堆棧和隊(duì)列只能用push類和get類。
          Stack類以后不要輕易使用。
          !??!實(shí)現(xiàn)堆棧一定要用LinkedList。


          (在JAVA1.5中,collection有queue來(lái)實(shí)現(xiàn)隊(duì)列。)








          posted @ 2007-03-19 22:04 J2S 閱讀(570) | 評(píng)論 (1)編輯 收藏

          關(guān)于集合框架類的學(xué)習(xí)筆記

          集合類

          集合類的對(duì)象是用來(lái)管理其他若干對(duì)象的,它類似于C++標(biāo)準(zhǔn)模板庫(kù)中的容器,不過(guò)在JAVA的集合類的對(duì)象中可以用來(lái)存放多種類型的對(duì)象。

          接口和類共同構(gòu)成了一個(gè)集合框架,集合的概念,一個(gè)對(duì)象可以裝載多個(gè)對(duì)象,這個(gè)對(duì)象就是集合對(duì)象。

          集合框架

          1,接口

          Collection 用來(lái)管理多個(gè)對(duì)象,集合中的每個(gè)元素都是對(duì)象。

          Map,Map中沒(méi)有對(duì)象,而是鍵值對(duì),由Key,value組成的鍵值對(duì),Key是不可重復(fù)的。value是可以相同的,一個(gè)Key和一個(gè)value一一對(duì)應(yīng)。

          集合中用到的類,接口在java.util包中,在使用時(shí)注意將其引入import。

          Collection 接口(以下介紹其子接口)

          1)List 一個(gè)List的實(shí)現(xiàn)類的對(duì)象在管理多個(gè)對(duì)象時(shí)會(huì)按順序組織對(duì)象(即按照將對(duì)象放入的順序存儲(chǔ)),List實(shí)現(xiàn)類的對(duì)象是由順序的。(注意,順序和排序的區(qū)別)

          2)Set 一個(gè)Set的實(shí)現(xiàn)類表示一個(gè)數(shù)學(xué)概念上的集合,Set的實(shí)現(xiàn)類的對(duì)象中的元素是無(wú)順序的,也就是不會(huì)按照輸入順序來(lái)存放,Set的實(shí)現(xiàn)類對(duì)象中的元素是不重復(fù)的。

          3)SortedSet,他是Set的子接口,他的實(shí)現(xiàn)類會(huì)對(duì)集合中的元素進(jìn)行排序。但是要指定排序規(guī)則,他會(huì)按排序規(guī)則進(jìn)行排序。

          Map 接口(以下介紹其子接口)

          SortedMap,這個(gè)接口的實(shí)現(xiàn)類同樣可以實(shí)現(xiàn),不過(guò)是對(duì)鍵值對(duì)中的Key進(jìn)行排序,這個(gè)接口的實(shí)現(xiàn)類也是要指定排序規(guī)
          則的。

          JDK1.4中的集合是不安全的對(duì)象,JDK5.0中解決了這個(gè)問(wèn)題。

          List接口的實(shí)現(xiàn)類

          1> ArrayList是接近于功能的集合類,ArryList的實(shí)質(zhì)就是一個(gè)會(huì)自動(dòng)增長(zhǎng)的數(shù)組,ArrayList是用封裝的數(shù)組來(lái)實(shí)現(xiàn)的List接口的。

          Collection的實(shí)現(xiàn)類對(duì)象的遍歷方式是用迭代來(lái)實(shí)現(xiàn)的。
          在使用迭代器時(shí)先要活得一個(gè)迭代器的對(duì)象,Iterator(迭代器接口)這是一個(gè)接口,迭代器是在集合類中實(shí)現(xiàn)的,也
          就是說(shuō),他是一個(gè)內(nèi)部類(匿名內(nèi)部類)實(shí)現(xiàn)的。
          Iterator接口中定義的常用方法方法hasNext(),next()。
          hasNext(),這個(gè)方法會(huì)使用一個(gè)游標(biāo),并通過(guò)判斷游標(biāo)指向的位置是否存放有對(duì)象。
          next()方法也是Iterator接口中定義好的方法,這個(gè)方法會(huì)使游標(biāo)指向下一個(gè)元素的位置,游標(biāo)會(huì)跳過(guò)第一個(gè)元素,并
          返回其中的內(nèi)容。

          Collections 這是一個(gè)工具類,也是java.util包中的,這個(gè)類中的sort(list接口的實(shí)現(xiàn)類的對(duì)象)方法,其參數(shù)是一個(gè)集合類的對(duì)象,這個(gè)方法使用來(lái)對(duì)集合類的對(duì)象進(jìn)行排序的。以后,我將以集合這個(gè)名字來(lái)稱呼集合類的對(duì)象。,對(duì)于
          字符串對(duì)象內(nèi)容的集合來(lái)說(shuō)會(huì)按字典順序排序(升序),對(duì)于數(shù)字內(nèi)容的集合排序也會(huì)按照升序排序。

          排序可一份為兩部分內(nèi)容,一個(gè)是排序的規(guī)則,也就是按照什么來(lái)進(jìn)行排序,并且排成什么樣的順序。
          第二個(gè)就是排序的算法,他決定了排序的效率。

          在對(duì)自定義的集合內(nèi)容類型排序時(shí),需要先定義那個(gè)類型的排序規(guī)則。

          Comparable接口,這個(gè)接口中只定義了一個(gè)compareTo(Object o),方法的返回至類型是整型,如果當(dāng)前對(duì)象大于參數(shù)對(duì)象就返回正數(shù),當(dāng)前對(duì)象等于參數(shù)對(duì)象是就返回0,當(dāng)前對(duì)象小于參數(shù)對(duì)象時(shí)就返回負(fù)值,這樣寫(xiě)就是升序排列,反之則是進(jìn)行降序排列,在實(shí)現(xiàn)這個(gè)接口中的方法時(shí),返回值定義方式,只有這兩種。

          根據(jù)指定類型的排序規(guī)則實(shí)現(xiàn)了Comparable接口,那么就可以對(duì)存有這個(gè)類型的集合進(jìn)行整體排序。Comparable接口,
          也叫做可比較接口。這個(gè)接口在java.lang包下。只要實(shí)現(xiàn)了這個(gè)接口,就是可排序的

          接下來(lái)介紹另外一種對(duì)自定義類型對(duì)象的集合整體排序的方法,也就是實(shí)現(xiàn)比較器接口(Comparator),這個(gè)接口中定義了一個(gè)compare(Object o1,Object o2)方法來(lái)比較兩個(gè)對(duì)象,這個(gè)方法的返回值定義和上面介紹的那個(gè)方法是一樣。

          注意:在API,幫助文檔中以上兩個(gè)方法的參數(shù)類型是T,這代表的模板類型,也就是集合中存放的內(nèi)容的類型,在JDK1.4中其參數(shù)就是Object類型,模板類型的詳細(xì)內(nèi)容會(huì)在最后的JDK5.0新特性中講到。

          Comparator接口可以在匿名內(nèi)部類中實(shí)現(xiàn),Collections 中的sort(集合了的對(duì)象,比較器)方法,可以對(duì)自定義類型內(nèi)容的集合進(jìn)行整體排序。

          2>LinkedList,它是List接口的實(shí)現(xiàn)類,其底層是用雙向循環(huán)鏈表來(lái)實(shí)現(xiàn)的

          注意:ArrayList的查詢效率比較高,增刪動(dòng)作的效率比較差,適用于查詢比較頻繁,增刪動(dòng)作較少的元素管理的集合。
          ? ? ?LinkedList的查詢效率低,但是增刪效率很高。適用于增刪動(dòng)作的比較頻繁,查詢次數(shù)較少的元素管理集合。

          ArrayList,LinkedList都是線程不安全的
          實(shí)現(xiàn)堆棧 1,數(shù)組(ArrayList,增刪效率比較低,不適合)
          ? ? ? ? 2,LinkedList實(shí)現(xiàn)堆棧的好方法
          ? ? ? ? 3,java.util.Stack類,Stack是Vector的子類,Vector類是一個(gè)線程安全的(是一個(gè)重量級(jí)的類),并繼承
          了Vector的方法,Verctor類和ArrayList的功能近乎相同。(不推薦使用Stack類來(lái)實(shí)現(xiàn)堆棧)。

          Set接口的實(shí)現(xiàn)類

          HashSet

          Set的實(shí)現(xiàn)類的集合對(duì)象中不能夠有重復(fù)元素,HashSet也一樣他是使用了一種標(biāo)識(shí)來(lái)確定元素的不重復(fù),HashSet用一種算法來(lái)保證HashSet中的元素是不重復(fù)的,HashSet的底層實(shí)現(xiàn)還是數(shù)組

          Object類中的hashCode()的方法是所有子類都會(huì)繼承這個(gè)方法,這個(gè)方法會(huì)用Hash算法算出一個(gè)Hash(哈希)碼值返回,HashSet會(huì)用Hash碼值去和數(shù)組長(zhǎng)度取模,模(這個(gè)模就是對(duì)象要存放在數(shù)組中的位置)相同時(shí)才會(huì)判斷數(shù)組中的元素和要加入的對(duì)象的內(nèi)容是否相同,如果不同才會(huì)添加進(jìn)去。

          Hash算法是一種散列算法。

          注意:所以要存入HashSet的集合對(duì)象中的自定義類必須覆蓋hashCode(),equals()兩個(gè)方法,才能保證集合中元素容不重復(fù)。在覆蓋和hashCode()方法時(shí),要使相同對(duì)象的hashCode()方法返回相同值,覆蓋equals()方法再判斷其內(nèi)容。為了保證效率,所以在覆蓋hashCode()方法時(shí),也要盡量使不同對(duì)象盡量返回不同的Hash碼值。

          如果數(shù)組中的元素和要加入的對(duì)象的hashCode()返回了相同的Hash值(相同對(duì)象),才會(huì)用equals()方法來(lái)判斷兩個(gè)對(duì)象的內(nèi)容是否相同。

          SortedSet接口是Set的子接口。
          TreeSet是SortedSet接口的實(shí)現(xiàn)類,他可以對(duì)集合中的元素進(jìn)行排序。
          要存放在TreeSet中自定義類的對(duì)象,這個(gè)類要么是已經(jīng)實(shí)現(xiàn)了Comparable接口,要么是能給出Comparator比較器,TreeSet可以自動(dòng)過(guò)濾掉重復(fù)元素所以不用重載hashCode()方法,TreeSet會(huì)根據(jù)比較規(guī)則判斷元素內(nèi)容是否相同,TreeSet會(huì)在元素存入世就進(jìn)行了排序。(在TreeSet給出排序規(guī)則時(shí),一定要注意對(duì)象內(nèi)容相等的條件,一定要注意在主觀的認(rèn)為兩個(gè)對(duì)象內(nèi)容相同時(shí),才可以使用比較少的條件來(lái)進(jìn)行判斷)

          要排序時(shí)才使用TreeSet類(存儲(chǔ)效率比較低),HashSet的存儲(chǔ)效率比較高,在需要為HashSet的對(duì)象排序時(shí),就可以把HashSet中的元素放入TreeSet。

          posted @ 2007-03-19 21:55 J2S 閱讀(1192) | 評(píng)論 (0)編輯 收藏

          如何最快成為有錢(qián)人

          通向財(cái)富的道路有千萬(wàn)條,但條條道路都驚人地相似。而且令人詫異的是,拼命積累財(cái)富的男人也驚人地相似,他們?cè)谛睦硖卣魃暇拖袷峭粋€(gè)模子壓出來(lái)的一樣。

          ??? 百萬(wàn)富翁有諸多特征,絕大多數(shù)白手起家的百萬(wàn)富翁都是出身貧窮的人,積累金錢(qián)對(duì)于那些一貧如洗的人有著不可抗拒的力量。

          ??? 這些男人是很有冒險(xiǎn)精神的,他們敢于冒那些腳踏實(shí)地、像苦工似地掙錢(qián)的男人所不敢涉足的風(fēng)險(xiǎn)。他們是精明強(qiáng)干的,他們很有遠(yuǎn)見(jiàn)卓識(shí);他們的天才在于能知道如何利用別人的主意來(lái)賺錢(qián)。這是賺錢(qián)的真正秘訣——利用別人創(chuàng)造性的思想,并且把它們運(yùn)用到實(shí)際中去。

          ??? 這樣的男人很容易和別人打成一片。他們很有洞察力,他們會(huì)觀察別人,知道如何通過(guò)與別人打交道來(lái)獲得他們所需要的東西,也知道別人對(duì)他們的反應(yīng)如何。追求財(cái)富的人內(nèi)心深處有著強(qiáng)烈的孤獨(dú)感,但他們并不因此而去追求政治上的名望和成就。賺錢(qián)是他們絕對(duì)全神貫注的追求。這給他們勝于一切的最大滿足和快樂(lè)。

          ??? 1、讓金錢(qián)成為你的情人。

          ??? 別在性愛(ài)上浪費(fèi)時(shí)間和精力,你會(huì)發(fā)現(xiàn),從長(zhǎng)遠(yuǎn)來(lái)看,賺錢(qián)比性愛(ài)更讓人興奮,這可不是空頭支票。尋求需求,滿足需求。追求財(cái)富者的最大天分是瞄準(zhǔn)時(shí)機(jī),預(yù)測(cè)所需。大眾牌小汽車(chē),美國(guó)快餐食品都是滿足人們需要的例子。

          ??? 2、謹(jǐn)防從眾心理。

          ??? 群眾心理弊病多,即使它是正確的,追隨它一般也沒(méi)有什么利潤(rùn)。在一般情況下,摘取經(jīng)濟(jì)精華的都是帶頭人而不是追隨者。

          ??? 3、當(dāng)雇主而不是雇員。

          ??? 那些滿足于雇主付給他們高薪的男人并不是真正追求財(cái)富的人,他們的目標(biāo)僅僅是成就感或權(quán)力欲。你最好去當(dāng)老板,即使雇員只有你一個(gè),賺的錢(qián)也會(huì)比任何一個(gè)公司付給你的多。

          ??? 4、發(fā)展你的支配技巧。

          ??? 大多數(shù)人認(rèn)為,支配別人,讓他們?nèi)プ瞿阆胱屗麄兏傻氖虑榉浅毫?。然而,?shí)際情況是,我們時(shí)時(shí)都在自己沒(méi)有意識(shí)到的情況下支配著別人。

          ??? 5、追求財(cái)富的人常常是直覺(jué)地支配著別人,而且是個(gè)行家里手。
          ?

          posted @ 2007-02-21 15:40 J2S 閱讀(235) | 評(píng)論 (0)編輯 收藏

          終于解脫了...

          ????????下午答辯,還算順利,雖然花了半天時(shí)間,沒(méi)任何技術(shù)含量,但是終于解脫了...

          ?????????五天來(lái)平均每天也就睡了不到兩小時(shí),現(xiàn)在真有點(diǎn)頂不住了(意識(shí)都模糊了),但是為了把生物鐘調(diào)整過(guò)來(lái),還是撐一會(huì)吧。突然閑下來(lái)卻不知道做點(diǎn)什么,20號(hào)有個(gè)面試,等會(huì)沒(méi)事把Struts那本書(shū)再看看。

          ?????????接下來(lái)都不知道寫(xiě)些什么東西,就把實(shí)踐中的一個(gè)弄明白的一個(gè)小知識(shí)記一下:
          在JDBC中,對(duì)于游標(biāo)對(duì)象ResultSet的getString()方法也是用游標(biāo)的模式來(lái)讀取數(shù)據(jù)的(不知道這樣描敘對(duì)不對(duì)),即,你要取字段1,字段2,就必須先調(diào)用rs.getString(1),再調(diào)用rs.getString(2),不能反過(guò)來(lái),否則不能正確讀取。原因還不知道,有空了研究一下。

          posted @ 2007-01-18 19:56 J2S 閱讀(388) | 評(píng)論 (3)編輯 收藏

          期末實(shí)踐中......

          今天成績(jī)都出來(lái)了,結(jié)果還是比較理想的,以后會(huì)相對(duì)輕松些。

          更新日志都是半個(gè)月前的事了,當(dāng)時(shí)還說(shuō)以后每天都更新,真是慚愧

          這幾天都是忙考試,弄得心力憔悴,今天晚上終于閑下來(lái),繼續(xù)寫(xiě)實(shí)踐的程序。

          剛剛解決了前幾個(gè)小時(shí)的困惑,現(xiàn)在對(duì)JAVA的內(nèi)部類機(jī)制又有了更新的認(rèn)識(shí)(興奮中......),廢話少說(shuō),來(lái)看代碼:

          package tanzhang;

          import java.sql.Connection;
          import java.sql.DriverManager;
          import java.sql.ResultSet;
          import java.sql.Statement;

          import org.eclipse.swt.SWT;
          import org.eclipse.swt.events.SelectionAdapter;
          import org.eclipse.swt.events.SelectionEvent;
          import org.eclipse.swt.widgets.Button;
          import org.eclipse.swt.widgets.Combo;
          import org.eclipse.swt.widgets.Composite;
          import org.eclipse.swt.widgets.Display;
          import org.eclipse.swt.widgets.Label;
          import org.eclipse.swt.widgets.Shell;
          import org.eclipse.swt.widgets.TabFolder;
          import org.eclipse.swt.widgets.Table;
          import org.eclipse.swt.widgets.TableColumn;
          import org.eclipse.swt.widgets.TableItem;
          import org.eclipse.swt.widgets.Text;
          import com.swtdesigner.SWTResourceManager;
          import org.eclipse.swt.widgets.TabItem;
          public class tanzhang {

          ?/**
          ? * Launch the application
          ? * @param args
          ? */
          ?private static Table table;
          ?private static TableItem newItemTableItem;

          ?
          ?public static void main(String[] args) {
          ??final Display display = Display.getDefault();
          ??final Shell shell = new Shell();
          ??shell.setImage(SWTResourceManager.getImage(tanzhang.class, "/org/eclipse/ui/internal/forms/widgets/progress.gif"));
          ??shell.setSize(774, 514);
          ??shell.setText("宣城供電局消弧線圈臺(tái)帳");
          ............
          ............
          ............
          ??final Combo combo_1 = new Combo(composite, SWT.READ_ONLY);
          ??combo_1.addSelectionListener(new SelectionAdapter() {
          ???public void widgetSelected(SelectionEvent arg0) {
          ????String str=combo_1.getText();
          ????try{?
          ?????String dbUrl = "jdbc:odbc:test";
          ?????Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
          ?????Connection conn = DriverManager.getConnection(dbUrl, "", "");
          ?????Statement stmt=conn.createStatement();
          ?????String sql="SELECT * from test where 單元名稱="+str;
          ?????ResultSet rs=stmt.executeQuery(sql);
          ?????
          ?????if(rs.next()){
          ?????for(int i=0;i<=4;i++){?????????
          ???????newItemTableItem.setText(i,rs.getString(i+1));??
          ???????}
          ?????
          ?????rs.close();
          ?????stmt.close();
          ?????conn.close();
          ?????}
          ????}catch(Exception e){}
          ????
          ???}
          ??});
          ............
          ............
          ............

          ??table = new Table(composite_1, SWT.VIRTUAL | SWT.FULL_SELECTION | SWT.BORDER | SWT.HIDE_SELECTION);

          ??table.setLinesVisible(true);
          ??table.setHeaderVisible(true);
          ??table.setBounds(0, 0, 678, 80);
          ............
          ............
          ............

          ???剛開(kāi)始是用final修飾table和newItemTableItem,但是“newItemTableItem.setText(i,rs.getString(i+1));”這行(代碼中蘭色那句)會(huì)報(bào)錯(cuò),編譯器提示“無(wú)法解析newItemTableItem”。我的第一反應(yīng)是監(jiān)聽(tīng)器的位置放得不對(duì)。翻了一下書(shū),說(shuō)SWT/JFace事件代碼中要訪問(wèn)類中變量有三種方法:(1)加final;(2)將變量變?yōu)轭惖膶?shí)例變量;(3)將事件代碼寫(xiě)成命名內(nèi)部類,然后通過(guò)構(gòu)造函數(shù)的參數(shù)來(lái)傳入。
          ???想了想好象只有第三種方法值得試試,但是后來(lái)想起來(lái)newItemTableItem是個(gè)對(duì)象,傳入以后卻不知道怎么轉(zhuǎn)換類型,呆了...
          ???最后做了個(gè)新的程序試了試,在新程序里是成功的,就是要把newItemTableItem在main函數(shù)外申明其為private static,但是在舊的程序中,編譯器是通過(guò)了,但是進(jìn)行連接數(shù)據(jù)庫(kù)查詢的時(shí)候,出現(xiàn)“Fatal Exception...”的錯(cuò)誤,當(dāng)時(shí)一下就蒙掉了??!完全一樣的,怎么會(huì)不成功。
          ???百般無(wú)奈以后,----當(dāng)然之前肯定是深思熟慮----終于腦海中閃出了傳說(shuō)中的“靈感”!于是馬上把table也定義為private static......OK!???勝利總是來(lái)得那么突然,那瞬間的感覺(jué)就象90分鐘打進(jìn)的金球...

          ???當(dāng)然到現(xiàn)在,我還沒(méi)找到確切的原因。只能用自己的話總結(jié)一下:(1)匿名內(nèi)部類中的方法是不能訪問(wèn)其他方法中定義的變量的(包括實(shí)例對(duì)象),要訪問(wèn)必須在類中將其定義為static類型。(2)TableItem是Table的子控件,要定義TableItem為static也要同時(shí)把Table定義為static類型。

          ???給自己一個(gè)任務(wù):研究JAVA的內(nèi)部類機(jī)制;研究SWT中父子控件關(guān)系的機(jī)制!

          ???看看《Thinking in JAVA》或許會(huì)是個(gè)不錯(cuò)的選擇,當(dāng)然還有《The Definitive Guide to SWT and JFace》。

          ?

          posted @ 2007-01-15 02:41 J2S 閱讀(314) | 評(píng)論 (0)編輯 收藏

          考完試了!

          昨天終于考完了!
          都大四了,還用最變態(tài)的老師(三大魔頭)來(lái)折磨我們,對(duì)于這學(xué)校真無(wú)語(yǔ)了......

          現(xiàn)在終于可以繼續(xù)我的自由學(xué)習(xí)之旅,以后一定每天上來(lái)更新blog。
          時(shí)間不多了,既然已經(jīng)飽受過(guò)往昏昏惑惑之疾、因循茍且之痛,那么現(xiàn)在就要珍惜分分秒秒,彌補(bǔ)差距。

          今天下午花了兩個(gè)小時(shí)把XML SPY教程學(xué)了一遍(沒(méi)想到這么快能搞定),我用的是2007,學(xué)的是2005,但基本上沒(méi)區(qū)別,進(jìn)度還是蠻快的。最后估計(jì)那個(gè)xml schema文件沒(méi)寫(xiě)好,最后用xslt轉(zhuǎn)換沒(méi)成功。不過(guò)晚上準(zhǔn)備再試一次,權(quán)當(dāng)做復(fù)習(xí)。
          以前都用記事本寫(xiě)xml,現(xiàn)在用了xml spy感覺(jué)真是太好用了,尤其是xml數(shù)據(jù)與數(shù)據(jù)庫(kù)的互相轉(zhuǎn)換。而且還可以用工程來(lái)管理(還沒(méi)試呢),對(duì)于開(kāi)發(fā)大一點(diǎn)的程序無(wú)疑方便了許多。

          晚上再準(zhǔn)備把struts那本書(shū)看看。

          對(duì)了,今天元旦,祝大家新年快樂(lè),祈禱家人在新的一年里平平安安!

          posted @ 2007-01-01 16:42 J2S 閱讀(219) | 評(píng)論 (0)編輯 收藏

          12月19日

          ?????????昨天搞了一個(gè)下午加晚上,配置eclipse3.2及其插件,最后太晚了沒(méi)上來(lái)更新blog。有幾點(diǎn)需要記一下:

          ??????(1)其實(shí)在links目錄里設(shè)置插件路徑的時(shí)候“//”也是可以用的,網(wǎng)上一般說(shuō)用“/”或“\\”。以后只要記住一點(diǎn):“\”(windows里的路徑格式)不能用就行了。

          ??????(2)myeclipse5.0以上必須配eclipse3.2;myeclipse4.0配eclipse3.0; 而myeclipse4.1才能配eclipse3.1。 昨天剛開(kāi)始沒(méi)搞明白,給我的eclipse3.1.2下了一個(gè)myeclipse4.0和一個(gè)myeclipse5.1結(jié)果都不行,最后索性下了個(gè)最新的eclipse3.2.1,心想反正早晚都要升級(jí)干脆現(xiàn)在提前搞定算了。

          ??????(3)關(guān)于eclipse3.2.1的lomboz插件問(wèn)題,在網(wǎng)上看了很多帖子(其實(shí)源帖就兩篇),總結(jié)如此:a) all-in-one版本里其實(shí)已經(jīng)包含了eclipse3.2了;b)兩種選擇:直接下載org.objectweb.lomboz-all-in-one-win32解壓縮即可;據(jù)說(shuō)為了能支持GEF要分別下載這兩個(gè)插件lomboz-S-3.2RC2-200608081203lomboz-and-prereqs-S-3.2RC2-200608081203進(jìn)行安裝。? 我最后還是選擇了第二種方法。
          ????????其實(shí)有了myeclipse,lomboz可以不用裝了,我想我只是為了多一種選擇吧,不知道這是不是我骨子里已經(jīng)開(kāi)始傾向于開(kāi)源了:)

          ??????(4)最后下了一個(gè)javasript的eclipse小插件,但是安裝不成功,不知道什么原因,反正以后再試吧...


          ??????最后,想說(shuō)一點(diǎn),其實(shí)昨天一天的工作是毫無(wú)技術(shù)含量的 ,而且現(xiàn)在時(shí)間這么緊,我應(yīng)該把一些更重要或更有價(jià)值的事情提到議程之前來(lái),而不是跟自己過(guò)不去死鉆牛角尖。我知道這是性格做慫,但是希望以后自己更理智點(diǎn)更“聰明”點(diǎn)。時(shí)間對(duì)于我們這樣的人是最寶貴的!

          posted @ 2006-12-19 13:05 J2S 閱讀(342) | 評(píng)論 (0)編輯 收藏

          <2006年12月>
          262728293012
          3456789
          10111213141516
          17181920212223
          24252627282930
          31123456

          導(dǎo)航

          統(tǒng)計(jì)

          常用鏈接

          留言簿(2)

          隨筆檔案

          最新隨筆

          搜索

          積分與排名

          最新評(píng)論

          閱讀排行榜

          評(píng)論排行榜

          主站蜘蛛池模板: 剑川县| 海淀区| 平和县| 安陆市| 安吉县| 从江县| 彭水| 理塘县| 巩义市| 松阳县| 凤山市| 新竹市| 闸北区| 蒙城县| 蓝山县| 陆丰市| 宣化县| 锡林浩特市| 南通市| 牙克石市| 湖北省| 金坛市| 长乐市| 雷州市| 金川县| 和田县| 玛多县| 刚察县| 罗江县| 鸡泽县| 乌拉特后旗| 新河县| 来宾市| 华蓥市| 图木舒克市| 道真| 会泽县| 太谷县| 丹东市| 墨玉县| 兰西县|