fixed markdown format
This commit is contained in:
8
3.4.md
8
3.4.md
@@ -1,9 +1,9 @@
|
||||
#3.4 Go的http包详解
|
||||
# 3.4 Go的http包详解
|
||||
前面小节介绍了Go怎么样实现了Web工作模式的一个流程,这一小节,我们将来详细的解剖一下http包,看它到底怎么样实现整个的过程的。
|
||||
|
||||
Go的http有两个核心功能:Conn、ServeMux
|
||||
|
||||
##Conn的goroutine
|
||||
## Conn的goroutine
|
||||
与我们一般编写的http服务器不同, Go为了实现高并发和高性能, 使用了goroutines来处理Conn的读写事件, 这样每个请求都能保持独立,相互不会阻塞,可以高效的响应网络事件。这是Go高效的保证。
|
||||
|
||||
Go在等待客户端请求里面是这样写的:
|
||||
@@ -16,7 +16,7 @@ Go在等待客户端请求里面是这样写的:
|
||||
|
||||
这里我们可以看到客户端的每次请求都会创建一个Conn,这个Conn里面保存了该次请求的信息,然后再传递到handler的时候可以读取到相应的header信息,这样保证了每个请求的独立性。
|
||||
|
||||
##ServeMux的自定义
|
||||
## ServeMux的自定义
|
||||
我们前面小节讲述conn.server的时候,其实内部是调用了http包默认的路由器,通过路由器把本次请求的信息传递到了后端的处理函数。那么这个路由器是怎么实现的呢?
|
||||
|
||||
它的结构如下:
|
||||
@@ -103,7 +103,7 @@ handler是一个接口,但是前一小节中的`sayhelloName`函数并没有
|
||||
http.ListenAndServe(":9090", mux)
|
||||
}
|
||||
|
||||
##Go代码的执行流程
|
||||
## Go代码的执行流程
|
||||
|
||||
通过对http包的分析之后,现在让我们来梳理一下整个的代码执行过程。
|
||||
|
||||
|
||||
Reference in New Issue
Block a user