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

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

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

    邊城愚人

    如果我不在邊城,我一定是在前往邊城的路上。

      BlogJava :: 首頁 :: 新隨筆 :: 聯(lián)系 :: 聚合  :: 管理 ::
      31 隨筆 :: 0 文章 :: 96 評論 :: 0 Trackbacks

    #

         摘要: 對于沒有使用過Calendar的程序員來說,再次處理日期時不妨使用Calendar而不僅僅是Date和SimpleDateFormat等類。這篇文章根據(jù)幾個使用日期的場景來說明如何使用Calendar等類。
    在數(shù)據(jù)庫編程時,我們通常將java日期字段選作Date型的(一般是java.sql.Date,繼承于java.util.Date,使用方法是類似的),當(dāng)然也可以存儲為字符串甚至是long型的time,但我們這里只討論date型的。如果存儲的時間是系統(tǒng)當(dāng)前時間,我們可以使用Date d = new Date();就得到想要的時間;以前我編程時也指定存儲日期的格式,但現(xiàn)在想來不是很有必要,完全可以在讀出數(shù)據(jù)時指定格式。另一種可選的方法是使用 Calendar類,方法如下:  閱讀全文
    posted @ 2007-06-22 08:40 kafka0102 閱讀(4078) | 評論 (0)編輯 收藏

         摘要: 最近在看一個程序,該程序的圖形界面采用SWT編寫。想要將程序運(yùn)行起來首先需要做的就是將swt(jface)包放到類路徑上,swt包可以從http://www.eclipse.org/swt下載(其中除了swt包還有和操作系統(tǒng)相關(guān)的文件),和swt開發(fā)相關(guān)的插件為VE。一切就緒,運(yùn)行程序發(fā)現(xiàn)了“Exception in thread "main" java.lang.UnsatisfiedLinkError: no swt-pi-gtk-3232 in java.library.path ”的錯誤(我的操作系統(tǒng)為Ubuntu7.04)。解決方案有多種,這里只介紹我使用的一種方法。  閱讀全文
    posted @ 2007-06-21 09:11 kafka0102 閱讀(13685) | 評論 (1)編輯 收藏

         摘要: 哈夫曼樹又稱最優(yōu)二叉樹,是一種帶權(quán)路徑長度最短的二叉樹。所謂樹的帶權(quán)路徑長度,就是樹中所有的葉結(jié)點(diǎn)的權(quán)值乘上其到根結(jié)點(diǎn)的路徑長度(若根結(jié)點(diǎn)為0層,葉結(jié)點(diǎn)到根結(jié)點(diǎn)的路徑長度為葉結(jié)點(diǎn)的層數(shù))。樹的帶權(quán)路徑長度記為WPL=(W1*L1+W2*L2+W3*L3+...+ Wn*Ln),N個權(quán)值Wi(i=1,2,...n)構(gòu)成一棵有N個葉結(jié)點(diǎn)的二叉樹,相應(yīng)的葉結(jié)點(diǎn)的路徑長度為Li(i=1,2,...n)。可以證明哈夫曼樹的WPL是最小的。
    構(gòu)造哈夫曼樹的算法如下:
    1)對給定的n個權(quán)值{W1,W2,W3,...,Wi,...,Wn}構(gòu)成n棵二叉樹的初始集合F={T1,T2,T3,...,Ti,..., Tn},其中每棵二叉樹Ti中只有一個權(quán)值為Wi的根結(jié)點(diǎn),它的左右子樹均為空。
    2)在F中選取兩棵根結(jié)點(diǎn)權(quán)值最小的樹作為新構(gòu)造的二叉樹的左右子樹,新二叉樹的根結(jié)點(diǎn)的權(quán)值為其左右子樹的根結(jié)點(diǎn)的權(quán)值之和。
    3)從F中刪除這兩棵樹,并把這棵新的二叉樹同樣以升序排列加入到集合F中。
    4)重  閱讀全文
    posted @ 2007-06-21 08:23 kafka0102 閱讀(12247) | 評論 (7)編輯 收藏

         摘要: 設(shè)有主串s和子串t,子串t定位是指在主串s中找到一個與子串t相等的子串。通常把主串s稱為目標(biāo)串,把子串t稱為模式串,因此定位也稱作模式匹配。模式匹配成功是指在目標(biāo)串s中找到一個模式串t。

    傳統(tǒng)的字符串模式匹配算法(也就是BF算法)就是對于主串和模式串雙雙自左向右,一個一個字符比較,如果不匹配,主串和模式串的位置指針都要回溯。這樣的算法時間復(fù)雜度為O(n*m),其中n和m分別為串s和串t的長度。

    KMP算法是由Knuth,Morris和Pratt等人共同提出的,所以成為Knuth-Morris-Pratt算法,簡稱KMP算法。KMP算法是字符串模式匹配中的經(jīng)典算法。和BF算法相比,KMP算法的不同點(diǎn)是匹配過程中,主串的位置指針不會回溯,這樣的結(jié)果使得算法時間復(fù)雜度只為O(n+m)。下面說說KMP算法的原理。  閱讀全文
    posted @ 2007-06-17 22:14 kafka0102 閱讀(9687) | 評論 (6)編輯 收藏

         摘要: 做java企業(yè)級開發(fā)時,我們通常采用三層架構(gòu)。特別地,如果我們要做的系統(tǒng)的業(yè)務(wù)邏輯不是很復(fù)雜時,我們要處理的不過是CRUD操作,這時我們可能將dao層與service層合并為一層,盡管很多人會這樣做,但我仍傾向于將兩層分開;因?yàn)閟ervice與dao不是一一對應(yīng)的,從復(fù)用及邏輯清晰的角度考慮,應(yīng)該將它們分開。在三層架構(gòu)下,對于web層,service層,dao層我們都該怎么測試?這里我將介紹基于Spring,Hibernate和DbUnit的情況下我的測試方法。由于使用了Spring,事務(wù)管理就不在dao,因此要單獨(dú)地測試dao可能要麻煩一些;另一方面,dao中的操作大多是簡單的,也不是很值得測試。在使用了Hibernate和Spring的情況下,我們要測試的除了HQL,還有其配置文件,我覺得對數(shù)據(jù)持久化的測試最好定在service上。如果service業(yè)務(wù)邏輯復(fù)雜的話,與數(shù)據(jù)持久化無關(guān)的業(yè)務(wù)邏輯(應(yīng)該寫在領(lǐng)域?qū)ο笾校┛梢詥为?dú)測試,在保證與數(shù)據(jù)持久化無關(guān)的業(yè)務(wù)邏輯的正確性下,帶上dao操作做集成(單元)測試。  閱讀全文
    posted @ 2007-06-14 09:18 kafka0102 閱讀(1474) | 評論 (0)編輯 收藏

         摘要: 在做Java企業(yè)程序的時候,不可避免地要和外部資源打交道,比如數(shù)據(jù)庫,Http請求等。對于這些外部資源的處理,我們可采取的操作或者是直接處理或者是模擬處理。當(dāng)我們使用Webwork,Spring,Hibernate等框架時,我們要測試的并不僅僅是Java代碼,我們還要測試依賴于這些框架的配置文件等等。因此,對于數(shù)據(jù)持久化的測試,Mock方法是行不通的,我們需要真實(shí)地測試數(shù)據(jù)庫操作。對于持久化測試來說,重要的是創(chuàng)造出已知的“干凈的”的準(zhǔn)備數(shù)據(jù)。如果我們在測試一個持久化方法前不能確定數(shù)據(jù)庫到底存著什么數(shù)據(jù),我們只能通過反復(fù)地查看數(shù)據(jù)庫數(shù)據(jù)來驗(yàn)證測試方法的正確性了(這就是我和大多數(shù)人以前使用的最“直接”的方法)。現(xiàn)在就讓我們使用DbUnit,來更好的更自動化的測試持久化操作吧!

    先介紹一下DbUnit。DbUnit是一個 JUnit擴(kuò)展,適用于數(shù)據(jù)驅(qū)動的程序。使用DbUnit,可以在測試運(yùn)行期間將數(shù)據(jù)庫的數(shù)據(jù)處于已知狀態(tài),這樣在測試時可以方便地寫出測試斷言,也能自動地完成對數(shù)據(jù)持久化方法的測試。在使用上,DbUnit也很簡單, 它提供了大量的  閱讀全文
    posted @ 2007-06-14 09:03 kafka0102 閱讀(2770) | 評論 (2)編輯 收藏

         摘要: 很早就知道Jetty,但直到最近才使用它作為Web服務(wù)器。Jetty是一個開放源碼的HTTP服務(wù)器和Java serverlet容器,是完全使用Java語言實(shí)現(xiàn)的。作為嵌入的Web服務(wù)器,Jetty被廣泛應(yīng)用,比如DWR,JBoss,Geronimo,Tapestry中都使用了Jetty。相比于其他Web服務(wù)器,Jetty最大的有點(diǎn)就是小巧且啟動速度快。當(dāng)前的Jetty最新版本為6,相比以前的版本“重”了不少,“重”的原因自然是功能的增強(qiáng)。我使用myeclipse插件開發(fā)Web程序,Web服務(wù)器從Tomcat轉(zhuǎn)換成Jetty只需改變一下程序部署的位置而已。  閱讀全文
    posted @ 2007-06-11 15:48 kafka0102 閱讀(1877) | 評論 (1)編輯 收藏

         摘要: Web上最常用的兩種Http請求就是Get請求和Post請求了。我們在做java web開發(fā)時,也總會在servlet中通過doGet和doPost方法來處理請求;更經(jīng)常地,我們會在doGet方法的實(shí)現(xiàn)中調(diào)用doPost方法。盡管做了近兩年的web開發(fā),我對諸如Get請求和Post請求的基本概念仍不是十分了解。近日閱讀《javascript高級程序設(shè)計(jì)》(很長時間沒有看書了!),重新整理了一下Get請求和Post請求的概念,算是讀書筆記吧。  閱讀全文
    posted @ 2007-05-22 22:30 kafka0102 閱讀(3325) | 評論 (3)編輯 收藏

         摘要: 題按:做了幾年的java程序,卻很難說對基本的OO概念都有理解。即便每天都寫的代碼中,也很難說清楚其中到底運(yùn)用了怎樣的概念和思想。前日的考試中看到關(guān)于上溯造型與下溯造型的問題,就查了些資料,集中說一下吧。  閱讀全文
    posted @ 2007-05-21 22:34 kafka0102 閱讀(3180) | 評論 (2)編輯 收藏

         摘要: 我們應(yīng)該如何以及在哪里使用Mock對象呢?一般來說,對于目標(biāo)對象中的合作者對象,在測試時如果其狀態(tài)或行為的實(shí)現(xiàn)嚴(yán)重地依賴外部資源(比如數(shù)據(jù)持久化中的DAO,比如負(fù)責(zé)發(fā)送電子郵件的類),或者團(tuán)隊(duì)并行開發(fā)時,目標(biāo)對象的合作者對象并沒有實(shí)現(xiàn)(比如J2EE中,橫向分工時,負(fù)責(zé)Action的調(diào)用Service,負(fù)責(zé)Service調(diào)用DAO時,相應(yīng)的Service及DAO沒有實(shí)現(xiàn)),這時我們就需要模仿這些類。其實(shí),在做J2EE時,傳統(tǒng)的N層架構(gòu)中,我們都是面向接口編程的,我們定義了DAO接口,我們定義了Service接口,這樣做的優(yōu)點(diǎn)就是我們在測試時可以構(gòu)造實(shí)現(xiàn)接口的Mock類。這里不得不提依賴注入,通過依賴注入,我們才能在測試時set Mock對象。這也說明,為了方便測試,我們不得不一步一步重構(gòu)代碼,而模式就在重構(gòu)中自然地產(chǎn)生了。
      閱讀全文
    posted @ 2007-04-26 08:35 kafka0102 閱讀(4045) | 評論 (1)編輯 收藏

         摘要: 你可以使用eclipse的重構(gòu)工具方便的生成javabean的getter和setter方法,但在編寫javabean時,你可能不得不手動編寫枯燥單調(diào)的繼承自O(shè)bject的隱含的常用方法,如toString(),hashcode(),equals(Object),compareTo(Object)。當(dāng)然也有省力的解決方法,那就是eclipse的插件Commonclipse。Commonclipse使用commons-lang包,自動生成上面的方法。你可以到其網(wǎng)站Commonclipse上下載插件感受一下。  閱讀全文
    posted @ 2007-04-22 12:36 kafka0102 閱讀(3053) | 評論 (6)編輯 收藏

         摘要: 當(dāng)你偶然路過這里時,我假定你已經(jīng)很明白java中范型和DAO模式了。當(dāng)然,我也會順便嘮叨幾句范型和DAO模式,只是它們不會這篇隨筆的重點(diǎn)。我早先在DW上看到一篇蠻不錯的文章不要重復(fù) DAO!Hibernate 和 Spring AOP 構(gòu)建泛型類型安全的 DAO,它也促使我在一個實(shí)驗(yàn)工程中使用了范型化的DAO模式。前幾天看到的另一篇文章Generic Data Access Objects使我重新想起了這檔事。以前的代碼不可追,索性就重做了一個sample實(shí)現(xiàn)范型化的DAO。坦白的講,和上面的兩篇文章相比,這篇隨筆并沒有太多新內(nèi)容,如果你愿意的話,你可以只看上面的兩篇文章而關(guān)掉這個頁面。
      閱讀全文
    posted @ 2007-04-17 08:55 kafka0102 閱讀(3598) | 評論 (7)編輯 收藏

    ??? 實(shí)現(xiàn)JavaScript繼承的最簡單的方式是call方法(或者apply方法)及原型鏈方法,但這兩種方法都有缺陷,而其混合體就是很好的繼承實(shí)現(xiàn)方式。下面舉例說明:
    function?Animal(age){
    ????
    this.age?=?age;
    }

    Animal.prototype.sayAge?
    =?function(){
    ????window.alert(
    "My?age?is?"+this.age+"!");
    };

    function?Dog(age,name){
    ????Animal.call(
    this,age);
    ????
    this.name?=?name;
    }
    Dog.prototype?
    =?new?Animal();
    Dog.prototype.sayName?
    =?function(){
    ????window.alert(
    "I?am?a?"+this.name+"!");
    };

    var?dog?=?new?Dog(15,"dog");
    dog.sayName();
    dog.sayAge();
    ??? 對于類Animal來說,它有一個字段屬性age及函數(shù)屬性sayAge,sayAge方法的定義采用的是原型方式。Dog類要繼承Animal,其字段屬性除了age外還有name,通過Animal.call(this,age);可以實(shí)現(xiàn)Dog繼承Animal的字段屬性age并將其初始化了。call方法的第一個參數(shù)為繼承的類的this指針,第二個參數(shù)為Animal類的構(gòu)造函數(shù)的參數(shù)。實(shí)際上,只是通過call方法就可以實(shí)現(xiàn)繼承,但唯一的要求是父類的函數(shù)屬性要在構(gòu)造函數(shù)中定義,這對于這里的函數(shù)屬性使用原型方式定義來說就不適合了(采用原型方式定義函數(shù)屬性比在構(gòu)造函數(shù)內(nèi)定義更直觀一些)。要想繼承Animal的原型方式定義的函數(shù)屬性,需要的語句就是“Dog.prototype?=?new?Animal();”。而Dog類中的sayName()函數(shù)則是其自身的函數(shù)屬性了。
    ??? 除了這個最經(jīng)典的實(shí)現(xiàn)繼承的方式外,目前還有一些免費(fèi)的庫可供使用。但想到形形色色的庫,頭就大了,有時間有必要時再研究吧!
    posted @ 2007-04-08 21:11 kafka0102 閱讀(1483) | 評論 (0)編輯 收藏

         摘要: 最近在閱讀《JavaScript高級程序設(shè)計(jì)》,未免遺忘讀過的內(nèi)容,就打算以博客的形式做些讀書筆記。今天介紹的是JavaScript的三種構(gòu)造對象的方法,除了這三種方法,還有工廠方法來構(gòu)造對象,但考慮到其簡單性及非正規(guī)性,這里就不做介紹。和Java這樣的面向?qū)ο笳Z言相比,JavaScript更像是函數(shù)式語言,其并沒有類的概念,蓋之以對象定義的概念,而具體創(chuàng)建的對象叫做對象的實(shí)例。  閱讀全文
    posted @ 2007-04-08 11:24 kafka0102 閱讀(22161) | 評論 (8)編輯 收藏

         摘要: 網(wǎng)上看到一道java算法題,題目如下: 用1,2,2,3,4,5,這六個數(shù)字,用java寫一個main函數(shù),打印出所有不同的排列,如:512234,412345等,要求:“4”不能排第3位,“1”與“5”不能相連。  閱讀全文
    posted @ 2007-03-13 09:06 kafka0102 閱讀(4527) | 評論 (12)編輯 收藏

    僅列出標(biāo)題
    共3頁: 上一頁 1 2 3 下一頁 
    主站蜘蛛池模板: 夜夜爽妓女8888视频免费观看| 亚洲精品亚洲人成在线观看麻豆| 国产成人免费a在线视频色戒| 我要看WWW免费看插插视频| 99re热免费精品视频观看| 日本三级2019在线观看免费| 美女裸身网站免费看免费网站| 国产一卡二卡3卡四卡免费| 希望影院高清免费观看视频| 免费99精品国产自在现线| 99re热免费精品视频观看 | 亚洲中文字幕久久精品无码A| 天天爽亚洲中文字幕| 亚洲欧美日韩一区二区三区| 亚洲成AV人片高潮喷水| 亚洲s码欧洲m码吹潮| 青青久久精品国产免费看| 亚洲黄片手机免费观看| 日本亚洲欧洲免费天堂午夜看片女人员| a毛片在线还看免费网站| 1区2区3区产品乱码免费| 毛片a级毛片免费观看品善网| 国产精品视_精品国产免费| 亚洲一级Av无码毛片久久精品| 亚洲精品午夜无码电影网| 亚洲日本在线看片| 亚洲videos| 日韩在线视频线视频免费网站| 国产黄色片免费看| 37pao成人国产永久免费视频| 最新猫咪www免费人成| www.亚洲精品| 亚洲成在人天堂在线| 亚洲中文字幕久久精品无码VA| 日本一区二区在线免费观看| 国产精品免费高清在线观看| 美女视频黄的全免费视频| 亚洲日韩中文在线精品第一| 亚洲欧洲免费视频| 亚洲爆乳成av人在线视菜奈实| 精品国产呦系列在线观看免费|