Batina's Blog

[共识算法] 2 - Raft Membership Change

这一节读了两次没完全搞懂 Joint Consensus 怎么使用 $ C_{old,new} $,然后搜了一些博客发现居然又提到每次增删只变更1个节点的单步成员变更,踏马搞得我更迷糊了;奈何被...

面试日志 - 1

阿里OceanBase实习一轮面试总结: 简历上内容包括声明了主要使用语言是 golang,用过c++/java/python,然后对数据库事务比较了解和感兴趣,项目方面放了 pingcap ...

[db] 5 - Snapshot Isolation

之前在事务的介绍中,我们提过事务定义有 Serializable、Repeatable_Read、Read_Committed、Read_Uncommitted 四种隔离等级。我们今天要介绍的快...

[db] 4 - Phantom Problem

产生原因 要实现真正的可串行化,幻象问题是我们绕不过去的坎。诶,但是之前介绍 2PL 时不是说严格遵守两阶段锁协议就能够实现事务的可串行化吗。对,但这是有条件的,两阶段锁能保证可串行化的前提是...

『Tool』2 - 手绘风插图 excalidraw

今天就是想安利一个手绘风格的图表绘制网站。 我之前一直非常非常喜欢手绘风格的配图,我印象中大三一次做英语课堂展示的时候,配图就是我在手机上画的小火柴人。 后来的PPT也好、博客也好,没什么心...

[os] 进程、线程和协程

「现代操作系统-原理与实现」中关于进程、线程、协程的介绍解决了我很多以前看「操作系统概念」产生的疑惑,整理出这份笔记以备查阅,当然还有欠缺,以后慢慢完善 进程 进程是运行中的程序。不...

[golang] 4 - container/heap

golang里要使用优先队列略微麻烦,需要自己实现 heap.Interface 下的几个接口,比起 c++ 的容器使用起来更麻烦一些。 1 2 3 4 5 6 7 8 9 10 11 12 ...

[golang] 3 - 垃圾回收简记

简单记录 golang 垃圾回收的基本原理 垃圾收集算法 主要来自 「深入理解Java虚拟机」 分代收集理论 标记-清除法:标记存活对象,然后清除没标记的对象;会产生内存...

[golang] 2 - context

用golang有一段时间了,但是一直以来都是要用什么就查什么,时间一长啥也记不住。所以计划一点点归纳接触到的各种golang机制和标准库的用法,加深印象,也方便查阅。 在项目里接触过一...

[golang] 1 - channel

channel 是不同 goroutine 之间进行通信的主要方式(除此之外可以通过系统调用申请共享内存方式,但更推荐使用 channel),本篇我们简单归纳 channel 的设计原理。 只...