业务类开源项目
社区系统
upupor 是一个小众但是功能强大,代码质量也还可以的开源社区,挺适合作为学习的项目。 最主要的是这个项目目前知名度非常非常低,没有项目经历的小伙伴也可以改造升级一下拿来作为自己的项目经历。
技术栈 :
- 后端:Spring Boot + MySQL + Redis + Undertow(Web 容器)
- 前端 :Thymeleaf(模板引擎,方便 SEO)+ Bootstrap
相关地址 :
- Github 地址:https://github.com/yangrunkang/upupor 。
- 在线演示:https://upupor.com 。
网站的性能也是不错的:
类似的社区类小众但有两点的项目还有 forest。
不同于其他社区项目,forest 这个知识社区项目主打文章分享,可以自定义专题和作品集。看得出来作者维护比较认真,并且很有想法。根据项目首页介绍,这个项目未来还可能会增加专业知识题库、社区贡献系统、会员系统。
我大概浏览了一下这个项目代码,发现这个项目的代码写的也相对比较规范干净,比很多 star 数量比较多的社区类项目都要好太多!
技术栈 :
- 后端: SpringBoot + Shrio + MyBatis + JWT + Redis
- 前端:Vue + NuxtJS + Element-UI。
相关地址 :
- Github 地址:https://github.com/rymcu 。
- 在线演示:https://rymcu.com/ 。
小说网站
novel-plus 是一个开源的小说网站项目。这个项目的代码质量也是非常不错的,结果清晰,代码结构也比较规范。这是我推荐这个项目很大的一个原因。
- Github 地址:https://github.com/201206030/novel-plus
- Gitee 地址:https://gitee.com/novel_dev_team/novel-plus
另外,除了单体版之外,这个项目还有一个基于 Spring Cloud 的微服务版本供你学习使用。
- GitHub 地址: https://github.com/201206030/novel-cloud
- Gitee 地址: https://gitee.com/novel_dev_team/novel-cloud
技术栈:
- 后端: SpringBoot + MyBatis +Spring Security + Elasticsearch+ 支付宝支付
- 前端:Thymeleaf + Layui。
这个项目还有一个爬虫模块用于系统初期测试使用。对 Java 爬虫感兴趣的朋友,可以简单研究一下。
在线文档管理
document-sharing-site 是一个支持几乎所有类型(Word, Excel, PPT, PDF, Pic 等)的文档存储、在线预览、共享的开源项目。
技术栈 :
- 后端:Spring Boot + Hutool + Tika(内容分析工具包) + Elasticsearch + JWT
- 前端:Vue + axios。
相关地址 :
导航网站
geshanzsq-nav 是一个前后端分离的导航网站。这个项目同样非常小众,撞车的概率非常小,并且,质量也是非常高。
- Github 地址:https://github.com/geshanzsq/geshanzsq-nav
- Gitee 地址 :https://gitee.com/geshanzsq/geshanzsq-nav
技术栈:
- 后端: SpringBoot + MyBatis +Spring Security + Spring Security + Redis + Jwt
- 前端:Thymeleaf + Layui。
在线演示:https://gesdh.cn/ 。
音乐网站
music-website 是一个开源的音乐网站。这个项目的前端写的挺不错的,后端稍微差劲很多,虽然也把功能写出来了,但是很多实现都不太优雅(详见 Controller 层)。
如果你想要将这个项目作为自己的项目经验或者毕业设计的话,可以自行对后端的代码进行优化。
Github 地址:https://github.com/Yin-Hongwei/music-website 。
技术栈:
- 后端 :SpringBoot + MyBatis + MySQL
- 前端 :Vue3.0 + TypeScript + Vue-Router + Vuex + Axios + ElementPlus + Echarts
健身会员管理系统
基于基于 RuoYi-Vue 做的一个健身会员管理系统,实现了 JWT 登录、渠道管理、促销活动等功能,附带详细的教程。
Github 地址:https://github.com/lenve/tienchin
轮子类开源项目
本地缓存
cache 是一个不错的轮子类项目,使用 Java 手写一个类似于 Redis 的单机版本地缓存(附详细教程)。 麻雀虽小五张俱全,支持数据缓存、缓存失效时间、数据淘汰策略(如 FIFO 、 LRU )、RDB 和 AOF 持久化......。 并且,这个项目附带了 6 篇教程来讲解核心功能具体是怎么实现的。
Github 地址:https://github.com/houbb/cache
RPC 框架
guide-rpc-framework 是一款基于 Netty+Kyro+Zookeeper 实现的 RPC 框架。
- Github 地址: https://github.com/Snailclimb/guide-rpc-framework
- Gitee 地址 :https://gitee.com/SnailClimb/guide-rpc-framework
这个项目代码注释详细,结构清晰,并且集成了 Check Style 规范代码结构,非常适合阅读和学习。
并且,这个项目的 README 文档写的也非常认真。从 README 文档中,你就可以大概了解到这个 RPC 框架的设计思路以及前置技术。
数据库
MYDB 是一个 Java 语言实现的简易版数据库,部分原理参照自 MySQL、PostgreSQL 和 SQLite。
麻雀虽小,五脏俱全。MYDB 目前已经实现 MVCC、两种事务隔离级别(读提交和可重复读)、死锁处理、简陋的 SQL 解析等关系型数据库的核心功能。
并且,MYDB 作者写了详细的实现教程,教程地址: https://ziyang.moe/cs/project/mydb/
Github 地址:https://github.com/CN-GuoZiyang/MYDB
编译器
Mini-Compiler 是一个 Mini 版本的入门级编译器,基于 Java 语言编写,有助于初学者了解面向对象编程语言编译器的运行原理。
代码示例:
可以看到,代码注释还是非常清晰的,一共只有 7 个类。
不过,想要搞懂这个项目难度会远大于普通的业务类型项目,像核心类 Parser
(语法解析器)的代码量接近有 2000 行(其它 6 个类代码量比较少)。
Github 地址:https://github.com/chenyuwangjs/A-tutorial-compiler-written-in-Java 。
下面是一些相关的学习资料 :
国外公开课 Lab
手写关系型数据库
MIT 6.830/6.814: Database Systems 这门课程的内容非常适合想要深入学习数据库原理的小伙伴。这门课程的 lab 是使用 Java 语言一步一步实现一个关系型数据库。
- 课程地址:http://db.lcs.mit.edu/6.830/ 。
- 课程代码:https://github.com/MIT-DB-Class/simple-db-hw 。
- 课程讲义:https://github.com/MIT-DB-Class/course-info-2018/ 。
- 课程视频:https://www.youtube.com/playlist?list=PLfciLKR3SgqOxCy1TIXXyfTqKzX2enDjK 。
网络上有一些相关的文章分享:
另外,UCB CS186: Introduction to Database System 的这门课程 lab 也是使用 Java 实现一个关系型数据库。
手写分布式 KV 存储
MIT6.824: Distributed System 这门课程出品自 MIT 大名鼎鼎的 PDOS 实验室,授课老师 Robert Morris 教授。Robert Morris 曾是一位顶尖黑客,世界上第一个蠕虫病毒 Morris 病毒就是出自他之手。
这门课程的 lab 会循序渐进带你实现一个基于 Raft 共识算法的 KV-store 框架,让你在痛苦的 debug 中体会并行与分布式带来的随机性和复杂性。
- 课程网站:https://pdos.csail.mit.edu/6.824/schedule.html 。
- 课程视频(中文翻译):https://www.bilibili.com/video/BV1R7411t71W 。
相关资料:
- MIT6.824: Distributed System(中文翻译 wiki): https://mit-public-courses-cn-translatio.gitbook.io/mit6-824/
- 如何的才能更好地学习 MIT6.824 分布式系统课程?:https://www.zhihu.com/question/29597104
视频类实战项目教程
大家有没有比较好的实战项目视频分享推荐下?慕课网上面的实战课程虽然多,但是,说实话哈,有一些质量都不过关,价格也不便宜。求球友分享优质的实战项目视频教程。