Batina's Blog

[随笔集] 猫和狗

只是一些生活感触而已 农村老家养了一条狗,到现在大概三四岁,就是普通的土狗,我妈把它捡回来养的时候它应该才几个月大,但是等我寒假回家的时候已经挺大一只了。平时就是伯伯奶奶吃完饭喂它点粥...

[tinyky] Debug日志 (1)

记录实现tinykv遇到的各类bug和解决方案 1(project2b)client查询时发现一部分应用成功的put请求,没有查询到对应的value 出错原因 ...

[共识算法] 1 - Raft Basic

0. 引 在什么应用场景下我们需要分布式共识算法,是否还有其他的解决方案 当我们的应用场景从单机数据库转向分布式数据库时,我们需要考虑如何保证分布式事务的ACID性质。在单个节点上我...

[c++/STL] sort, stable_sort, partial_sort, nth_element

这次我们来讲讲 C++/STL 里的排序算法。最后混进来的 nth_element 是选择算法,以$O(n)$的平均时间复杂度返回第 n 小的元素(若有重复元素则是排序后 n-th 位置上的元素...

[年终总结] 再见,2021

年终报告快轮到我了,到底还是没法静下心看代码,趁这个时间把2021的年度总结起个头吧。 以前我从来没想过要做年度总结的,看到别人的博客、朋友圈和空间里年末或者年初时发的总结总感觉无聊和浪费时间...

[db/BoltDB] 4 - FreeList

上回我们说到,BoltDB 中删除元素之后,得到的空闲页面并不会归还给操作系统,因此它的数据库文件只增不减。但是从逻辑上来说我们肯定不能白占着资源不干活,BoltDB 也不会一直闲置这些空闲页面...

[db/BoltDB] 3 - Indexing: B+ Tree

上次我们在 BoltDB Transaction 中简略介绍了 BoltDB B+树索引的实现,但是有些细节没有具体介绍。本文就来结合代码详细归纳一下 BoltDB 如何用短短 400 多行代码...

[db/BoltDB] 2 - BoltDB Transaction

本篇将介绍 BoltDB 事务的实现。本来看到 etcd 中有 MVCC 机制,还以为是底层存储的 BoltDB 本身的 MVCC 机制。没想到其实 etcd 的 MVCC 是使用 BoltDB...

[db/BoltDB] 1 - Introduction

BoltDB是golang实现的一个kv-store,据说etcd的底层存储用的是它。这里打算做个简短的系列从源码层面学习一下事务的实现。说起来在这之前我甚至都不知道什么叫嵌入式数据库,后来搜了...

[go/Solution] 循环依赖和解决笔记

重构项目的时候,费劲巴拉的把一堆冗余的switch case拆开到一个个单独的go文件里了,结果编译的时候出现了import cycle not allowed。 项目里一大堆目录看着烦得要死...