軟件架構(gòu)師在整個(gè)軟件開(kāi)發(fā)過(guò)程中都起著重要的作用,并隨著開(kāi)發(fā)進(jìn)程的推進(jìn)而其職責(zé)或關(guān)注點(diǎn)不斷地變化,總結(jié)下面幾點(diǎn)。
在需求階段,軟件架構(gòu)師主要負(fù)責(zé)理解和管理非功能性系統(tǒng)需求,比如軟件的可維護(hù)性、性能、復(fù)用性、可靠性、有效性和可測(cè)試性等等,此外,架構(gòu)師還要經(jīng)常審查客戶及市場(chǎng)人員所提出的需求,確認(rèn)開(kāi)發(fā)團(tuán)隊(duì)所提出的設(shè)計(jì);
在需求越來(lái)越明確后,架構(gòu)師的關(guān)注點(diǎn)開(kāi)始轉(zhuǎn)移到組織開(kāi)發(fā)團(tuán)隊(duì)成員和開(kāi)發(fā)過(guò)程定義上;
在軟件設(shè)計(jì)階段,架構(gòu)師負(fù)責(zé)對(duì)整個(gè)軟件體系結(jié)構(gòu)、關(guān)鍵構(gòu)件、接口和開(kāi)發(fā)政策的設(shè)計(jì);
在編碼階段,架構(gòu)師則成為詳細(xì)設(shè)計(jì)者和代碼編寫(xiě)者的顧問(wèn),并且經(jīng)常性地要舉行一些技術(shù)研討會(huì)、技術(shù)培訓(xùn)班等;
隨著軟件開(kāi)始測(cè)試、集成和交付,集成和測(cè)試支持將成為軟件架構(gòu)師的工作重點(diǎn);
在軟件維護(hù)開(kāi)始時(shí),軟件架構(gòu)師就開(kāi)始為下一版本的產(chǎn)品是否應(yīng)該增加新的功能模塊進(jìn)行決策。
在中國(guó)不缺程序員,缺的是高級(jí)架構(gòu)師,先來(lái)看看兩者的薪酬對(duì)比,就知道兩者間的差距:
但為什么在如此龐大的基數(shù)下,架構(gòu)師的數(shù)量這么少,中間差了什么?對(duì)于普通程序員來(lái)說(shuō),成為高級(jí)架構(gòu)師的門(mén)檻主要有以下幾點(diǎn):
1、錯(cuò)誤的學(xué)習(xí)方法。在技術(shù)日新月異的今天,誰(shuí)在單位時(shí)間學(xué)到的知識(shí)更多,誰(shuí)的學(xué)習(xí)方法更高效,誰(shuí)就獲得更強(qiáng)的競(jìng)爭(zhēng)優(yōu)勢(shì)。而很多程序員在工作中,還用著學(xué)校時(shí)的學(xué)習(xí)方法,非常低效,公司不是學(xué)校,啃書(shū)本的學(xué)習(xí)方法已不再有效。
2、完整的知識(shí)體系。沒(méi)有形成系統(tǒng)化的知識(shí)架構(gòu),最重要的是不知道哪些技術(shù)需要重點(diǎn)掌握,學(xué)習(xí)時(shí)頻繁踩坑,最終浪費(fèi)大量時(shí)間。
3、對(duì)編程的認(rèn)知。頂級(jí)程序員和平庸程序員,本質(zhì)區(qū)別是遇到問(wèn)題時(shí)的思考方式,這就是所謂的頂級(jí)程序員思維,一種高效解決問(wèn)題的思維方式。這種思維方式,不是讀幾本Java書(shū)能學(xué)到的,而需要經(jīng)過(guò)大量項(xiàng)目實(shí)戰(zhàn),才能總結(jié)提煉出來(lái)。
4、差的學(xué)習(xí)環(huán)境。很多程序員的學(xué)習(xí)環(huán)境很差,在公司經(jīng)常加班,工作幾年后,發(fā)現(xiàn)自己除了更熟悉公司業(yè)務(wù)外,能力沒(méi)有得到半點(diǎn)提升,或周末基本不學(xué)習(xí),而是出去玩。這么差的自制力和學(xué)習(xí)環(huán)境,很難讓能力提到大的提升。
上面四點(diǎn),每一點(diǎn)都非常難做到,也正因?yàn)檫@樣,才會(huì)出現(xiàn)平庸的程序員很多,架構(gòu)師卻鳳毛麟角的現(xiàn)象。
那如何才能克服上面四點(diǎn),成為一名合格的Java架構(gòu)師呢?
俗話說(shuō)“沒(méi)有見(jiàn)過(guò)好程序,怎么可能寫(xiě)出好程序”,同樣,也可以說(shuō)“不了解架構(gòu)師的能力、工作,怎么可能成為架構(gòu)師”,如果沒(méi)有接觸過(guò)頂級(jí)架構(gòu)師,那你怎么知道自己要往哪個(gè)方向努力?所以,最好的方法是找個(gè)頂級(jí)架構(gòu)師,去教你“高效的學(xué)習(xí)方法”、“完整的知識(shí)體系”和“對(duì)編程正確的認(rèn)知”,讓他去督促你學(xué)習(xí),為你營(yíng)造出“良好的學(xué)習(xí)環(huán)境”。
但是大牛很忙,不太可能單獨(dú)給你開(kāi)小灶,更不可能每天都給你開(kāi)1個(gè)小時(shí)的小灶;而且一個(gè)團(tuán)隊(duì)里面,如果大牛平時(shí)經(jīng)常給你開(kāi)小灶,難免會(huì)引起其他團(tuán)隊(duì)成員的疑惑,我個(gè)人認(rèn)為如果團(tuán)隊(duì)里的大牛如果真正有心的話,多給團(tuán)隊(duì)培訓(xùn)是最好的。然而做過(guò)培訓(xùn)的都知道,準(zhǔn)備一場(chǎng)培訓(xùn)是很耗費(fèi)時(shí)間的,課件和材料至少2個(gè)小時(shí)(還不能是碎片時(shí)間),講解1個(gè)小時(shí),大牛們一個(gè)月做一次培訓(xùn)已經(jīng)是很高頻了。
因?yàn)榈谝粋€(gè)原因,所以一般要找大牛,都是帶著問(wèn)題去請(qǐng)教或者探討。因?yàn)榛卮鸹蛘咛接憜?wèn)題無(wú)需太多的時(shí)間,更多的是靠經(jīng)驗(yàn)和積累,這種情況下大牛們都是很樂(lè)意的,畢竟影響力是大牛的一個(gè)重要指標(biāo)嘛。然而也要特別注意:如果經(jīng)常問(wèn)那些書(shū)本或者google能夠很容易查到的知識(shí),大牛們也會(huì)很不耐煩的,畢竟時(shí)間寶貴。經(jīng)常有網(wǎng)友問(wèn)我諸如“jvm的-Xmn參數(shù)如何配置”這類問(wèn)題,我都是直接回答“請(qǐng)直接去google”,因?yàn)檫@樣的問(wèn)題實(shí)在是太多了,如果自己不去系統(tǒng)學(xué)習(xí),每個(gè)都要問(wèn)是非常浪費(fèi)自己和別人的時(shí)間的。
大牛不多,不太可能每個(gè)團(tuán)隊(duì)都有技術(shù)大牛,只能說(shuō)團(tuán)隊(duì)里面會(huì)有比你水平高的人,即使他每天給你開(kāi)小灶,最終你也只能提升到他的水平;而如果是跨團(tuán)隊(duì)的技術(shù)大牛,由于工作安排和分配的原因,直接請(qǐng)教和輔導(dǎo)的機(jī)會(huì)是比較少的,單憑參加幾次大牛的培訓(xùn),是不太可能就成為技術(shù)大牛的。
所以要想成為技術(shù)大牛,首先還是要明白“主要靠自己”這個(gè)道理,適當(dāng)?shù)臅r(shí)候可以通過(guò)請(qǐng)教大牛或者和大牛探討來(lái)提升自己,但大部分時(shí)間還是自己系統(tǒng)性、有針對(duì)性的提升。
既然java架構(gòu)師,首先你要是一個(gè)高級(jí)java工程師,熟練使用各種框架,并知道它們實(shí)現(xiàn)的原理。
jvm虛擬機(jī)原理、調(diào)優(yōu),懂得jvm能讓你寫(xiě)出性能更好的代碼;
池技術(shù),什么對(duì)象池,連接池,線程池,java反射技術(shù),寫(xiě)框架必備的技術(shù),但是有嚴(yán)重的性能問(wèn)題,替代方案java字節(jié)碼技術(shù);
nio,值得注意的是“直接內(nèi)存”的特點(diǎn),使用場(chǎng)景;
java多線程同步異步;
java各種集合對(duì)象的實(shí)現(xiàn)原理,了解這些可以讓你在解決問(wèn)題時(shí)選擇合適的數(shù)據(jù)結(jié)構(gòu),高效的解決問(wèn)題,比如hashmap的實(shí)現(xiàn)原理,好多五年以上經(jīng)驗(yàn)的人都弄不清楚,還有為什擴(kuò)容時(shí)有性能問(wèn)題?不弄清楚這些原理,就寫(xiě)不出高效的代碼,還會(huì)認(rèn)為自己做的很對(duì);總之一句話越基礎(chǔ)的東西越重要,很多人認(rèn)為自己會(huì)用它們寫(xiě)代碼了,其實(shí)僅僅是知道如何調(diào)用api而已,離會(huì)用還差的遠(yuǎn)。
熟練使用各種數(shù)據(jù)結(jié)構(gòu)和算法,數(shù)組、哈希、鏈表、排序樹(shù)...,就是一句話要么是時(shí)間換空間要么是空間換時(shí)間,這里展開(kāi)可以說(shuō)一大堆,需要有一定的應(yīng)用經(jīng)驗(yàn),用于解決各種性能或業(yè)務(wù)上的問(wèn)題。
熟練使用linux操作系統(tǒng),必備。
熟悉tcp協(xié)議,創(chuàng)建連接三次握手和斷開(kāi)連接四次握手的整個(gè)過(guò)程,不了解的話,無(wú)法對(duì)高并發(fā)網(wǎng)絡(luò)應(yīng)用做優(yōu)化;
熟悉http協(xié)議,尤其是http頭,我發(fā)現(xiàn)好多工作五年以上的都弄不清session和cookie的生命周期以及它們之間的關(guān)聯(lián)。
系統(tǒng)集群、負(fù)載均衡、反向代理、動(dòng)靜分離,網(wǎng)站靜態(tài)化。
分布式存儲(chǔ)系統(tǒng)nfs,fastdfs,tfs,Hadoop了解他們的優(yōu)缺點(diǎn),適用場(chǎng)景。
分布式緩存技術(shù)memcached,redis,提高系統(tǒng)性能必備,一句話,把硬盤(pán)上的內(nèi)容放到內(nèi)存里來(lái)提速,順便提個(gè)算法一致性hash。
工具nginx必備技能超級(jí)好用,高性能,基本不會(huì)掛掉的服務(wù)器,功能多多,解決各種問(wèn)題。
數(shù)據(jù)庫(kù)的設(shè)計(jì)能力,mysql必備,最基礎(chǔ)的數(shù)據(jù)庫(kù)工具,免費(fèi)好用,對(duì)它基本的參數(shù)優(yōu)化,慢查詢?nèi)罩痉治?,主從?fù)制的配置,至少要成為半個(gè)mysqldba。其他nosql數(shù)據(jù)庫(kù)如mongodb。
還有隊(duì)列中間件。如消息推送,可以先把消息寫(xiě)入數(shù)據(jù)庫(kù),推送放隊(duì)列服務(wù)器上,由推送服務(wù)器去隊(duì)列獲取處理,這樣就可以將消息放數(shù)據(jù)庫(kù)和隊(duì)列里后直接給用戶反饋,推送過(guò)程則由推送服務(wù)器和隊(duì)列服務(wù)器完成,好處異步處理、緩解服務(wù)器壓力,解藕系統(tǒng)。
那成為架構(gòu)師所需要具備哪些技能?
架構(gòu)師思考的是全局的東西,是如何組織你的系統(tǒng),以達(dá)到業(yè)務(wù)要求,性能要求,具備可擴(kuò)展性(scalability),可拓展性(extendability),前后兼容性等??赡苌婕暗降臇|西包括了從硬件到軟件的方方面面。
一個(gè)合格的架構(gòu)師要耐得住寂寞,在同事不停的在打榮耀而你只能不停的學(xué)習(xí),是踩著坑上位的,是無(wú)數(shù)次推翻之前自己設(shè)計(jì) 的 “狗屎”架構(gòu),無(wú)數(shù)次日日夜夜加班而煉成的。
架構(gòu)師不僅要上知技術(shù)實(shí)現(xiàn)細(xì)節(jié),而且還要會(huì)項(xiàng)目管理、設(shè)計(jì)理論、性能優(yōu)化、熟練使用各種工具,為公司各種業(yè)務(wù)提供技術(shù)支持,從前端到后臺(tái)再到數(shù)據(jù)庫(kù)、運(yùn)維,哪里需要去哪里,還要一副好口才能睡服領(lǐng)導(dǎo)同事。
歡迎工作一到五年的Java工程師朋友們加入Java架構(gòu)開(kāi)發(fā):760940986
群內(nèi)提供免費(fèi)的Java架構(gòu)學(xué)習(xí)資料(里面有高可用、高并發(fā)、高性能及分布式、Jvm性能調(diào)優(yōu)、Spring源碼,MyBatis,Netty,Redis,Kafka,Mysql,Zookeeper,Tomcat,Docker,Dubbo,Nginx等多個(gè)知識(shí)點(diǎn)的架構(gòu)資料)合理利用自己每一分每一秒的時(shí)間來(lái)學(xué)習(xí)提升自己,不要再用"沒(méi)有時(shí)間“來(lái)掩飾自己思想上的懶惰!趁年輕,使勁拼,給未來(lái)的自己一個(gè)交代!
領(lǐng)取下面架構(gòu)視頻資料!
性能調(diào)優(yōu)專題:
常用框架源碼分析:
B2C商城顯目實(shí)戰(zhàn):
團(tuán)隊(duì)協(xié)作開(kāi)發(fā)專題:
微服務(wù)專題:
互聯(lián)網(wǎng)分布式架構(gòu)專題:
學(xué)到這里,你離架構(gòu)師就不遠(yuǎn)了!
當(dāng)然,想成為架構(gòu)師不是懂了一大堆技術(shù)就可以了,這些是解決問(wèn)題的基礎(chǔ)、是工具,如果這些技術(shù)問(wèn)題不懂怎樣做到,如何能夠找到解決方案呢?這是成為架構(gòu)師的必要條件。
架構(gòu)師還要針對(duì)業(yè)務(wù)特點(diǎn)、系統(tǒng)的性能要求提出能解決問(wèn)題成本最低的設(shè)計(jì)方案才合格,人家一個(gè)幾百人用戶的系統(tǒng),訪問(wèn)量不大,數(shù)據(jù)量小,你給人家上集群、上分布式存儲(chǔ)、上高端服務(wù)器,為了架構(gòu)而架構(gòu),這是不可取的,所以總結(jié)兩點(diǎn):架構(gòu)師的作用就是第一滿足業(yè)務(wù)需求,第二最低的硬件網(wǎng)絡(luò)成本和技術(shù)維護(hù)成本。
如果想要成為一名優(yōu)秀的架構(gòu)師還需要根據(jù)業(yè)務(wù)發(fā)展情況,提前預(yù)見(jiàn)發(fā)展到下一個(gè)階段系統(tǒng)架構(gòu)的解決方案,并且設(shè)計(jì)當(dāng)前架構(gòu)時(shí)將架構(gòu)的升級(jí)擴(kuò)展考慮進(jìn)去,做到易于升級(jí);否則等系統(tǒng)瓶頸來(lái)了,出問(wèn)題了再去出方案,或現(xiàn)有架構(gòu)無(wú)法擴(kuò)展直接扔掉重做,或擴(kuò)展麻煩問(wèn)題一大堆,這會(huì)對(duì)企業(yè)造成損失。
大廠的大神還有如下的幾個(gè)建議:
首先是要多讀一些書(shū),其中最基礎(chǔ)的是類似于重構(gòu)和設(shè)計(jì)模式這種書(shū),你需要知道很多小尺度級(jí)別上的問(wèn)題解決技巧(如果你要做導(dǎo)演,你首先要做得是能熟練地把一個(gè)句子翻譯為一組鏡頭),以及這些作者梳理問(wèn)題的方式,反過(guò)來(lái)問(wèn)一下自己,如果讓你來(lái)寫(xiě)設(shè)計(jì)模式這本書(shū),你有哪些知識(shí)點(diǎn)可以寫(xiě)?你如何組織這些知識(shí)點(diǎn)?如何讓大家接受你的觀點(diǎn)。
看完這兩本書(shū)之后,非常推薦你看一下 Martin Fowler 寫(xiě)的《企業(yè)應(yīng)用架構(gòu)模式》和 Eric Evans 的《領(lǐng)域驅(qū)動(dòng)設(shè)計(jì)》這類書(shū),他能擴(kuò)大你的視野,專注于更有意義的問(wèn)題,而不是設(shè)計(jì)模式究竟有多少種這種缺乏意義的問(wèn)題。有一句話叫,“如果要成功,就要遠(yuǎn)離那些廉價(jià)的娛樂(lè)”。類似的,對(duì)于軟件工程師來(lái)講,要想讓自己更強(qiáng),就要遠(yuǎn)離那些廉價(jià)的爭(zhēng)論(vim vs emacs, linux vs unix, redhat vs debian, 這些爭(zhēng)論其實(shí)并沒(méi)有太大的價(jià)值)。
其次,你要對(duì)大量開(kāi)源軟件的實(shí)際特性有深入的了解,容量究竟多大?高可用怎么做?如何擴(kuò)容?是否易維護(hù)?這些知識(shí)部分來(lái)自網(wǎng)上的各種測(cè)試和經(jīng)驗(yàn)文章,部分還要來(lái)自你的親手測(cè)試。作為架構(gòu)師,你的每一個(gè)技術(shù)選型都是在挖坑,給你的開(kāi)發(fā)、測(cè)試、運(yùn)維團(tuán)隊(duì)挖坑,而你的作用之一,就是保證你的團(tuán)隊(duì)能夠在你的幫助下從坑里走出來(lái)。
另外,要解決很多大尺度的問(wèn)題,你需要從很多同行去吸收經(jīng)驗(yàn),我個(gè)人的經(jīng)驗(yàn)就是,閱讀每年兩次 QCon 和 ArchSummit 架構(gòu)相關(guān)的幻燈片,先只看題目和問(wèn)題部分,自己想一想解決方案是啥,然后再看一下演講者給出的解答,通過(guò)這種方式來(lái)淬煉自己的思維,豐富自己的工具箱。我想提醒的一點(diǎn)是,由于軟件行業(yè)還遠(yuǎn)不成熟,所以一個(gè)架構(gòu)師會(huì)長(zhǎng)期跟進(jìn)一個(gè)項(xiàng)目,這就導(dǎo)致了一個(gè)架構(gòu)師如果不主動(dòng)去練習(xí)的話,一輩子也做不了幾個(gè)架構(gòu),至少相對(duì)于建筑專業(yè)的結(jié)構(gòu)工程師來(lái)講,我們每年的項(xiàng)目缺少少很多。你做的架構(gòu)越少,你就越容易自滿。
最后,我希望你是一個(gè)終身學(xué)習(xí)者,不管多忙,一定要規(guī)劃你的學(xué)習(xí)時(shí)間,一個(gè)星期也許不用太多,幾個(gè)小時(shí)即可,但這幾個(gè)小時(shí)一定要用在刀刃上,所以最好是哪些需要幾十個(gè)小時(shí)甚至更多時(shí)間才能弄清楚的課題,而且一直要堅(jiān)持到這個(gè)課題結(jié)束。千萬(wàn)不能是學(xué)一點(diǎn)這個(gè)概念,遇到新事物,就馬上轉(zhuǎn)移方向。如果你有這樣的習(xí)慣,我建議你先把新想法放到一個(gè)池子里,等手邊的課題學(xué)習(xí)完,再到池子里邊撈一個(gè)新課題來(lái)繼續(xù)學(xué)習(xí)。不過(guò)關(guān)于學(xué)習(xí),這個(gè)是一個(gè)很大的話題,就不在這兒闡述了。
那如何學(xué)習(xí)呢?
如何掌握有效的學(xué)習(xí)方法呢,參考網(wǎng)友給的一些不錯(cuò)的方法拿來(lái)分享,光看不用效果很差,怎么辦?
例如:
學(xué)習(xí)了jvm的垃圾回收,但是線上比較少出現(xiàn)FGC導(dǎo)致的卡頓問(wèn)題,就算出現(xiàn)了,恢復(fù)業(yè)務(wù)也是第一位的,不太可能線上出現(xiàn)問(wèn)題然后讓每個(gè)同學(xué)都去練一下手,那怎么去實(shí)踐這些jvm的知識(shí)和技能呢?
Netty我也看了,也了解了Reactor的原理,但是我不可能參與Netty開(kāi)發(fā),怎么去讓自己真正掌握Reactor異步模式呢?
看了《高性能MySQL》,但是線上的數(shù)據(jù)庫(kù)都是DBA管理的,測(cè)試環(huán)境的數(shù)據(jù)庫(kù)感覺(jué)又是隨便配置的,我怎么去驗(yàn)證這些技術(shù)呢?
框架封裝了DAL層,數(shù)據(jù)庫(kù)的訪問(wèn)我們都不需要操心,我們?cè)趺慈チ私夥謳?kù)分表實(shí)現(xiàn)?
諸如此類問(wèn)題還有很多,我這里分享一下個(gè)人的經(jīng)驗(yàn),其實(shí)就是3個(gè)詞:learning、trying、teaching!
1)Learning
這個(gè)是第一階段,看書(shū)、google、看視頻、看別人的博客都可以,但要注意一點(diǎn)是“系統(tǒng)化”,特別是一些基礎(chǔ)性的東西,例如JVM原理、Java編程、網(wǎng)絡(luò)編程,HTTP協(xié)議等等,這些基礎(chǔ)技術(shù)不能只通過(guò)google或者博客學(xué)習(xí),我的做法一般是先完整的看完一本書(shū)全面的了解,然后再通過(guò)google、視頻、博客去有針對(duì)性的查找一些有疑問(wèn)的地方,或者一些技巧。
2)Trying
這個(gè)步驟就是解答前面提到的很多同學(xué)的疑惑的關(guān)鍵點(diǎn),形象來(lái)說(shuō)就是“自己動(dòng)手豐衣足食”,也就是自己去嘗試搭建一些模擬環(huán)境,自己寫(xiě)一些測(cè)試程序。例如:
Jvm垃圾回收:可以自己寫(xiě)一個(gè)簡(jiǎn)單的測(cè)試程序,分配內(nèi)存不釋放,然后調(diào)整各種jvm啟動(dòng)參數(shù),再運(yùn)行的過(guò)程中使用jstack、jstat等命令查看jvm的堆內(nèi)存分布和垃圾回收情況。這樣的程序?qū)懫饋?lái)很簡(jiǎn)單,簡(jiǎn)單一點(diǎn)的就幾行,復(fù)雜一點(diǎn)的也就幾十行。
Reactor原理:自己真正去嘗試寫(xiě)一個(gè)Reactor模式的Demo,不要以為這個(gè)很難,最簡(jiǎn)單的Reactor模式代碼量(包括注釋)不超過(guò)200行(可以參考Doug Lee的PPT)。自己寫(xiě)完后,再去看看netty怎么做,一對(duì)比理解就更加深刻了。
MySQL:既然有線上的配置可以參考,那可以直接讓DBA將線上配置發(fā)給我們(注意去掉敏感信息),直接學(xué)習(xí);然后自己搭建一個(gè)MySQL環(huán)境,用線上的配置啟動(dòng);要知道很多同學(xué)用了很多年MySQL,但是連個(gè)簡(jiǎn)單的MySQL環(huán)境都搭不起來(lái)。
框架封裝了DAL層:可以自己用JDBC嘗試去寫(xiě)一個(gè)分庫(kù)分表的簡(jiǎn)單實(shí)現(xiàn),然后與框架的實(shí)現(xiàn)進(jìn)行對(duì)比,看看差異在哪里。
用瀏覽器的工具查看HTTP緩存實(shí)現(xiàn),看看不同種類的網(wǎng)站,不同類型的資源,具體是如何控制緩存的;也可以自己用Python寫(xiě)一個(gè)簡(jiǎn)單的HTTP服務(wù)器,模擬返回各種HTTP Headers來(lái)觀察瀏覽器的反應(yīng)。
還有很多方法,這里就不一一列舉,簡(jiǎn)單來(lái)說(shuō),就是要將學(xué)到的東西真正試試,才能理解更加深刻,印第安人有一句諺語(yǔ):I hear and I forget. I see and I remember. I do and I understand ,而且“試試”其實(shí)可以比較簡(jiǎn)單,很多時(shí)候我們都可以自己動(dòng)手做。
當(dāng)然,如果能夠在實(shí)際工作中使用,效果會(huì)更好,畢竟實(shí)際的線上環(huán)境和業(yè)務(wù)復(fù)雜度不是我們寫(xiě)個(gè)模擬程序就能夠模擬的,但這樣的機(jī)會(huì)可遇不可求,大部分情況我們還真的只能靠自己模擬,然后等到真正業(yè)務(wù)要用的時(shí)候,能夠信手拈來(lái)。
3)Teaching
一般來(lái)說(shuō),經(jīng)過(guò)Learning和Trying,能掌握70%左右,但要真正掌握,我覺(jué)得一定要做到能夠跟別人講清楚。因?yàn)樵谥v的時(shí)候,我們既需要將一個(gè)知識(shí)點(diǎn)系統(tǒng)化,也需要考慮各種細(xì)節(jié),這會(huì)促使我們進(jìn)一步思考和學(xué)習(xí)。同時(shí),講出來(lái)后看或者聽(tīng)的人可以有不同的理解,或者有新的補(bǔ)充,這相當(dāng)于繼續(xù)完善了整個(gè)知識(shí)技能體系。
這樣的例子很多,包括我自己寫(xiě)博客的時(shí)候經(jīng)常遇到,本來(lái)我覺(jué)得自己已經(jīng)掌握很全面了,但一寫(xiě)就發(fā)現(xiàn)很多點(diǎn)沒(méi)考慮到;組內(nèi)培訓(xùn)的時(shí)候也經(jīng)常看到,有的同學(xué)寫(xiě)了PPT,但是講的時(shí)候,大家一問(wèn),或者一討論,就會(huì)發(fā)現(xiàn)很多點(diǎn)還沒(méi)有講清楚,或者有的點(diǎn)其實(shí)是理解錯(cuò)了。寫(xiě)PPT、講PPT、討論P(yáng)PT,這個(gè)流程全部走一遍,基本上對(duì)一個(gè)知識(shí)點(diǎn)掌握就比較全面了。
最后撒點(diǎn)雞湯,所謂學(xué)而時(shí)習(xí)之,溫故而知新,即使是架構(gòu)師也需要不停的學(xué)習(xí)、思考,新的技術(shù)層出不窮,不變的是那顆不甘安逸的心。
歡迎工作一到五年的Java工程師朋友們加入Java架構(gòu)開(kāi)發(fā):760940986
群內(nèi)提供免費(fèi)的Java架構(gòu)學(xué)習(xí)資料(里面有高可用、高并發(fā)、高性能及分布式、Jvm性能調(diào)優(yōu)、Spring源碼,MyBatis,Netty,Redis,Kafka,Mysql,Zookeeper,Tomcat,Docker,Dubbo,Nginx等多個(gè)知識(shí)點(diǎn)的架構(gòu)資料)合理利用自己每一分每一秒的時(shí)間來(lái)學(xué)習(xí)提升自己,不要再用"沒(méi)有時(shí)間“來(lái)掩飾自己思想上的懶惰!趁年輕,使勁拼,給未來(lái)的自己一個(gè)交代!