這兩個搜索類都是以內(nèi)部類的方式嵌入客戶端的,客戶端接收客戶的參數(shù),然后通過一個后臺線程來進(jìn)行搜索,等待子線程完成搜索后(join方法),再打印搜索結(jié)果。
注意這個過程是可以被cancel的。cancel主要有2種情況。外部cancel:外部線程通過調(diào)用內(nèi)部類的cancel()方法。內(nèi)部cancel:在handleDirectory、handleFile中主動拋出CancelException。
walk方法在每次執(zhí)行前、后都會檢查當(dāng)前是否有cancel指令發(fā)出(checkIfCancelled ---> handleIsCancelled),如果有那么默認(rèn)立刻拋出CancelException,然后調(diào)用handleCancelled方法。 閱讀全文
從
同一個源文件(15M左右)使用不同的方式讀入,一種是讀入后構(gòu)造成一個String,另外一個是讀入后構(gòu)造成一個List。然后再調(diào)用
writeLines(File, String)和writeLines(File, Collection)寫入。下面是測試比較的結(jié)果:
Read and write by string format
File sizes(bytes): 15661680
Content read(bytes): 15661680
Time costing(ms) on reading: 2047
Time costing(ms) on writing: 1016
Read and write by collection format
File sizes(bytes): 15661680
File read(lines): 1782615
Time costing(ms) on reading: 2047
Time costing(ms) on writing: 533437
效率相差之多! 我的測試環(huán)境如下:
OS:Win XP SP4
CPU:Intel Core(TM) 2 Duo CPU
內(nèi)存:800M(虛擬機分配)
JDK:JDK 5.0 (JVM內(nèi)存分配:-Xms64m -Xmx512m)
測試文件:15.295M (是一個IP地址文件,總共1782615行)
在讀方面時間居然相當(dāng)(這里面應(yīng)該有操作系統(tǒng)層面的緩沖作用,我單獨地測試時第2個方式總比第一個慢1/3左右)。而在寫方面性能簡直是天壤之別啊:533437/1016 ≈525倍。
雖然我這個測試還是不嚴(yán)謹(jǐn)?shù)模菑姆椒▽崿F(xiàn)過程和原理來看,兩者性能差異存在必然的因素:
①以Collection方式去構(gòu)造的,在讀取的過程中生成多個小String,而生成String是一項耗時的工作
②以Collection方式去寫的,首先要迭代這個Collection,然后每次調(diào)用Collection中的元素的toString()方法,造成多次的堆棧操作
悲觀鎖定(Pessimistic locking)會采用基于數(shù)據(jù)庫提供的鎖機制來進(jìn)行鎖定。它會在物理層對行甚至表進(jìn)行鎖定。使得應(yīng)用的并發(fā)性變差。 閱讀全文 摘要: READ COMMITITED:不允許讀取未提交的數(shù)據(jù),但可以讀取已提交的數(shù)據(jù)。所以可能出現(xiàn)不可重復(fù)讀、和幻像讀(讀的過程依然可以被修改、增加、刪除)
REPEATABLE READ:通過行鎖定,在讀的數(shù)據(jù)不允許其它進(jìn)程修改。確保已讀取的數(shù)據(jù)不被修改、刪除(不可重復(fù)讀)但無法阻止其它進(jìn)程寫入新數(shù)據(jù),所以不能確保讀取到新的數(shù)據(jù)(幻像讀)
SERIALIZABLE:通過表鎖定,徹底禁止讀取期間其它進(jìn)程的修改、刪除(屏蔽不可重復(fù)讀)和增加(屏蔽幻像讀)
但是不管是那種隔離級別,對第一類丟失更新都是不能接收的 閱讀全文 摘要: 一級、二級緩存使用的key均為po的主鍵ID,value即為po實例對象,查詢緩存使用的則為查詢的條件(hql轉(zhuǎn)化而成的sql語句)、查詢的參數(shù)、查詢的頁數(shù),value有兩種情況,如果采用的是select po.property這樣的方式那么value為整個結(jié)果集,如采用的是from這樣的方式那么value為獲取的結(jié)果集中各po對象的主鍵ID,這樣的作用很明顯,節(jié)省內(nèi)存。 閱讀全文 摘要: 關(guān)于Memcached入門知識點 閱讀全文
| |||||||||
日 | 一 | 二 | 三 | 四 | 五 | 六 | |||
---|---|---|---|---|---|---|---|---|---|
25 | 26 | 27 | 28 | 29 | 30 | 31 | |||
1 | 2 | 3 | 4 | 5 | 6 | 7 | |||
8 | 9 | 10 | 11 | 12 | 13 | 14 | |||
15 | 16 | 17 | 18 | 19 | 20 | 21 | |||
22 | 23 | 24 | 25 | 26 | 27 | 28 | |||
29 | 30 | 1 | 2 | 3 | 4 | 5 |
常用鏈接
留言簿(21)
隨筆分類
- J2EE 框架(9)
- J2EE基礎(chǔ)(4)
- J2SE(43)
- Java 工具(5)
- Oracle Concept(4)
- Oracle SQL/PLSQL(9)
- Oracle 開發(fā)(13)
- Oracle 管理(4)
- Oracle 調(diào)優(yōu)
- Oracle 錯誤診斷
- RoR(19)
- UML(3)
- Unix / Linux(13)
- Web基礎(chǔ)(19)
- 其它技術(shù)(7)
- 感悟(3)
- 雜項(7)
- 架構(gòu)與性能(8)
- 模式與重構(gòu)(19)
- 灌水(8)
- 電影與音樂(16)
- 走過的路(1)
- 軟件過程與軟件方法(3)
- 陽光戶外(2)
- 項目管理(36)
隨筆檔案
- 2012年2月 (3)
- 2011年11月 (4)
- 2011年10月 (1)
- 2011年9月 (2)
- 2011年8月 (2)
- 2011年7月 (5)
- 2011年6月 (3)
- 2011年5月 (1)
- 2011年4月 (1)
- 2011年3月 (3)
- 2011年1月 (1)
- 2010年12月 (1)
- 2010年11月 (5)
- 2010年10月 (3)
- 2010年9月 (1)
- 2010年7月 (1)
- 2010年6月 (1)
- 2010年5月 (4)
- 2010年4月 (9)
- 2010年3月 (19)
- 2010年2月 (8)
- 2010年1月 (3)
- 2009年12月 (34)
- 2009年11月 (1)
- 2009年10月 (2)
- 2009年7月 (4)
- 2009年6月 (5)
- 2009年5月 (3)
- 2009年4月 (2)
- 2009年3月 (1)
- 2009年2月 (5)
- 2009年1月 (5)
- 2008年12月 (13)
- 2008年11月 (4)
- 2008年10月 (1)
- 2008年9月 (6)
- 2008年8月 (5)
- 2008年7月 (3)
- 2008年6月 (31)
- 2008年5月 (10)
- 2008年4月 (9)
- 2008年3月 (7)
- 2008年2月 (4)
- 2008年1月 (19)
BlogJava熱點博客
好友博客
搜索
最新評論

- 1.?re: 【Java基礎(chǔ)專題】編碼與亂碼(01)---編碼基礎(chǔ)[未登錄]
- 666666666666666666666這幾天正在做個類似工程編碼出現(xiàn)錯誤
- --李
- 2.?re: 【Java基礎(chǔ)專題】IO與文件讀寫---使用Apache commons IO簡化文件讀寫
- 不錯
- --阿斯蘭
- 3.?re: 【Java基礎(chǔ)專題】編碼與亂碼(03)----String的toCharArray()方法
- 多謝分享
- --thx
- 4.?re: 【Java基礎(chǔ)專題】編碼與亂碼(05)---GBK與UTF-8之間的轉(zhuǎn)換
- 評論內(nèi)容較長,點擊標(biāo)題查看
- --karl
- 5.?re: 【Java基礎(chǔ)專題】編碼與亂碼(01)---編碼基礎(chǔ)[未登錄]
- 謝謝,幫了我大忙!
- --小龍