北川广海の梦

北川广海の梦

最新文章

Dgraph数据库 raft wal实现

Dgraph数据库 raft wal实现

dgraph的raft算法,是基于etcd raft库实现的,其代码比较有参考价值。本文将分析其raft log storage部分的实现。
62
0
0
2023-04-18

colorful日志

日志日志输出在开发过程中是必不可少的。而不同级别的日志,能够帮助我们对信息进行区分,更容易抓住重点。常见的日志级别:error、warn、info、debug等那么在许多时候 我们看到不同级别日志输出不同的颜色,这背后的秘密其实就是 ANSI转义序列
105
0
0
2023-03-22

SQL的执行过程简析

对于这个执行过程,过去总是模糊不清,含糊的知道,会有SQL语法解析,执行计划分析等等。近日在工作中有相关学习,故写此文记录。
106
0
0
2023-03-17

前缀树实现

基于Golang,效率可能并不能达到O(N),因为要支持字母外的其他字符,所以子节点的长度并不固定,这里用的是链表存储。所以在进入到下一子节点前,需要遍历这个子节点链表。然而,如果是纯英文,则可以通过ASCII直接定位了,效率和内存都更有优势。 下面是代码: package main import
171
0
0
2023-02-12

Golang Mutex互斥锁原理

首先回顾一下Java中的锁的一些特性。在面试时,我们常被问道Java的锁升级过程:即一个锁的初始是不加锁的,而当只有一个线程来尝试获取这把锁的时候,它会变为偏向锁,(在锁对象头中存储线程id)这样可以对应的线程可以直接获得锁。而当有更多线程(2个)尝试获取锁时,它会转变为一个轻量级锁...
224
0
0
2023-02-10

Golang map数据结构与渐进式rehash

HashMap是日常开发中最常用的数据结构之一,由于其独特的性质,在许多场景其都能发挥作用,例如去重,快速判断存在性,甚至表示一个对象。而不同平台对于hashmap有着不同的实现,本文将分析Golang语言中的map实现原理。首先来回顾一下Java中的HashMap...
744
0
0
2022-12-07

Golang类型系统、接口与类型断言

普通结构体 type Man struct{ name string } func (m *Man) Speak(){ } 我们定义了一个简单的结构体,它有一个name字段,并且为它实现了一个Speak的方法。这个对象在运行时的元数据如下 runtime._type结构,描述了类型的大小,
326
0
0
2022-12-05

Golang GC 三色标记法与混合屏障

Golang采用了三色标记与混合写入屏障技术,经历几个版本的不断优化,最终实现了几乎完全无STW。本文将分析Golang的GC实现思想。
599
0
0
2022-11-25

SQL Server实现Join原理

Join操作 关系型数据库中,Join操作非常常见。正是由于对多表联合查询的支持,各个表之间的关系、关联,正是通过join实现。 Join操作可以理解为,将两张表,通过某一个字段,联合为一张表。 班级表中,记录了班级的班主任是谁。学生表中记录了学生的个人信息,已经学生所属哪个班级。以此可将学生和班级
359
0
0
2022-05-07

设计模式:中介者模式与桥接模式

中介者模式 在一个包含UI的客户端程序中,我们通常会包含许多UI组件,这些组件之间常常会有复杂的逻辑交互。例如一些按钮联动等等。如果我们在每一个组件中都需要处理其他按钮发生的事情,那么每一个组件都会变得极不稳定且难以维护。 想象一下机场塔台,它负责一切航班之间的调度。航班之间互相无需关心彼此的存在。
522
0
0
2021-11-11