博客最近老挂
今天打开博客,又挂了,距离上一次挂差不多有一礼拜,我开始有点警觉了! 在过去的 n 年当中,我的博客从来没有挂过,我也从来不会考虑这个问题。直到一礼拜前,一个用户发了一封邮件告诉我的博客挂了,我才第一次发现自己的博客也会宕机。挂的原因其实是 MySQL 挂了,然后 WordPress 连不上数据库,就报错。我看了眼 MySQL 的日志,差不多就是内…
TinyKV Project4 Transactions
这一节实现的事务本应该需要和 TinySQL 配合使用,但是因为我们只有实现 TinyKV 部分,所以有些地方看起来有些割裂。 Percolator 首先说明的一点是,Percolator 基于单行事务实现了多行事务,Google BigTable 能够提供单行事务。在这里 TinyKV 也会通过锁来保证单行数据的原子性(但是单行事务好像没有,可能…
TinyKV Project3 MultiRaftKV
这一节中,最难的就是 Project 3B,引无数英雄竞折腰!!当然撑过 3B,你就解放了。 Membership Change 在 Project3A 中我们需要实现 Leader Transfer 和新增或移除一个 Region 里面的节点,这里并不是很难但是你要处理好细节,不然就是 BUG 满天飞。 Leader Transfer Leade…
TinyKV Project2 RaftKV
这一节需要我们实现 Raft,TinyKV Raft 这部分很多都是抄 Etcd 的 Raft 模块。你可以注意到连测试用例都很像。所以这一节我拿到手就会做啊,首先去 Etcd clone 一份源码。我抄的是 Etcd 3.5.1 版本,也就是目前最新版。 TinyKV 中的 Raft 和 6.824 中的 Raft 有很大的不同。这里将整个 Ra…
TinyKV Project1 Standalone KV
这一节实验要求我们基于 badger 实现一个支持 Column Family 的 KV 数据库。 Column Family,也叫 CF,这个概念从 HBase 中来,就是将多个列合并为一个CF进行管理。这样读取一行数据时,你可以按照 CF 加载列,不需要加载所有列(通常同一个CF的列会保存在同一个文件中,所以这样有很高的效率)。此外因为同一列的…
ChatGPT 牛逼,我准备下岗了
最近看一段 CSV 代码申请大量内存的问题,看了半天没有思绪,就想尝试刁难一下 ChatGPT,结果它还真答得有模有样,虽然并没有解决问题,不过确实牛逼 plus。 看到答案,我惊了,说实话我都没有它考虑的那么周到。。。。。。
个人使用的 Shell 环境搭建
自从用了远程开发机,天天和命令行打交道,一套属于自己的 shell 配置已经刻不容缓,否则工作效率太低了。 现在 我自己搞了一个 dotfiles 仓库,专门用来一键初始化机器。 git clone https://github.com/Smith-Cruise/dotfiles.git 然后执行如下命令: # install prepared s…
StarRocks 完美开发环境搭建
鉴于经常有人问我 StarRocks 的开发环境如何搭建,这里本人写一篇教程,方便大家跟着 step-by-step。 什么叫完美? 支持一键编译 BE 和 FE。 Clion,IDEA 均支持代码跳转。 IDE 全部变量能正常解析,不会出现红线。 Clion 可以正常启用其 analyze 功能。 支持 FE 和 BE 的 Debug。 环境准备…