北川广海の梦

北川广海の梦

Golang

Go实现反向代理,并自动处理重定向

Go实现反向代理,并自动处理重定向

反向代理 说起反向代理,第一印象估计都是超高人气的Nginx,其凭借强大的性能,吸引了不少使用者。 为什么需要反向代理? 隐藏服务器细节:在你的反向代理机器背后,就是你真正的业务服务器。它可能是由上千台机器组成的庞大集群,也可能是一个便宜好用的云服务器。外部请求想要访问你的服务器,必须通过反向代理。
97
0
0
2023-06-28
Dgraph数据库 raft wal实现

Dgraph数据库 raft wal实现

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

Golang Mutex互斥锁原理

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

Golang map数据结构与渐进式rehash

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

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

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

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

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