一個Java程式設計師的2018年總結 | 掘金年度徵文

咖啡拿鐵發表於2019-01-06

逝去的2018

大概有2個月沒有真正的去寫過文章了,這段時間的確是太忙了,先給各位讀者道個歉。2018都過去快一週了,終於在週末的時候抽出了時間對2018進行總結。

在這匆匆的2018年中我閱讀了很多書籍,結識了很多人,瞭解了很多不同的學習方法,也領略過一些高深莫測的原始碼,寫過一些不精的技術文章。這一年的確經歷了很多,自己也得到了很多成長,獲得了很多感悟,而這些經驗,感悟我也將在這裡記錄下來。

2018的那些書

2018年買了很多書,但是目前看完的是少數,但是一般買書之前我都會參考很多地方的評論,以及他的目錄,自我認為選擇的書還是算不錯的吧,這裡我把我今年購物車的書列舉一下,大家可以參考一下:

  • 《kafka權威指南》《Apache Kafka原始碼剖析》 以前市面上基本沒有對於訊息佇列介紹的書 ,去年關於訊息佇列kafka的書一下出了好幾本,買書的好好挑選了一下,選擇了這兩本書。

《Apache Kafka原始碼剖析》:這是國內作者寫的一本書,如果你想了解訊息佇列實現原理,一些實現的核心思想,但是你並不是很想真正的實戰上面對他使用,對他調優,那麼這本書就足夠了,相信你閱讀了之後讀kafka,乃至其他訊息佇列都有一個全新的認識。 《kafka權威指南》:這本書是Kafka作者推薦的一本書,其實我覺得也可以叫kafka實戰,這本書講原理不是很深,但是對於實戰的場景卻講述得很透徹。如果想真正的業務上使用kafka那麼這本書是必不可少的。

  • 《大型網站技術架構演進》:相信很多人都閱讀過李智慧的《大型網站技術架構》這是一本13年的書,而《大型網站技術架構演進》這本書同樣也是阿里人寫的,如果光看名字你有可能以為這是那本書的2.0版本,但是真正的內容差別很多,作者許令波介紹了很多很好的思想,技術。比如中臺的演進,國際化的挑戰,尤其是合併部署,這個技術以前根本都沒聽過,但是我的水平有限,合併部署這一塊如何落地還是不是很清楚。這本書也比較薄,差不多2周之內就能閱讀完吧,非常推薦這本書。
  • 《架構整潔之道》:《架構整潔之道》是創造“Clean神話”的Bob大叔在架構領域的登峰之作。這本書不是很推薦新手玩家閱讀(當然閱讀之後肯定沒有壞處),這本書對於工作一段時間的人是非常有益的。這本書的章節劃分得很細總共34章,我特別喜歡這種劃分得很細的章節,有助於我們總結歸納。其中介紹的很多東西對於工作之後的人是非常有用的,如果不想只當寫程式碼的程式設計師,想對自己往更高的一個層面進步的,這本書應該會讓你受益匪淺。
  • 《碼出高效》:這本書相信不用我推薦也有很多人買,畢竟阿里出品。阿里孤盡的《阿里巴巴Java開發手冊》所制定的規約相信已經成為很多公司,很多部門的開發規約了,當然這本書我個人覺得可能還是更多的面向一個初,中級的,對於技術比較厲害的同學也可以閱讀,畢竟孤盡也介紹了很多自己的一些經驗。內容介紹得很全,由於太全了肯定就導致了不會太深,從計算機基礎,到Java語言,再到JVM,最後作者也介紹了個人成長。作為一個Javaer,相信你讀了這本書肯定能得到很多收穫。
  • 《Effective Java3》:《Effective Java2》已經出來快10年了,雖然第二版的內容到現在依然適用,但是現在Java11都出來了,Java6的規範顯然明顯是不夠的。買這本書的初衷是自己計劃看完一本英語書,但是這本書的中文版已經在12月份的時候出版,有興趣的可以去購買,第三版的《Effective Java》介紹了很多java7,java8,乃至java9的最佳實踐。所以這本書應該會逐漸替代《Effective Java2》在Java書屆中的地位。
  • 《領域驅動設計》《領域驅動設計精粹》:微服務的火熱讓DDD重新煥發了青春,我們的專案重構也用到了很多DDD的思想。很多人一開始就會陷入戰術模式的死衚衕,認為DDD就是充血模型。所以這裡首先推薦一下《領域驅動設計精粹》,這本書介紹了DDD的戰略模式,這本書叫DDD精粹但是卻通篇沒有提起戰術模式或者是充血等等,所以DDD的精粹應該是他的戰略建模,領域劃分等等,同時這本書很薄,大概一週就能讀完,所以對於想了解DDD的同學來說這本書很不錯。對於想了解更多的DDD可以閱讀《領域驅動設計》,這裡也推薦一下GitChat上張逸的領域驅動的課程,讓我也受益良多。
  • 《持續演進的Cloud Native:雲原生架構下微服務最佳實踐》:對於想了解什麼是微服務,如何做好一個微服務架構,那麼這本書可以幫助你。這本書目前只看了前面3章,作者的水平的確不錯。有興趣的可以瞭解。
  • 《資料密集型應用系統設計》:這本書是另外一個公眾號作者kirito推薦的,這本書很不錯,在這裡強烈推薦。但是比較厚,如果要把這本書看完,需要一定毅力的,目前我只看了3章。這本書介紹了很多分散式系統的內容,比如系統的可靠性,可維護,可擴充套件,資料編碼,時鐘不可靠怎麼處理等等。對分散式有興趣的同學閱讀這本書是一個不錯的選擇。

學習方法

2018年出現了很多知識付費,掘金小冊,GitChat,極客時間,提供給了我們更多的學習選擇。同時也有更多的優秀開源專案,更多公眾號,更多的技術文章如雨後春筍般湧現。

閱讀書籍

很多人特別喜歡讀文章,我這裡不是很推薦只讀文章,很多文章都比較碎片,沒有連貫性,比如你想學習kafka,可能有很多文章能介紹一個大概,但是真正的很多細節還是需要自己看書去系統閱讀學習。當然這裡要值得一提的是,作為技術人員也沒有必要只看技術上的書,對於一些方法論的書籍也可以做一些瞭解對自身的成長有很大的幫助。我一般閱讀書籍會給自己定個目標,比如今天看哪幾章,一般來說我看書不會一段時間只看一本,而是多本一起看,然後每天只閱讀適量的,有點類似於以前上學一樣學習多個科目,可能自己比較適應這種模式吧。所以希望想學技術的同學,讀書永遠都不能丟。

閱讀文件

很多人學習一個東西,會走進一個誤區,會首先去網上搜尋文章看看這個東西是什麼,這個東西怎麼用,文章寫得再好也只是他們個人的一些理解,但是真正作者要介紹的東西可能都在他的文件上面了,比如阿里前段時間開源的arthas,其實只需要閱讀他的文件,基本原理和使用方法都能瞭解得很清楚。

知識付費

不得不說18年的知識付費的確很火,很多社群都選擇了這個模式,的確我也很贊同這個模式,現在的技術社群垃圾文章遍地都是,我們篩選一個好文章就會浪費我們很多時間。如果一篇文章收費的話,那麼這個作者我相信他不會舔著個大臉去寫一些沒有營養的文章吧。

  • 極客時間:知識付費做得最好的我覺得應該是極客時間了,極客時間的作者的確都是比較有名的人,寫出來的文章自然也不會差,當然也別什麼課程都去買,對於自己來說有個度就好。畢竟買多了你真的沒有時間看,當然也有幾個課個人認為還是比較水,所以這裡也要分辨好。
  • GitChat: GitChat課程我只買了張逸的《領域驅動》,其餘的課程對於我自己來說沒有必要。GitChat比較適合你想要學習某個東西然後你去GitChat搜尋,看看是否對應的文章,一般來說這種文章比網路上搜尋出來的質量會好一點,並且你也可以直接和作者進行溝通。
  • 掘金小冊: 小冊的話比較推薦老錢的redis和閃電俠的Netty,這兩個都是比較不錯的小冊。掘金的課程比較少,作者的名氣和宣傳都比較弱。但是質量都還可以,希望掘金加油!

閱讀原始碼

讀原始碼這個學習方式,相對來說比較累,畢竟沒有前人給你鋪路,需要你自己從頭開始梳理,理解。當然讀原始碼的時候也可以配合網路上的一些分析文章去閱讀,有可能會事半功倍。

讀原始碼也需要針對性的,不能猴子搬苞谷似的閱讀,今天喜歡這個框架閱讀這個,明天喜歡那個系統就閱讀那個,一般來說閱讀原始碼需要堅持,需要把這個框架的整體思路理清,一些巧妙的細節也需要關注,最好讀原始碼的時候你能在上面打上你的中文註釋,然後用文章去記錄,去畫出作者的設計思想,比如常見的一些類圖,架構圖等等。

如果你還在只會閱讀Spring,Mybatis的原始碼的話,沒有方向去閱讀其他的那麼我可以推薦一下幾個不錯的專案的原始碼:

  • rocketMq:如果讀kafka的scala程式碼比較吃力的話,那麼閱讀rocktMq程式碼一定是你不二的選擇,通過rocktMq你可以瞭解如何去做到高效能的儲存等等。
  • sentinel:對服務限流,服務降級有興趣的同學可以瞭解這個框架的原始碼,畢竟是阿里開源的,還是很不錯的。
  • arthas,jvm-sandbox:這兩個的原始碼其實都比較類似,原理大同小異,可以選擇看看arthas他是如何做到實時監控我們服務的執行情況,當然你也可以學習到ASM,類載入器等知識。jvm-sandbox比較人性化裡面有很多中文註釋,幫助你理解。
  • caffeiene,guava cache:對快取如果比較感興趣的可以瞭解這兩個。
  • disruptor:這個原始碼強烈推薦看,程式碼來說相對於那些中介軟體來說少很多,也很容易理解。你可以學習到快取行,RingBuffer等知識。

當然我公眾號也寫過caffeine,guava,disruptor原理介紹的文章有興趣的可以自行閱讀。

國外文章

很多國內的技術文章其實都是二手的,很多東西還是需要檢視一些國外的文章,尤其是大家查詢什麼bug的時候StackOverflower肯定是少不了的,當然英語比較差的怎麼辦呢,對於技術文章來說英語單詞都比較簡單,容易理解,如果還是不行也可以使用有道翻譯,這裡谷歌不是很推薦,翻譯這種句子成中文自己測試之後還是有道翻譯比較準確。

當然國外其實也有很多技術論壇,但是平時需要閱讀的東西太多了,所以也基本不可能逛。如果有興趣的同學,我覺得多逛逛其實很有用處的,畢竟技術新聞相對來說比較新一點。

公眾號文章

現在的技術公眾號很多,產出的文章也是參差不窮,對於公眾號這類的文章因為很難形成一套的技術知識體系,所以一般都當成類似新聞快餐的一樣去閱讀了,當然對於一些寫得很優秀的文章也還是需要做筆記的。 我推薦一下我置頂的一些公眾號吧:

首先是我自己的 咖啡拿鐵,這裡就不過多介紹了,嘿嘿。

kirito的技術分享:kirito的公眾號基本都是原創,而且他也是阿里中介軟體服務治理的大牛,大家都叫他徐媽,他寫的很多文章是關於中介軟體天池大賽的,對於喜歡一些技術極致優化,服務治理或者天池大賽的同學可以關注他。

芋道原始碼:就和名字一樣,喜歡學習原始碼的可以關注他,他寫了很多中介軟體原始碼分析的文章。

佔小狼的部落格:喜歡JVM和服務治理的都可以關注狼哥,狼哥在這兩個方面都是大牛。

學會寫文章

讀文章是一個吸收的過程,但是寫文章卻不是屏棄知識的過程。寫文章同樣也是一個學習的過程,當你決定要寫一篇文章的時候(前提不是水文),你肯定會查詢大量的資料。當你下筆的時候,你會發現其實這個知識還有很多是你不懂的,這個時候也會查詢大量的資料。當你寫完之後,其他同學問你問題,或者提出質疑的時候,也會幫助你進行知識上的自我反思。所以學會寫文章相信對你的技術上,個人影響力上來說都會有很大的進步。

多認識人

今年通過寫文章認識了很多人,越發的發現一個人學技術是閉塞的。為什麼會有很多專案開源,那其實就在說明技術是交流的,而不是獨享的。

比如今年認識了kirito,從他的影響下就會感覺天池大賽很有意思,可以從天池大賽中鍛鍊很多,所以我也決定下個賽季也想去試試,哪怕是最後一名也無所謂。

自己也建立了一個技術交流微信群,在群裡面能結識到很多不同的公司,很多不同的地域的人。也能和他們討論不同的技術方案或者技術細節,對於一些不懂的問題,提問出來大家也都願意去解答,當然大家遇到一些比較好的文章也會進行交流分享,當然能做一些行業內的閒聊也是很不錯的,當然如果你想加入可以關注我的公眾號,然後加我好友拉你進群。

2019的規劃

2019已經來臨,想必很多人都做了自己的技術上的規劃吧。這裡也給自己立下幾個flag:

  • 儘量春節之後文章每週一篇,每月4篇。
  • 把2018年沒有讀完的書給讀完。
  • 參加一次天池大賽。
  • 結交更多志同道合的朋友。

希望大家都能做一個矢志前行的逐夢人,志之所趨,窮山距海,不可阻擋!

掘金年度徵文 | 2018 與我的技術之路 徵文活動正在進行中......

如果大家覺得這篇文章對你有幫助,你的關注和轉發是對我最大的支援,O(∩_∩)O:

一個Java程式設計師的2018年總結 | 掘金年度徵文

相關文章