很哇塞的 3 個(gè) Java 實(shí)戰(zhàn)項(xiàng)目!
日常學(xué)習(xí)編程的過(guò)程中,項(xiàng)目實(shí)戰(zhàn)是不可避免的!編程本身就是要多實(shí)踐,多踩坑。
我遇到過(guò)很多應(yīng)屆生,整個(gè)大學(xué)學(xué)了 4 年的編程,自己敲的代碼可能還不到 3000 行。你讓他做用自己學(xué)的編程知識(shí)做個(gè)什么東西,他就蒙了,不知道從哪里下手。
學(xué)習(xí)編程以及提高編程能力最直接的辦法就是實(shí)踐!不斷實(shí)踐!特別是在編程初期的時(shí)候,積累代碼量格外重要。
就比如你學(xué)習(xí) Java 后臺(tái)開(kāi)發(fā)的時(shí)候,能不能通過(guò)自己學(xué)過(guò)的知識(shí)獨(dú)立做個(gè)網(wǎng)站呢?再比如你搞懂了某個(gè)框架原理之后,能不能模仿著去寫(xiě)一個(gè)簡(jiǎn)單的呢?
理論固然重要,空談理論而無(wú)實(shí)踐就無(wú)意義了。
我之前推薦過(guò)很多實(shí)戰(zhàn)類(lèi)的項(xiàng)目,很多還附帶了詳細(xì)的講解,你可以在《優(yōu)質(zhì)開(kāi)源項(xiàng)目》這個(gè)專(zhuān)輯中找到。
今天的話,再給大家推薦 3 個(gè)還算不錯(cuò)并且適合學(xué)習(xí)的實(shí)戰(zhàn)項(xiàng)目。
這些項(xiàng)目不同于咱們平常經(jīng)常遇到的博客系統(tǒng)、人員管理系統(tǒng)、商城系統(tǒng)等等已經(jīng)有點(diǎn)“爛大街”的項(xiàng)目。所以,也是作為自己項(xiàng)目經(jīng)驗(yàn)的不錯(cuò)的選擇。
另外,說(shuō)一嘴。這篇文章絕對(duì)不是單純的推薦,每一個(gè)項(xiàng)目我自己都花了很長(zhǎng)時(shí)間研究。我也會(huì)在分享這些項(xiàng)目的時(shí)候,把自己的一些心得分享出來(lái)。
昨晚花了很久整理。如果你覺(jué)得這篇文章對(duì)你有用的話,不要白嫖!點(diǎn)個(gè)贊再走唄!
zfile:在線云盤(pán)
ZFile 是一個(gè)前后端分離的在線云盤(pán)的實(shí)戰(zhàn)項(xiàng)目,使用 Spring Boot + Spring Security + JPA 開(kāi)發(fā),數(shù)據(jù)庫(kù)使用的是 H2 內(nèi)嵌數(shù)據(jù)庫(kù)。
后端源碼 : https://github.com/zhaojun1998/zfile/ 前端源碼 : https://github.com/zhaojun1998/zfile-vue/ 推薦指數(shù) :????
ZFile 除了基本的文件存儲(chǔ)功能之外,還支持在線瀏覽文件(視頻, 圖片, 音樂(lè))、文件直鏈分享等功能。項(xiàng)目的實(shí)際效果圖如下。


我們學(xué)習(xí)這個(gè)項(xiàng)目的主要目的并不是為了自己搭建一個(gè)在線云盤(pán)自己用。當(dāng)然了,這也是可行的。畢竟某度的云盤(pán)速度有點(diǎn)感人,期待阿里云云盤(pán)能夠良心一點(diǎn)吧!
你可以自己寫(xiě)一個(gè)在線云盤(pán)系統(tǒng)當(dāng)做自己的項(xiàng)目經(jīng)驗(yàn)/畢業(yè)設(shè)計(jì)。這不比某某商城系統(tǒng)要香的多?
不過(guò),我不太建議大家直接 copy 別人的項(xiàng)目,然后就在簡(jiǎn)歷上說(shuō)是自己寫(xiě)的。
說(shuō)實(shí)話,這種行為有點(diǎn)可恥,好吧!雖然,我知道很多小伙伴就是這樣做的。
秉著對(duì)自己負(fù)責(zé),對(duì)面試負(fù)責(zé)的態(tài)度,我建議你可以借鑒這個(gè)項(xiàng)目的思路,自己徒手?jǐn)]一個(gè)。
難度,其實(shí)真不大的!可能剛上手開(kāi)發(fā)那會(huì)比較難下手,等你把整個(gè)技術(shù)原理搞清楚之后就好了。前端的話,你完全可以直接在原作者的基礎(chǔ)上修改一下。你直接把后端寫(xiě)一下就 OK 了。
另外,如果說(shuō)你要修改原項(xiàng)目自帶的前端項(xiàng)目源碼的話,建議你提前花時(shí)間學(xué)習(xí)一下前端基礎(chǔ)(比如 ES6),把 Vue 的官方文檔閱讀幾遍。
zfile 這個(gè)項(xiàng)目的代碼整體質(zhì)量在開(kāi)源項(xiàng)目中算是比較高的。不過(guò),還是有一些小細(xì)節(jié)可以完善比如 Controller 層放了太多業(yè)務(wù)邏輯(封裝一個(gè)服務(wù)函數(shù) Service 更好)。
novel-plus:小說(shuō)精品屋
novel-plus 是一款基于 SpringBoot + MyBatis +Spring Security + Elasticsearch + 支付寶支付的原創(chuàng)文學(xué) CMS 系統(tǒng)。
除了單體版之外,這個(gè)項(xiàng)目還有一個(gè)基于 Spring Cloud 的微服務(wù)版本供你學(xué)習(xí)使用。

項(xiàng)目地址 : https://github.com/201206030/novel-plus 推薦指數(shù) :????
novel-plus 除了支持基本的小說(shuō)上架和閱讀功能之外,還支持小說(shuō)排行榜、會(huì)員充值、用戶訂閱等功能。項(xiàng)目的實(shí)際效果圖如下。



這個(gè)項(xiàng)目還有一個(gè)爬蟲(chóng)模塊用于系統(tǒng)初期測(cè)試使用。對(duì) Java 爬蟲(chóng)感興趣的朋友,可以簡(jiǎn)單研究一下。

這個(gè)項(xiàng)目的代碼質(zhì)量也是非常不錯(cuò)的,結(jié)果清晰,代碼結(jié)構(gòu)也比較規(guī)范。這也是我推薦這個(gè)項(xiàng)目很大的一個(gè)原因。

guide-rpc-framework:RPC 框架
guide-rpc-framework 是一款基于 Netty+Kyro+Zookeeper 實(shí)現(xiàn)的 RPC 框架。
項(xiàng)目地址 : https://github.com/Snailclimb/guide-rpc-framework 推薦指數(shù) :?????
這個(gè)項(xiàng)目代碼注釋詳細(xì),結(jié)構(gòu)清晰,并且集成了 Check Style 規(guī)范代碼結(jié)構(gòu),非常適合閱讀和學(xué)習(xí)。

并且,這個(gè)項(xiàng)目的 README 文檔寫(xiě)的也非常認(rèn)真。從 README 文檔中,你就可以大概了解到這個(gè) RPC 框架的設(shè)計(jì)思路以及前置技術(shù)。

雖說(shuō) RPC 的原理實(shí)際不難,但是,我自己在實(shí)現(xiàn)的過(guò)程中自己也遇到了很多問(wèn)題。guide-rpc-framework 目前只實(shí)現(xiàn)了 RPC 框架最基本的功能(玩具級(jí)別),一些可優(yōu)化點(diǎn)我都在項(xiàng)目的 README 文檔提到了,有興趣的小伙伴可以自行完善。
通過(guò)這個(gè)簡(jiǎn)易的輪子,你可以學(xué)到 RPC 的底層原理和原理以及各種 Java 編碼實(shí)踐的運(yùn)用。
你甚至可以把這個(gè)項(xiàng)目當(dāng)做你的畢設(shè)/項(xiàng)目經(jīng)驗(yàn),這是非常不錯(cuò)!對(duì)比其他求職者的項(xiàng)目經(jīng)驗(yàn)都是各種系統(tǒng),造輪子肯定是更加能贏得面試官的青睞。
我了解到很多小伙伴都拿我的這個(gè)項(xiàng)目作為校招的項(xiàng)目經(jīng)驗(yàn),而且反響很不錯(cuò)。
我這里提一個(gè)建議:一定不要照搬我的項(xiàng)目,盡量自己從頭開(kāi)始寫(xiě)。你可以參考我的思路, 但是自己一定要搞懂,而不是直接復(fù)制粘貼我的思想。盡量能夠和我有點(diǎn)不一樣的地方比如通信協(xié)議的設(shè)計(jì)、序列化的選型、注冊(cè)中心的選擇。
總結(jié)
這篇文章中,我一共推薦了 3 個(gè)實(shí)戰(zhàn)項(xiàng)目:
zfile(在線云盤(pán)) novel-plus(小說(shuō)精品屋) guide-rpc-framework(RPC 框架)
zfile 和 novel-plus 需要你至少要有 Spring Boot 、MyBatis、JPA 等基礎(chǔ)知識(shí)儲(chǔ)備,guide-rpc-framework 需要你至少要有 RPC、Netty、ZooKeeper 等知識(shí)儲(chǔ)備。
對(duì)這些項(xiàng)目感興趣的小伙伴,可以參考著項(xiàng)目的 README 文檔把項(xiàng)目在本地先跑起來(lái)。然后,從一個(gè)具體的功能主線出發(fā)來(lái)研究這個(gè)項(xiàng)目。
具體怎么研究這些項(xiàng)目,你可以看我的這篇原創(chuàng):《新人如何上手一個(gè)新項(xiàng)目的開(kāi)發(fā)?》 。
歡迎加入我的星球,一個(gè)純 Java 面試交流圈子 !Ready!。目前星球已經(jīng)更新 3 個(gè)原創(chuàng)小冊(cè):《Java面試進(jìn)階指北》、《從零開(kāi)始寫(xiě)一個(gè) RPC 框架》 、《程序員副業(yè)賺錢(qián)之路》。累計(jì)幫助 520+ 位球友提供了免費(fèi)的簡(jiǎn)歷修改服務(wù),回答了 500+ 個(gè)問(wèn)題,產(chǎn)出了 1300+ 個(gè)主題。
推薦?? :1049天,100K!簡(jiǎn)單復(fù)盤(pán)!
推薦?? :匯報(bào)一下2020的工作
推薦?? :Github掘金計(jì)劃:Github上的一些優(yōu)質(zhì)項(xiàng)目搜羅
