大家好,我是 roseduan,明天我向大家举荐一下我写的一个 Go 语言实战我的项目—rosedb
。
rosedb 是一个简略、内嵌的 k-v 数据库,应用 Golang
实现,反对多种数据结构,蕴含 String
、List
、Hash
、Set
、Sorted Set
,接口名称格调和 Redis 相似。
如果你曾经比拟相熟 Go 语言的基础知识了,然而又苦于没有我的项目实战,无奈失去进一步的晋升,那么这个我的项目肯定是帮忙你坚固和进阶 Go 常识的绝佳素材。
我将这个我的项目开源到了我的 GitHub 下面,你能够在 GitHub 搜寻 rosedb,或者点开这个链接查看:
https://github.com/roseduan/rosedb
大略去年 6 月份,我刚开始学习 Go 语言,因为之前有 Java 的教训,加上 Go 的根本语法较简略,上手还是很快,然而学完根底的语法常识之后,就不晓得下一步应该做什么了,置信有很多小伙伴跟我有一样的感觉。
一个偶尔的机会,我在网上看到了一篇介绍数据库模型的文章(文章地址在我的项目的 Issue 中),文章很简略,了解起来也很容易,并且我始终以来对数据库还是比拟感兴趣的。
因而我想着能够本人实现一个 k-v 数据库,造个简略的轮子,借此坚固本人的一些基础知识,通过实际这个我的项目,至多能够学习到:
- Go 语言大多数根底语法,以及一些高级个性比方
goroutine
、chan
、mutex
- 数据结构及算法相干常识,链表,哈希表,跳表,有序汇合等等
- 操作系统的一些常识,特地是对文件系统,内存映射相干的内容
今年初,我在找工作的时候,其实这个我的项目对我的帮忙还是挺大的,在这之前我没有任何 Go 相干工作教训,仅自学了 Go 语言的基础知识,但还是顺利找到了 Go 开发的工作职位。
在面试的过程当中,一些面试官也对这个我的项目比拟的感兴趣,都让我介绍一下,这也从某些水平阐明,领有一个开源我的项目,对于找工作是一个亮点,不管我的项目的 star 数量多不多,这至多可能阐明你的入手能力,学习能力都还是不错的。
很多同学可能感觉是写数据库,就想到可能有点艰难。但其实我想说这种担心是多余的,因为我的项目整体来说还是挺简略的,我在 B 站也录制了几期视频,专门来解说这个我的项目,你能够跟着视频来了解,就不会感觉很艰难了。
你能够在 B 站搜寻 roseduanV 或者点上面的链接拜访:
- 应用 Go 写一个数据库—1 根本构造
- 应用 Go 写一个数据库—2 数据操作
- 应用 Go 写一个数据库—3 数据库操作
- 应用 Go 写一个数据库—4 数据结构
目前为止,其实这个我的项目还十分的不欠缺,我构想的很多性能都还没有实现,在我的项目的 TODO 列表中,你能够看到很多待实现的性能。
相熟了这个我的项目之后,你能够尝试着挑一个本人感兴趣的 TODO 写一下,成为这个我的项目的 Contributor。
当然在钻研这个我的项目的时候,你也能够参考一些其余的优良的数据库,例如 redis、leveldb 等,翻一下源码,看看他人都是怎么实现的,这样对你来说是十分贵重的摸索教训。
例如我写这个我的项目的时候,就看了一些 redis 的源码,这让我对 redis 的底层实现有了更多的理解,并且还学习到了 redis 的一些优化代码的技巧,心愿我的这个我的项目只是为你关上一扇门,而门后的精彩世界,须要你靠着好奇心本人去摸索。