程序猿的進化之路

前言

眾所周知,這幾年有一句非?;鸨脑挘骸凹奕司图蕹绦騿T”。身為一個程序員我只能表示,對象只存在于IDE中。
那么接下來我們來談?wù)劼殬I(yè)發(fā)展所需要的知識儲備量到底要達到什么水平才可以達到程序員夢寐以求的架構(gòu)師的行列。

知識儲備

首先,作為java開發(fā)人員,一定熟知JVM,那么我們還有具體的去了解JVM虛擬原理和如何進行調(diào)優(yōu),要知道如果你深刻了解的JVM,你就可以寫出性能更好的代碼,大大提高開發(fā)效率。

有位朋友曾經(jīng)給我說“多抽點時間看架構(gòu),少畫時間玩框架?!蹦敲次覀兙托枰私鈐ava的反射技術(shù)去擼框架了,但是這樣做會存在一些嚴重的性能問題。

然后還需要掌握的還有各種池技術(shù),像什么線程池,鏈接池,對象池希望你能夠手到擒來。

想成為架構(gòu)師,java的高并發(fā)和同步異步問題是必須要懂的,深入的如學(xué)習(xí)。還有各種集合的實現(xiàn)原理,對你也會有更大的幫助。現(xiàn)在好多開發(fā)者都不注重數(shù)據(jù)結(jié)構(gòu),算法這些底層的東西,從而不能更高效的去解決問題。舉個例子,像一些map的集合,你可能想不到還有開發(fā)經(jīng)驗五年的還不是很熟悉。

總之一句話:千里之行,始于足下,很多人認為自己會寫代碼了就是會用了,其實他們僅僅是知道如何調(diào)用api而已,離會用還差的遠。

下面來說說服務(wù)器、網(wǎng)絡(luò)方面的知識

當項目上線時候,離不開服務(wù)器,而服務(wù)器都是在Linux上,所以這就要求你需要相當熟悉Linux的指令,這對我們來說并不是一個難事,下個虛擬機沒事敲幾下就可以快速使用起來了。

然后就是http和tcp協(xié)議,建議你空余時間多看看網(wǎng)絡(luò)方面的知識,我發(fā)現(xiàn)在中國,我們國家網(wǎng)絡(luò)安全方面的人才很少,所以這個方向是一個很有前途的方向。

在tcp協(xié)議中,要了解創(chuàng)建連接三次握手和斷開連接四次握手的整個過程,這樣就可以輕松應(yīng)對高并發(fā)并對網(wǎng)絡(luò)應(yīng)用做優(yōu)化。

http協(xié)議,尤其是http頭,要弄清session和cookie的生命周期以及它們之間的關(guān)聯(lián)。

接下來的一些我就簡單說了具體東西大家可以關(guān)注我的公眾號,希望大家能夠提出自己的建議!

系統(tǒng)集群、負載均衡、反向代理、動靜分離,網(wǎng)站靜態(tài)化 。
  
分布式存儲系統(tǒng)nfs,fastdfs,tfs,Hadoop了解他們的優(yōu)缺點,適用場景 。
  
分布式緩存技術(shù)memcached,redis,提高系統(tǒng)性能必備,一句話,把硬盤上的內(nèi)容放到內(nèi)存里來提速,順便提個算法一致性hash 。
  
工具nginx必備技能超級好用,高性能,基本不會掛掉的服務(wù)器,功能多多,解決各種問題。

數(shù)據(jù)庫的設(shè)計能力,mysql必備,最基礎(chǔ)的數(shù)據(jù)庫工具,免費好用,對它基本的參數(shù)優(yōu)化,慢查詢?nèi)罩痉治?,主從?fù)制的配置,至少要成為半個mysql dba。其他nosql數(shù)據(jù)庫如mongodb。
  
還有隊列中間件。如消息推送,可以先把消息寫入數(shù)據(jù)庫,推送放隊列服務(wù)器上,由推送服務(wù)器去隊列獲取處理,這樣就可以將消息放數(shù)據(jù)庫和隊列里后直接給用戶反饋,推送過程則由推送服務(wù)器和隊列服務(wù)器完成,好處異步處理、緩解服務(wù)器壓力,解藕系統(tǒng)。

結(jié)語

說了這么多,其實都還是純粹的基礎(chǔ)技術(shù),并且還沒有列全。要想成為架構(gòu)師,除了這些之外,就還要具備我們說的組織能力和解決問題的能力了。還有很多自己慢慢去摸索吧;

因為要知道的東西很多,所以要成為一名合格的架構(gòu)師,必須要有強大的自學(xué)能力,沒有人會手把手的教給你所有的東西。
  
想成為架構(gòu)師不是懂了一大堆技術(shù)就可以了,這些是解決問題的基礎(chǔ)、是工具,不懂這些怎么去提解決方案呢?這是成為架構(gòu)師的必要條件。
  
架構(gòu)師要針對業(yè)務(wù)特點、系統(tǒng)的性能要求提出能解決問題成本最低的設(shè)計方案才合格;

架構(gòu)師思考的是全局的東西,是如何組織系統(tǒng),以達到業(yè)務(wù)要求、性能要求。架構(gòu)師要針對業(yè)務(wù)特點、系統(tǒng)的性能要求提出解決問題成本最低的設(shè)計方案。

為了架構(gòu)而架構(gòu),這是絕對不可取的。列如一個用戶系統(tǒng),訪問量不大,數(shù)據(jù)量小,你要上集群、上分布式存儲、上高端服務(wù)器,為了架構(gòu)而架構(gòu),這是最白扯的,架構(gòu)師的作用就是第一滿足業(yè)務(wù)需求,第二最低的硬件網(wǎng)絡(luò)成本和技術(shù)維護成本。
  
架構(gòu)師還要根據(jù)業(yè)務(wù)發(fā)展階段,提前預(yù)見發(fā)展到下一個階段系統(tǒng)架構(gòu)的解決方案,并且設(shè)計當前架構(gòu)時將架構(gòu)的升級擴展考慮進去,做到易于升級;

否則等系統(tǒng)瓶頸來了,出問題了再去出方案,或現(xiàn)有架構(gòu)無法擴展直接扔掉重做,或擴展麻煩問題一大堆,這會對企業(yè)造成損失。

歡迎關(guān)注微信公眾號:java大牛愛好者

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容