日常学习编程的过程中,项目实战是不可避免的!编程本身就是要多实践,多踩坑。
我遇到过很多应届生,整个大学学了 4 年的编程,自己敲的代码可能还不到 3000 行。你让他做用自己学的编程知识做个什么东西,他就蒙了,不知道从哪里下手。
学习编程以及提高编程能力最直接的办法就是实践!不断实践!特别是在编程初期的时候,积累代码量格外重要。
就比如你学习 Java 后台开发的时候,能不能通过自己学过的知识独立做个网站呢?再比如你搞懂了某个框架原理之后,能不能模仿着去写一个简单的呢?
理论固然重要,空谈理论而无实践就无意义了。
我之前推荐过很多实战类的项目,很多还附带了详细的讲解,你可以在《优质开源项目》这个专辑中找到。
今天的话,再给大家推荐 3 个还算不错并且适合学习的实战项目。
这些项目不同于咱们平常经常遇到的博客系统、人员管理系统、商城系统等等已经有点“烂大街”的项目。所以,也是作为自己项目经验的不错的选择。
另外,说一嘴。这篇文章绝对不是单纯的推荐,每一个项目我自己都花了很长时间研究。我也会在分享这些项目的时候,把自己的一些心得分享出来。
昨晚花了很久整理。如果你觉得这篇文章对你有用的话,不要白嫖!点个赞再走呗!
ZFile 是一个前后端分离的在线云盘的实战项目,使用 Spring Boot + Spring Security + JPA 开发,数据库使用的是 H2 内嵌数据库。
ZFile 除了基本的文件存储功能之外,还支持在线浏览文件(视频, 图片, 音乐)、文件直链分享等功能。项目的实际效果图如下。
我们学习这个项目的主要目的并不是为了自己搭建一个在线云盘自己用。当然了,这也是可行的。毕竟某度的云盘速度有点感人,期待阿里云云盘能够良心一点吧!
你可以自己写一个在线云盘系统当做自己的项目经验/毕业设计。这不比某某商城系统要香的多?
不过,我不太建议大家直接 copy 别人的项目,然后就在简历上说是自己写的。
说实话,这种行为有点可耻,好吧!虽然,我知道很多小伙伴就是这样做的。
秉着对自己负责,对面试负责的态度,我建议你可以借鉴这个项目的思路,自己徒手撸一个。
难度,其实真不大的!可能刚上手开发那会比较难下手,等你把整个技术原理搞清楚之后就好了。前端的话,你完全可以直接在原作者的基础上修改一下。你直接把后端写一下就 OK 了。
另外,如果说你要修改原项目自带的前端项目源码的话,建议你提前花时间学习一下前端基础(比如 ES6),把 Vue 的官方文档阅读几遍。
zfile 这个项目的代码整体质量在开源项目中算是比较高的。不过,还是有一些小细节可以完善比如 Controller
层放了太多业务逻辑(封装一个服务函数 Service
更好)。
novel-plus 是一款基于 SpringBoot + MyBatis +Spring Security + Elasticsearch + 支付宝支付的原创文学 CMS 系统。
除了单体版之外,这个项目还有一个基于 Spring Cloud 的微服务版本供你学习使用。
novel-plus 除了支持基本的小说上架和阅读功能之外,还支持小说排行榜、会员充值、用户订阅等功能。项目的实际效果图如下。
这个项目还有一个爬虫模块用于系统初期测试使用。对 Java 爬虫感兴趣的朋友,可以简单研究一下。
这个项目的代码质量也是非常不错的,结果清晰,代码结构也比较规范。这也是我推荐这个项目很大的一个原因。
guide-rpc-framework 是一款基于 Netty+Kyro+Zookeeper 实现的 RPC 框架。
这个项目代码注释详细,结构清晰,并且集成了 Check Style 规范代码结构,非常适合阅读和学习。
网络传输模块的代码
并且,这个项目的 README 文档写的也非常认真。从 README 文档中,你就可以大概了解到这个 RPC 框架的设计思路以及前置技术。
虽说 RPC 的原理实际不难,但是,我自己在实现的过程中自己也遇到了很多问题。guide-rpc-framework 目前只实现了 RPC 框架最基本的功能(玩具级别),一些可优化点我都在项目的 README 文档提到了,有兴趣的小伙伴可以自行完善。
通过这个简易的轮子,你可以学到 RPC 的底层原理和原理以及各种 Java 编码实践的运用。
你甚至可以把这个项目当做你的毕设/项目经验,这是非常不错!对比其他求职者的项目经验都是各种系统,造轮子肯定是更加能赢得面试官的青睐。
我了解到很多小伙伴都拿我的这个项目作为校招的项目经验,而且反响很不错。
我这里提一个建议:一定不要照搬我的项目,尽量自己从头开始写。你可以参考我的思路, 但是自己一定要搞懂,而不是直接复制粘贴我的思想。尽量能够和我有点不一样的地方比如通信协议的设计、序列化的选型、注册中心的选择。
这篇文章中,我一共推荐了 3 个实战项目:
zfile 和 novel-plus 需要你至少要有 Spring Boot 、MyBatis、JPA 等基础知识储备,guide-rpc-framework 需要你至少要有 RPC、Netty、ZooKeeper 等知识储备。
对这些项目感兴趣的小伙伴,可以参考着项目的 README 文档把项目在本地先跑起来。然后,从一个具体的功能主线出发来研究这个项目。
具体怎么研究这些项目,你可以看我的这篇原创:《新人如何上手一个新项目的开发?》 。