From 42ac1c86e4c68e4396972aac11f1a31b4d9c4c45 Mon Sep 17 00:00:00 2001 From: chai2010 Date: Fri, 21 Dec 2018 11:08:33 +0800 Subject: [PATCH] =?UTF-8?q?=E8=A7=84=E8=8C=83Go=E5=90=8D=E5=AD=97?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ch1-basic/readme.md | 2 +- ch5-web/ch5-02-router.md | 2 +- ch5-web/ch5-03-middleware.md | 2 +- ch5-web/ch5-04-validator.md | 4 ++-- 4 files changed, 5 insertions(+), 5 deletions(-) diff --git a/ch1-basic/readme.md b/ch1-basic/readme.md index 00e9f8f..ca2373c 100644 --- a/ch1-basic/readme.md +++ b/ch1-basic/readme.md @@ -1,6 +1,6 @@ # 第1章 语言基础 -*我不知道,你过去10年为什么不快乐。但相信我,抛掉过去的沉重,使用 golang ,体会最初的快乐!——469856321* +*我不知道,你过去10年为什么不快乐。但相信我,抛掉过去的沉重,使用Go语言,体会最初的快乐!——469856321* *搬砖民工也会建成自己的罗马帝国。——小张* diff --git a/ch5-web/ch5-02-router.md b/ch5-web/ch5-02-router.md index 26af8d9..8f21b31 100644 --- a/ch5-web/ch5-02-router.md +++ b/ch5-web/ch5-02-router.md @@ -1,6 +1,6 @@ # 5.2 router 请求路由 -在常见的Web框架中,router是必备的组件。golang圈子里router也时常被称为http的multiplexer。在上一节中我们通过对Burrow代码的简单学习,已经知道如何用http标准库中内置的mux来完成简单的路由功能了。如果开发Web系统对路径中带参数没什么兴趣的话,用http标准库中的mux就可以。 +在常见的Web框架中,router是必备的组件。Go语言圈子里router也时常被称为http的multiplexer。在上一节中我们通过对Burrow代码的简单学习,已经知道如何用http标准库中内置的mux来完成简单的路由功能了。如果开发Web系统对路径中带参数没什么兴趣的话,用http标准库中的mux就可以。 RESTful是几年前刮起的API设计风潮,在RESTful中除了GET和POST之外,还使用了http协议定义的几种其它的标准化语义。具体包括: diff --git a/ch5-web/ch5-03-middleware.md b/ch5-web/ch5-03-middleware.md index 4d3ea9e..15cd7f8 100644 --- a/ch5-web/ch5-03-middleware.md +++ b/ch5-web/ch5-03-middleware.md @@ -255,7 +255,7 @@ func (r *Router) Add(route string, h http.Handler) { ## 5.3.4 哪些事情适合在 middleware 中做 -以较流行的开源golang框架chi为例: +以较流行的开源Go语言框架chi为例: ``` compress.go diff --git a/ch5-web/ch5-04-validator.md b/ch5-web/ch5-04-validator.md index 97b1bc4..f435dbd 100644 --- a/ch5-web/ch5-04-validator.md +++ b/ch5-web/ch5-04-validator.md @@ -40,7 +40,7 @@ func register(req RegisterReq) error{ } ``` -我们在 golang 里成功写出了 hadoken 开路的箭头型代码。。这种代码一般怎么进行优化呢? +我们用Go语言成功写出了 hadoken 开路的箭头型代码。。这种代码一般怎么进行优化呢? 很简单,在《重构》一书中已经给出了方案:[Guard Clauses](https://refactoring.com/catalog/replaceNestedConditionalWithGuardClauses.html)。 @@ -235,4 +235,4 @@ func main() { 在前一小节中介绍的 validator 组件在功能上要远比我们这里的 demo 复杂的多。但原理很简单,就是用 reflect 对 struct 进行树形遍历。有心的读者这时候可能会产生一个问题,我们对 struct 进行 validate 时大量使用了 reflect,而 go 的 reflect 在性能上不太出众,有时甚至会影响到我们程序的性能。这样的考虑确实有一些道理,但需要对 struct 进行大量校验的场景往往出现在 Web 服务,这里并不一定是程序的性能瓶颈所在,实际的效果还是要从 pprof 中做更精确的判断。 -如果基于反射的 validator 真的成为了你服务的性能瓶颈怎么办?现在也有一种思路可以避免反射:使用 golang 内置的 parser 对源代码进行扫描,然后根据 struct 的定义生成校验代码。我们可以将所有需要校验的结构体放在单独的 package 内。这就交给读者自己去探索了。 +如果基于反射的 validator 真的成为了你服务的性能瓶颈怎么办?现在也有一种思路可以避免反射:使用Go语言内置的 parser 对源代码进行扫描,然后根据 struct 的定义生成校验代码。我们可以将所有需要校验的结构体放在单独的 package 内。这就交给读者自己去探索了。