分类:蟠木朽株

共 21 篇文章
深入 Go 的 net/http
深入 Go 的 net/http

net/http 的 API 使用非常简单,但一次请求仍要经过连接获取、并发读写、Body 回收、超时与取消。沿着客户端和服务端的源码调用链读下去,才能准确解释连接为何没有复用、超时发生在哪一层,以及 Handler 返回后还有哪些工作没有结束。使用 Go 启动一个 HTTP 服务又或者作为客户端进行调用,都只需要几行代码:http.HandleFunc("/hello", func(w http.ResponseWriter, r *http.Request) { f

2021-04-06•约 16.8 千字
Go Slice 奇技淫巧
Go Slice 奇技淫巧

Go 的切片 (slice) 很容易学:len 是长度,cap 是容量,不够就 append。这三句话足够写完大多数业务代码,也足够埋下不少只有在线上才肯露头的问题。把一个切片赋值给另一个变量,改其中一个,另一个为什么也会变?同样是 append,为什么有时修改原数据,有时又像复制了一份?从大文件中只截取十几个字节,为什么几百 MB 内存还没有释放?两个看起来内容完全相同的空切片,为什么一个等于 nil,一个却不等于?[]byte(string) 是否一定分配?能不能把字符串

2021-03-19•约 11.3 千字
简述 HTTP
简述 HTTP

什么是 HTTP?首先,HTTP 是什么?HTTP 是基于 TCP/IP 的应用层通信协议,用于标准化客户端和服务器之间的通信方式。它定义了如何通过互联网请求和传输内容。所谓应用层协议,是指它只处在一个抽象层,规范主机(客户端和服务器)如何通信;它本身依赖 TCP/IP 来传递客户端和服务器之间的请求和响应。默认情况下,HTTP 使用 TCP 端口 80,HTTPS 使用 443。HTTP/0.9——1991 年第一个 HTTP 版本 HTTP/0.9 于 1991 年提出。

2017-04-05•约 4.0 千字