简单语句修改。大小写问题
This commit is contained in:
4
03.2.md
4
03.2.md
@@ -52,11 +52,11 @@
|
||||
|
||||
我们看到上面的代码,要编写一个web服务器很简单,只要调用http包的两个函数就可以了。
|
||||
|
||||
>如果你以前是PHP程序员,那你也许就会问,我们的nginx、apache服务器不需要吗?Go就是不需要这些,因为他直接就监听tcp端口了,做了nginx做的事情,然后sayhelloName这个其实就是我们写的逻辑函数了,也就是php里面的控制层(controller)函数类似。
|
||||
>如果你以前是PHP程序员,那你也许就会问,我们的nginx、apache服务器不需要吗?Go就是不需要这些,因为他直接就监听tcp端口了,做了nginx做的事情,然后sayhelloName这个其实就是我们写的逻辑函数了,跟php里面的控制层(controller)函数类似。
|
||||
|
||||
>如果你以前是python程序员,那么你一定听说过tornado,这个代码和他是不是很像,对,没错,go就是拥有类似python这样动态语言的特性,写web应用很方便。
|
||||
|
||||
>如果你以前是ruby程序员,那么和ROR的/script/server启动有点类似。
|
||||
>如果你以前是ruby程序员,会发现和ROR的/script/server启动有点类似。
|
||||
|
||||
我们看到Go通过简单的几行代码就已经运行起来一个web服务了,而且这个Web服务内部有支持高并发的特性,我将会在接下来的两个小节里面详细的讲解一下go是如何实现Web高并发的。
|
||||
|
||||
|
||||
8
03.4.md
8
03.4.md
@@ -1,5 +1,5 @@
|
||||
# 3.4 Go的http包详解
|
||||
前面小节介绍了Go怎么样实现了Web工作模式的一个流程,这一小节,我们将来详细的解剖一下http包,看它到底怎么样实现整个的过程的。
|
||||
前面小节介绍了Go怎么样实现了Web工作模式的一个流程,这一小节,我们将详细地解剖一下http包,看它到底是怎样实现整个过程的。
|
||||
|
||||
Go的http有两个核心功能:Conn、ServeMux
|
||||
|
||||
@@ -14,7 +14,7 @@ Go在等待客户端请求里面是这样写的:
|
||||
}
|
||||
go c.serve()
|
||||
|
||||
这里我们可以看到客户端的每次请求都会创建一个Conn,这个Conn里面保存了该次请求的信息,然后再传递到handler的时候可以读取到相应的header信息,这样保证了每个请求的独立性。
|
||||
这里我们可以看到客户端的每次请求都会创建一个Conn,这个Conn里面保存了该次请求的信息,然后再传递到对应的handler,该handler中便可以读取到相应的header信息,这样保证了每个请求的独立性。
|
||||
|
||||
## ServeMux的自定义
|
||||
我们前面小节讲述conn.server的时候,其实内部是调用了http包默认的路由器,通过路由器把本次请求的信息传递到了后端的处理函数。那么这个路由器是怎么实现的呢?
|
||||
@@ -33,13 +33,13 @@ Go在等待客户端请求里面是这样写的:
|
||||
h Handler // 这个路由表达式对应哪个handler
|
||||
}
|
||||
|
||||
下面看一下handler的定义
|
||||
接着看一下Handler的定义
|
||||
|
||||
type Handler interface {
|
||||
ServeHTTP(ResponseWriter, *Request) // 路由实现器
|
||||
}
|
||||
|
||||
handler是一个接口,但是前一小节中的`sayhelloName`函数并没有实现ServeHTTP这个接口,为什么能添加呢?原来在http包里面还定义了一个类型`HandlerFunc`,我们定义的函数`sayhelloName`就是这个HandlerFunc调用之后的结果,这个类型默认就实现了ServeHTTP这个接口,即我们调用了HandlerFunc(f),类似强制类型转换f成为handlerFunc类型,这样f就拥有了ServHTTP方法。
|
||||
Handler是一个接口,但是前一小节中的`sayhelloName`函数并没有实现ServeHTTP这个接口,为什么能添加呢?原来在http包里面还定义了一个类型`HandlerFunc`,我们定义的函数`sayhelloName`就是这个HandlerFunc调用之后的结果,这个类型默认就实现了ServeHTTP这个接口,即我们调用了HandlerFunc(f),类似强制类型转换f成为HandlerFunc类型,这样f就拥有了ServHTTP方法。
|
||||
|
||||
type HandlerFunc func(ResponseWriter, *Request)
|
||||
|
||||
|
||||
4
03.5.md
4
03.5.md
@@ -1,7 +1,7 @@
|
||||
# 3.5 小结
|
||||
这一章我们介绍了HTTP协议, DNS解析的过程, 如何用go实现一个简陋的web server。并深入到net/http包的源码中为大家揭开如何实现此server的秘密。
|
||||
这一章我们介绍了HTTP协议, DNS解析的过程, 如何用go实现一个简陋的web server。并深入到net/http包的源码中为大家揭开实现此server的秘密。
|
||||
|
||||
我希望通过这一章的学习,你能够对Go开发Web有了初步的了解,我们也看到相应的代码了,Go开发Web应用是很方便的,同时又是相当的灵活。
|
||||
希望通过这一章的学习,你能够对Go开发Web有了初步的了解,我们也看到相应的代码了,Go开发Web应用是很方便的,同时又是相当的灵活。
|
||||
|
||||
## links
|
||||
* [目录](<preface.md>)
|
||||
|
||||
Reference in New Issue
Block a user