所以切记:在 Golang 中,每个 Goroutine 创建的时候,我们要使用 defer 和 recover 关键字为当前 Goroutine 捕获 panic 异常,并进行处理,否则,任意一处 panic 就会导致整个进程崩溃!
来自:02|Context:请求控制器,让每个请求都在掌控之中
11 人划过
Web Server 的本质,实际上就是接收、解析 HTTP 请求传输的文本字符,理解这些文本字符的指令,然后进行计算,再将返回值组织成 HTTP 响应的文本字符,通过 TCP 网络传输回去
来自:01|net/http:使用标准库搭建Server并不是那么简单
9 人划过
先系统设计,再定义接口,最后具体实现
来自:05|封装:如何让你的框架更好用?
5 人划过
这个 runtimeTimer 是 Golang 定义的定时器,做了一些比较复杂的优化。比如在有海量定时器的场景下,runtimeTimer 会为每个核,创建一个 runtimeTimer,进行统一调度,所以它的 CPU 消耗会远低于 time.Sleep。所以说,使用 ticker 是 Golang 中最优的定时写法。
来自:06|重启:如何进行优雅关闭?
3 人划过
这一点我认为 Gin 框架的考量是有道理的,所以我们也沿用这种方式。
来自:09|自研or借力(下):集成Gin替换已有核心
3 人划过
一类是追求运行性能,一类是追求开发效率
来自:开篇词|为什么我们要从零开发框架?
3 人划过
框架主体作为一个服务容器,其他各个服务模块都作为服务提供者,在服务容器中注册自己的服务凭证和服务接口,通过服务凭证来获取具体的服务实例。
来自:11|面向接口编程(下):一切皆服务,服务基于协议
3 人划过
使用.env 文件来设置默认环境变量,在运行的时候再使用真实的环境变量替换部分默认值
来自:15|配置和环境(上):配置服务中的设计思路
3 人划过
这些非业务逻辑代码抽象出来,封装好,提供接口给控制器使用。这个机制的实现,就是我们今天要讲的中间件。
来自:04|中间件:如何提高框架的可拓展性?
3 人划过
会在底层持续显示网络连接错误(broken pipe)
来自:08|自研or借力(上):集成Gin替换已有核心
3 人划过
*精彩内容为该课程各文章中划线次数最多的内容
编辑推荐
包含这门课的学习路径
Go工程师
16门课程 89.9w人学习
看过的人还看了