<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    夢想飛翔

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

    2007年3月12日

    大數(shù)據(jù)是用scala語言,和java有些不同又比java強(qiáng)大,省去了很多繁瑣的東西,scala中的的接口用trait來定義,不同于java的接口,trait中可以有抽象方法也可以有不抽象方法。scala中的方法中還可以定義方法,這在java中是從來沒有的。
    大數(shù)據(jù)未來幾年發(fā)展的重點(diǎn)方向,大數(shù)據(jù)戰(zhàn)略已經(jīng)在十八屆五中全會(huì)上作為重點(diǎn)戰(zhàn)略方向,中國在大數(shù)據(jù)方面才剛剛起步,但是在美國已經(jīng)產(chǎn)生了上千億的市場價(jià)值。舉個(gè)例子,美國通用公司是一個(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ù)傳到通用公司的云平臺上,通用公司又有很多數(shù)據(jù)分析中心專門接受這些數(shù)據(jù),根據(jù)大數(shù)據(jù)的分析可以隨時(shí)掌握每一家航空公司發(fā)動(dòng)機(jī)的飛行狀況,可以告知這些航空公司發(fā)動(dòng)機(jī)的哪些部件需要檢修或保養(yǎng),避免飛機(jī)事故,通過這種服務(wù)通用公司就產(chǎn)生了幾百億美元的產(chǎn)值。
    現(xiàn)在正是學(xué)習(xí)大數(shù)據(jù)的最好機(jī)遇,不花一分錢就可以成為大數(shù)據(jù)高手,實(shí)現(xiàn)年薪50萬的夢想。
    王家林的第一個(gè)中國夢:免費(fèi)為全社會(huì)培養(yǎng)100萬名優(yōu)秀的大數(shù)據(jù)從業(yè)人員!
    您可以通過王家林老師的微信號18610086859發(fā)紅包捐助大數(shù)據(jù)、互聯(lián)網(wǎng)+、O2O、工業(yè)4.0、微營銷、移動(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ù)夢工廠Spark、Scala、Hadoop的所有視頻、PPT和代碼在百度云網(wǎng)盤的鏈接:
    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īng)典視頻課程》http://edu.51cto.com/lesson/id-66538.html 
    2,《Scala深入淺出實(shí)戰(zhàn)中級進(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ù)夢工廠”團(tuán)隊(duì)第一個(gè)中國夢:免費(fèi)為社會(huì)培養(yǎng)100萬名優(yōu)秀的大數(shù)據(jù)從業(yè)人員。每天早上4點(diǎn)起持續(xù)分享大數(shù)據(jù)、互聯(lián)網(wǎng)+、O2O、工業(yè)4.0、微營銷、移動(dòng)互聯(lián)網(wǎng)等領(lǐng)域的
    精華內(nèi)容,幫助您和公司在DT時(shí)代打造智慧大腦,將生產(chǎn)力提高百倍以上!
    DT大數(shù)據(jù)夢工廠微信公眾號:DT_Spark,二維碼如下,期待大家加入!

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

    大數(shù)據(jù)是用scala語言,和java有些不同又比java強(qiáng)大,省去了很多繁瑣的東西,scala中的的接口用trait來定義,不同于java的接口,trait中可以有抽象方法也可以有不抽象方法。scala中的方法中還可以定義方法,這在java中是從來沒有的。
    大數(shù)據(jù)未來幾年發(fā)展的重點(diǎn)方向,大數(shù)據(jù)戰(zhàn)略已經(jīng)在十八屆五中全會(huì)上作為重點(diǎn)戰(zhàn)略方向,中國在大數(shù)據(jù)方面才剛剛起步,但是在美國已經(jīng)產(chǎn)生了上千億的市場價(jià)值。舉個(gè)例子,美國通用公司是一個(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ù)傳到通用公司的云平臺上,通用公司又有很多數(shù)據(jù)分析中心專門接受這些數(shù)據(jù),根據(jù)大數(shù)據(jù)的分析可以隨時(shí)掌握每一家航空公司發(fā)動(dòng)機(jī)的飛行狀況,可以告知這些航空公司發(fā)動(dòng)機(jī)的哪些部件需要檢修或保養(yǎng),避免飛機(jī)事故,通過這種服務(wù)通用公司就產(chǎn)生了幾百億美元的產(chǎn)值。
    現(xiàn)在正是學(xué)習(xí)大數(shù)據(jù)的最好機(jī)遇,不花一分錢就可以成為大數(shù)據(jù)高手,實(shí)現(xiàn)年薪50萬的夢想。
    王家林的第一個(gè)中國夢:免費(fèi)為全社會(huì)培養(yǎng)100萬名優(yōu)秀的大數(shù)據(jù)從業(yè)人員!
    您可以通過王家林老師的微信號18610086859發(fā)紅包捐助大數(shù)據(jù)、互聯(lián)網(wǎng)+、O2O、工業(yè)4.0、微營銷、移動(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ù)夢工廠Spark、Scala、Hadoop的所有視頻、PPT和代碼在百度云網(wǎng)盤的鏈接:
    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īng)典視頻課程》http://edu.51cto.com/lesson/id-66538.html 
    2,《Scala深入淺出實(shí)戰(zhàn)中級進(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ù)夢工廠”團(tuán)隊(duì)第一個(gè)中國夢:免費(fèi)為社會(huì)培養(yǎng)100萬名優(yōu)秀的大數(shù)據(jù)從業(yè)人員。每天早上4點(diǎn)起持續(xù)分享大數(shù)據(jù)、互聯(lián)網(wǎng)+、O2O、工業(yè)4.0、微營銷、移動(dòng)互聯(lián)網(wǎng)等領(lǐng)域的
    精華內(nèi)容,幫助您和公司在DT時(shí)代打造智慧大腦,將生產(chǎn)力提高百倍以上!
    DT大數(shù)據(jù)夢工廠微信公眾號:DT_Spark,二維碼如下,期待大家加入!

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

         摘要:   閱讀全文

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

         摘要:   閱讀全文

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

         摘要:   閱讀全文

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

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

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

         摘要: ITPUB索引樹  閱讀全文

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

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

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

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

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

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

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

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

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

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

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

    安裝 Eclipse 插件

    安裝 Eclipse 插件再簡單不過了,只需要幾個(gè)步驟。在開始之前,最好把該插件下載站點(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測試代碼覆蓋率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è)極簡單的過程。啟動(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(參見圖 2),單擊 OK,然后單擊 Finish 來顯示 Eclipse 更新管理器。



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



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



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

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


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

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

    有關(guān) PMD

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

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

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

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

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



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

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


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

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


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

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

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


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

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


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

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


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

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

    為尋找重復(fù)的代碼,請用右鍵單擊一個(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 文本文件

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


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

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

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

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


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

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


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

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


    用 Metrics 測量復(fù)雜度

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

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

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



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



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

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



      圖 13. 打開 Eclipse 中的 Metrics View
      打開 Eclipse 中的 Metrics View



    4. 單擊 OK 來顯示如圖 14 中的窗口。

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



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

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


    合適的才是最好的

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


    參考資料

    學(xué)習(xí)

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

    • 讓開發(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)過程的方法。

    • 用 Cobertura 測量測試覆蓋率” (Elliotte Rusty Harold,developerWorks,2005 年 5 月):Elliotte Rusty Harold 分享了他的經(jīng)驗(yàn),即如何使用代碼覆蓋率的最佳實(shí)踐來利用 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ì)量問題。

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

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

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

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

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

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

    討論

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

    關(guān)于作者

    Paul Duvall

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

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

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


      1. ctrl+shift+r:打開資源

        這可能是所有快捷鍵組合中最省時(shí)間的了。這組快捷鍵可以讓你打開你的工作區(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)換編輯器

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


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

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

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

        5. alt+shift+r:重命名

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

        7. shift+enter及ctrl+shift+enter

        Shift+enter在當(dāng)前行之下創(chuàng)建一個(gè)空白行,與光標(biāo)是否在行末無關(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ò),可以幫你解決很多問題,如方法中的缺失參數(shù),throw/catch exception,未執(zhí)行的方法等等。


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

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

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

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

     

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

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

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

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

     

    保持原子性的提交

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

     

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

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

     

    不要提交不能通過編譯的代碼

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

     

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

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

     

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

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

     

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

    +) 表示增加了功能

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

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

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

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

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

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

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

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

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

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

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

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

         摘要:   閱讀全文

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

         摘要:   閱讀全文

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

         摘要:   閱讀全文

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

         摘要:   閱讀全文

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

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

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

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

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

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

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

         摘要:   閱讀全文

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

         摘要:   閱讀全文

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

         摘要:   閱讀全文

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

         摘要:   閱讀全文

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

         摘要:   閱讀全文

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

         摘要:   閱讀全文

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

         摘要:   閱讀全文

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

         摘要:   閱讀全文

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

         摘要:   閱讀全文

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

         摘要:   閱讀全文

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

         摘要:   閱讀全文

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

         摘要:   閱讀全文

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

         摘要:   閱讀全文

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

         摘要:   閱讀全文

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

         摘要:   閱讀全文

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

         摘要:   閱讀全文

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

         摘要:   閱讀全文

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

         摘要:   閱讀全文

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

         摘要:   閱讀全文

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

         摘要:   閱讀全文

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

         摘要:   閱讀全文

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

         摘要:   閱讀全文

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

         摘要:   閱讀全文

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

         摘要:   閱讀全文

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

         摘要:   閱讀全文

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

         摘要:   閱讀全文

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

         摘要:   閱讀全文

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

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

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

         摘要:   閱讀全文

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

         摘要:   閱讀全文

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

         摘要:   閱讀全文

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

         摘要:   閱讀全文

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

         摘要:   閱讀全文

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

         摘要:   閱讀全文

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

         摘要:   閱讀全文

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

         摘要:   閱讀全文

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

         摘要:   閱讀全文

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

         摘要:   閱讀全文

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

         摘要:   閱讀全文

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

         摘要:   閱讀全文

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

         摘要:   閱讀全文

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

         摘要:   閱讀全文

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

         摘要:   閱讀全文

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

         摘要:   閱讀全文

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

         摘要:   閱讀全文

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

         摘要:   閱讀全文

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

         摘要:   閱讀全文

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

         摘要:   閱讀全文

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

         摘要:   閱讀全文

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

         摘要:   閱讀全文

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

         摘要:   閱讀全文

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

         摘要:   閱讀全文

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

         摘要:   閱讀全文

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

    KzStepCounter.exe
    UltraSnap.exe

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

         摘要:   閱讀全文

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

         摘要:   閱讀全文

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

         摘要:   閱讀全文

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

         摘要:   閱讀全文

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

         摘要:   閱讀全文

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

         摘要:   閱讀全文

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

    http://www.jint.cn/

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

         摘要:   閱讀全文

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

         摘要:   閱讀全文

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

         摘要:   閱讀全文

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

         摘要:   閱讀全文

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

         摘要:   閱讀全文

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

         摘要:   閱讀全文

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

         摘要:   閱讀全文

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

         摘要:   閱讀全文

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

         摘要:   閱讀全文

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

         摘要:   閱讀全文

    posted @ 2007-08-01 12:58 love1563 閱讀(441) | 評論 (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 閱讀(121) | 評論 (0)編輯 收藏

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

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

         摘要:   閱讀全文

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

    148 將一個(gè)鍵盤輸入的數(shù)字轉(zhuǎn)化成中文輸出
    (例如:輸入:1234567?????輸出:一百二拾三萬四千五百六拾七)
    java語言實(shí)現(xiàn),,請編一段程序?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?=?''?+?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("",?"");
    ????????????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 閱讀(800) | 評論 (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。如有任何反饋意見請聯(lián)系作者,作者會(huì)在本文原始出處隨時(shí)更新此文。轉(zhuǎn)載及引用請保留此版權(quán)聲明,謝謝。

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


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

    示意圖3-1-1

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

    至于對象o的值輸出來怎么會(huì)是那個(gè)樣子,我只能告訴您:在java程序的一次運(yùn)行過程中,每個(gè)Object對象輸出這樣的值是唯一的,因此可以借此來判斷對象的引用指向的對象是否發(fā)生了改變。詳情請參考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,把對象o賦值給了對象p。

    示意圖3-1-2

    chart3-1-2.bmp

    從示意圖3-1-2中可以看出:整數(shù)i的值復(fù)制給了整數(shù)j,整數(shù)j同樣存儲在堆棧區(qū);存儲在堆棧區(qū)的對象o的引用中存儲的對象o的地址C復(fù)制給了對象p的引用,對象p的引用同樣在堆棧區(qū)中。因?yàn)閷ο髉的引用得到了對象o的引用復(fù)制過來的對象o的值的存儲地址C,所以對象p的引用和對象o的引用都指向了在堆(heap)中的同一個(gè)對象,并且,這個(gè)對象的地址是地址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,賦給了對象p新的對象值。

    示意圖3-1-3

    chart3-1-3.bmp

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


    至此,通過上面的例子及其示意圖和說明,我得到一個(gè)結(jié)論:
    在Java賦值操作中,針對原始類型(primitive?type),是對堆棧區(qū)的原始類型的值進(jìn)行復(fù)制;針對對象,是對儲存在堆棧區(qū)的,對象的引用中所儲存的對象的值的地址進(jìn)行復(fù)制。這就是術(shù)語:“堆棧區(qū)數(shù)據(jù)復(fù)制(Stack?Data?Copy,簡稱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. }


    對上面例子的說明:
    (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和對象p變成了這里的方法showMe()中的參數(shù):整數(shù)pi和對象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合并起來,見示意圖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


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

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

    5,附注:
    由于本人水平有限,上面的一切全是基于實(shí)踐進(jìn)行的帶有一些推測成分在內(nèi)的個(gè)人心得總結(jié)。我也以上面的自創(chuàng)術(shù)語去成功解釋過一些文章中的有關(guān)問題(如下面參考資料中的例程)。謹(jǐn)希望在能為部分Java初學(xué)者提供一個(gè)理解Java賦值和參數(shù)傳遞的手段的同時(shí),更能得到各位朋友的斧正,以便能夠?qū)@個(gè)問題形成更加正確和準(zhǔn)確的認(rèn)識。在我提高認(rèn)識的同時(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)用程序中的按值傳遞語義?([link]http://www.javaresearch.org/article/showarticle.jsp?column=1&thread=706[/link])
    4),我對《Java?應(yīng)用程序中的按值傳遞語義》的理解?([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 閱讀(369) | 評論 (0)編輯 收藏

    在項(xiàng)目開發(fā)中經(jīng)常會(huì)用到生成指定格式的excel報(bào)表的問題.
    示例代碼如下:
    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ù)寫入文件中
             hsfwb.write(fop);
             //關(guān)閉流,釋放相關(guān)資源
             fop.close();


    相關(guān)類介紹:
    HSSF提供給用戶使用的對象在org.apache.poi.hssf.usermodel包中,主要部分包括Excell對象,樣式和格式,還有輔助操作。有以下幾種對象:
    HSSFWorkbook excell的文檔對象
    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 閱讀(604) | 評論 (0)編輯 收藏

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

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

    単語:
    データベース設(shè)計(jì) database design 數(shù)據(jù)庫設(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 對象關(guān)系映射
    生産性 せいさんせい 生產(chǎn)率
    別々 べつべつ 各自,分別
    わざわざ 特地,刻意
    汎化関係 はんかかんけい 一般化關(guān)系
    用意する よういする 準(zhǔn)備,預(yù)備
    役立つ やくだつ 起作用,有效
    作業(yè)もの さぎょうもの 工作的成果

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

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

    OK,以上です。

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

    一、Servlet過濾器的概念:
    ***************************************************************************************
    Servlet過濾器是在Java?Servlet規(guī)范2.3中定義的,它能夠?qū)ervlet容器的請求和響應(yīng)對象進(jìn)行檢查和修改。   

    Servlet過濾器本身并不產(chǎn)生請求和響應(yīng)對象,它只能提供過濾作用。Servlet過期能夠在Servlet被調(diào)用之前檢查Request對象,修改Request?Header和Request內(nèi)容;在Servlet被調(diào)用之后檢查Response對象,修改Response?Header和Response內(nèi)容。

    Servlet過期負(fù)責(zé)過濾的Web組件可以是Servlet、JSP或者HTML文件。 
    ***************************************************************************************


    二、Servlet過濾器的特點(diǎn):
    ***************************************************************************************
    A.Servlet過濾器可以檢查和修改ServletRequest和ServletResponse對象
    B.Servlet過濾器可以被指定和特定的URL關(guān)聯(lián),只有當(dāng)客戶請求訪問該URL時(shí),才會(huì)觸發(fā)過濾器
    C.Servlet過濾器可以被串聯(lián)在一起,形成管道效應(yīng),協(xié)同修改請求和響應(yīng)對象
    ***************************************************************************************


    三、Servlet過濾器的作用:
    ***************************************************************************************
    A.查詢請求并作出相應(yīng)的行動(dòng)。
    B.阻塞請求-響應(yīng)對,使其不能進(jìn)一步傳遞。
    C.修改請求的頭部和數(shù)據(jù)。用戶可以提供自定義的請求。
    D.修改響應(yīng)的頭部和數(shù)據(jù)。用戶可以通過提供定制的響應(yīng)版本實(shí)現(xiàn)。
    E.與外部資源進(jìn)行交互。
    ***************************************************************************************


    四、Servlet過濾器的適用場合:
    ***************************************************************************************
    A.認(rèn)證過濾
    B.登錄和審核過濾
    C.圖像轉(zhuǎn)換過濾?
    D.?dāng)?shù)據(jù)壓縮過濾?
    E.加密過濾?
    F.令牌過濾?
    G.資源訪問觸發(fā)事件過濾?
    H.XSL/T過濾?
    I.Mime-type過濾
    ***************************************************************************************


    五、Servlet過濾器接口的構(gòu)成:
    ***************************************************************************************
    所有的Servlet過濾器類都必須實(shí)現(xiàn)javax.servlet.Filter接口。這個(gè)接口含有3個(gè)過濾器類必須實(shí)現(xiàn)的方法:

    A.init(FilterConfig):
    這是Servlet過濾器的初始化方法,Servlet容器創(chuàng)建Servlet過濾器實(shí)例后將調(diào)用這個(gè)方法。在這個(gè)方法中可以讀取web.xml文件中Servlet過濾器的初始化參數(shù)

    B.doFilter(ServletRequest,ServletResponse,FilterChain):
    這個(gè)方法完成實(shí)際的過濾操作,當(dāng)客戶請求訪問于過濾器關(guān)聯(lián)的URL時(shí),Servlet容器將先調(diào)用過濾器的doFilter方法。FilterChain參數(shù)用于訪問后續(xù)過濾器

    B.destroy():
    Servlet容器在銷毀過濾器實(shí)例前調(diào)用該方法,這個(gè)方法中可以釋放Servlet過濾器占用的資源
    ***************************************************************************************


    六、Servlet過濾器的創(chuàng)建步驟:
    ***************************************************************************************
    A.實(shí)現(xiàn)javax.servlet.Filter接口
    B.實(shí)現(xiàn)init方法,讀取過濾器的初始化函數(shù)
    C.實(shí)現(xiàn)doFilter方法,完成對請求或過濾的響應(yīng)
    D.調(diào)用FilterChain接口對象的doFilter方法,向后續(xù)的過濾器傳遞請求或響應(yīng)
    E.銷毀過濾器
    ***************************************************************************************


    七、Servlet過濾器對請求的過濾:
    ***************************************************************************************
    A.Servlet容器創(chuàng)建一個(gè)過濾器實(shí)例
    B.過濾器實(shí)例調(diào)用init方法,讀取過濾器的初始化參數(shù)
    C.過濾器實(shí)例調(diào)用doFilter方法,根據(jù)初始化參數(shù)的值判斷該請求是否合法
    D.如果該請求不合法則阻塞該請求
    E.如果該請求合法則調(diào)用chain.doFilter方法將該請求向后續(xù)傳遞
    ***************************************************************************************


    八、Servlet過濾器對響應(yīng)的過濾:
    ***************************************************************************************
    A.過濾器截獲客戶端的請求
    B.重新封裝ServletResponse,在封裝后的ServletResponse中提供用戶自定義的輸出流
    C.將請求向后續(xù)傳遞
    D.Web組件產(chǎn)生響應(yīng)
    E.從封裝后的ServletResponse中獲取用戶自定義的輸出流
    F.將響應(yīng)內(nèi)容通過用戶自定義的輸出流寫入到緩沖流中
    G.在緩沖流中修改響應(yīng)的內(nèi)容后清空緩沖流,輸出響應(yīng)內(nèi)容
    ***************************************************************************************

    九、Servlet過濾器的發(fā)布:
    ***************************************************************************************
    A.發(fā)布Servlet過濾器時(shí),必須在web.xml文件中加入<filter>元素和<filter-mapping>元素。

    B.<filter>元素用來定義一個(gè)過濾器:
    屬性???????????????????含義
    filter-name????指定過濾器的名字
    filter-class????指定過濾器的類名
    init-param????為過濾器實(shí)例提供初始化參數(shù),可以有多個(gè)

    C.<filter-mapping>元素用于將過濾器和URL關(guān)聯(lián):
    屬性?????????????????????含義
    filter-name????指定過濾器的名字
    url-pattern????指定和過濾器關(guān)聯(lián)的URL,為”/*”表示所有URL
    ***************************************************************************************


    十一、Servlet過濾器使用的注意事項(xiàng)
    ***************************************************************************************
    A.由于Filter、FilterConfig、FilterChain都是位于javax.servlet包下,并非HTTP包所特有的,所以其中所用到的請求、響應(yīng)對象ServletRequest、ServletResponse在使用前都必須先轉(zhuǎn)換成HttpServletRequest、HttpServletResponse再進(jìn)行下一步操作。

    B.在web.xml中配置Servlet和Servlet過濾器,應(yīng)該先聲明過濾器元素,再聲明Servlet元素


    C.如果要在Servlet中觀察過濾器生成的日志,應(yīng)該確保在server.xml的localhost對應(yīng)的<host>元素中配置如下<logger>元素:
    <Logger?className?=?“org.apache.catalina.logger.FileLogger”
    directory?=?“l(fā)ogs”prefix?=?“l(fā)ocalhost_log.”suffix=”.txt”
    timestamp?=?“true”/>
    ***************************************************************************************

    posted @ 2007-04-23 12:03 love1563 閱讀(203) | 評論 (0)編輯 收藏

    如: 案件情報(bào).選定理由+\r\n+案件情報(bào).選定理由2

    posted @ 2007-04-16 11:28 love1563 閱讀(2631) | 評論 (0)編輯 收藏

    我們假設(shè)JDK裝在:
    C:\j2sdk1.4.2_07

    *?WIN?98或以下?直接在DOS環(huán)境下輸入命令:
    set?path=C:\j2sdk1.4.2_07\bin?(javac.exe\java.exe等工具放在bin文件夾下,設(shè)置使系統(tǒng)能找到這些工具)
    set?classpath=C:\j2sdk1.4.2_07\lib

    其實(shí),這樣設(shè)置它的有效期僅在DOS窗口不關(guān)的前提下,每一次打開新的DOS窗口都要這樣手工的設(shè)置。我們可以把這兩句話寫入系統(tǒng)根目錄下的一個(gè)批處理文件autoexec.bat里,系統(tǒng)每次啟動(dòng)的都會(huì)讀取這個(gè)文件,這樣就不用很煩的每次都要去設(shè)置了。

    *?WIN?2000\WIN?XP下:
    設(shè)置或修改系統(tǒng)環(huán)境變量,具體步驟如下:
    右擊我的電腦圖標(biāo)->屬性->選擇標(biāo)簽‘高級’->找到‘環(huán)境變量’并單擊進(jìn)入環(huán)境變量設(shè)置窗口->在系統(tǒng)變量模塊里新建幾個(gè)變量:
    1.?JAVA_HOME?值:C:\j2sdk1.4.2_07?
    2.?CLASSPATH?值:.;%JAVA_HOME%\lib??
    3.?Path:%JAVA_HOME%\bin;?(也許系統(tǒng)變量里面已經(jīng)有了Path變量,那么就修改它好了,在原來的值的前面加上%JAVA_HOME%\bin;)

    posted @ 2007-04-14 09:11 love1563 閱讀(640) | 評論 (0)編輯 收藏

    http://dev.cbw.com/otherdb/InterBase/

    posted @ 2007-04-13 23:31 love1563 閱讀(383) | 評論 (0)編輯 收藏

    username:sysdba
    password:masterkey

    posted @ 2007-04-13 23:14 love1563 閱讀(1889) | 評論 (0)編輯 收藏

    JSEclipse 插件主頁:http://www.interaktonline.com/Products/Eclipse/JSEclipse/Overview/ 插件介紹:JSEclipse是個(gè)Eclipse下的免費(fèi)Javascript腳本編輯器 subversion 版本控制,相當(dāng)于CVS 安裝:http://subclipse.tigris.org/install.html Name: Subclipse URL: http://subclipse.tigris.org/update_1.0.x CSS Editor for Eclipse http://csseditor.sourceforge.net/ FacesIDE FacesIDE是一個(gè)用于開發(fā)JSF的Eclispe插件.它可以可視化編輯faces-config.xml文件并且提供代碼編輯與校驗(yàn),預(yù)覽JSF的JSP文件.FacesIDE包含MyFaces來作為JSF的實(shí)現(xiàn) http://amateras.sourceforge.jp/cgi-bin/fswiki_en/wiki.cgi?page=FacesIDE Eclipse SQLExplorer plugin 一個(gè)數(shù)據(jù)庫管理插件 http://sourceforge.net/projects/eclipsesql Poperties Editor 一個(gè)在編輯完成后可以將資源文件中的中文編碼格式轉(zhuǎn)換為unicode編碼的插件,在開發(fā)國際化應(yīng)用程序的時(shí)候非常有用 http://propedit.sourceforge.jp/eclipse/updates/ eclipseME http://eclipseme.org/updates/ Eclipse加速插件KeepResident http://suif.stanford.edu/pub/keepresident/ MyEclipse J2EE開發(fā)插件,支持SERVLET/JSP/EJB/數(shù)據(jù)庫操縱等 www.myeclipseide.com Properties Editor 編輯java的屬性文件,并可以自動(dòng)存盤為Unicode格式 http://propedit.sourceforge.jp/index_en.html http://propedit.sourceforge.jp/eclipse/updates/ Colorer Take 為上百種類型的文件按語法著色 http://colorer.sourceforge.net/ XMLBuddy 編輯xml文件 www.xmlbuddy.com Code Folding 加入多種代碼折疊功能(比eclipse自帶的更多) http://www.coffee-bytes.com/servlet/PlatformSupport Easy Explorer 從eclipse中訪問選定文件、目錄所在的文件夾 http://easystruts.sourceforge.net/ Fat Jar 打包插件,可以方便的完成各種打包任務(wù),可以包含外部的包等 http://fjep.sourceforge.net/ RegEx Test 測試正則表達(dá)式 http://brosinski.com/stephan/archives/000028.php JasperAssistant 報(bào)表插件(強(qiáng),要錢的) http://www.jasperassistant.com/ Jigloo GUI Builder JAVA的GUI編輯插件 http://cloudgarden.com/jigloo/ Profiler 性能跟蹤、測量工具,能跟蹤、測量BS程序 http://sourceforge.net/projects/eclipsecolorer/ AdvanQas 提供對if/else等條件語句的提示和快捷幫助(自動(dòng)更改結(jié)構(gòu)等) http://eclipsecolorer.sourceforge.net/advanqas/index.html Log4E Log4j插件,提供各種和Log4j相關(guān)的任務(wù),如為方法、類添加一個(gè)logger等 http://log4e.jayefem.de/index.php/Main_Page VSSPlugin VSS插件 http://sourceforge.net/projects/vssplugin Implementors 提供跳轉(zhuǎn)到一個(gè)方法的實(shí)現(xiàn)類,而不是接中的功能(實(shí)用!) http://eclipse-tools.sourceforge.net/implementors/ Call Hierarchy 顯示一個(gè)方法的調(diào)用層次(被哪些方法調(diào),調(diào)了哪些方法) http://eclipse-tools.sourceforge.net/call-hierarchy/index.html EclipseTidy 檢查和格式化HTML/XML文件 http://eclipsetidy.sourceforge.net/ Checkclipse 檢查代碼的風(fēng)格、寫法是否符合規(guī)范 http://www.mvmsoft.de/content/plugins/checkclipse/checkclipse.htm Hibernate Synchronizer Hibernate插件,自動(dòng)映射等 http://www.binamics.com/hibernatesync/ spring updatesite 插件 http://springide.org/updatesite/ VeloEclipse Velocity插件 http://propsorter.sourceforge.net/ EditorList 方便的列出所有打開的Editor http://editorlist.sourceforge.net/ MemoryManager 內(nèi)存占用率的監(jiān)視 http://cloudgarden.com/memorymanager/ Eclipse的游戲插件 http://eclipse-games.sourceforge.net/ JBoss-IDE http://jboss.sourceforge.net/jbosside/updates/ 自動(dòng)反編譯class,安裝后要設(shè)定class文件缺省關(guān)聯(lián)到j(luò)ode http://www.technoetic.com/eclipse/update jigloo swing/sw設(shè)計(jì)工具,里面自帶的form/anchor布局很好用! http://cloudgarden.soft-gems.net/update-site/ jinto的資源文件編輯工具,同時(shí)編輯多種語言,而且自動(dòng)轉(zhuǎn)換成iso8859-1編碼。很好用! http://www.guh-software.de/eclipse/

    posted @ 2007-03-12 11:04 love1563| 編輯 收藏

    主站蜘蛛池模板: 精品特级一级毛片免费观看| 四虎永久成人免费| 亚洲婷婷天堂在线综合| 永久看日本大片免费35分钟 | 精品女同一区二区三区免费站| 亚洲天天做日日做天天看| 久久爰www免费人成| 久久夜色精品国产嚕嚕亚洲av| 91免费在线视频| 亚洲欧洲成人精品香蕉网| 国产免费拔擦拔擦8X高清在线人| 国产亚洲一区二区精品| 中文字幕无码毛片免费看| 好看的电影网站亚洲一区| 在线成人精品国产区免费| 亚洲成AV人在线播放无码| 日本在线看片免费| 亚洲黄色高清视频| 亚洲AV成人一区二区三区在线看| 美女视频黄a视频全免费| 亚洲欧洲日韩国产一区二区三区| 无码视频免费一区二三区| 亚洲欧美不卡高清在线| 成在线人永久免费视频播放| 污污视频免费观看网站| 亚洲综合熟女久久久30p| 久久国产精品萌白酱免费| 亚洲精品视频在线播放| 一本无码人妻在中文字幕免费| 亚洲久热无码av中文字幕| 免费一看一级毛片人| 久久久久女教师免费一区| 亚洲AV日韩AV永久无码下载| 18以下岁毛片在免费播放| 亚洲一区二区三区高清不卡| 国产男女猛烈无遮挡免费视频网站 | 国产精品视频免费一区二区| jzzijzzij在线观看亚洲熟妇| 成年男女男精品免费视频网站 | 九月婷婷亚洲综合在线| 精品多毛少妇人妻AV免费久久|