java工程師都是怎么學(xué)習(xí)一個(gè)新的框架的?
首先你得明白框架這個(gè)詞,打個(gè)比方,你去趕集買東西,日用品買一些能拿,蔬菜,衣服再買了一大堆,單憑兩只手肯定是拿不了的,所以你需要一個(gè)框,裝下你所有的東西,滿足你的需求!
JAVA框架也是一樣的,都是我們在開發(fā)經(jīng)歷了陣痛之后總結(jié)出來的,實(shí)現(xiàn)某種特定功能的架構(gòu)。比如說spring用來管理對象,用來解耦,mybatis用的代替jdbc等等這些!
那么我們怎么學(xué)好一個(gè)JAVA框架呢?
1,先明白自己急需解決的是什么?學(xué)習(xí)框架之前你一定得有這個(gè)需求,不然學(xué)了白學(xué),而且不經(jīng)實(shí)踐,免不了學(xué)過就忘!
比如我們就是需要一個(gè)sql監(jiān)控工具,那么我們可以選擇druid,提供頁面化的監(jiān)控,能分析sql的執(zhí)行次數(shù),耗時(shí)等指標(biāo),幫助提升體統(tǒng)的并發(fā)能力!
或者我們覺得jdbc太難寫,我們需要封裝好工具,那么mybatis,hibernate都可以是我們的選擇!
2,想明白這個(gè)框架能做什么事?要明白這個(gè)框架設(shè)計(jì)的初衷,為什么能解決需要解決的問題!比如nginx為什么能處理大量的連接,底層使用的模型為什么用epoll,怎么實(shí)現(xiàn)的負(fù)載均衡?
3,怎么使用這個(gè)框架?框架都是為了使用的,是簡單配置還是需要實(shí)現(xiàn)接口,怎么擴(kuò)展?比如springboot,我們引入jar包,少許配置就能使用,能實(shí)現(xiàn)快速開發(fā)與部署,能輕松集成服務(wù)注冊與發(fā)現(xiàn),安全驗(yàn)證等,那么怎么加入別的組件?怎么加入日志?怎么接入測試框架?
4,深入底層:會用還不行,應(yīng)該知道它怎么運(yùn)行的,比如spring如何控制反轉(zhuǎn),怎么管理對象(無外乎都是用配置,解析,對象注冊,保存在hashMap等基本的數(shù)據(jù)結(jié)構(gòu)中,在使用的get出來即可)!抓住一條主線,深入分析整個(gè)系統(tǒng)架構(gòu)!
5,如何優(yōu)化框架?框架是別人寫的代碼,是代碼就有優(yōu)化的空間,根據(jù)自己的需求開發(fā)屬于自己的框架,比如緩存就有memcache,redis,ehcache等等,各有優(yōu)缺點(diǎn)!
寫在最后,框架其實(shí)就是一些功能封裝,我曾經(jīng)在面試的時(shí)候,被面試官問了一句話:你學(xué)了那么多框架,有哪個(gè)是所有功能都需要的?確實(shí),可能定制自己的框架才是最好的選擇吧!