成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

Java 征途:行者的地圖

dkzwm / 3178人閱讀

摘要:老實(shí)說,當(dāng)時(shí)一進(jìn)入世界的大門就暈了,各種規(guī)范概念和英文縮寫詞能把人整的暈暈乎乎。等新的英文縮寫又出現(xiàn)了,一口老血還沒來得及噴出,又重新振作開始新的學(xué)習(xí)征程。

前段時(shí)間應(yīng) CSDN 邀請審核 Java 知識庫內(nèi)容,借此我也有機(jī)會好好梳理了下自己的 Java 知識體系, 成文一篇望能幫到即將走進(jìn)或正在 Java 世界跋涉的程序員們。

第一張,基礎(chǔ)圖

大約在 2003 年我開始知道 Java 的(當(dāng)時(shí)還在用 Delphi),但到 2004 年本科畢業(yè)才開始正式?jīng)Q定學(xué)習(xí) Java。 那時(shí)覺得用 Delphi 寫 C/S 架構(gòu)的程序沒什么意思,Java 當(dāng)時(shí)提出的 J2EE 規(guī)范概念,企業(yè)級架構(gòu)感覺各種高大上,壓抑不住內(nèi)心的欲望就這么開啟了 Java 的征途。 老實(shí)說,當(dāng)時(shí)一進(jìn)入 Java 世界的大門就暈了,各種規(guī)范、概念和英文縮寫詞能把人整的暈暈乎乎。

J2SE

J2EE

J2ME

JSP

JDBC

JMS

EJB

JNDI

JDBC

JTA

隨便回憶了下當(dāng)時(shí)一進(jìn)來咋一看到的東西,很多陌生的英文名詞縮寫(幸好那時(shí) Java 還沒有各種框架百花齊放,要不更暈了),根本不知道該從哪里入手學(xué)起。 而正好同學(xué)有本 JSP 的書,所以我就從 JSP 入手了。老實(shí)說那真是本爛書,我現(xiàn)在連名字都不記得了,大概記得是從一些例子入手搭建起一個(gè) JSP 的 Demo 站點(diǎn)。 被各種環(huán)境、容器問題虐了千百遍后終于跑起了個(gè)例子,從本機(jī)瀏覽器終于看到例子里的頁面,有一秒鐘的成就感,然后就是茫然。 因?yàn)槲腋靖悴欢@一切是怎么工作的,它們的原理是什么? 繞了一大圈,走了很多彎路,如果再給我一次重來的機(jī)會,我會從基本 Java 語言基礎(chǔ)開始。

什么是基礎(chǔ)?Java 是一門面向?qū)ο笳Z言,最重要的概念是對象,而其所有的語法不過都是圍繞它展開。 而其他程序的基本的結(jié)構(gòu)和變量:順序、循環(huán)、分支,有之前的其他語言基礎(chǔ)不過就是換了個(gè)形式而已。 理解了對象,那么圍繞對象的概念:類、接口都是自然的延伸。 當(dāng)然掌握了核心概念和基本的語法,也不過就是能寫個(gè) Hello World 的水準(zhǔn),但重點(diǎn)是你的起點(diǎn)對了,征程就近了。

這個(gè)階段通過讀好書和作一些基本的練習(xí)來熟悉語言和相關(guān)類庫。 Java 起步的書籍在我的印象中《Thinking In Java》挺合適(哎,我繞了一圈才看到這本書),當(dāng)然也還有些其他不錯(cuò)的書,如《Introduction to Java Programming》,《Core Java》。 我的感受是這類起步書可以多弄幾本,一個(gè)知識點(diǎn)參照著讀,畢竟一個(gè)作者可能也有疏漏,橫向閱讀,而不是縱向把一本從頭啃到尾。 一個(gè)知識點(diǎn)一個(gè)知識點(diǎn)的抓住,搞通,一步就踩一個(gè)深深的腳印,不要到處亂跑,結(jié)果都是泛泛,起步慢點(diǎn),后面才能快。

關(guān)于基礎(chǔ),在我眼中最核心和重要的部分并不多,我這里簡單列下:

核心概念

對象模型

接口設(shè)計(jì)

類庫

lang

collections

concurrent

io

這里核心概念就不多寫了,基本體現(xiàn)在所有 Java 的代碼庫中,伴隨始終,差別只在理解和抽象的適度與否。 JDK 那么多庫,這里只列了上面幾個(gè),lang 里面其實(shí)最重要的我想說的是 String,這是很多人都忽略的。 C 里沒有 String 的概念,Java 則提供了這個(gè)對象,但沒能好好理解并用好這個(gè)對象,以后會讓你踩無盡的坑,還反復(fù)踩。 不信去搜搜關(guān)于各種字符編碼亂碼的低級問題有多少,除此還有由于 String 引發(fā)的各種性能問題。 由 String 這個(gè)核心對象發(fā)散出去關(guān)于字符的編碼,字符的字節(jié)表達(dá)(大端、小端、網(wǎng)絡(luò)字節(jié)序),對 GC 的影響,正則表達(dá),模式匹配,這可能是 Java 里內(nèi)涵最豐富的對象了。

Collections 框架提供了大量常用的數(shù)據(jù)結(jié)構(gòu)封裝,基本讓 Java 程序員告別了手動實(shí)現(xiàn)你從數(shù)據(jù)結(jié)構(gòu)課程上學(xué)來的絕大部分常用數(shù)據(jù)結(jié)構(gòu)。 正確理解不同數(shù)據(jù)結(jié)構(gòu)的適用場景比自己能手動實(shí)現(xiàn)它們有用的多,沒事多看看 Collections 中的代碼,都是大師級的實(shí)現(xiàn)啊。 記得我學(xué) Java 時(shí)還是 JDK 1.3,進(jìn)入工作后主流是 1.4,那時(shí)是沒有 concurrent 庫的。 自己處理線程間通信時(shí),被各種通知遺漏、早通知,死鎖搞的死去活來。 所以現(xiàn)在的 Java 的程序員都要幸福的多了,concurrent 又一個(gè)大師級的類庫實(shí)現(xiàn),也是可以沒事多看看,多揣摩。 IO 庫,不論是文件 IO 還是網(wǎng)絡(luò) IO 都是 Java 程序員最常打交道的,熟悉它的 API 固然重要, 但更重要的是理解是如何對 IO 操作的抽象和建模,理解不同的 IO 模型其背后的本質(zhì)與原理。

好了,當(dāng)完成可上面這些基礎(chǔ)內(nèi)容的學(xué)習(xí)后,我們得到了第一張地圖,像下面這樣。

第二張,技能圖

即使掌握了第一張圖要在 Java 的世界自由馳騁還是有點(diǎn)小困難的。 現(xiàn)在 Java 的一個(gè)主流使用場景是后端開發(fā),這一領(lǐng)域在它的上一個(gè)時(shí)代是 J2EE(現(xiàn)在叫 Java EE) 的天下,又稱為 Java 企業(yè)版。 J2EE 包含的內(nèi)容很多,核心是 EJB。當(dāng)時(shí)我剛在學(xué)校里累死累活學(xué)完分布式對象技術(shù),以 CORBA 和 EJB 為例來實(shí)作。 又看了好幾本 EJB 設(shè)計(jì)模式和最佳實(shí)踐的書,然后還沒畢業(yè)進(jìn)入公司一實(shí)習(xí)發(fā)現(xiàn)大家說現(xiàn)在不用 EJB 了,我們用一個(gè)叫 Spring 的東東。 IoC、DI 等新的英文縮寫又出現(xiàn)了,一口老血還沒來得及噴出,又重新振作開始新的學(xué)習(xí)征程。

是的,EJB 在那時(shí)(2005)開始慢慢退出主流。 音樂學(xué)博士 Rod Johnson 一本 《Expert One-on-One J2EE Development without EJB》宣判了 EJB 的死刑,Spring 登上歷史舞臺。 從此 Java 進(jìn)入了 Framework 大發(fā)展的時(shí)代,SSH/SSI 等技術(shù)框架組合形成了 Java 開發(fā)的主流,并持續(xù)影響至今。

Java 的框架越來越多,生態(tài)越來越大,初學(xué)者面對如此龐雜的框架,想必也是內(nèi)心茫然,感覺真是學(xué)無止境,沒完沒了。 其實(shí)真實(shí)的項(xiàng)目中,真正用到的框架并不多,SSH/SSI 基本作為 Java Web 項(xiàng)目的核心框架,是你上手的核心利器,自需熟練掌握。 但知其然還需知其所以然,Spring 接管了對象創(chuàng)建和相互依賴管理的工作,把設(shè)計(jì)模式隱藏在框架的運(yùn)用中,很多人只知用而未曾思。 Web 開發(fā)從早期的 JSP 一大亂燉(HTML + CSS + JS + Java + SQL,早期我就是把所有這些都放一個(gè) JSP 里,想想有多難維護(hù)),到 MVC 的職責(zé)劃分。 僅僅一個(gè) View 層也經(jīng)歷了從標(biāo)簽庫到頁面模版(Velocity、Freemarker)的進(jìn)化,如今更徹底的前后端分離模型我更喜歡。 曾幾何時(shí)調(diào)幾個(gè)頁面的 CSS 樣式殺死了我多少時(shí)間,專業(yè)化分工是有利于效率和深度的,互聯(lián)網(wǎng)和移動互聯(lián)網(wǎng)大發(fā)展引發(fā)的 Web 版本進(jìn)化,讓如今的前端復(fù)雜度已不在后端之下。

那么作為一個(gè) Java 工程師我到底要掌握多少框架才夠?這是一個(gè)偽命題,因?yàn)檎莆斩嗌賯€(gè)都不會夠。 核心的熟練掌握幾個(gè),泛泛了解大量的,掌握快速學(xué)習(xí)框架的能力才是解決之道。 還是以 SSH/SSI 為例,專業(yè)前端分工的趨勢越發(fā)明顯,徹底解放了后端 Java 工程師的苦惱。 以 Spring 為例的框架解決了大量通用型的問題,今天的 Spring 比當(dāng)初大了幾十倍不止吧(把所有以 Spring 冠名的子項(xiàng)目算上的話),都是解決特定的通用問題。 所以當(dāng)你寫代碼時(shí)突然想寫個(gè)以 Util 命名的類時(shí),停住想想這是一個(gè)解決通用問題的類么,不妨搜搜現(xiàn)成的類庫,比如說不定 Apache Commons 里就有你需要的代碼。 通用類庫和框架讓我們解放出來專注業(yè)務(wù)邏輯與效率,這很可能是你的代碼最有價(jià)值的部分,有程序員可能會抱怨這些沒技術(shù)含量,而我認(rèn)為能用最有效的技術(shù)實(shí)現(xiàn)業(yè)務(wù)價(jià)值最大化才是最有技術(shù)含量的事。

框架如兵器,十八般(遠(yuǎn)不止十八)兵器我未必樣樣會,但我們得有一樣能力,如張無忌學(xué)太極劍一樣,臨敵學(xué)劍還能勝之。 這里面的訣竅不在學(xué)習(xí)招式,好比你也許覺得你 Hibernate 用法掌握的爐火純青又如何,一上線數(shù)據(jù)庫卻先崩潰了。 這里的本質(zhì)還在理解關(guān)系(SQL)數(shù)據(jù)庫,現(xiàn)在也許還需要加上對特定非關(guān)系(NoSQL)數(shù)據(jù)庫的原理與機(jī)制的理解,甚至包括對 O/R 映射模型的本質(zhì)理解。

所以,基礎(chǔ)像內(nèi)功、框架如兵器、運(yùn)用為招式,存乎一心、運(yùn)用之妙,三者融會貫通,則已可在 Java 世界縱橫一方。 如上所述,基于此我們有了第二張地圖。

第三張,延伸圖

而第三張圖,我已無法再給出一個(gè)我認(rèn)為稍具普適性的建議。 到了這個(gè)階段每個(gè)人的成長發(fā)展方向會受其環(huán)境和實(shí)際情況影響,我以自身為例稍加說明。 進(jìn)入互聯(lián)網(wǎng)公司后這幾年,Java 技術(shù)的發(fā)展開始從 J2EE 容器化的單一應(yīng)用向 SOA 和微服務(wù)發(fā)展變遷。 規(guī)?;姆植际较到y(tǒng)成為常態(tài),所以我更多的相關(guān)工作便集中于此領(lǐng)域。 一方面縱深挖掘繼續(xù)補(bǔ)全知識盲區(qū),比如分布式程序的基礎(chǔ)是 RPC 調(diào)用,RPC 的本質(zhì)是網(wǎng)絡(luò)加對象序列化。 相應(yīng)就去徹底搞懂 TCP 的原理,Unix/Linux 下網(wǎng)絡(luò)編程模型,幾種不同的網(wǎng)絡(luò) IO 模型。 然后再上升到 Java 基于此提供的網(wǎng)絡(luò)編程模型,BIO(阻塞)、NIO(非阻塞)和 AIO(異步IO),并結(jié)合實(shí)際工作實(shí)踐去深入理解。

在這個(gè)過程接觸了大量不同的 RPC 技術(shù),從 Java 自帶的 RMI 到 WebService 技術(shù)規(guī)范。 之后一些更簡潔、性能更強(qiáng)大的 RPC 框架層出不窮,如 Hessian、Thrift 等等。 不同框架的本質(zhì)依然如一,隨著服務(wù)化的發(fā)展基于 RPC 框架又進(jìn)一步衍生出提供額外增值功能的服務(wù)框架,如阿里開源的 Dubbo。 隨著工作實(shí)踐的深入,向下有可能又會進(jìn)入 JVM 層面去分析對象的內(nèi)存使用,線程的調(diào)度運(yùn)行和延時(shí)情況。 這個(gè)階段發(fā)揮核心作用的依然是前面說的快速學(xué)習(xí)并應(yīng)用于工作實(shí)踐的能力。

與縱深的另一面是橫向擴(kuò)展,隨著工作性質(zhì)的變化也可能需要更寬廣的技術(shù)知識面。 比如成為架構(gòu)師后,對技術(shù)知識面的廣度要求某些方面會更高。 有方法的技術(shù)學(xué)習(xí)和涉獵技巧讓你能更快擴(kuò)張技術(shù)寬度,站在更高維度來審視不同的技術(shù)方向和產(chǎn)品,最有效的做出合適的技術(shù)決策。

在這個(gè)階段的每個(gè)人都可能面臨不同的環(huán)境和實(shí)踐,所以這階段形成的地圖會千差萬別。 下面是我的第三張圖,僅供走在 Java 征途上的同行者們參考。 而按這千差萬別的地圖走過的路徑,正巧構(gòu)成獨(dú)一無二的你。

即使你現(xiàn)在還沒地圖,但也別茫然而永遠(yuǎn)的駐足不前。 保持前進(jìn)總會找到路,其實(shí)我就是這么過來的,一直以來,不敢止步。

寫點(diǎn)文字,畫點(diǎn)畫兒,「瞬息之間」一切都變了。覺得不錯(cuò),可長按或掃描二維碼關(guān)注。

文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/65767.html

相關(guān)文章

  • 技術(shù)人攻略訪談三十五|小猴機(jī)器人:征途路上,星辰大海

    摘要:導(dǎo)語本期訪談對象小猴機(jī)器人,清華人工智能專業(yè)博士在讀?;蛟S因?yàn)槌砷L于廣袤的內(nèi)蒙,小猴身上帶著大山和草原一般的灑脫與樂觀,在他鐘愛的無人車上,印上了一個(gè)美好的我們的征途是星辰大海。技術(shù)人攻略除了規(guī)則挖掘,人工智能遇到的難題還 showImg(https://segmentfault.com/img/bVc1yA); 文:Gracia,攝影:周振邦 (本文為原創(chuàng)內(nèi)容,部分或全文轉(zhuǎn)載均需經(jīng)作...

    siberiawolf 評論0 收藏0
  • 大模型時(shí)代小紅書+馬蜂窩:華人團(tuán)隊(duì)開發(fā) AI旅行app

    簡介一周前,由紅杉投資的硅谷初創(chuàng)公司UTA AI推出了其核心產(chǎn)品Wanderboat AI,這是一個(gè)基于GPT-4技術(shù)的智能旅行規(guī)劃工具。該平臺允許用戶通過對話交互來明確旅行的偏好和需求,并提供包括目的地、活動和實(shí)用建議在內(nèi)的定制化旅行建議。Wanderboat AI整合了視頻、圖片、地圖和評價(jià)等多種媒體資源,以增強(qiáng)用戶體驗(yàn)。它還具備智能互動特性,用戶可以隨時(shí)查詢并得到立即答復(fù)。Wanderboa...

    UCloud小助手 評論0 收藏0
  • 云計(jì)算貢獻(xiàn)計(jì)策城市交通治理

    摘要:包括華為中興在內(nèi)的多家供應(yīng)商,集成先進(jìn)的信息技術(shù)數(shù)據(jù)通信技術(shù)傳感器技術(shù)電子控制技術(shù)以及計(jì)算機(jī)技術(shù)等,綜合運(yùn)用于整個(gè)交通運(yùn)輸管理體系,為構(gòu)建城市智能交通管控系統(tǒng)項(xiàng)目提供整體解決方案。  關(guān)于解決城市交通擁堵的辦法從沒有間斷過。在數(shù)據(jù)時(shí)代,科技企業(yè)提供了新的解決方案?;ヂ?lián)網(wǎng)+交通,物聯(lián)網(wǎng),大數(shù)據(jù),云計(jì)算,數(shù)據(jù)科學(xué),智慧交通……瞧瞧這些時(shí)下最火的詞匯,足以昭示大眾和城市管理者的熱忱?! ∮么髷?shù)據(jù)預(yù)...

    cppowboy 評論0 收藏0
  • 大數(shù)據(jù)時(shí)代保護(hù)個(gè)人隱私5點(diǎn)建議

    摘要:以為例,據(jù)估算,每個(gè)用戶每年能為公司帶來美元的廣告收入。我想應(yīng)該會有相當(dāng)部分的人愿意出這筆錢來讓他們放過自己的個(gè)人信息,甚至可以出美元不用找零。 萬物互聯(lián),萬能的大數(shù)據(jù),讓我們變得無所不知,卻也讓我們所有的資料信息無處隱私,甚至受到生命與財(cái)產(chǎn)的安全威脅。而我們當(dāng)前所處互聯(lián)網(wǎng)絡(luò)中所面臨的這種防御不對等狀態(tài),一方面可以說是前期科技發(fā)展的探索征途中交付的學(xué)費(fèi),另一方面則是先行者急功近利留下太...

    weknow619 評論0 收藏0

發(fā)表評論

0條評論

最新活動
閱讀需要支付1元查看
<