夢(mèng)想飛翔

          自強(qiáng)不息
          posts - 111, comments - 30, trackbacks - 0, articles - 0
            BlogJava :: 首頁(yè) :: 新隨筆 :: 聯(lián)系 :: 聚合  :: 管理

          2007年5月12日

          大數(shù)據(jù)是用scala語(yǔ)言,和java有些不同又比java強(qiáng)大,省去了很多繁瑣的東西,scala中的的接口用trait來(lái)定義,不同于java的接口,trait中可以有抽象方法也可以有不抽象方法。scala中的方法中還可以定義方法,這在java中是從來(lái)沒(méi)有的。
          大數(shù)據(jù)未來(lái)幾年發(fā)展的重點(diǎn)方向,大數(shù)據(jù)戰(zhàn)略已經(jīng)在十八屆五中全會(huì)上作為重點(diǎn)戰(zhàn)略方向,中國(guó)在大數(shù)據(jù)方面才剛剛起步,但是在美國(guó)已經(jīng)產(chǎn)生了上千億的市場(chǎng)價(jià)值。舉個(gè)例子,美國(guó)通用公司是一個(gè)生產(chǎn)飛機(jī)發(fā)動(dòng)機(jī)的一個(gè)公司,這家公司在飛機(jī)發(fā)動(dòng)機(jī)的每一個(gè)零部件上都安裝了傳感器,這些傳感器在飛機(jī)發(fā)動(dòng)機(jī)運(yùn)作的同時(shí)不斷的把發(fā)動(dòng)機(jī)狀態(tài)的數(shù)據(jù)傳到通用公司的云平臺(tái)上,通用公司又有很多數(shù)據(jù)分析中心專門接受這些數(shù)據(jù),根據(jù)大數(shù)據(jù)的分析可以隨時(shí)掌握每一家航空公司發(fā)動(dòng)機(jī)的飛行狀況,可以告知這些航空公司發(fā)動(dòng)機(jī)的哪些部件需要檢修或保養(yǎng),避免飛機(jī)事故,通過(guò)這種服務(wù)通用公司就產(chǎn)生了幾百億美元的產(chǎn)值。
          現(xiàn)在正是學(xué)習(xí)大數(shù)據(jù)的最好機(jī)遇,不花一分錢就可以成為大數(shù)據(jù)高手,實(shí)現(xiàn)年薪50萬(wàn)的夢(mèng)想。
          王家林的第一個(gè)中國(guó)夢(mèng):免費(fèi)為全社會(huì)培養(yǎng)100萬(wàn)名優(yōu)秀的大數(shù)據(jù)從業(yè)人員!
          您可以通過(guò)王家林老師的微信號(hào)18610086859發(fā)紅包捐助大數(shù)據(jù)、互聯(lián)網(wǎng)+、O2O、工業(yè)4.0、微營(yíng)銷、移動(dòng)互聯(lián)網(wǎng)等系列免費(fèi)實(shí)戰(zhàn)課程, 目前已經(jīng)發(fā)布的王家林免費(fèi)視頻全集如下:
          1,《大數(shù)據(jù)不眠夜:Spark內(nèi)核天機(jī)解密(共100講)》:http://pan.baidu.com/s/1eQsHZAq 
          2,《Hadoop深入淺出實(shí)戰(zhàn)經(jīng)典》http://pan.baidu.com/s/1mgpfRPu 
          3,《Spark純實(shí)戰(zhàn)公益大講壇》http://pan.baidu.com/s/1jGpNGwu 
          4,《Scala深入淺出實(shí)戰(zhàn)經(jīng)典》http://pan.baidu.com/s/1sjDWG25 
          5,《Docker公益大講壇》http://pan.baidu.com/s/1kTpL8UF 
          6,《Spark亞太研究院Spark公益大講堂》http://pan.baidu.com/s/1i30Ewsd 
          7,DT大數(shù)據(jù)夢(mèng)工廠Spark、Scala、Hadoop的所有視頻、PPT和代碼在百度云網(wǎng)盤(pán)的鏈接:
          http://pan.baidu.com/share/home?uk=4013289088#category/type=0&qq-pf-to=pcqq.group 
          王家林免費(fèi)在51CTO發(fā)布的1000集合大數(shù)據(jù)spark、hadoop、scala、docker視頻: 
          1,《Scala深入淺出實(shí)戰(zhàn)初級(jí)入門經(jīng)典視頻課程》http://edu.51cto.com/lesson/id-66538.html 
          2,《Scala深入淺出實(shí)戰(zhàn)中級(jí)進(jìn)階經(jīng)典視頻課程》http://edu.51cto.com/lesson/id-67139.html 
          3,《Akka深入淺出實(shí)戰(zhàn)經(jīng)典視頻課程》http://edu.51cto.com/lesson/id-77672.html 
          4,《Spark亞太研究院決勝大數(shù)據(jù)時(shí)代公益大講堂》http://edu.51cto.com/lesson/id-30815.html 
          5,《云計(jì)算Docker虛擬化公益大講壇 》http://edu.51cto.com/lesson/id-61776.html 
          6,《Spark 大講堂(純實(shí)戰(zhàn)手動(dòng)操作)》http://edu.51cto.com/lesson/id-78653.html 
          7,《Hadoop深入淺出實(shí)戰(zhàn)經(jīng)典視頻課程-集群、HDFS、Yarn、MapReduce》http://edu.51cto.com/lesson/id-77141.html 
          8,《從技術(shù)角度思考Hadoop到底是什么》http://edu.51cto.com/course/course_id-1151.html 

          “DT大數(shù)據(jù)夢(mèng)工廠”團(tuán)隊(duì)第一個(gè)中國(guó)夢(mèng):免費(fèi)為社會(huì)培養(yǎng)100萬(wàn)名優(yōu)秀的大數(shù)據(jù)從業(yè)人員。每天早上4點(diǎn)起持續(xù)分享大數(shù)據(jù)、互聯(lián)網(wǎng)+、O2O、工業(yè)4.0、微營(yíng)銷、移動(dòng)互聯(lián)網(wǎng)等領(lǐng)域的
          精華內(nèi)容,幫助您和公司在DT時(shí)代打造智慧大腦,將生產(chǎn)力提高百倍以上!
          DT大數(shù)據(jù)夢(mèng)工廠微信公眾號(hào):DT_Spark,二維碼如下,期待大家加入!

          posted @ 2015-12-22 11:23 love1563 閱讀(106) | 評(píng)論 (0)編輯 收藏

          大數(shù)據(jù)是用scala語(yǔ)言,和java有些不同又比java強(qiáng)大,省去了很多繁瑣的東西,scala中的的接口用trait來(lái)定義,不同于java的接口,trait中可以有抽象方法也可以有不抽象方法。scala中的方法中還可以定義方法,這在java中是從來(lái)沒(méi)有的。
          大數(shù)據(jù)未來(lái)幾年發(fā)展的重點(diǎn)方向,大數(shù)據(jù)戰(zhàn)略已經(jīng)在十八屆五中全會(huì)上作為重點(diǎn)戰(zhàn)略方向,中國(guó)在大數(shù)據(jù)方面才剛剛起步,但是在美國(guó)已經(jīng)產(chǎn)生了上千億的市場(chǎng)價(jià)值。舉個(gè)例子,美國(guó)通用公司是一個(gè)生產(chǎn)飛機(jī)發(fā)動(dòng)機(jī)的一個(gè)公司,這家公司在飛機(jī)發(fā)動(dòng)機(jī)的每一個(gè)零部件上都安裝了傳感器,這些傳感器在飛機(jī)發(fā)動(dòng)機(jī)運(yùn)作的同時(shí)不斷的把發(fā)動(dòng)機(jī)狀態(tài)的數(shù)據(jù)傳到通用公司的云平臺(tái)上,通用公司又有很多數(shù)據(jù)分析中心專門接受這些數(shù)據(jù),根據(jù)大數(shù)據(jù)的分析可以隨時(shí)掌握每一家航空公司發(fā)動(dòng)機(jī)的飛行狀況,可以告知這些航空公司發(fā)動(dòng)機(jī)的哪些部件需要檢修或保養(yǎng),避免飛機(jī)事故,通過(guò)這種服務(wù)通用公司就產(chǎn)生了幾百億美元的產(chǎn)值。
          現(xiàn)在正是學(xué)習(xí)大數(shù)據(jù)的最好機(jī)遇,不花一分錢就可以成為大數(shù)據(jù)高手,實(shí)現(xiàn)年薪50萬(wàn)的夢(mèng)想。
          王家林的第一個(gè)中國(guó)夢(mèng):免費(fèi)為全社會(huì)培養(yǎng)100萬(wàn)名優(yōu)秀的大數(shù)據(jù)從業(yè)人員!
          您可以通過(guò)王家林老師的微信號(hào)18610086859發(fā)紅包捐助大數(shù)據(jù)、互聯(lián)網(wǎng)+、O2O、工業(yè)4.0、微營(yíng)銷、移動(dòng)互聯(lián)網(wǎng)等系列免費(fèi)實(shí)戰(zhàn)課程, 目前已經(jīng)發(fā)布的王家林免費(fèi)視頻全集如下:
          1,《大數(shù)據(jù)不眠夜:Spark內(nèi)核天機(jī)解密(共100講)》:http://pan.baidu.com/s/1eQsHZAq 
          2,《Hadoop深入淺出實(shí)戰(zhàn)經(jīng)典》http://pan.baidu.com/s/1mgpfRPu 
          3,《Spark純實(shí)戰(zhàn)公益大講壇》http://pan.baidu.com/s/1jGpNGwu 
          4,《Scala深入淺出實(shí)戰(zhàn)經(jīng)典》http://pan.baidu.com/s/1sjDWG25 
          5,《Docker公益大講壇》http://pan.baidu.com/s/1kTpL8UF 
          6,《Spark亞太研究院Spark公益大講堂》http://pan.baidu.com/s/1i30Ewsd 
          7,DT大數(shù)據(jù)夢(mèng)工廠Spark、Scala、Hadoop的所有視頻、PPT和代碼在百度云網(wǎng)盤(pán)的鏈接:
          http://pan.baidu.com/share/home?uk=4013289088#category/type=0&qq-pf-to=pcqq.group 
          王家林免費(fèi)在51CTO發(fā)布的1000集合大數(shù)據(jù)spark、hadoop、scala、docker視頻: 
          1,《Scala深入淺出實(shí)戰(zhàn)初級(jí)入門經(jīng)典視頻課程》http://edu.51cto.com/lesson/id-66538.html 
          2,《Scala深入淺出實(shí)戰(zhàn)中級(jí)進(jìn)階經(jīng)典視頻課程》http://edu.51cto.com/lesson/id-67139.html 
          3,《Akka深入淺出實(shí)戰(zhàn)經(jīng)典視頻課程》http://edu.51cto.com/lesson/id-77672.html 
          4,《Spark亞太研究院決勝大數(shù)據(jù)時(shí)代公益大講堂》http://edu.51cto.com/lesson/id-30815.html 
          5,《云計(jì)算Docker虛擬化公益大講壇 》http://edu.51cto.com/lesson/id-61776.html 
          6,《Spark 大講堂(純實(shí)戰(zhàn)手動(dòng)操作)》http://edu.51cto.com/lesson/id-78653.html 
          7,《Hadoop深入淺出實(shí)戰(zhàn)經(jīng)典視頻課程-集群、HDFS、Yarn、MapReduce》http://edu.51cto.com/lesson/id-77141.html 
          8,《從技術(shù)角度思考Hadoop到底是什么》http://edu.51cto.com/course/course_id-1151.html 

          “DT大數(shù)據(jù)夢(mèng)工廠”團(tuán)隊(duì)第一個(gè)中國(guó)夢(mèng):免費(fèi)為社會(huì)培養(yǎng)100萬(wàn)名優(yōu)秀的大數(shù)據(jù)從業(yè)人員。每天早上4點(diǎn)起持續(xù)分享大數(shù)據(jù)、互聯(lián)網(wǎng)+、O2O、工業(yè)4.0、微營(yíng)銷、移動(dòng)互聯(lián)網(wǎng)等領(lǐng)域的
          精華內(nèi)容,幫助您和公司在DT時(shí)代打造智慧大腦,將生產(chǎn)力提高百倍以上!
          DT大數(shù)據(jù)夢(mèng)工廠微信公眾號(hào):DT_Spark,二維碼如下,期待大家加入!

          posted @ 2015-12-22 11:22 love1563 閱讀(92) | 評(píng)論 (0)編輯 收藏

               摘要:   閱讀全文

          posted @ 2015-02-27 19:30 love1563 閱讀(1413) | 評(píng)論 (0)編輯 收藏

               摘要:   閱讀全文

          posted @ 2014-02-18 16:45 love1563 閱讀(4097) | 評(píng)論 (3)編輯 收藏

               摘要:   閱讀全文

          posted @ 2013-12-28 10:34 love1563 閱讀(2318) | 評(píng)論 (0)編輯 收藏

               摘要:     JessMA(原名:Portal-Basic)是一套功能完備的高性能 Full-Stack Web 應(yīng)用開(kāi)發(fā)框架,內(nèi)置可擴(kuò)展的 MVC Web 基礎(chǔ)架構(gòu)和 DAO 數(shù)據(jù)庫(kù)訪問(wèn)組件(內(nèi)部已提供了 Hibernate、MyBatis 與 JDBC...  閱讀全文

          posted @ 2013-11-24 07:49 love1563 閱讀(3448) | 評(píng)論 (0)編輯 收藏

               摘要: ITPUB索引樹(shù)  閱讀全文

          posted @ 2013-09-30 11:42 love1563 閱讀(3353) | 評(píng)論 (0)編輯 收藏

          apache svn:http://svn.apache.org/repos/asf

          posted @ 2013-09-03 14:21 love1563 閱讀(2227) | 評(píng)論 (0)編輯 收藏

          開(kāi)發(fā)軟件時(shí),我的主要目標(biāo)之一是:要么防止將缺陷引入代碼庫(kù),要么限制缺陷的生存期;換言之,要盡早找到缺陷。很顯然,越是了解如何編寫(xiě)更好的代碼以及如何有效測(cè)試軟件,就越能及早地捕捉到缺陷。我也很想要一張能發(fā)現(xiàn)潛在缺陷的安全之網(wǎng)。

          在本系列 八月份 的那期文章中,我得出了這樣的結(jié)論:將檢驗(yàn)工具集成到構(gòu)建過(guò)程(例如,使用 Ant 或 Maven)中,能夠建立起一種尋找潛在缺陷的方法。盡管這種方法使一致性成為可能并超越了 IDE,但它也有一點(diǎn)反作用。必須在本地構(gòu)建軟件或等待 Continuous Integration 構(gòu)建的運(yùn)行。如果使用 Eclipse 插件,就可以在通過(guò) Continuous Integration 構(gòu)建或集成 發(fā)現(xiàn)一些這樣的沖突。這就促成了我稱為漸進(jìn)編程 的編程方式,在這種方式下,允許在編碼過(guò)程中進(jìn)行一定程度的質(zhì)量檢驗(yàn) ——再也不能比這個(gè)更早了!

          本文涵蓋了我所認(rèn)為的 “五大” 代碼分析領(lǐng)域:

          • 編碼標(biāo)準(zhǔn)
          • 代碼重復(fù)
          • 代碼覆蓋率
          • 依賴項(xiàng)分析
          • 復(fù)雜度監(jiān)控

          可以用接下來(lái)的幾個(gè)靈活的 Eclipse 插件來(lái)揭示這些分析領(lǐng)域:

          • CheckStyle:用于編碼標(biāo)準(zhǔn)
          • PMD 的 CPD:幫助發(fā)現(xiàn)代碼重復(fù)
          • Coverlipse:測(cè)量代碼覆蓋率
          • JDepend:提供依賴項(xiàng)分析
          • Eclipse Metric 插件:有效地查出復(fù)雜度

          Eclipse 不是您的構(gòu)建系統(tǒng)

            使用 Eclipse 插件與您將這些檢驗(yàn)工具用于構(gòu)建過(guò)程并不矛盾。事實(shí)上,您想要確保的是:下列使用 Eclipse 插件的規(guī)則就是應(yīng)用到構(gòu)建過(guò)程中的規(guī)則。

          安裝 Eclipse 插件

          安裝 Eclipse 插件再簡(jiǎn)單不過(guò)了,只需要幾個(gè)步驟。在開(kāi)始之前,最好把該插件下載站點(diǎn)的 URL 準(zhǔn)備好。表 1 是本文用到的插件的列表:


          表 1. 代碼改進(jìn)插件和相應(yīng)的下載站點(diǎn) URL
          工具目的Eclipse 插件的 URL
          CheckStyle編碼標(biāo)準(zhǔn)分析http://eclipse-cs.sourceforge.net/update/
          Coverlipse測(cè)試代碼覆蓋率http://coverlipse.sf.net/update
          CPD復(fù)制/粘貼檢驗(yàn)http://pmd.sourceforge.net/eclipse/
          JDepend包依賴項(xiàng)分析http://andrei.gmxhome.de/eclipse/
          Metrics復(fù)雜度監(jiān)控http://metrics.sourceforge.net/update

          知道了這些有用插件的下載地址后,安裝插件就是一個(gè)極簡(jiǎn)單的過(guò)程。啟動(dòng) Eclipse,然后遵循下列步驟:

          1. 選擇 Help | Software Updates | Find and Install,如圖 1 所示:



            圖 1. 尋找并安裝 Eclipse 插件
            尋找并安裝 Eclipse 插件



          2. 選擇 Search for new features to install 單選按鈕,單擊 Next

          3. 單擊 New Remote Site,輸入要安裝的插件名和 URL(參見(jiàn)圖 2),單擊 OK,然后單擊 Finish 來(lái)顯示 Eclipse 更新管理器。



            圖 2. 配置新的遠(yuǎn)程站點(diǎn)
            配置新的遠(yuǎn)程站點(diǎn)



          4. 在 Eclipse 更新管理器中,有一個(gè)查看插件各方面特性的選項(xiàng)。我通常選擇頂級(jí)項(xiàng),如圖 3 所示。選擇您需要的選項(xiàng)并單擊 Finish。Eclipse 現(xiàn)在安裝該插件。您需要重啟 Eclipse 實(shí)例。



            圖 3. 安裝 Eclipse 插件
            安裝 Eclipse 插件

          請(qǐng)遵循上述這些步驟來(lái)安裝其他的 Eclipse 插件;只需改變插件名和相應(yīng)的下載位置即可。


          用 CheckStyle 校正標(biāo)準(zhǔn)

          代碼庫(kù)的可維護(hù)性直接影響著軟件的整個(gè)成本。另外,不佳的可維護(hù)性還會(huì)讓開(kāi)發(fā)人員十分頭痛(進(jìn)而導(dǎo)致開(kāi)發(fā)人員的缺乏)—— 代碼越容易修改,就越容易添加新的產(chǎn)品特性。像 CheckStyle 這樣的工具可以協(xié)助尋找那些可影響到可維護(hù)性、與編碼標(biāo)準(zhǔn)相沖突的地方,比方說(shuō),過(guò)大的類、太長(zhǎng)的方法和未使用的變量等等。

          有關(guān) PMD

          另一個(gè)叫做 PMD 的開(kāi)源工具提供的功能和 CheckStyle 類似。我偏愛(ài) CheckStyle,但 PMD 也有很多執(zhí)著的追隨者,所以我建議您了解一下這個(gè)工具,畢竟它也頗受一些人的青睞。

          使用 Eclipse 的 CheckStyle 插件的好處是能夠在編碼過(guò)程中了解到源代碼上下文的各種編碼沖突,讓開(kāi)發(fā)人員更可能在簽入該代碼前真正處理好這些沖突。您也幾乎可以把 CheckStyle 插件視作一個(gè)連續(xù)的代碼復(fù)查工具!

          安裝 CheckStyle 插件并做如下配置(參見(jiàn)圖 4):

          1. 選擇 Project,然后選擇 Eclipse 菜單中的 Properties 菜單項(xiàng)。

          2. 選擇 CheckStyle active for this project 復(fù)選框,單擊 OK



            圖 4. 在 Eclipse 中配置 CheckStyle 插件
            在 Eclipse 中配置 CheckStyle 插件

          Eclipse 重新構(gòu)建工作空間,并在 Eclipse 控制臺(tái)中列示已發(fā)現(xiàn)的編碼沖突,如圖 5 所示:


          圖 5. Eclipse 中 CheckStyle 的代碼沖突列表
          Eclipse 中 CheckStyle 的代碼沖突列表

          使用 CheckStyle 插件在 Eclipse 內(nèi)嵌入編碼標(biāo)準(zhǔn)檢驗(yàn)是一種很棒的方法,用這種方法可以在編碼時(shí) 積極地改進(jìn)代碼,從而在開(kāi)發(fā)周期的早期發(fā)現(xiàn)源代碼中潛在的缺陷。這么做還有更多的好處,如節(jié)省時(shí)間、減少失敗,也因此會(huì)減少項(xiàng)目的成本。沒(méi)錯(cuò),這就是一種積極主動(dòng)的方式!


          用 Coverlipse 確認(rèn)覆蓋率

          Coverlipse 是一個(gè)用于 Cobertura 的 Eclipse 插件,Cobertura 是一個(gè)代碼覆蓋率工具,可以用它來(lái)評(píng)估具有相應(yīng)測(cè)試的源代碼的比率。Cobertura 也提供一個(gè) Ant 任務(wù)和 Maven 插件,但用 Cobertura,您可以在編寫(xiě)代碼時(shí) 評(píng)估代碼覆蓋率。您見(jiàn)過(guò)這樣的模式嗎?

          通過(guò)選擇 Eclipse 菜單項(xiàng) Run 安裝 Coverlipse 插件并將其和 JUnit 關(guān)聯(lián)起來(lái),該操作會(huì)顯示一系列運(yùn)行配置選項(xiàng),例如 JUnit、SWT 應(yīng)用程序和 Java™ 應(yīng)用程序。右鍵單擊它并選擇 JUnit w/Coverlipse 節(jié)點(diǎn)中的 New。在這里,需要確定 JUnit 測(cè)試的位置,如圖 6 所示:


          圖 6. 配置 Coverlipse 以獲取代碼覆蓋率
          配置 Coverlipse 以獲取代碼覆蓋率

          一旦單擊了 Run,Eclipse 會(huì)運(yùn)行 Coverlipse 并在源代碼(如圖 7 所示)中嵌入標(biāo)記,該標(biāo)記顯示了具有相關(guān) JUnit 測(cè)試的代碼部分:


          圖 7. Coverlipse 生成的具有嵌入類標(biāo)記的報(bào)告
          Coverlipse 生成的具有嵌入類標(biāo)記的報(bào)告

          正如您所見(jiàn),使用 Coverlipse Eclipse 插件可以更快地確定代碼覆蓋率。例如,這種實(shí)時(shí)數(shù)據(jù)功能有助于在將代碼簽入 CM 系統(tǒng) 更好地進(jìn)行測(cè)試。這對(duì)漸進(jìn)編程來(lái)說(shuō)意味著什么呢?


          用 CPD 捕捉代碼重復(fù)

          Eclipse 的 PMD 插件提供了一項(xiàng)叫做 CPD(或復(fù)制粘貼探測(cè)器)的功能,用于尋找重復(fù)的代碼。為在 Eclipse 中使用這項(xiàng)便利的工具,需要安裝具有 PMD 的 Eclipse 插件,該插件具有 CPD 功能。

          為尋找重復(fù)的代碼,請(qǐng)用右鍵單擊一個(gè) Eclipse 項(xiàng)目并選擇 PMD | Find Suspect Cut and Paste,如圖 8 所示:


          圖 8. 使用 CPD 插件運(yùn)行復(fù)制粘貼檢驗(yàn)
          使用 PMD/CPD 插件運(yùn)行復(fù)制粘貼檢驗(yàn)

          一旦運(yùn)行了 CPD,您的 Eclipse 根目錄下就會(huì)創(chuàng)建出一個(gè) report 文件夾,其中包含一個(gè)叫做 cpd.txt 的文件,文件中列示了所有重復(fù)的代碼。圖 9 中是一個(gè) cpd.txt 文件的例子:


          圖 9. Eclipse 插件生成的 CPD 文本文件
          Eclipse 插件生成的 CPD 文本文件

          靠人工來(lái)尋找重復(fù)的代碼是一項(xiàng)挑戰(zhàn),但使用像 CPD 這樣的插件卻能在編碼時(shí)輕松地發(fā)現(xiàn)重復(fù)的代碼。


          使用 JDepend 進(jìn)行依賴項(xiàng)檢查

          JDepend 是個(gè)可免費(fèi)獲取的開(kāi)源工具,它為包依賴項(xiàng)提供面向?qū)ο蟮亩攘恐担源酥该鞔a庫(kù)的彈性。換句話說(shuō),JDepend 可有效測(cè)量一個(gè)架構(gòu)的健壯性(反之,脆弱性)。

          除了 Eclipse 插件,JDepend 還提供一個(gè) Ant 任務(wù)、Maven 插件和一個(gè) Java 應(yīng)用程序,用以獲取這些度量值。對(duì)于相同的信息,它們有著不同的傳遞機(jī)制;但 Eclipse 插件的特別之處和相應(yīng)優(yōu)點(diǎn)是:它能以更接近源代碼(即,編碼時(shí))的方式傳遞這條信息。

          圖 10 演示了使用 Eclipse JDepend 插件的方法:通過(guò)右鍵單擊源文件夾并選擇 Run JDepend Analysis。一定要選擇一個(gè)含源代碼的源文件夾;否則看不到此菜單項(xiàng)。


          圖 10. 使用 JDepend Analysis 分析代碼
          使用 JDepend Analysis 分析代碼

          圖 11 顯示了運(yùn)行 JDepend Analysis 時(shí)生成的報(bào)告。左邊顯示包,右邊顯示針對(duì)每個(gè)包的依賴項(xiàng)度量值。


          圖 11. Eclipse 項(xiàng)目中的包依賴項(xiàng)
          Eclipse 項(xiàng)目中的包依賴項(xiàng)

          正如您所見(jiàn),JDepend 插件提供了有助于不斷觀察架構(gòu)可維護(hù)性變化的大量信息 —— 這其中最大的好處是您可以在編碼時(shí)看到這些數(shù)據(jù)。


          用 Metrics 測(cè)量復(fù)雜度

          “五大”代碼分析最后的一項(xiàng)是測(cè)量復(fù)雜度。Eclipse 提供一種叫做 Metrics 的插件,使用該插件可以進(jìn)行許多有用的代碼度量,包括圈復(fù)雜度度量,它用于測(cè)量方法中惟一路徑的數(shù)目。

          安裝 Metrics 插件并重啟 Eclipse;然后遵循下列步驟:

          1. 右鍵單擊您的項(xiàng)目并選擇 Properties 菜單。在結(jié)果窗口中,選擇 Enable Metrics plugin 復(fù)選框并單擊 OK,如圖 12 所示:



            圖 12. 為項(xiàng)目配置 Metrics
            為項(xiàng)目配置 Metrics



          2. 從 Eclipse 中選擇 Window 菜單打開(kāi) Metrics 視圖,然后選擇 Show View | Other...

          3. 選擇 Metrics | Metrics View 打開(kāi)如圖 13 中顯示的窗口。您需要使用 Java 透視圖并重新構(gòu)建項(xiàng)目,從而顯示這些度量值。



            圖 13. 打開(kāi) Eclipse 中的 Metrics View
            打開(kāi) Eclipse 中的 Metrics View



          4. 單擊 OK 來(lái)顯示如圖 14 中的窗口。

            在此例中,我正在查看一個(gè)單獨(dú)方法的圈復(fù)雜度。真正妙的是您可以雙擊 Metrics 列表中的方法,該插件會(huì)在 Eclipse 編輯器中為此方法打開(kāi)源代碼。這就讓修正變得超級(jí)簡(jiǎn)單(如果需要的話)!



            圖 14. 查看方法的圈復(fù)雜度
            查看方法的圈復(fù)雜度

          正如我之前提到過(guò)的,Eclipse Metrics 插件還提供了許多功能強(qiáng)大的度量值,有助于您在開(kāi)發(fā)軟件的過(guò)程中改進(jìn)代碼 —— 可見(jiàn),它是一個(gè)漸進(jìn)編程意義上的插件!


          合適的才是最好的

          正如您從本文中看到的那樣,將“五大”測(cè)量方法,即編碼標(biāo)準(zhǔn)、代碼重復(fù)、代碼覆蓋率、依賴項(xiàng)分析和復(fù)雜度監(jiān)控,用于改進(jìn)代碼質(zhì)量十分重要。但適合您的才是好的。請(qǐng)記住還有其他許多可用的 Eclipse 插件(比如 PMD 和 FindBugs)能夠幫助您在開(kāi)發(fā)周期的早期改進(jìn)代碼質(zhì)量。不管您想要的工具或偏愛(ài)的方法是什么,重要的是:行動(dòng)起來(lái)去積極改進(jìn)代碼質(zhì)量并讓手工代碼檢驗(yàn)的過(guò)程變得更加有效。我估計(jì)您使用這些插件一段時(shí)間后,就再也離不開(kāi)它們了。


          參考資料

          學(xué)習(xí)

          • 您可以參閱本文在 developerWorks 全球站點(diǎn)上的 英文原文

          • 讓開(kāi)發(fā)自動(dòng)化(Paul Duvall,developerWorks):閱讀完整的系列。

          • Improving Code Quality with PMD and Eclipse” (Levent Gurses,Jacoozi,2005 年 1 月):這篇文章將 PMD 視為 Eclipse 插件,介紹了使用 PMD 改進(jìn)代碼質(zhì)量并縮短代碼檢驗(yàn)過(guò)程的方法。

          • 用 Cobertura 測(cè)量測(cè)試覆蓋率” (Elliotte Rusty Harold,developerWorks,2005 年 5 月):Elliotte Rusty Harold 分享了他的經(jīng)驗(yàn),即如何使用代碼覆蓋率的最佳實(shí)踐來(lái)利用 Cobertura。

          • 不要被覆蓋報(bào)告所迷惑” (Andrew Glover,developerWorks,2006 年 1 月):這篇文章進(jìn)一步揭示了覆蓋率報(bào)告中的數(shù)字所代表的真正含義,也給出了這些數(shù)字所不能代表的含義。

          • Managing Your Dependencies with JDepend” (Glen Wilcox,OnJava,2004 年 1 月):在這篇文章中,Glen Wilcox 介紹了 JDepend,這是一個(gè)可以免費(fèi)獲取的工具,它能洞悉軟件架構(gòu)中的許多質(zhì)量問(wèn)題。

          • 軟件架構(gòu)的代碼質(zhì)量” (Andrew Glover,developerWorks,2006 年 4 月):Andrew Glover 介紹了如何持續(xù)監(jiān)控以及如何改正能夠影響軟件架構(gòu)長(zhǎng)期存續(xù)性的代碼質(zhì)量問(wèn)題。

          • 讓開(kāi)發(fā)自動(dòng)化: 持續(xù)檢查” (Paul Duvall,developerWorks,2006 年 8 月):Paul Duvall 介紹了自動(dòng)化的檢查工具(如 CheckStyle、JavaNCSS 和 CPD )是如何增強(qiáng)開(kāi)發(fā)過(guò)程的以及何時(shí)應(yīng)該使用這些工具。

          • Detecting Duplicate Code with PMD's CPD” (Tom Copeland,OnJava,2003 年 3 月):Tom Copeland 介紹了一種叫做 CPD(復(fù)制/粘貼檢測(cè)器)的開(kāi)源工具,該工具用于尋找重復(fù)的 Java 代碼。

          • Maintain organizational standards with code audits” (testearly.com):編碼標(biāo)準(zhǔn)有利于廣大開(kāi)發(fā)人員對(duì)代碼庫(kù)達(dá)成共識(shí)。

          • developerWorks Java 技術(shù)專區(qū):數(shù)百篇關(guān)于 Java 編程各方面的文章。

          獲得產(chǎn)品和技術(shù)

          討論

          • 提高代碼質(zhì)量論壇:developerWorks 的積極貢獻(xiàn)者 Andrew Glover 是一名專注于改進(jìn)代碼質(zhì)量的顧問(wèn),他為這個(gè)由他主持的論壇帶來(lái)了很多相當(dāng)專業(yè)的知識(shí)。

          關(guān)于作者

          Paul Duvall

          Paul Duvall 是 Stelligent Incorporated 的 CTO,該公司利用有效的開(kāi)發(fā)人員測(cè)試策略,以及能夠讓團(tuán)隊(duì)盡早盡多地監(jiān)視和提高代碼質(zhì)量的持續(xù)集成技術(shù),幫助其他企業(yè)解決軟件的質(zhì)量問(wèn)題。他還是 UML™ 2 Toolkit 一書(shū)的作者之一,目前正在與他人合作撰寫(xiě) Continuous Integration: Improving Software Quality and Reducing Risk (Addison-Wesley) 一書(shū)。

          posted @ 2013-06-19 17:27 love1563 閱讀(2174) | 評(píng)論 (1)編輯 收藏

          http://www.open-open.com/bbs/view/1320934157953/


            1. ctrl+shift+r:打開(kāi)資源

              這可能是所有快捷鍵組合中最省時(shí)間的了。這組快捷鍵可以讓你打開(kāi)你的工作區(qū)中任何一個(gè)文件,而你只需要按下文件名或mask名中的前幾個(gè)字母,比如applic*.xml。美中不足的是這組快捷鍵并非在所有視圖下都能用。


          【轉(zhuǎn)】eclipse快捷鍵 10個(gè)最有用的快捷鍵

          2. ctrl+o:快速outline

              如果想要查看當(dāng)前類的方法或某個(gè)特定方法,但又不想把代碼拉上拉下,也不想使用查找功能的話,就用ctrl+o吧。它可以列出當(dāng)前類中的所有方法及屬性,你只需輸入你想要查詢的方法名,點(diǎn)擊enter就能夠直接跳轉(zhuǎn)至你想去的位置。


          【轉(zhuǎn)】eclipse快捷鍵 10個(gè)最有用的快捷鍵

          3. ctrl+e:快速轉(zhuǎn)換編輯器

              這組快捷鍵將幫助你在打開(kāi)的編輯器之間瀏覽。使用ctrl+page down或ctrl+page up可以瀏覽前后的選項(xiàng)卡,但是在很多文件打開(kāi)的狀態(tài)下,ctrl+e會(huì)更加有效率。


          eclipse快捷鍵 10個(gè)最有用的快捷鍵

          4. ctrl+2,L:為本地變量賦值

              開(kāi)發(fā)過(guò)程中,我常常先編寫(xiě)方法,如Calendar.getInstance(),然后通過(guò)ctrl+2快捷鍵將方法的計(jì)算結(jié)果賦值于一個(gè)本地變量之上。 這樣我節(jié)省了輸入類名,變量名以及導(dǎo)入聲明的時(shí)間。Ctrl+F的效果類似,不過(guò)效果是把方法的計(jì)算結(jié)果賦值于類中的域。

              5. alt+shift+r:重命名

              重命名屬性及方法在幾年前還是個(gè)很麻煩的事,需要大量使用搜索及替換,以至于代碼變得零零散散的。今天的Java IDE提供源碼處理功能,Eclipse也是一樣。現(xiàn)在,變量和方法的重命名變得十分簡(jiǎn)單,你會(huì)習(xí)慣于在每次出現(xiàn)更好替代名稱的時(shí)候都做一次重命名。要使 用這個(gè)功能,將鼠標(biāo)移動(dòng)至屬性名或方法名上,按下alt+shift+r,輸入新名稱并點(diǎn)擊回車。就此完成。如果你重命名的是類中的一個(gè)屬性,你可以點(diǎn)擊alt+shift+r兩次,這會(huì)呼叫出源碼處理對(duì)話框,可以實(shí)現(xiàn)get及set方法的自動(dòng)重命名。

              6. alt+shift+l以及alt+shift+m:提取本地變量及方法

              源碼處理還包括從大塊的代碼中提取變量和方法的功能。比如,要從一個(gè)string創(chuàng)建一個(gè)常量,那么就選定文本并按下alt+shift+l即可。如果同 一個(gè)string在同一類中的別處出現(xiàn),它會(huì)被自動(dòng)替換。方法提取也是個(gè)非常方便的功能。將大方法分解成較小的、充分定義的方法會(huì)極大的減少?gòu)?fù)雜度,并提 升代碼的可測(cè)試性。

              7. shift+enter及ctrl+shift+enter

              Shift+enter在當(dāng)前行之下創(chuàng)建一個(gè)空白行,與光標(biāo)是否在行末無(wú)關(guān)。Ctrl+shift+enter則在當(dāng)前行之前插入空白行。

              8. Alt+方向鍵

              這也是個(gè)節(jié)省時(shí)間的法寶。這個(gè)組合將當(dāng)前行的內(nèi)容往上或下移動(dòng)。在try/catch部分,這個(gè)快捷方式尤其好使。

              9. ctrl+m

              大顯示屏幕能夠提高工作效率是大家都知道的。Ctrl+m是編輯器窗口最大化的快捷鍵。

              10. ctrl+.及ctrl+1:下一個(gè)錯(cuò)誤及快速修改

              ctrl+.將光標(biāo)移動(dòng)至當(dāng)前文件中的下一個(gè)報(bào)錯(cuò)處或警告處。這組快捷鍵我一般與ctrl+1一并使用,即修改建議的快捷鍵。新版Eclipse的修改建 議做的很不錯(cuò),可以幫你解決很多問(wèn)題,如方法中的缺失參數(shù),throw/catch exception,未執(zhí)行的方法等等。


          eclipse快捷鍵 10個(gè)最有用的快捷鍵

          更多快捷鍵組合可在Eclipse按下ctrl+shift+L查看。

          posted @ 2013-06-11 15:28 love1563 閱讀(1435) | 評(píng)論 (0)編輯 收藏

          查閱了一下網(wǎng)絡(luò)和博客園,發(fā)現(xiàn)還沒(méi)有一個(gè)明確地指導(dǎo)源碼管理提交準(zhǔn)則的相關(guān)文章,因此斗膽整理了一部分自己平時(shí)開(kāi)發(fā)管理的心得,加上查閱了部分英文資料寫(xiě)了一個(gè)不算很完善的SVN提交準(zhǔn)則。

           

          負(fù)責(zé)而謹(jǐn)慎地提交自己的代碼

          SVN更新的原則是要隨時(shí)更新,隨時(shí)提交。當(dāng)完成了一個(gè)小功能,能夠通過(guò)編譯并且并且自己測(cè)試之后,謹(jǐn)慎地提交。

          如果提交過(guò)程中產(chǎn)生了沖突,則需要同之前的開(kāi)發(fā)人員聯(lián)系,兩個(gè)人一起協(xié)商解決沖突,解決沖突之后,需要兩人一起測(cè)試保證解決沖突之后,程序不會(huì)影響其他功能。

          如果提交過(guò)程中產(chǎn)生了更新,則也是需要重新編譯并且完成自己的一些必要測(cè)試,再進(jìn)行提交。

           

          保持原子性的提交

          每次提交的間歇盡可能地短,以一個(gè)小時(shí),兩個(gè)小時(shí)的開(kāi)發(fā)工作為宜。如在更改UI界面的時(shí)候,可以每完成一個(gè)UI界面的修改或者設(shè)計(jì),就提交一次。在開(kāi)發(fā)功能模塊的時(shí)候,可以每完成一個(gè)小細(xì)節(jié)功能的測(cè)試,就提交一次,在修改bug的時(shí)候,每修改掉一個(gè)bug并且確認(rèn)修改了這個(gè)bug,也就提交一次。我們提倡多提交,也就能多為代碼添加上保險(xiǎn)。

           

          不要提交自動(dòng)生成的文件

          Visual Studio在生成過(guò)程中會(huì)產(chǎn)生很多自動(dòng)文件,如.suo等配置文件,Debug,Release,Obj等編譯文件,以及其他的一些自動(dòng)生成,同編譯代碼無(wú)關(guān)的文件,這些文件在提交的時(shí)候不應(yīng)該簽入,如果不小心簽入了,需要使用Delete命令從倉(cāng)庫(kù)中刪除。

           

          不要提交不能通過(guò)編譯的代碼

          代碼在提交之前,首先要確認(rèn)自己能夠在本地編譯。如果在代碼中使用了第三方類庫(kù),要考慮到項(xiàng)目組成員中有些成員可能沒(méi)有安裝相應(yīng)的第三方類庫(kù)或者沒(méi)有放入GAC(針對(duì).Net Framework)中,項(xiàng)目經(jīng)理在準(zhǔn)備項(xiàng)目工作區(qū)域的時(shí)候,需要考慮到這樣的情況,確保開(kāi)發(fā)小組成員在簽出代碼之后能夠在統(tǒng)一的環(huán)境中進(jìn)行編譯。

           

          不要提交自己不明白的代碼

          代碼在提交入SVN之后,你的代碼將被項(xiàng)目成員所分享。如果提交了你不明白的代碼,你看不懂,別人也看不懂,如果在以后出現(xiàn)了問(wèn)題將會(huì)成為項(xiàng)目質(zhì)量的隱患。因此在引入任何第三方代碼之前,確保你對(duì)這個(gè)代碼有一個(gè)很清晰的了解。

           

          提前宣布自己的工作計(jì)劃

          在自己準(zhǔn)備開(kāi)始進(jìn)行某項(xiàng)功能的修改之前,先給工作小組的成員談?wù)勛约旱男薷挠?jì)劃,讓大家都能了解你的思想,了解你即將對(duì)軟件作出的修改,這樣能盡可能的減少在開(kāi)發(fā)過(guò)程中可能出現(xiàn)的沖突,提高開(kāi)發(fā)效率。同時(shí)你也能夠在和成員的交流中發(fā)現(xiàn)自己之前設(shè)計(jì)的不足,完善你的設(shè)計(jì)。

           

          對(duì)提交的信息采用明晰的標(biāo)注

          +) 表示增加了功能

          *) 表示對(duì)某些功能進(jìn)行了更改

          -) 表示刪除了文件,或者對(duì)某些功能進(jìn)行了裁剪,刪除,屏蔽。

          b) 表示修正了具體的某個(gè)bug

          posted @ 2013-02-14 19:43 love1563 閱讀(5194) | 評(píng)論 (9)編輯 收藏

               摘要: J2EE層次設(shè)計(jì)架構(gòu)實(shí)例的分析詳解
            閱讀全文

          posted @ 2012-10-09 08:52 love1563 閱讀(2708) | 評(píng)論 (1)編輯 收藏

               摘要: 大型網(wǎng)站的架構(gòu)
            閱讀全文

          posted @ 2012-10-09 08:49 love1563 閱讀(2181) | 評(píng)論 (0)編輯 收藏

               摘要: 系統(tǒng)、軟件版本號(hào)大全  閱讀全文

          posted @ 2012-10-04 21:00 love1563 閱讀(239) | 評(píng)論 (0)編輯 收藏

               摘要: 基于XMPP協(xié)議的手機(jī)多方多端即時(shí)通訊方案
            閱讀全文

          posted @ 2012-10-04 18:26 love1563 閱讀(1580) | 評(píng)論 (0)編輯 收藏

               摘要:   閱讀全文

          posted @ 2011-05-29 23:50 love1563 閱讀(2547) | 評(píng)論 (0)編輯 收藏

               摘要:   閱讀全文

          posted @ 2011-05-29 23:47 love1563 閱讀(2655) | 評(píng)論 (0)編輯 收藏

               摘要:   閱讀全文

          posted @ 2011-02-25 10:54 love1563 閱讀(275) | 評(píng)論 (0)編輯 收藏

               摘要:   閱讀全文

          posted @ 2010-08-19 01:48 love1563 閱讀(168) | 評(píng)論 (0)編輯 收藏

          http://www.jollen.org/blog/android_os/

          posted @ 2010-07-16 09:28 love1563 閱讀(255) | 評(píng)論 (0)編輯 收藏

          http://www.chengyunfeng.com/page/1

          posted @ 2010-07-15 11:23 love1563 閱讀(184) | 評(píng)論 (0)編輯 收藏

          http://hi.baidu.com/lfcaolibin/blog/category/Android/index/2

          posted @ 2010-07-14 09:34 love1563 閱讀(161) | 評(píng)論 (0)編輯 收藏

               摘要:   閱讀全文

          posted @ 2009-09-24 14:29 love1563 閱讀(1291) | 評(píng)論 (0)編輯 收藏

               摘要:   閱讀全文

          posted @ 2009-09-24 14:25 love1563 閱讀(1858) | 評(píng)論 (0)編輯 收藏

               摘要:   閱讀全文

          posted @ 2009-09-24 14:23 love1563 閱讀(1398) | 評(píng)論 (0)編輯 收藏

               摘要:   閱讀全文

          posted @ 2009-09-10 20:56 love1563 閱讀(134) | 評(píng)論 (0)編輯 收藏

               摘要:   閱讀全文

          posted @ 2009-09-10 20:52 love1563 閱讀(488) | 評(píng)論 (0)編輯 收藏

               摘要:   閱讀全文

          posted @ 2009-09-10 20:34 love1563 閱讀(1006) | 評(píng)論 (0)編輯 收藏

               摘要:   閱讀全文

          posted @ 2009-09-09 16:33 love1563 閱讀(182) | 評(píng)論 (0)編輯 收藏

               摘要:   閱讀全文

          posted @ 2009-09-09 16:28 love1563 閱讀(365) | 評(píng)論 (0)編輯 收藏

               摘要:   閱讀全文

          posted @ 2009-05-07 15:18 love1563 閱讀(250) | 評(píng)論 (0)編輯 收藏

               摘要:   閱讀全文

          posted @ 2009-04-30 15:27 love1563 閱讀(475) | 評(píng)論 (0)編輯 收藏

               摘要:   閱讀全文

          posted @ 2009-04-30 11:53 love1563 閱讀(12385) | 評(píng)論 (11)編輯 收藏

               摘要:   閱讀全文

          posted @ 2009-04-30 11:39 love1563 閱讀(1319) | 評(píng)論 (0)編輯 收藏

               摘要:   閱讀全文

          posted @ 2009-04-29 15:23 love1563 閱讀(389) | 評(píng)論 (0)編輯 收藏

               摘要:   閱讀全文

          posted @ 2009-04-29 14:25 love1563 閱讀(212) | 評(píng)論 (0)編輯 收藏

               摘要:   閱讀全文

          posted @ 2009-04-29 14:22 love1563 閱讀(253) | 評(píng)論 (0)編輯 收藏

               摘要:   閱讀全文

          posted @ 2009-04-29 13:35 love1563 閱讀(850) | 評(píng)論 (0)編輯 收藏

               摘要:   閱讀全文

          posted @ 2009-04-20 13:33 love1563 閱讀(196) | 評(píng)論 (0)編輯 收藏

               摘要:   閱讀全文

          posted @ 2009-04-16 09:59 love1563 閱讀(181) | 評(píng)論 (0)編輯 收藏

               摘要:   閱讀全文

          posted @ 2009-04-15 10:39 love1563 閱讀(165) | 評(píng)論 (0)編輯 收藏

               摘要:   閱讀全文

          posted @ 2009-04-13 09:35 love1563 閱讀(188) | 評(píng)論 (0)編輯 收藏

               摘要:   閱讀全文

          posted @ 2009-04-08 21:53 love1563 閱讀(209) | 評(píng)論 (0)編輯 收藏

               摘要:   閱讀全文

          posted @ 2009-04-07 10:24 love1563 閱讀(197) | 評(píng)論 (0)編輯 收藏

               摘要:   閱讀全文

          posted @ 2009-03-30 14:59 love1563 閱讀(1970) | 評(píng)論 (0)編輯 收藏

               摘要:   閱讀全文

          posted @ 2009-03-30 14:05 love1563 閱讀(201) | 評(píng)論 (0)編輯 收藏

               摘要:   閱讀全文

          posted @ 2009-03-26 10:48 love1563 閱讀(232) | 評(píng)論 (0)編輯 收藏

               摘要:   閱讀全文

          posted @ 2009-03-24 09:11 love1563 閱讀(255) | 評(píng)論 (0)編輯 收藏

               摘要:   閱讀全文

          posted @ 2009-03-12 09:57 love1563 閱讀(200) | 評(píng)論 (0)編輯 收藏

          http://blog.csdn.net/xymyeah/archive/2009/02/26/3940807.aspx

          posted @ 2009-03-11 12:30 love1563 閱讀(191) | 評(píng)論 (0)編輯 收藏

               摘要:   閱讀全文

          posted @ 2009-03-10 17:30 love1563 閱讀(960) | 評(píng)論 (0)編輯 收藏

               摘要:   閱讀全文

          posted @ 2009-03-06 16:18 love1563 閱讀(144) | 評(píng)論 (0)編輯 收藏

               摘要:   閱讀全文

          posted @ 2009-03-05 15:18 love1563 閱讀(288) | 評(píng)論 (0)編輯 收藏

               摘要:   閱讀全文

          posted @ 2009-03-05 14:27 love1563 閱讀(256) | 評(píng)論 (0)編輯 收藏

               摘要:   閱讀全文

          posted @ 2009-03-05 14:18 love1563 閱讀(196) | 評(píng)論 (0)編輯 收藏

               摘要:   閱讀全文

          posted @ 2009-03-05 09:37 love1563 閱讀(355) | 評(píng)論 (0)編輯 收藏

               摘要:   閱讀全文

          posted @ 2009-03-05 09:02 love1563 閱讀(489) | 評(píng)論 (0)編輯 收藏

               摘要:   閱讀全文

          posted @ 2009-03-05 08:59 love1563 閱讀(316) | 評(píng)論 (0)編輯 收藏

               摘要:   閱讀全文

          posted @ 2009-03-04 14:18 love1563 閱讀(265) | 評(píng)論 (0)編輯 收藏

               摘要:   閱讀全文

          posted @ 2009-02-25 17:17 love1563 閱讀(312) | 評(píng)論 (0)編輯 收藏

               摘要:   閱讀全文

          posted @ 2009-02-25 14:29 love1563 閱讀(211) | 評(píng)論 (0)編輯 收藏

               摘要:   閱讀全文

          posted @ 2009-02-25 11:09 love1563 閱讀(1709) | 評(píng)論 (0)編輯 收藏

               摘要:   閱讀全文

          posted @ 2009-02-24 17:50 love1563 閱讀(298) | 評(píng)論 (0)編輯 收藏

               摘要:   閱讀全文

          posted @ 2009-02-24 16:33 love1563 閱讀(192) | 評(píng)論 (0)編輯 收藏

               摘要:   閱讀全文

          posted @ 2009-02-24 16:30 love1563 閱讀(184) | 評(píng)論 (0)編輯 收藏

               摘要:   閱讀全文

          posted @ 2009-02-24 15:50 love1563 閱讀(174) | 評(píng)論 (0)編輯 收藏

               摘要:   閱讀全文

          posted @ 2009-02-24 15:00 love1563 閱讀(193) | 評(píng)論 (0)編輯 收藏

               摘要:   閱讀全文

          posted @ 2009-02-23 16:41 love1563 閱讀(539) | 評(píng)論 (0)編輯 收藏

               摘要:   閱讀全文

          posted @ 2007-08-23 14:30 love1563 閱讀(159) | 評(píng)論 (0)編輯 收藏

               摘要:   閱讀全文

          posted @ 2007-08-14 17:14 love1563 閱讀(416) | 評(píng)論 (0)編輯 收藏

               摘要:   閱讀全文

          posted @ 2007-08-14 13:47 love1563 閱讀(246) | 評(píng)論 (0)編輯 收藏

               摘要:   閱讀全文

          posted @ 2007-08-14 13:29 love1563 閱讀(275) | 評(píng)論 (0)編輯 收藏

               摘要:   閱讀全文

          posted @ 2007-08-10 15:38 love1563 閱讀(250) | 評(píng)論 (0)編輯 收藏

               摘要:   閱讀全文

          posted @ 2007-08-10 14:05 love1563 閱讀(287) | 評(píng)論 (0)編輯 收藏

               摘要:   閱讀全文

          posted @ 2007-08-09 10:52 love1563 閱讀(374) | 評(píng)論 (0)編輯 收藏

          KzStepCounter.exe
          UltraSnap.exe

          posted @ 2007-08-09 09:36 love1563 閱讀(424) | 評(píng)論 (1)編輯 收藏

               摘要:   閱讀全文

          posted @ 2007-08-08 15:31 love1563 閱讀(408) | 評(píng)論 (0)編輯 收藏

               摘要:   閱讀全文

          posted @ 2007-08-08 14:21 love1563 閱讀(629) | 評(píng)論 (0)編輯 收藏

               摘要:   閱讀全文

          posted @ 2007-08-08 09:49 love1563 閱讀(506) | 評(píng)論 (1)編輯 收藏

               摘要:   閱讀全文

          posted @ 2007-08-07 13:08 love1563 閱讀(1134) | 評(píng)論 (0)編輯 收藏

               摘要:   閱讀全文

          posted @ 2007-08-07 10:44 love1563 閱讀(1847) | 評(píng)論 (0)編輯 收藏

               摘要:   閱讀全文

          posted @ 2007-08-06 16:46 love1563 閱讀(291) | 評(píng)論 (0)編輯 收藏

          http://www.jint.cn/

          posted @ 2007-08-06 10:31 love1563 閱讀(144) | 評(píng)論 (0)編輯 收藏

               摘要:   閱讀全文

          posted @ 2007-08-03 17:35 love1563 閱讀(208) | 評(píng)論 (0)編輯 收藏

               摘要:   閱讀全文

          posted @ 2007-08-03 17:14 love1563 閱讀(855) | 評(píng)論 (0)編輯 收藏

               摘要:   閱讀全文

          posted @ 2007-08-03 16:36 love1563 閱讀(268) | 評(píng)論 (0)編輯 收藏

               摘要:   閱讀全文

          posted @ 2007-08-03 16:01 love1563 閱讀(223) | 評(píng)論 (0)編輯 收藏

               摘要:   閱讀全文

          posted @ 2007-08-03 15:59 love1563 閱讀(1425) | 評(píng)論 (3)編輯 收藏

               摘要:   閱讀全文

          posted @ 2007-08-03 10:59 love1563 閱讀(332) | 評(píng)論 (0)編輯 收藏

               摘要:   閱讀全文

          posted @ 2007-08-03 10:17 love1563 閱讀(902) | 評(píng)論 (0)編輯 收藏

               摘要:   閱讀全文

          posted @ 2007-08-01 14:01 love1563 閱讀(203) | 評(píng)論 (0)編輯 收藏

               摘要:   閱讀全文

          posted @ 2007-08-01 14:01 love1563 閱讀(244) | 評(píng)論 (0)編輯 收藏

               摘要:   閱讀全文

          posted @ 2007-08-01 12:58 love1563 閱讀(445) | 評(píng)論 (0)編輯 收藏

               摘要: 149 、 JAVA 代碼查錯(cuò) 1.abstract?class?Name?{???private?String?name;???public?abstract?boolean?isStupidName(String?name)?{}} 大俠們,這有何錯(cuò)誤 ? 答案 :? ...  閱讀全文

          posted @ 2007-05-21 11:55 love1563 閱讀(122) | 評(píng)論 (0)編輯 收藏

               摘要: 138 、 Java 的通信編程,編程題 ( 或問(wèn)答 ) ,用 JAVA SOCKET ...  閱讀全文

          posted @ 2007-05-21 11:54 love1563 閱讀(177) | 評(píng)論 (0)編輯 收藏

               摘要:   閱讀全文

          posted @ 2007-05-21 11:52 love1563 閱讀(494) | 評(píng)論 (0)編輯 收藏

          148 將一個(gè)鍵盤(pán)輸入的數(shù)字轉(zhuǎn)化成中文輸出
          (例如:輸入:1234567?????輸出:一百二拾三萬(wàn)四千五百六拾七)
          java語(yǔ)言實(shí)現(xiàn),,請(qǐng)編一段程序?qū)崿F(xiàn)!
          ?public?class?Reader?{
          ??private?String?strNum;
          ??private?String?strNumChFormat;
          ??private?String?strNumTemp;
          ??private?int?intNumLen;
          ??private?String?strBegin;
          ??public?Reader(String?strNum)?{
          ????this.strNum?=?strNum;
          ??}
          ??public?boolean?check(String?strNum)?{
          ????boolean?valid?=?false;
          ????
          ????if?(strNum.substring(0,1).equals("0")){
          ?????this.strNum?=?strNum.substring(1);
          ????}
          ????try?{
          ??????new?Double(strNum);
          ??????valid?=?true;
          ????}
          ????catch?(NumberFormatException?ex)?{
          ??????System.out.println("Bad?number?format!");
          ????}
          ????return?valid;
          ??}
          ??public?void?init()?{
          ????strNumChFormat?=?"";
          ????intNumLen?=?strNum.length();
          ????strNumTemp?=?strNum;
          ????strNumTemp?=?strNumTemp.replace('1',?'');
          ????strNumTemp?=?strNumTemp.replace('2',?'');
          ????strNumTemp?=?strNumTemp.replace('3',?'');
          ????strNumTemp?=?strNumTemp.replace('4',?'');
          ????strNumTemp?=?strNumTemp.replace('5',?'');
          ????strNumTemp?=?strNumTemp.replace('6',?'');
          ????strNumTemp?=?strNumTemp.replace('7',?'');
          ????strNumTemp?=?strNumTemp.replace('8',?'');
          ????strNumTemp?=?strNumTemp.replace('9',?'');
          ????strNumTemp?=?strNumTemp.replace('0',?'');
          ????strNumTemp?=?strNumTemp.replace('.',?'點(diǎn)');
          ????strBegin?=?strNumTemp.substring(0,?1);
          ??}
          ??public?String?readNum()?{
          ????if?(check(strNum))?{
          ??????init();
          ??????try?{
          ????????for?(int?i?=?1,?j?=?1,?k?=?1;?i?<?intNumLen;?i++)?{
          ??????????if?(strNumTemp.charAt(intNumLen?-?1)?==?''?&&?i?==?1)?{
          ????????????strNumChFormat?=?"";
          ??????????}
          ??????????else?if?(strNumTemp.charAt(intNumLen?-?i)?==?''?&&?j?==?1)?{
          ????????????strNumChFormat?=?""?+?strNumChFormat;
          ??????????}
          ??????????else?if?(strNumTemp.charAt(intNumLen?-?i)?==?'點(diǎn)')?{
          ????????????j?=?1;
          ????????????k?=?1;
          ????????????strNumChFormat?=?strNumTemp.charAt(intNumLen?-?i)?+?strNumChFormat;
          ????????????continue;
          ??????????}
          ??????????else?{
          ????????????strNumChFormat?=?strNumTemp.charAt(intNumLen?-?i)?+?strNumChFormat;
          ??????????}
          ??????????if?(strNumTemp.charAt(intNumLen?-?i?-?1)?!=?''?&&
          ??????????????strNumTemp.charAt(intNumLen?-?i?-?1)?!=?'')?{
          ????????????if?(j?==?1?&&?i?<?intNumLen)?{
          ??????????????strNumChFormat?=?''?+?strNumChFormat;
          ????????????}
          ????????????else?if?(j?==?2?&&?i?<?intNumLen)?{
          ??????????????strNumChFormat?=?''?+?strNumChFormat;
          ????????????}
          ????????????else?if?(j?==?3?&&?i?<?intNumLen)?{
          ??????????????strNumChFormat?=?''?+?strNumChFormat;
          ????????????}
          ??????????}
          ??????????if?(j?==?4?&&?i?<?intNumLen)?{
          ????????????j?=?0;
          ??????????}
          ??????????if?(k?==?4?&&?i?<?intNumLen)?{
          ????????????strNumChFormat?=?'萬(wàn)'?+?strNumChFormat;
          ??????????}
          ??????????else?if?(k?==?8?&&?i?<?intNumLen)?{
          ????????????k?=?0;
          ????????????strNumChFormat?=?''?+?strNumChFormat;
          ??????????}
          ??????????j++;
          ??????????k++;
          ????????}
          ????????while?(strNumChFormat.indexOf("")?!=?-1)?{
          ??????????strNumChFormat?=?strNumChFormat.replaceAll("",?"?");
          ????????}
          ????????if?(strNumChFormat.substring(0,?2)?==?"一拾")?{
          ??????????strNumChFormat?=?strNumChFormat.substring(1,?strNumChFormat.length());
          ????????}
          ????????if?(strNumChFormat.indexOf("點(diǎn)")?>=?0)?{
          ??????????String?rebegin?=?strNumChFormat.substring(0,
          ??????????????strNumChFormat.indexOf("點(diǎn)"));
          ??????????String?relast?=?strNumChFormat.substring(strNumChFormat.indexOf("點(diǎn)"),
          ??????????????strNumChFormat.length());
          ??????????for?(int?i?=?1;?i?<=?relast.length();?i++)?{
          ????????????relast?=?relast.replaceAll("",?"");
          ????????????relast?=?relast.replaceAll("",?"");
          ????????????relast?=?relast.replaceAll("",?"");
          ????????????relast?=?relast.replaceAll("萬(wàn)",?"");
          ????????????relast?=?relast.replaceAll("",?"");
          ??????????}
          ??????????strNumChFormat?=?rebegin?+?relast;
          ????????}
          ??????}
          ??????catch?(ArrayIndexOutOfBoundsException?ex)?{
          ????????ex.printStackTrace();
          ??????}
          ??????catch?(Exception?ex)?{
          ????????ex.printStackTrace();
          ??????}
          ??????int?off?=?strNumChFormat.indexOf("點(diǎn)");
          ??????strNumChFormat?=?strBegin?+?strNumChFormat.substring(0);
          ????}
          ????else?{
          ??????strNumChFormat?=?"";
          ????}
          ????return?strNumChFormat;
          ??}
          ??public?static?void?main(String?args[])?{
          ????try?{
          ??????String?number?=?args[0].toString();
          ??????System.out.println("The?number?is:?"?+?number);
          ??????Reader?reader?=?new?Reader(number);
          ??????System.out.println("Output?String:?"?+?reader.readNum());
          ????}
          ????catch?(Exception?ex)?{
          ??????System.out.println("Please?input?like?that:?javac?Reader?<number>");
          ????}
          ??}
          }

          posted @ 2007-05-21 11:36 love1563 閱讀(804) | 評(píng)論 (0)編輯 收藏

          ?

          提綱:
          1、版權(quán)聲明
          2、前言
          3、正文
          4、結(jié)論
          5、附注
          6、參考資料

          =======================================================

          1、版權(quán)聲明:
          ??本文作者:little,原始出處:用"堆棧區(qū)數(shù)據(jù)復(fù)制"理解Java賦值和參數(shù)傳遞機(jī)制的心得?([link]http://java.learndiary.com/disDiaryContentAction.do?goalID=2716[/link]),郵件:mdx-xx@tom.com。如有任何反饋意見(jiàn)請(qǐng)聯(lián)系作者,作者會(huì)在本文原始出處隨時(shí)更新此文。轉(zhuǎn)載及引用請(qǐng)保留此版權(quán)聲明,謝謝。

          2、前言:
          ??關(guān)于Java的賦值和參數(shù)傳遞是按值(by?value)進(jìn)行的還是按引用(by?reference)進(jìn)行的,這個(gè)問(wèn)題曾經(jīng)迷惑了很多人,包括我。而且,我想,這個(gè)問(wèn)題還將繼續(xù)迷惑一些人,包括那些C++的高手。
          ??在這里,我不準(zhǔn)備用“按值(by?value)”和“按引用(by?value)”這樣的術(shù)語(yǔ)來(lái)闡述這個(gè)問(wèn)題。因?yàn)椋瑥淖置娴睦斫鈦?lái)看,這樣的術(shù)語(yǔ)在不同的人頭腦里有不同的含義。我試圖從Java數(shù)據(jù)(包括原始類型(primitive?type)和對(duì)象(ojbect))在內(nèi)存中的存儲(chǔ)這個(gè)角度,用一個(gè)自創(chuàng)的“術(shù)語(yǔ)”來(lái)闡述我對(duì)這個(gè)問(wèn)題的理解。這個(gè)術(shù)語(yǔ)就是:“堆棧區(qū)數(shù)據(jù)復(fù)制(Stack?Data?Copy,簡(jiǎn)稱SDC)”。詳細(xì)一點(diǎn)就是:在Java中,不管是賦值操作還是參數(shù)傳遞操作--針對(duì)原始類型(primitive?type),是對(duì)堆棧區(qū)的原始類型的值進(jìn)行復(fù)制;針對(duì)對(duì)象,是對(duì)儲(chǔ)存在堆棧區(qū)的,對(duì)象的引用中所儲(chǔ)存的對(duì)象的值的地址進(jìn)行復(fù)制。
          ??像上面摳字眼的句子讀起來(lái)比較費(fèi)力,我在后面將用兩個(gè)例子并結(jié)合一些示意圖來(lái)闡述我對(duì)這個(gè)問(wèn)題的理解。希望各位朋友幫助糾正錯(cuò)誤。

          3、正文:
          1)、賦值操作:
          例子源碼:(Assign.java)

          1. public ?class?Assign{
          2. ??public?static?void?main(String[]?args){
          3. ????int?i?=?1;
          4. ????Object?o?=?new?Object();
          5. ????System.out.println("i?=?"?+?i?+?"?;?o?=?"?+?o?);?//?Step?1?(示意圖:3-1-1)
          6. ????int?j?=?i;???
          7. ????Object?p?=?o;
          8. ????System.out.println("i?=?"?+?i?+?"?;?j?=?"?+?j?+?"?;?o?=?"?+?o?+?"?;?p?=?"?+?p);?//Step?2?(示意圖:3-1-2)
          9. ????j++;
          10. ????p?=?new?Object();
          11. ????System.out.println("i?=?"?+?i?+?"?;?j?=?"?+?j?+?"?;?o?=?"?+?o?+?"?;?p?=?"?+?p);?//Step?3?(示意圖:3-1-3)
          12. ??}
          13. }


          對(duì)上面例子的說(shuō)明:
          (1),Step?1中,整數(shù)i和對(duì)象o得到賦值。

          示意圖3-1-1

          ?
          chart3-1-1.bmp
          從示意圖3-1-1中可以看出:整數(shù)i存儲(chǔ)在堆棧區(qū)(Stack);對(duì)象o的引用存儲(chǔ)在了堆棧區(qū),但是對(duì)象o的值卻存儲(chǔ)在了內(nèi)存堆中(Heap),對(duì)象o的引用存儲(chǔ)了對(duì)象o的地址。
          Step?1在我的機(jī)器上的一次輸出結(jié)果:
          1. i?=?1?;?o?=?java.lang.Object@a90653

          至于對(duì)象o的值輸出來(lái)怎么會(huì)是那個(gè)樣子,我只能告訴您:在java程序的一次運(yùn)行過(guò)程中,每個(gè)Object對(duì)象輸出這樣的值是唯一的,因此可以借此來(lái)判斷對(duì)象的引用指向的對(duì)象是否發(fā)生了改變。詳情請(qǐng)參考Java?API?文檔(下同,這里給出的是:J2SE?1.5.0?API?中文版):
          [link]http://gceclub.sun.com.cn/Java_Docs/html/zh_CN/api/java/io/PrintStream.html#println(java.lang.Object)[/link]
          [link]http://gceclub.sun.com.cn/Java_Docs/html/zh_CN/api/java/lang/Object.html#toString()[/link]
          (2),Step?2中,把整數(shù)i賦值給了整數(shù)j,把對(duì)象o賦值給了對(duì)象p。

          示意圖3-1-2

          chart3-1-2.bmp

          從示意圖3-1-2中可以看出:整數(shù)i的值復(fù)制給了整數(shù)j,整數(shù)j同樣存儲(chǔ)在堆棧區(qū);存儲(chǔ)在堆棧區(qū)的對(duì)象o的引用中存儲(chǔ)的對(duì)象o的地址C復(fù)制給了對(duì)象p的引用,對(duì)象p的引用同樣在堆棧區(qū)中。因?yàn)閷?duì)象p的引用得到了對(duì)象o的引用復(fù)制過(guò)來(lái)的對(duì)象o的值的存儲(chǔ)地址C,所以對(duì)象p的引用和對(duì)象o的引用都指向了在堆(heap)中的同一個(gè)對(duì)象,并且,這個(gè)對(duì)象的地址是地址C。
          Step?2在我的機(jī)器上的一次輸出結(jié)果:
          1. i?=?1?;?j?=?1?;?o?=?java.lang.Object@a90653?;?p?=?java.lang.Object@a90653

          (3),Step?3中,整數(shù)j的值加1,賦給了對(duì)象p新的對(duì)象值。

          示意圖3-1-3

          chart3-1-3.bmp

          從示意圖3-1-3中可以看出:整數(shù)i的值不變,整數(shù)j的值加1變?yōu)?,整數(shù)在堆棧區(qū)中;新生成的對(duì)象的值存儲(chǔ)在了堆(Heap)中,地址為F。新生成對(duì)象的地址F存儲(chǔ)在了堆棧區(qū)p的引用中,替換了原來(lái)存儲(chǔ)在其中的地址C。于是,p的引用就指向了新生成的對(duì)象,這個(gè)新生成的對(duì)象的地址是地址F。而整數(shù)i和對(duì)象o的?(包括對(duì)象o的引用)沒(méi)有改變也不曾有任何改變(除了初次賦值)。
          Step?3在我的機(jī)器上的一次輸出結(jié)果:
          1. i?=?1?;?j?=?2?;?o?=?java.lang.Object@a90653?;?p?=?java.lang.Object@de6ced


          至此,通過(guò)上面的例子及其示意圖和說(shuō)明,我得到一個(gè)結(jié)論:
          在Java賦值操作中,針對(duì)原始類型(primitive?type),是對(duì)堆棧區(qū)的原始類型的值進(jìn)行復(fù)制;針對(duì)對(duì)象,是對(duì)儲(chǔ)存在堆棧區(qū)的,對(duì)象的引用中所儲(chǔ)存的對(duì)象的值的地址進(jìn)行復(fù)制。這就是術(shù)語(yǔ):“堆棧區(qū)數(shù)據(jù)復(fù)制(Stack?Data?Copy,簡(jiǎn)稱SDC)”在Java賦值操作中的闡述。

          2)、方法中的參數(shù)傳遞操作:
          例子源碼:(PassParameter.java)
          1. public?class?PassParameter{
          2. ??static?void?showMe(int?pi,?Object?po){
          3. ????System.out.println("pi?=?"?+?pi?+?"?;?po?=?"?+?po);?//?Step?2?(示意圖:3-2-2)
          4. ????pi++;
          5. ????po?=?new?Object();
          6. ????System.out.println("pi?=?"?+?pi?+?"?;?po?=?"?+?po);?//?Step?3?(示意圖:3-2-3)
          7. ??}
          8. ??public?static?void?main(String[]?args){
          9. ????int?i?=?1;
          10. ????Object?o?=?new?Object();
          11. ????System.out.println("i?=?"?+?i?+?"?;?o?=?"?+?o);?//?Step?1?(示意圖:3-1-1)
          12. ????showMe(i,?o);
          13. ????System.out.println("i?=?"?+?i?+?"?;?o?=?"?+?o);?//?Step?4?(示意圖:3-2-3)
          14. ??}
          15. }


          對(duì)上面例子的說(shuō)明:
          (1),Step?1中,與上面Assign.java中的Step?1相同,略,下面重復(fù)其示意圖3-1-1。

          示意圖3-1-1

          chart3-1-1.bmp
          ?

          Step?1在我的機(jī)器上的一次輸出結(jié)果:
          1. i?=?1?;?o?=?java.lang.Object@a90653

          (2),Step?2中,與上面Assign.java中的Step?2類似,只是Assign.java中的整數(shù)j和對(duì)象p變成了這里的方法showMe()中的參數(shù):整數(shù)pi和對(duì)象po。并且,由于這里是參數(shù)傳遞,把Assign.java示意圖3-1-2中的“=”替換成PassParameter.java示意圖3-2-2中的“<--”,以此表示是參數(shù)傳遞。據(jù)我的理解,它們是一回事。

          示意圖3-2-2

          chart3-2-2.bmp

          Step?2在我的機(jī)器上的一次輸出結(jié)果:
          1. pi?=?1?;?po?=?java.lang.Object@a90653

          (3),Step?3和Step?4合并起來(lái),見(jiàn)示意圖3-2-3同樣,與上面Assign.java中的Step?3類似。

          示意圖3-2-3

          ?chart3-2-3.bmp

          Step?3和Step?4在我的機(jī)器上的一次輸出結(jié)果:
          1. pi?=?2?;?po?=?java.lang.Object@de6ced
          2. i?=?1?;?o?=?java.lang.Object@a90653


          至此,通過(guò)上面的例子及其示意圖和說(shuō)明,我得到一個(gè)結(jié)論:
          在Java方法參數(shù)傳遞操作中,針對(duì)原始類型(primitive?type),是對(duì)堆棧區(qū)的原始類型的值進(jìn)行復(fù)制;針對(duì)對(duì)象,是對(duì)儲(chǔ)存在堆棧區(qū)的,對(duì)象的引用中所儲(chǔ)存的對(duì)象的地址的值進(jìn)行復(fù)制。這就是術(shù)語(yǔ):“堆棧區(qū)數(shù)據(jù)復(fù)制(Stack?Data?Copy,簡(jiǎn)稱SDC)”在Java方法參數(shù)傳遞操作中的闡述。

          4,結(jié)論
          綜上所述:在Java中,不管是賦值操作還是方法的參數(shù)傳遞操作--針對(duì)原始類型(primitive?type),是對(duì)堆棧區(qū)的原始類型的值進(jìn)行復(fù)制;針對(duì)對(duì)象,是對(duì)儲(chǔ)存在堆棧區(qū)的,對(duì)象的引用中所儲(chǔ)存的對(duì)象的值的地址進(jìn)行復(fù)制。
          所以,據(jù)我的理解,術(shù)語(yǔ):“堆棧區(qū)數(shù)據(jù)復(fù)制(Stack?Data?Copy,簡(jiǎn)稱SDC)”能夠有助于理解在Java中進(jìn)行賦值和傳遞參數(shù)的機(jī)制,能夠有助于在一定程度上消除“傳值”、“傳引用”等語(yǔ)義上的多變性的負(fù)面影響,可以提出來(lái)供大家交流。

          5,附注:
          由于本人水平有限,上面的一切全是基于實(shí)踐進(jìn)行的帶有一些推測(cè)成分在內(nèi)的個(gè)人心得總結(jié)。我也以上面的自創(chuàng)術(shù)語(yǔ)去成功解釋過(guò)一些文章中的有關(guān)問(wèn)題(如下面參考資料中的例程)。謹(jǐn)希望在能為部分Java初學(xué)者提供一個(gè)理解Java賦值和參數(shù)傳遞的手段的同時(shí),更能得到各位朋友的斧正,以便能夠?qū)@個(gè)問(wèn)題形成更加正確和準(zhǔn)確的認(rèn)識(shí)。在我提高認(rèn)識(shí)的同時(shí),我會(huì)在本文原始出處:用"堆棧區(qū)數(shù)據(jù)復(fù)制"理解Java賦值和參數(shù)傳遞機(jī)制的心得?([link]http://java.learndiary.com/disDiaryContentAction.do?goalID=2716[/link])中隨時(shí)更新此文。再次貼出我的郵件:mdx-xx@tom.com。謝謝。

          6,參考資料:

          1),Java參數(shù)傳遞方式?([link]http://www.jiehoo.com/java-pass-parameter.htm[/link])
          2),破除java神話之二:參數(shù)是傳址的?([link]http://www.javaresearch.org/article/showarticle.jsp?column=544&thread=443[/link])
          3),Java?應(yīng)用程序中的按值傳遞語(yǔ)義?([link]http://www.javaresearch.org/article/showarticle.jsp?column=1&thread=706[/link])
          4),我對(duì)《Java?應(yīng)用程序中的按值傳遞語(yǔ)義》的理解?([link]http://www.javaresearch.org/article/showarticle.jsp?column=1&thread=3156[/link])
          5),Thinking?in?Java,?3rd?Edition?in?Java?([download]http://www.mindviewinc.com/downloads/TIJ-3rd-edition4.0.zip[/download])

          ??????????????????????????????????????????????????????????????全文完
          ??????????????????????????????????????????????????????????????2006年11月22日午????

          posted @ 2007-05-19 17:30 love1563 閱讀(372) | 評(píng)論 (0)編輯 收藏

          在項(xiàng)目開(kāi)發(fā)中經(jīng)常會(huì)用到生成指定格式的excel報(bào)表的問(wèn)題.
          示例代碼如下:
          Code:
          //首先創(chuàng)建一個(gè)文件輸出流
           FileOutputStream fop = new FileOutputStream("D:\\test.xls");
                   
                   HSSFWorkbook hsfwb = new HSSFWorkbook();
                   HSSFSheet hs = hsfwb.createSheet();
                   HSSFCellStyle cs = hsfwb.createCellStyle();
                   //設(shè)置背景的style
                   cs.setFillPattern(HSSFCellStyle.ALIGN_LEFT);
                   cs.setFillForegroundColor(HSSFColor.BRIGHT_GREEN.index);
           
                   //創(chuàng)建一個(gè)名字為test的sheet
                   hsfwb.setSheetName(0,"test");
                   hsfwb.setSheetName(1,"sorunxian");
                   HSSFRow row = hs.createRow(0);
                   
                   //設(shè)置cell的背景顏色
                   HSSFCellStyle hfcs = hsfwb.createCellStyle();
                   hfcs.setFillForegroundColor(HSSFColor.BLUE.index);
                   
                   HSSFCell cell = row.createCell((short) 0);
                   
                   //給excel的單元格設(shè)值
                   cell.setCellValue("My name is du juan~~~");
                   //給excel的單元格設(shè)置樣式(這個(gè)程序里面的背景色)
                   cell.setCellStyle(cs);
                   row.createCell((short) 1).setCellValue("sorunxian");
                         
                   //將數(shù)據(jù)寫(xiě)入文件中
                   hsfwb.write(fop);
                   //關(guān)閉流,釋放相關(guān)資源
                   fop.close();


          相關(guān)類介紹:
          HSSF提供給用戶使用的對(duì)象在org.apache.poi.hssf.usermodel包中,主要部分包括Excell對(duì)象,樣式和格式,還有輔助操作。有以下幾種對(duì)象:
          HSSFWorkbook excell的文檔對(duì)象
          HSSFSheet excell的表單
          HSSFRow excell的行
          HSSFCell excell的格子單元
          HSSFFont excell字體
          HSSFName 名稱
          HSSFDataFormat 日期格式
          在poi1.7中才有以下2項(xiàng):
          HSSFHeader sheet頭
          HSSFFooter sheet尾
          和這個(gè)樣式
          HSSFCellStyle cell樣式
          輔助操作包括
          HSSFDateUtil 日期
          HSSFPrintSetup 打印
          HSSFErrorConstants 錯(cuò)誤信息表
          poi HSSF的實(shí)現(xiàn)也遵循MVC模型.

          posted @ 2007-05-12 17:01 love1563 閱讀(605) | 評(píng)論 (0)編輯 收藏

          データベース設(shè)計(jì)

          紹介:
          詳細(xì)設(shè)計(jì)のもう 一つ重要な作業(yè)はデータベース設(shè)計(jì)である。
          データベース設(shè)計(jì)の目的は永続的なオブジェクトをどういうふうに
          データベースに格納したり、アクセスしたりするかを決定することである。
          そのため、データベースのスキーマ、あるいはテーブルおよび項(xiàng)目や
          タイプの定義、テーブル間の関係、テーブルの正規(guī)化、および検証ルール
          などを検討しなければならない。

          単語(yǔ):
          データベース設(shè)計(jì) database design 數(shù)據(jù)庫(kù)設(shè)計(jì)
          永続的 えいぞくてき 持久性的
          格納する かくのうする 存放
          スキーマ schema 定義,格式,格局
          タイプ type 類型
          正規(guī)化 せいきか 規(guī)范化,范式
          検証ルール けんしょうルール 驗(yàn)證規(guī)則
          後回し あとまわし 滯后,回頭再作
          不可欠な ふかけつな 不可缺少的
          性格 せいかく 性質(zhì),性格
          帳票 ちょうひょう 表單
          入力 にゅうりょく 輸入
          照會(huì) しょうかい 查詢
          先行する せんこうする 先執(zhí)行
          ビジネス.ロジック business logic 業(yè)務(wù)邏輯
          クラス設(shè)計(jì) 類的設(shè)計(jì)
          改訂する かいていする 修改,修訂
          候補(bǔ) こうほ 候補(bǔ),候選
          構(gòu)成屬性 こうせいぞくせい 合成的屬性
          屬性 ぞくせい  構(gòu)成 こうせい
          矛盾 むじゅん 矛盾,與...不符合
          ゴール goal 目標(biāo),目的
          外部キー foreign key 外鍵
          主キー  primary key 主鍵
          方法論 ほうほうろん 方法論
          定める さだめる 確定
          ORM 對(duì)象關(guān)系映射
          生産性 せいさんせい 生產(chǎn)率
          別々 べつべつ 各自,分別
          わざわざ 特地,刻意
          汎化関係 はんかかんけい 一般化關(guān)系
          用意する よういする 準(zhǔn)備,預(yù)備
          役立つ やくだつ 起作用,有效
          作業(yè)もの さぎょうもの 工作的成果

          posted @ 2007-05-12 16:57 love1563 閱讀(321) | 評(píng)論 (0)編輯 收藏

          一般情況下,對(duì)日軟件開(kāi)發(fā)的流程如下:
          SA 系統(tǒng)分析
          RD 要件定義
          UR User要件
          SR 系統(tǒng)要件定義
          BD 基本設(shè)計(jì)
          FD 功能設(shè)計(jì)
          PD 程序設(shè)計(jì)
          UT 單體測(cè)試
          CT 結(jié)合測(cè)試
          ST 系統(tǒng)測(cè)試
          OT 機(jī)能測(cè)試
          DV 產(chǎn)品出荷

          OK,以上です。

          posted @ 2007-05-12 16:46 love1563 閱讀(1176) | 評(píng)論 (0)編輯 收藏

          主站蜘蛛池模板: 浏阳市| 张家界市| 金山区| 安化县| 阿图什市| 黄骅市| 河池市| 贵德县| 鄂尔多斯市| 淳化县| 赤峰市| 福清市| 福建省| 西城区| 区。| 东乡族自治县| 武强县| 宝鸡市| 潢川县| 静安区| 乌鲁木齐市| 阿勒泰市| 灵川县| 浦城县| 平罗县| 巴青县| 平潭县| 崇州市| 海兴县| 华安县| 凯里市| 崇明县| 微山县| 贡觉县| 日喀则市| 黔西| 新营市| 岗巴县| 延川县| 江津市| 东兴市|