手把手带你写一个 Web 框架
从 0 到 1,实现自己的工业级 Web 框架
叶剑峰  腾讯高级工程师,前滴滴技术专家
专栏
已完结·共 42 讲
|
2.3w 人已学
|
收藏
所以切记:在 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 人划过
*精彩内容为该课程各文章中划线次数最多的内容
免费试读
讲师

叶剑峰

腾讯高级工程师,前滴滴技术专家

叶剑峰,网名轩脉刃,腾讯高级工程师。前后就职于开心网、奇虎、滴滴等大型互联网公司,负责公司核心业务的架构设计和开发。 专注 Web 后端研发十余年,包括服务端的架构搭建、维护、优化等,一直在一线为技术团队搭建业务架构和解决实际问题,日积月累逐步形成了自己的一套方法论,对底...查看更多
编辑推荐
包含这门课的学习路径

Go工程师

16门课程 89.9w人学习
看过的人还看了
MySQL 实战 45 讲
林晓斌
网名丁奇,前腾讯云数据库负责人

49讲 | 224938 人已学习

¥68¥199
数据结构与算法之美
王争
前 Google 工程师

81讲 | 283805 人已学习

¥68¥199
Go 语言项目开发实战
孔令飞
腾讯云专家工程师,前 Red Hat、联想云工程师

61讲 | 41039 人已学习

¥68¥199
左耳听风
陈皓
网名“左耳朵耗子”,资深技术专家

119讲 | 181001 人已学习

¥98¥399
设计模式之美
王争
前 Google 工程师,《数据结构与算法之美》专栏作者

113讲 | 123470 人已学习

¥98¥299
Redis 核心技术与实战
蒋德钧
中科院计算所副研究员

53讲 | 81748 人已学习

¥68¥199