背景 众所周知,HTTP 协议是无状态的,服务器不会保存关于客户端的任何信息,对于服务器来说,每个请求都是独立的,服务器无法判断多个请求是否来自同一个用户或会话。 对于用户来说,在每次请求个人数据时都需要输……
Golang
823
2 分钟
如何用 M 个 goroutine 利用 channel 通信交替输出 1 到 N 的数字? 输出类似于: goroutine 0: 1 goroutine 1: 2 goroutine 2: 3 goroutine 0: 4 goroutine 1: 5 ... 思路 设 goroutine 的编号为 $0,\ 1,\ \dots,\ M-1$ ,首先我们能想到每个 goroutine 都以 $M$ 为步长来输出, 比如编号为 $0$ 的 goroutine 输出 $1,\ M+1,\ 2M+1,\ \dots$ ,编号为 $1$ 的 goroutine 输出……
Git
2963
6 分钟
前言 cherry-pick 是一个十分好用的命令,它在我们的日常开发中发挥着关键作用,同时,关于 cherry-pick 的定义、在实际开发中适用的场景和它的实现原理,都值得我们深入了解。 本文将讲解 cherry-pick 的实现,特别是命令内部使用的 Three Way Merge 算法,该算法……
Golang
3616
8 分钟
前言 路由系统是 Gin 框架的核心组成之一,本文以前缀树为切入点,前缀树作为一种高效的数据结构,为我们提供了理解路由匹配的基础。随后引入更为先进和灵活的 Radix Tree。最后聚焦于 Gin 框架中路由树的实现细节,探讨 Gin 是……
Golang
996
2 分钟
Redis(Remote Dictionary Server)是一个开源的 NoSQL 数据库,它性能强劲,并且提供了多种复杂和灵活的数据结构,能够适用于各种各样的业务需求。除此之外,通过复制、持久化(persistence)和客户端分片(client-s……