更新時間:2019-08-03 09:00:00 來源:動力節點 瀏覽2505次
程序員每天都和代碼打交道。經過數年的基礎教育和職業培訓,大部分程序員都會「寫」代碼,或者至少會抄代碼和改代碼。但是,會讀代碼的并不在多數,會讀代碼又真正讀懂一些大項目的源碼的,少之又少。這種怪狀,真要追究起來,怪不得程序員這個群體本身——它是兩個原因造成的。
我們所有的教育和培訓都在強調怎么寫代碼,并沒有教大家如何讀代碼
大多數工作場景都是一個蘿卜一個坑,我們只需要了解一個系統的局部便能開展工作,讀不相干的代碼,似乎沒用
我常常把寫代碼和寫作進行類比——二者有很多相通之處;但從培養寫代碼和寫作的過程來看,二者又有很多不同。我們的寫作能力,是建立在大量基礎閱讀的基礎上的,是除了學習語法和文法知識外,從小學開始,經年累月,通過閱讀各種不同層次的名家的作品,再加上各種各樣的寫作訓練,累積出來的;而我們的寫代碼的能力,在了解和掌握了語法/文法之后(學習和抄寫example代碼也算語法/文法學習的一部分),跳過了大量閱讀名家作品的過程,直接biu地一下就自動養成了:學會基礎的語法和試驗了若干example后,我們就火箭般躥到了自己寫代碼打怪贊經驗的階段。這樣略過大量閱讀代碼的階段有三個害處:
寫代碼的基礎是不牢靠的,打怪升級的過程也是最慢的。道理很簡單——前輩們踩過的坑,總結的經驗教訓,你都不得不親自用最慢的法子一點點試著踩一遍。
很容易養成stackoverflowdriven的寫代碼習慣——遇到不知如何寫的代碼,從網上找現成的答案,找個高票的復制粘貼改吧改吧,湊活著完成功能再說。寫代碼的過程中遇到問題,開啟調試模式,要么設置無數斷點一步步跟蹤,要么到處打印信息試圖為滿是窟窿的代碼打上補丁,導致整個寫代碼的過程是一部調代碼的血淚史。(見我的文章:你要避免的軟件開發模式)
你周圍最強的那個工程師的開發水平的上限就是你的上限。
二、分布式架構體系
分布式怎么來的。傳統的電信、銀行業,當業務量大了之后,普通服務器CPU/IO/網絡到了100%,請求太慢怎么辦?最直接的做法,升級硬件,反正也不缺錢,IBM小型機,大型機,采購了堆硬件。
但是互聯網不能這么干,互聯網沒有那么財大氣粗,還有很多初創,能不能賺錢還不知道。所以就有了軟件方面的解決方案:分布式系統,簡單說,就是一臺服務器不行,我用兩臺、10臺、100臺...這就要軟件系統需要支持。
那么多臺機器,我如何讓他們協同工作,這就需要一個調度中心(或注冊中心);肯定涉及到機器間通信,那么需要一個高效的RPC框架;一個請求過來了,如何分發,需要一個請求分發系統(負載均衡);然后還要考慮每個角色都不能成為性能瓶頸;還有要能方便的進行橫向擴展,還有考慮單節點故障。
三,并發編程體系
為什么需要并發
并發其實是一種解耦合的策略,它幫助我們把做什么(目標)和什么時候做(時機)分開。這樣做可以明顯改進應用程序的吞吐量(獲得更多的CPU調度時間)和結構(程序有多個部分在協同工作)。做過JavaWeb開發的人都知道,JavaWeb中的Servlet程序在Servlet容器的支持下采用單實例多線程的工作模式,Servlet容器為你處理了并發問題。
誤解和正解
最常見的對并發編程的誤解有以下這些:
-并發總能改進性能(并發在CPU有很多空閑時間時能明顯改進程序的性能,但當線程數量較多的時候,線程間頻繁的調度切換反而會讓系統的性能下降)-編寫并發程序無需修改原有的設計(目的與時機的解耦往往會對系統結構產生巨大的影響)-在使用Web或EJB容器時不用關注并發問題(只有了解了容器在做什么,才能更好的使用容器)
下面的這些說法才是對并發客觀的認識:
-編寫并發程序會在代碼上增加額外的開銷-正確的并發是非常復雜的,即使對于很簡單的問題-并發中的缺陷因為不易重現也不容易被發現-并發往往需要對設計策略從根本上進行修改
四、性能優化
性能優化,簡而言之,就是在不影響系統運行正確性的前提下,使之運行地更快,完成特定功能所需的時間更短。性能問題永遠是永恒的主題之一,而優化則更需要技巧。
五、工程化專題
工欲善其事必先利其器,工具對Java程序員的重要性不言而喻現在有很多庫、實用工具和程序任Java開發人員選擇。下圖列出的工具都是程序員必不可少的工具
六、微服務架構
微服務(Microservice)這個概念是2012年出現的,作為加快Web和移動應用程序開發進程的一種方法,2014年開始受到各方的關注,而2015年,可以說是微服務的元年;
越來越多的論壇、社區、blog以及互聯網行業巨頭開始對微服務進行討論、實踐,可以說這樣更近一步推動了微服務的發展和創新。
微服務架構(MicroserviceArchitecture)是一種架構概念,旨在通過將功能分解到各個離散的服務中以實現對解決方案的解耦。你可以將其看作是在架構層次而非獲取服務的
類上應用很多SOLID原則。微服務架構是個很有趣的概念,它的主要作用是將功能分解到離散的各個服務當中,從而降低系統的耦合性,并提供更加靈活的服務支持。
七,項目實戰專題
對于所學的知識將用一個大型的電商項目來實踐使用你的知識
最后在給大家分享一些適合于1-5年以上開發經驗的Java程序員面試涉及到的絕大部分面試題及答案,以及比較好的架構視頻資料免費分享給大家:
0基礎 0學費 15天面授
有基礎 直達就業
業余時間 高薪轉行
工作1~3年,加薪神器
工作3~5年,晉升架構
提交申請后,顧問老師會電話與您溝通安排學習