我的java學(xué)習(xí)之路
緣起
五年前開始接觸java娃弓,中間斷斷續(xù)續(xù)從事了廣告投放辟汰、社區(qū)app服務(wù)列敲、云服務(wù)3個行業(yè)的服務(wù)端開發(fā)阱佛,在java這個大生態(tài)系統(tǒng),web框架戴而、中間件凑术、大數(shù)據(jù)這幾個名詞貫穿了這幾年的職業(yè)生活
轉(zhuǎn)型期
說實話,第一次跳槽的時候所意,并沒有想著往java方向轉(zhuǎn)型淮逊,和大多數(shù)“迷茫”的年輕人一樣扶踊,我只是知道現(xiàn)在的工作不是自己期待的
偶然的機會得到了一家中型互聯(lián)網(wǎng)公司的offer泄鹏,然后我接受了這份offer,當(dāng)時根本沒有考慮待遇秧耗、發(fā)展备籽、職業(yè)發(fā)展的問題,這也為一年后的再次跳槽埋下了伏筆
當(dāng)時的團隊對于新人的培養(yǎng)分井,以放養(yǎng)為主(這可能也是目前大多數(shù)公司的培養(yǎng)方式)车猬,從零開始學(xué)java,看項目的代碼尺锚,看前面的“新人”留下的學(xué)習(xí)分享珠闰,看關(guān)于廣告投放業(yè)務(wù)的wiki,還有每個計算廣告從業(yè)者必看的“計算廣告學(xué)”
這一年瘫辩,學(xué)會了guava cache
的簡單使用伏嗜,學(xué)會了java集合庫HashMap
的簡單使用,了解了一點spring杭朱,其他阅仔。。弧械。什么也沒學(xué)到
成長期
一年后八酒,部門整體績效很差,每周要做的事情一天搞定刃唐,我接受不了這樣的現(xiàn)實羞迷。。画饥。嗯嗯衔瓮,好吧,更多的因素是抖甘,我存不下錢來热鞍,還看不到希望。。我跳槽了第二家社區(qū)app服務(wù)公司薇宠,另外一家中型互聯(lián)網(wǎng)公司偷办,業(yè)務(wù)更具互聯(lián)網(wǎng)特質(zhì)
新人的培養(yǎng)模式是放養(yǎng)為主,節(jié)奏卻快了很多澄港,以周為單位完成小任務(wù)椒涯,熟悉系統(tǒng)之后,逐步上手更大的任務(wù)回梧,在這里废岂,數(shù)據(jù)量不再是之前的mysql存?zhèn)€數(shù)據(jù)完事,一套完整的大數(shù)據(jù)系統(tǒng)狱意,存儲湖苞、分析、優(yōu)化详囤,要接觸業(yè)務(wù)開發(fā)袒啼、要了解大數(shù)據(jù)棧、要前端的開發(fā)纬纪,還要做架構(gòu)的優(yōu)化
這三年里,接觸了大數(shù)據(jù)棧滑肉,了解了整個web技術(shù)棧包各,開始了一些較深層次的技術(shù)棧學(xué)習(xí),借用“痛并快樂著”形容這段經(jīng)歷靶庙,再合適不過
再次轉(zhuǎn)型期
一年前问畅,跳槽云計算行業(yè),這次轉(zhuǎn)行完全出乎意料六荒,轉(zhuǎn)行之后护姆,也是出乎自己的意料,行業(yè)的不同掏击,對技術(shù)棧的理解和使用是完全的不同卵皂,前幾年的開發(fā),相對注重研發(fā)體驗砚亭,在效率和流程矛盾時灯变,流程服務(wù)于效率,而在目前的工作中捅膘,流程至上
新人培養(yǎng)上是徹底的放養(yǎng)添祸,對于有工作經(jīng)驗的同學(xué),“可能也不是一件壞事”寻仗,技術(shù)棧方面刃泌,web框架使用了比較非主流的web框架akka,徹徹底底的使用“自研”框架,為了解決項目中比較難以處理的資源有效管理問題耙替,“自研”了工作流引擎
小結(jié)
選擇大于努力
項目決定了工作下限亚侠,團隊決定了視野的開闊
長遠發(fā)展,項目>團隊>收入>公司
不過林艘,好的項目盖奈、團隊,收入不會差
web棧
前端的知識是web開發(fā)的極大補充狐援,才能對目前的仍然主流的基于servlet
web棧有較為直觀而深入的認(rèn)識钢坦,厘清頁面和請求之間關(guān)系
前端作為入口,能更好的衍生理解互聯(lián)網(wǎng)的發(fā)展過程啥酱,以及相關(guān)使用的技術(shù)
java棧
- jdk集合庫
集合庫是java開發(fā)打交道最多的工具庫爹凹,jdk是我讀過的最好的代碼,目前沒有之一镶殷,如linus所說rtfsc
- jvm
GcRoots是jvm中最重要的主線禾酱,是jvm的起點,也是jvm的終點 - 多線程
內(nèi)存模型很重要绘趋,由此可以展開颤陶,偽共享、線程同步
aqs是必修的hard級別的課程陷遮,必讀滓走,難度很大,典型的高投入長周期回報 - 緩存
"封神"的redis帽馋,有些過譽了搅方,無腦吹讓人很煩
緩存穿透以及緩存雪崩的處理,還有一致性問題如何處理 - kafka
通過分區(qū)加IO優(yōu)化實現(xiàn)高并發(fā)寫绽族,broker間isr同步
跟其他mq的功能對比 - mysql
B+數(shù)據(jù)結(jié)構(gòu)姨涡,以及由此而來的好處
sql的優(yōu)化,不過吧慢,沒花時間看的涛漂,實際用的也少,是個盲點
大數(shù)據(jù)
日常使用為主娄蔼,主要的是hbase怖喻、hive、spark岁诉,API用好已經(jīng)占用了很多的時間锚沸,核心的點是底層數(shù)據(jù)模型,花的時間不夠
反思
少即是多
去年deno更新的時候涕癣,國內(nèi)“調(diào)皮”的玩家刷屏技術(shù)更新太快哗蜈,知乎上跟帖 不要在更新了前标,學(xué)不動了,這是個技術(shù)不斷更新迭代的時代距潘,老的技術(shù)還沒啃炼列,新的框架又在開發(fā)了
這種趨勢會形成從業(yè)者的不斷焦慮,有太多的東西要學(xué)了音比,太多不了解的東西俭尖,過去的幾年工作中,從最開始的嘗試各種不同的新技術(shù)洞翩,在學(xué)會了幾個demo之后稽犁,心里衍生出一絲自我安慰,似乎這個技術(shù)我已經(jīng)掌握了
我花了很多時間在接觸新技術(shù)上骚亿,結(jié)果大多數(shù)淺嘗輒止已亥,一個月之后,只留下自己曾經(jīng)調(diào)用過某個api的印象来屠,一直很忙碌虑椎,卻沒有成就,一直在學(xué)習(xí)俱笛,卻沒有成績
其實捆姜,少即是多,做事情迎膜、學(xué)技術(shù)枯冈,需要聚焦吟吝,然后深入一層分析憨奸,在沒有讀完官網(wǎng)guide之前或者一本相關(guān)的書籍之前灾螃,是不能稱之為“掌握”的镊讼,只是個調(diào)用api工具人
注重基礎(chǔ)積累
“沒有銀彈”不僅適用于軟件開發(fā)宽涌,也適用于自我提升,再高大上的技術(shù)棧也是建立在底層的if else之上蝶棋,各種框架和庫給開發(fā)帶來了巨大的效率提升卸亮,同時也帶來了隱藏在背后的復(fù)雜性
如今快餐文化盛行,在前幾年的工作中玩裙,自己大多數(shù)的時間胡亂分配在了很多“流行”的技術(shù)點上兼贸,無法形成有效的積累,概念沒有有效串聯(lián)起來吃溅,這是個很大的問題溶诞,經(jīng)歷不起一個為什么的追問
不要著急讀源碼
在過去學(xué)習(xí)一個新的技術(shù)時,我犯過兩個較大的錯誤:讀源碼和想直接讀源碼
這是很多人都會踩的坑决侈,開始的時候螺垢,追求快速上手,閱后即焚,不再深究枉圃;在經(jīng)歷幾次外部的挫折功茴,如“面試”和“被面試”,就想去硬讀源碼孽亲,然后深受打擊坎穿,放棄深究
在決定讀源碼之前,需要明確自己讀源碼的目標(biāo)是什么返劲,需要了解源碼的基礎(chǔ)組成玲昧,然后再做有選擇的閱讀
在真正開始之前,大可以讀讀別人的總結(jié)或者博客旭等,站在“巨人”的肩膀之上酌呆,將行深至遠
知識需要閉環(huán)
所有的學(xué)習(xí)方法都在告訴自己“閉環(huán)”的重要性,而“閉環(huán)”這個工作卻是最難的
“閉環(huán)”意味著總結(jié)搔耕,意味著理念的提升隙袁,也是學(xué)習(xí)路程中,最艱難卻重要的一段
總有各種各樣的干擾來打斷自己的閉環(huán)流程弃榨,主觀或者客觀菩收,而回望過去,印象最深刻鲸睛、理解最透徹的娜饵,往往都是經(jīng)歷了閉環(huán)
培養(yǎng)好奇心
好奇心是打開新世界的鑰匙,是功利性另一面
功利性學(xué)習(xí)非常有針對性官辈,能夠短期給自己帶來較大的收益箱舞,隨之而來的問題是基礎(chǔ)不穩(wěn),印象不深刻拳亿,大多數(shù)是他人的看法晴股,他人的理解,不是自己的東西
好奇心能夠解決這些問題肺魁,達到知其所以然的目標(biāo)电湘,凡事盡量多問一個為什么,形成自己的理解鹅经,成為自己的知識
寫的很長了寂呛,補充一點,技術(shù)是工具瘾晃,不是目的