diff --git a/3.4.md b/3.4.md index 6c11e962..0c8f3d97 100644 --- a/3.4.md +++ b/3.4.md @@ -111,45 +111,45 @@ handler是一个接口,但是前一小节中的`sayhelloName`函数并没有 按顺序做了几件事: - 1. 调用了DefaultServerMux的HandleFunc + 1. 调用了DefaultServerMux的HandleFunc - 2. 调用了DefaultServerMux的Handle + 2. 调用了DefaultServerMux的Handle - 3. 往DefaultServeMux的map[string]muxEntry中增加对应的handler和路由规则 + 3. 往DefaultServeMux的map[string]muxEntry中增加对应的handler和路由规则 - 其次调用http.ListenAndServe(":9090", nil) 按顺序做了几件事情: - 1. 实例化Server + 1. 实例化Server - 2. 调用Server的ListenAndServe() + 2. 调用Server的ListenAndServe() - 3. 调用net.Listen("tcp", addr)监听端口 + 3. 调用net.Listen("tcp", addr)监听端口 - 4. 启动一个for循环,在循环体中Accept请求 + 4. 启动一个for循环,在循环体中Accept请求 - 5. 对每个请求实例化一个Conn,并且开启一个goroutine为这个请求进行服务go c.serve() + 5. 对每个请求实例化一个Conn,并且开启一个goroutine为这个请求进行服务go c.serve() - 6. 读取每个请求的内容w, err := c.readRequest() + 6. 读取每个请求的内容w, err := c.readRequest() - 7. 判断handler是否为空,如果没有设置handler(这个例子就没有设置handler),handler就设置为DefaultServeMux + 7. 判断handler是否为空,如果没有设置handler(这个例子就没有设置handler),handler就设置为DefaultServeMux - 8. 调用handler的ServeHttp + 8. 调用handler的ServeHttp - 9. 在这个例子中,下面就进入到DefaultServerMux.ServeHttp + 9. 在这个例子中,下面就进入到DefaultServerMux.ServeHttp - 10. 根据request选择handler,并且进入到这个handler的ServeHTTP + 10. 根据request选择handler,并且进入到这个handler的ServeHTTP mux.handler(r).ServeHTTP(w, r) - 11 选择handler: + 11 选择handler: - A. 判断是否有路由能满足这个request(循环遍历ServerMux的muxEntry) + A. 判断是否有路由能满足这个request(循环遍历ServerMux的muxEntry) - B. 如果有路由满足,调用这个路由handler的ServeHttp + B. 如果有路由满足,调用这个路由handler的ServeHttp - C. 如果没有路由满足,调用NotFoundHandler的ServeHttp + C. 如果没有路由满足,调用NotFoundHandler的ServeHttp ## links * [目录]() diff --git a/5.1.md b/5.1.md index f0d1859e..e5b11b03 100644 --- a/5.1.md +++ b/5.1.md @@ -1,4 +1,4 @@ -h# 5.1 database/sql接口 +# 5.1 database/sql接口 Go和PHP不同的地方是,他没有官方提供数据库驱动,而是为开发数据库驱动定义了一些标准接口,第三方用户可以根据定义的接口来开发相应的数据库驱动,这样做有一个好处,我们按照标准接口开发的代码, 在需要迁移数据库时,不需要任何修改。那么Go都定义了那些标准接口呢?让我们来详细的分析一下 ## sql.Register