项目推荐:手写数据库,简历上有这不得让人眼前一亮
最近帮很多春招和实习的小伙伴看了简历,就后端开发这个岗位来说,抛开每个人的实习经历不谈,100 篇简历里面得有 80 份是外卖(点评)和论坛(秒杀和商城倒是少了,估计大伙儿都知道避雷)
前年流行秒杀,去年流行 RPC,今年流行论坛,也确实是没办法,一来学校里面尤其是本科生根本接触不到好项目,老师教来教去就是 CRUD,二来不是每个人都有实习经历,而随着求职门槛的不断提高,大伙儿不得不自己去找项目做,但网络上能找到文档很全的手把手教学的优质项目确实少至又少,大部分同学都是从 B 站搜罗视频然后照着做,趋之若鹜。
无可厚非,建议可以先用这些项目找个实习,然后正式校招的时候能够有个实习项目,这样算是比较好,如果两个项目一个秒杀一个论坛或者一个外卖一个商城,那确实有点难顶了。
今天推荐一个轮子类项目:手写数据库,相比于偏业务的项目在面试时是更受欢迎的,做完这个轮子类项目还能对数据库有更深的理解,何乐而不为。
🏠 项目地址:
- Github:https://github.com/CN-GuoZiyang/MYDB (opens new window)(点击文末阅读原文直达)
- 教程地址:https://ziyang.moe/cs/project/mydb/ (opens new window)
🚩 项目简介:MYDB 是一个 Java 实现的简单的数据库,部分原理参照自 MySQL、PostgreSQL 和 SQLite。实现了以下功能:
- 数据的可靠性和数据恢复
- 两段锁协议(2PL)实现可串行化调度
- MVCC
- 两种事务隔离级别(读提交和可重复读)
- 死锁处理
- 简单的表和字段管理
- 简陋的 SQL 解析(因为懒得写词法分析和自动机,就弄得比较简陋)
- 基于 socket 的 server 和 client
我看了下教程,总共有 10 章,需要有 Spring、数据库和网络通信基础(当然你一边做一边学呗):
- 从最简单的 TM 开始
- 引用计数缓存框架和共享内存数组
- 数据页的缓存与管理
- 日志文件与恢复策略
- 页面索引与 DM 的实现
- 记录的版本与事务隔离
- 死锁检测与 VM 的实现
- 索引管理
- 字段与表管理
- 服务端客户端的实现及其通信规则
🎁 公众号

各位小伙伴大家好呀,叫我小牛肉就行,目前在读东南大学硕士,上方扫码关注公众号「飞天小牛肉」,与你分享我的成长历程与技术感悟~
帮助小牛肉改善此页面 (opens new window)
Last Updated: 2023/02/16, 11:27:10