好日子,宣布一件事情!
大家好,我是雷小帥!
好日子
今天是個好日子,20211202,從左往右讀,接著從右往左讀你會發(fā)現居然是對稱的,這是屬于程序員的「浪漫」,身邊有程序員朋友還特地選擇了今天去領證。
熟悉算法的小伙伴應該發(fā)現了,這就是經典的算法題:「回文串」,那么問題來了,你知道下一個回文串日期是什么時候嗎?評論區(qū)見~
既然是個好日子,那不能浪費啊,總得搞搞搞搞搞點事情吧。
最近一段時間思緒很亂,加上工作上巨忙,經常會懷疑自己:我現在做的事情有價值嗎?我寫的文章是不是能幫助到讀者?文章寫的通俗易懂嗎?后面應該寫什么?
每當我想放棄的時候,總會看到一些小伙伴們發(fā)來一些私信:雷小帥,你寫的技術文章對我太有用了,通俗易懂,思路清晰,我在車上看的太專注了,都坐過站了。
有些話可能是開玩笑,但至少是幫助和影響了部分人,這對于我來說是莫大的鼓勵,很欣慰!
既然還有人惦記,那必然不能讓大家失望。回顧近一年,作為技術博主輸出了很多技術文章:
- 《玩轉 Redis 面試》
- 《圖解分布式&中間件》
- 《死磕 Java 并發(fā)編程》
- Java 學習路線
- Java 八股文
- 《五分鐘入門系列》
- 武漢互聯(lián)網
- ……若干水文
一篇文章的產生通常會經過:選題、構思、畫圖、排版這些步驟,稍微用點心,至少得花三個晚上以上。
那這樣一篇文章會產生多大價值呢?大部分人可能是這樣的狀態(tài):讀完了,寫的不錯 = 我學會了 ,但實際在工作或者面試中遇到時又忘了,究其原因是:懂了很多「點」但無法將知識點連成「線」和「面」,從而無法將學的東西運用到項目中來。
那最好的辦法就是「項目實戰(zhàn)」,以戰(zhàn)促學。前一陣子,我也在 B 站(id:程序員雷小帥,歡迎關注)直播過幾次,本來想帶著大家一起直播寫個項目,奈何電腦太卡了,開了直播軟件,我的 IDE 就卡的不行,只好放棄了。
最近我想了一下,做一個這樣的業(yè)務項目其實也沒什么意思,無非就是增刪改查,企業(yè)中真正的難點是「理解業(yè)務」,而真正涉及到的技術難點都會交給基礎框架組或者中間件組搞定。
那既然這樣,我們是不是也應該干點他們干的事情呢?是的,我想到了一個idea:自己造一個 RPC 輪子。
為什么你需要學習造輪子
投資自己
有人要問了:現在各種好用的框架都開源了,直接拿過來用不就得了,自己造一個不是浪費時間么?
這個問題看你用什么視角看了,如果從領導視角看:
領導:現在項目交付這么緊,你趕緊找個開源項目,copy 改一下,能跑起來就可以了。
有技術追求的哥哥:我想自己寫一個框架,性能肯定比開源的那個好。
領導:這周五你得把項目交付了,你自己看著辦吧?!
領導在乎的是你能不能快速交付項目,能不能快速產生價值創(chuàng)造收益。
如果從自己的視角來看:
有技術追求的哥哥:這個框架我已經實現了
領導:好用嗎?
有技術追求的哥哥:通過寫這個框架,我學到了好多知識,我已經開源了,好多 star
領導:項目已經延期了,你明天不用來了。
通過自己造一個,學到了很多以前沒接觸到的東西,自己的技術有了更進一步的提升。
那你們說:自己造一個輪子,是浪費了時間嗎?
不要成為調包俠
很多人進入公司后都會陷入復雜的業(yè)務場景,一周可能要花四天討論業(yè)務,剩下一天就可以把代碼寫完了。
回過頭想想,我們寫的是什么代碼呢?大多數是在寫 CRUD,寫 if else for,調一調開源的 jar 包接口。
- 以為是在寫高并發(fā),有牛逼技術的代碼,其實是個 CRUD boy。
- 以為懂得了各種中間件,其實只是學會了如何調用他們的接口,是個調包俠。
我不是在詆毀寫業(yè)務代碼的人,而是怕大家對自己有誤解。
如果想在技術上有更進一步的成長,你必須要跨過 CRUD boy、調包俠這個階段,深入到框架底層,熟知源碼和原理。
通過造輪子你能學到什么?
敲黑板:首先強調一下造輪子的目的不是為了放在生產上面去用,而是通過造輪子促進你學習,讓你將零散的知識點貫穿起來。
這一次我會帶領大家從零開始擼一個 RPC 框架,如果你還不知道 RPC 是什么?建議你先去了解一下。
目前常見的 RPC 框架有:
- 阿里 Dubbo
- 谷歌gRPC
- Apache ?Thrift
- 微博 Montan
- SpringCloud(類似)
- ……等
我們會參考 Dubbo 框架去寫一個 mini 版的 RPC 框架,實現最基本和核心的功能。
如果你認真學下來,可以掌握以下的技術:
- 底層網絡層基于 netty,學完 netty 入門沒有問題;
- 使用自定義注解,學完可以了解注解的基本運行機制;
- 服務注冊基于 zookeeper,學完 zk 入門沒有問題;
- 會用到反射機制;
- 會用到動態(tài)代理技術;
- 教你如何定義一個 xxx-spring-boot-starter,了解spring boot自動配置機制;
- 學會如何自定義配置項,并綁定到 bean;
- 學習監(jiān)聽 spring 容器的事件;
- ……等等
有沒有一點心動呢?!
下一步計劃
這篇文章就當做是一個引入和前言吧,主要是為了增強大家的信心,肯定是能學到東西的。
下一步,我會用多篇文章詳細介紹 RPC 框架的源碼以及涉及到的技術點,還會將框架源代碼放到 Github 上供大家下載學習,包教包會,后面面試拿這個出去吹牛B 完全沒有問題。
如果大家特別感興趣后面也可以開直播講解哦~ ?(B 站搜 ID:程序員雷小帥,歡迎提前關注)
另外說一下:微信改版了,如果你不給公眾號加個星標,后面可能會錯過《從零開始造RPC輪子》系列干貨文章哦~
好了,我是雷小帥,以上就是今天的全部內容啦,如果你對手動造一個輪子感興趣,在看、點贊、分享三連支持一下吧,給點信心~ 熬夜了
