浅析 sync.Map
浅析 sync.Map
sync.Map
提供并发安全的泛型Map结构。尽管sync.Map
能够提供并发安全的机制,但在实际使用中,sync.Map
通常都不是首选。
首先,并发安全的Map可以选择使用Mutex
或者RWMutex
互斥访问,搭配Mutex
和RWMutex
可以满足大多数并发场景,并且能提供较好的类型约束,因此在实践上是首选。那么什么时候该使用sync.Map
呢?要了解sync.Map
的使用场景,就需要从sync.Map
的设计目标出发。
The Usage of Git
The Usage of Git
Git
作为广泛使用的分布式版本控制系统之一,有着许多优秀的特性:
- 分支与合并:分支允许人们对仓库多线修改,并提供了快速的合并机制
- 轻量级:轻量级的提交与分支鼓励人们进行多分支的工作流
- 分布式:Git仓库可以分布在多个机器,并且每个仓库可以自由进行协作修改
本文作为Pro Git book的阅后总结,将会简要的介绍git中关键的实现原理,并从原理出发介绍一些常用的git命令。
浅析 Go HTTPServer
浅析 Go HTTPServer
net/http
标准库中提供了开箱即用的HTTPServer,并且支持HTTPS协议下HTTP2.0
的实现,用户只需几行代码即可启动一个简单的且并发性能优秀的HTTPServer:
func handler(w http.ResponseWriter, r *http.Request) {
fmt.Fprint(w, "hello world!")
}
func main() {
http.HandleFunc("/", handler)
log.Fatal(http.ListenAndServe(":8080", nil))
}
本文将会对Go1.14标准库中的HTTPServer实现做一个简单的探究。读者阅读前需要对HTTP1.x协议有一个比较清晰的认识,可以从这篇文章《阮一峰–HTTP 协议入门》学习。