攤牌了!我要手寫一個“Spring Boot”

今天是晴天。老規(guī)矩,周末就不分享技術(shù)干貨了。
簡單和小伙伴們聊聊自己最近正在做和已經(jīng)開始做的事情。
01 重構(gòu) JavaGuide
我們經(jīng)常會對自己早期寫的代碼感覺惡心,這是導(dǎo)致很多項目爛尾的很重要的一個原因之一。
寫作也是一樣,我也經(jīng)常覺得自己早期寫的文章像一坨翔。造成這個現(xiàn)象的原因很簡單!我覺得主要可能有兩方面原因:
自己沉淀的知識更多,對于某個知識點的理解更加深刻。 不同于其他類型文章,技術(shù)類文章本身就需要不斷完善,文章內(nèi)容才會更好。
所以,最近幾個月我一直抽空對 JavaGuide 上早期的一些文章進行大篇幅重構(gòu),比如 Java 基礎(chǔ)、Java 集合框架、 Zookeeper 、Redis 等等。

畢竟,時間有限,自己也還是把主要精力放在寫代碼上。所以,部分文章還沒有開始重構(gòu),比如數(shù)據(jù)結(jié)構(gòu)部分的內(nèi)容。
就非常期待小伙伴們一起貢獻出自己的力量??!讓 Guide哥 能多點時間寫代碼,嘿嘿!

02 寫了個簡單的 RPC 框架
我在大學(xué)的時候,就使用過 Dubbo 這類 RPC 框架,對于 RPC 框架的原理也有一點的認(rèn)識。
于是乎!疫情那會,工作也不是很忙,我就想著說自己要不要也寫一個 RPC 框架玩玩。
說做就做!前前后后花了 3 個月,我利用業(yè)余時間手寫一個簡單的 RPC 框架(玩具),名字叫做 guide-rpc-framework。這個框架是基于 Netty+Kyro+Zookeeper 并且整合了 Spring 來做的。
講真!確實,花費了不少精力。雖然,這玩意的原理不難,但是,想寫好確實要花時間。
目前的話,這個項目已經(jīng)有 0.7k 的 star。感謝小伙伴們的支持!

像這樣的開源項目,放到簡歷上絕對是加分項!
而且,我在自己去寫 RPC 框架的時候,加深了自己對于 RPC 框架原理的認(rèn)識。具體落實到代碼實現(xiàn)的過程中,遇到了很多問題,解決問題的過程中也提高了自己的編程能力和解決問題的能力。總而言之,造輪子是一種特別能夠提高自己系統(tǒng)編程能力的手段。
03 寫一個簡易版的“Spring Boot”
是的!我準(zhǔn)備開始造下一個輪子了,一個簡易版的“Spring Boot”。名字我都起好了,叫做“jsoncat”。

名字沒有特別含義,只是因為這個框架目前定位是只返回 json 類型數(shù)據(jù)給前端,所以就在名字中加上了 json。
其實,說是簡易版的 Spring Boot ,不過是簡單模仿 Spring Boot 提供的功能,自己手寫一個類似的輕量級 HTTP 框架而已。(功能、生態(tài)、穩(wěn)定性等方面肯定不能和 Spring Boot 對比啦!)
具體實現(xiàn)的話,先簡單聊聊,后面會單獨寫文章來分享。我會使用 Netty 來寫一個簡易的 HTTP Server,主要用來處理 HTTP 請求。其他模塊的話,我會在兼顧代碼可讀性的情況下,盡量減少第三方依賴。所以,整個框架會比較輕量。
另外,代碼也會盡量寫直白點,不故意秀技。我也會將自己寫這個簡易的 HTTP 框架學(xué)到的東西分享出來。當(dāng)然啦!大家想要看源碼的話,我也會將其開源。
寫這個東西只是自己個人的興趣愛好使然,主要也是為了提高自己的編碼能力。推薦小伙伴們也要盡量能夠?qū)⒆约旱南敕ǜ吨T于行動。
理論固然重要,但是脫離于實踐的理論并不可靠。
相比于 CRUD ,自己造個輪子,肯定是更有意思,也更能鍛煉自己的編程能力和解決問題的能力。
目前的想法是,第 1 版至少是能夠讓其正確處理 Get 請求 和 Post 請求。目前的話,我基本已經(jīng)寫完了。相比于之前實現(xiàn)的 RPC 框架來說,這個總體來看,還是稍微簡單一些。

造輪子的大部分時間還是在思考怎么讓代碼更健壯、更易讀、更容易維護!
說句題外話,要想讓代碼更易讀,除了要了解面向?qū)ο缶幊痰乃枷胫猓潜厝簧俨涣藢υO(shè)計模式的運用。這個時候,你看過的源碼也可以派上用場了!
04 閑聊
當(dāng)你們看到這篇文章的時候,我已經(jīng)出門和大學(xué)最好的朋友一起出去嗨皮了。
半年多沒見,不知道朋友現(xiàn)在長胖了不?反正,我是長胖了。
我是Guide哥,Java后端開發(fā),會一點前端知識,喜歡烹飪,自由的少年。一個三觀比主角還正的技術(shù)人。我們下期再見!
