欧美性猛交XXXX免费看蜜桃,成人网18免费韩国,亚洲国产成人精品区综合,欧美日韩一区二区三区高清不卡,亚洲综合一区二区精品久久

打開(kāi)APP
userphoto
未登錄

開(kāi)通VIP,暢享免費電子書(shū)等14項超值服

開(kāi)通VIP
別人的經(jīng)驗---關(guān)于集合框架類(lèi)(好)
1.  關(guān)于集合框架類(lèi)
相信學(xué)過(guò)Java的各位對這個(gè)名詞并不陌生,對  java.util.*這個(gè)package肯定也不陌生。不知道大家查詢(xún)API的時(shí)候怎么去審視或者分析其中的一個(gè)package,每個(gè)包最重要的兩個(gè)部分就是interfaces和classes,接口代表了它能做什么,實(shí)現類(lèi)則代表了它如何去做。關(guān)注實(shí)現類(lèi)之前,我們應該先理解清楚它的來(lái)源接口,不管在j2se還是j2ee中,都應該是這樣。那么我們先看這三個(gè)接口:List、Set、Map。
也許有些人不太熟悉這三個(gè)名字,但相信大部分人都熟悉ArrayList,LinkedList,TreeSet,HashSet,HashMap,    Hashtable等實(shí)現類(lèi)的名字。它們的區別也是滿(mǎn)容易理解的,List放可以重復的對象集合,Set放不可重復的對象組合,而Map則放  <Key,Value  > 這樣的名值對,  Key不可重復,Value可以。這里有幾個(gè)容易混淆的問(wèn)題:

到底Vector和ArrayList,Hashtable和HashMap有什么區別?
很多面試官喜歡問(wèn)這個(gè)問(wèn)題,其實(shí)更專(zhuān)業(yè)一點(diǎn)應該這樣問(wèn):新集合框架和舊集合框架有哪些區別?新集合框架大家可以在這些包中找since  jdk1.2的,之前的如vector和Hashtable都是舊的集合框架包括的類(lèi)。那么區別是?
a.  新集合框架的命名更加科學(xué)合理。例如List下的ArrayList和LinkedList
b.  新集合框架下全部都是非線(xiàn)程安全的。建議去jdk里面包含的源代碼里面自己去親自看看vector和ArrayList的區別吧。當然如果是jdk5.0之后的會(huì )比較難看一點(diǎn),因為又加入了泛型的語(yǔ)法,類(lèi)似c++的template語(yǔ)法。

那么大家是否想過(guò)為什么要從舊集合框架默認全部加鎖防止多線(xiàn)程訪(fǎng)問(wèn)更新到新集合框架全部取消鎖,默認方式支持多線(xiàn)程?(當然需要的時(shí)候可以使用collections的靜態(tài)方法加鎖達到線(xiàn)程安全)
筆者的觀(guān)點(diǎn)是任何技術(shù)的發(fā)展都未必是遵循它們的初衷的,很多重大改變是受到客觀(guān)環(huán)境的影響的。大家知道Java的初衷是為什么而開(kāi)發(fā)的麼?是為嵌入式程序開(kāi)發(fā)的。記得上一篇講到classLoader機制麼?那正是為了節約嵌入式開(kāi)發(fā)環(huán)境下內存而設計的。而走到今天,Java成了人們心中為互聯(lián)網(wǎng)誕生的語(yǔ)言?;ヂ?lián)網(wǎng)意味著(zhù)什么?多線(xiàn)程是必然的趨勢??陀^(guān)環(huán)境在變,Java技術(shù)也隨著(zhù)飛速發(fā)展,導致越來(lái)越脫離它的初衷。據說(shuō)Sun公司其實(shí)主打的是J2se,結果又是由于客觀(guān)環(huán)境影響,J2se幾乎遺忘,留在大家談?wù)摻裹c(diǎn)的一直是j2ee。

技術(shù)的細節這里就不多說(shuō)了,只有用了才能真正理解。解釋這些正是為了幫助大家理解正在學(xué)的和將要學(xué)的任何技術(shù)。之后講j2ee的時(shí)候還會(huì )再討論。
多扯句題外話(huà):幾十年前的IT巨人是IBM,Mainframe市場(chǎng)無(wú)人可比。微軟如何打敗IBM?正是由于硬件飛速發(fā)展,對個(gè)人PC的需求這個(gè)客觀(guān)環(huán)境,讓微軟通過(guò)OS稱(chēng)為了第二個(gè)巨人。下一個(gè)打敗微軟的呢?Google。如何做到的?如果微軟并不和IBM爭大型機,Google借著(zhù)互聯(lián)網(wǎng)飛速發(fā)展這個(gè)客觀(guān)環(huán)境作為決定性因素,避開(kāi)跟微軟爭OS,而是走搜索引擎這條路,稱(chēng)為第3個(gè)巨人。那么第4個(gè)巨人是誰(shuí)呢?很多專(zhuān)家預言將在亞洲或者中國出現,  Whatever,客觀(guān)環(huán)境變化趨勢才是決定大方向的關(guān)鍵。當然筆者也希望會(huì )出現在中國,^_^~~

2.  關(guān)于Java設計模式
身邊的很多在看GOF的23種設計模式,似乎學(xué)習它無(wú)論在學(xué)校還是在職場(chǎng),都成了一種流行風(fēng)氣。我不想列舉解釋這23種Design  Pattern,  我寫(xiě)這些的初衷一直都是談自己的經(jīng)歷和看法,希望能幫助大家理解。
首先我覺(jué)得設計模式只是對一類(lèi)問(wèn)題的一種通用解決辦法,只要是面向對象的編程預言都可以用得上這23種。理解它們最好的方法就是親自去寫(xiě)每一種,哪怕是一個(gè)簡(jiǎn)單的應用就足夠了。如果代碼實(shí)現也記不住的話(huà),記憶它們對應的UML圖會(huì )是一個(gè)比較好的辦法,當然前提是必須了解UML。
同時(shí)最好能利用Java自身的類(lèi)庫幫助記憶,例如比較常用的觀(guān)察者模式,在java.util.*有現成的Observer接口和Observable這個(gè)實(shí)現類(lèi),看看源代碼相信就足夠理解觀(guān)察者模式了。再比如裝飾器模式,大家只要寫(xiě)幾個(gè)關(guān)于java.io.*的程序就可以完全理解什么是裝飾器模式了。有很多人覺(jué)得剛入門(mén)的時(shí)候不該接觸設計模式,比如圖靈設計叢書(shū)系列很出名的那本《Java設計模式》,作者:  Steven  John  Metsker,大部分例子老實(shí)說(shuō)令現在的我也很迷惑。但我仍然不同意入門(mén)跟學(xué)習設計模式有任何沖突,只是我們需要知道每種模式的概念的和典型的應用,這樣我們在第一次編寫(xiě)  FileOutputStream、BufferedReader、PrintWriter的時(shí)候就能感覺(jué)到原來(lái)設計模式離我們如此之近,而且并不是多么神秘的東西。

另外,在學(xué)習某些模式的同時(shí),反而更能幫助我們理解java類(lèi)庫的某些特點(diǎn)。例如當你編寫(xiě)原型(Prototype)模式的時(shí)候,你必須了解的是  java.lang.Cloneable這個(gè)接口和所有類(lèi)的基類(lèi)Object的clone()這個(gè)方法。即深copy和淺copy的區別:
Object.clone()默認實(shí)現的是淺copy,也就是復制一份對象拷貝,但如果對象包含其他對象的引用,不會(huì )復制引用,所以原對象和拷貝共用那個(gè)引用的對象。
深copy當然就是包括對象的引用都一起復制啦。這樣原對象和拷貝對象,都分別擁有一份引用對象。如果要實(shí)現深copy就必須首先實(shí)現  java.lang.Cloneable接口,然后重寫(xiě)clone()方法。因為在Object中的clone()方法是protected簽名的,而  Cloneable接口的作用就是把protected放大到public,這樣clone()才能被重寫(xiě)。

那么又有個(gè)問(wèn)題了?如果引用的對象又引用了其他對象呢?這樣一直判斷并復制下去,是不是顯得很麻煩?曾經(jīng)有位前輩告訴我的方法是重寫(xiě)clone方法的時(shí)候直接把原對象序列化到磁盤(pán)上再反序列化回來(lái),這樣不用判斷就可以得到一個(gè)深copy的結果。如果大家不了解序列化的作法建議看一看  ObjectOutputStream和ObjectInputStream

歸根結底,模式只是思想上的東西,把它當成前人總結的經(jīng)驗其實(shí)一點(diǎn)都不為過(guò)。鼓勵大家動(dòng)手自己去寫(xiě),例如代理模式,可以簡(jiǎn)單的寫(xiě)一個(gè)Child類(lèi),  Adult類(lèi)。Child要買(mǎi)任何東西由Adult來(lái)代理實(shí)現。簡(jiǎn)單來(lái)說(shuō)就是Adult里的buy()內部實(shí)際調用的是Child的buy(),可是暴露在main函數的卻是Adult.buy()。這樣一個(gè)簡(jiǎn)單的程序就足夠理解代理模式的基本含義了。 
本站僅提供存儲服務(wù),所有內容均由用戶(hù)發(fā)布,如發(fā)現有害或侵權內容,請點(diǎn)擊舉報。
打開(kāi)APP,閱讀全文并永久保存 查看更多類(lèi)似文章
猜你喜歡
類(lèi)似文章
java集合框架總結
Java面試手冊:集合框架
Immutable Class/Java Cloning :: 晴空Isle
讀《Thinking in Java》第4版筆記(下)
40個(gè)Java集合面試問(wèn)題和答案
Java 集合框架
更多類(lèi)似文章 >>
生活服務(wù)
分享 收藏 導長(cháng)圖 關(guān)注 下載文章
綁定賬號成功
后續可登錄賬號暢享VIP特權!
如果VIP功能使用有故障,
可點(diǎn)擊這里聯(lián)系客服!

聯(lián)系客服

欧美性猛交XXXX免费看蜜桃,成人网18免费韩国,亚洲国产成人精品区综合,欧美日韩一区二区三区高清不卡,亚洲综合一区二区精品久久