Home

HTTP2探析

HTTP2探析

随着Web网站的发展,在网站的界面变得越来越美观和用户友好的同时,网站的复杂度越来越大,并且涉及的Web资源也越来越多。大型网站动辄数十个资源、数十兆大小的资源需要传输到浏览器中做界面展示,如何让大型网站更快速的载入成了Web优化的重点方向。在资源的不断增多后,HTTP1.x协议已经无法提供很好的传输效率来满足性能需求,因此HTTP2被提出,且经过数年的发展,现在已经成熟并普及使用,带来了可观的性能提升。那么本文将介绍HTTP2的相关优化,来看看HTTP1.x中的性能缺陷是如何解决的。

Read more

2020总结

2020总结

2020年是从学生转为职场人的第一年,身份的转变并未带来太多不适应,但在真正地作为一个工程师工作时,总能感受到自己的不足之处以及当下迫切需要加强的地方。

Read more

配置管理

配置管理

在编写代码的时候,我们经常需要编写配置,使得固定的代码逻辑可以应对环境的变化,而不必在环境变更后跟着修改代码。简单的配置是十分容易管理的,但是随着配置项的增多,管理的复杂度会不断上升,以至于难于维护。本文将会介绍一些常用的配置管理方法,以帮助大家更高效的管理配置。

Read more

浅析 sync.Map

浅析 sync.Map

sync.Map提供并发安全的泛型Map结构。尽管sync.Map能够提供并发安全的机制,但在实际使用中,sync.Map通常都不是首选。

首先,并发安全的Map可以选择使用Mutex或者RWMutex互斥访问,搭配MutexRWMutex可以满足大多数并发场景,并且能提供较好的类型约束,因此在实践上是首选。那么什么时候该使用sync.Map呢?要了解sync.Map的使用场景,就需要从sync.Map的设计目标出发。

Read more

The Usage of Git

The Usage of Git

Git作为广泛使用的分布式版本控制系统之一,有着许多优秀的特性:

  • 分支与合并:分支允许人们对仓库多线修改,并提供了快速的合并机制
  • 轻量级:轻量级的提交与分支鼓励人们进行多分支的工作流
  • 分布式:Git仓库可以分布在多个机器,并且每个仓库可以自由进行协作修改

本文作为Pro Git book的阅后总结,将会简要的介绍git中关键的实现原理,并从原理出发介绍一些常用的git命令。

Read more

RWMutex

RWMutex

RWMutex为借助Mutex实现的不可重入读写锁,在读多写少的情况下有着比互斥锁Mutex更好的效率,下面让我们从源码实现上看看RWMutex的高效性。

Read more

Go Slice

Go Slice

slice在Go中扮演着动态数组的角色,有着广泛的使用。并且由于Go值传递的特性,通常使用slice会比使用定值数组Array带来更多的便利。接下来,本文将会从slice的实现出发来介绍slice中隐藏的Tricks。

Read more

浅析 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 协议入门》学习。

Read more