0%

传统文件系统只能使用本地磁盘存储数据和对应的元数据,JuiceFS 会将数据格式化以后存储在对象存储,同时会将文件的元数据存储在元数据引擎,具有很好的扩展性,可以轻松处理大量数据和高并发访问。本文学习JuiceFS 文件系统的架构和它的Chunk、Slice 和 Block。

刷力扣时,有这样一道题,要求设计并实现一个满足 LRU (最近最少使用) 缓存约束的数据结构,实现这道题用到了Go 官方库提供的container/list包中的List(双向链表)。

channel 的底层结构是一个复杂的并发数据结构,包含了缓冲区、等待队列、互斥锁等组件,用于实现goroutine之间的安全通信和同步。

Go 语言中的 channel 底层是通过 hchan 结构体实现的,hchan 结构体的定义和相关操作都位于 runtime/chan.go 文件中,以下源代码基于 go1.23.3 版本,有删减。

Go 中的 map 是一种内置的数据结构,它实现了哈希表的特性,可以存储键值对。本篇文章学习map的底层结构和扩容机制。
map 的相关部分可以在源码下的 runtime/map.go 文件中查看,以下源代码基于 go1.23.3 版本,有删减。

在MySQL中,当数据量达到千万级时,B+树通常有3层。本文学习如何计算InnoDB中一棵B+树可以存放的数据数,以及如何根据数据量推算出对应的层数。

一、结构体标签

结构体标签是附加在结构体字段上的小块元数据字符串,格式为 key:"value",其中 key 是标签名,value 是标签的值。一个字段可以有多个标签,标签之间用空格分隔。

之前用Go实现延时队列,我使用了Go标准库中的container/heap接口来构建一个优先队列。为什么Go的container/heap接口可以实现一个优先队列呢?

这是因为Go的container/heap定义了一套完整的方法,使得任何实现了这些方法的数据结构都能够作为堆来使用。优先队列是堆的一种应用,它允许快速访问最高(或最低)优先级的元素。