Web 核心 Server 在 《Golang 主流 Web 框架路由实现分析》中我们注意到对于一个 Web 框架来说,至少提供了三个抽象: 代表服务器的吃哦续爱那个,我们这里称之为 Server 代表上下文的抽象,我们这里称之为 Context 路由树 从前面框架对比来看,对于一个 Web 框架来说,我们首先要有一个…
2022 年 11 月
共 5 篇
Web Server 设计详解
Golang 主流 Web 框架路由实现分析
Beego 路由实现分析 Beego 的设计初衷是为了提供一个简单易用的 web 框架,同时也保证了高性能和可扩展性。它的设计理念是基于 MVC 模式,在 Go 最早期的时候算是最流行的框架之一。 下面的代码是 Beego 最简单的使用方法。 这是一段非常经典的基于 MVC 的代码结构。 web.Router 用来注册…
Redis 7.0.5 源码阅读笔记: goto 在 redis 中的应用
在 C/C++ 很大一部分教材中都说不要使用 goto 关键字进行逻辑跳转,这是因为 goto 容易造成代码的不可维护,因为太多的跳转容易导致代码逻辑的凌乱,让人摸不到头脑,但是有一种情况是 goto 的不错应用场景,那就是在应用初始化失败时候来清理资源。 在《Linux C 程序设计王者归来》一书中有详细的解释说明。…
Redis 7.0.5 源码阅读笔记:基于linenoise 的 redis-client 命令行实现
redisclient 提供了类似于与 mysql 的交互式命令行工具,我们输入命令,redisclient 会将我们的命令发送给 redisserver 然后返回取到的值。 linenoise 是非常轻量级的命令行处理工具,除了 redis 还有很著名的开源软件在使用 linenoise 其中就包括 MongoDB …
Redis 7.0.5 源码阅读笔记:Redis 守护进程的实现
实现代码 Redis 的守护进程实现代码是在 src/server.c 的第 6094 行,其代码如下: redis 的守护进程很简单执行流程如下。 1. 调用 fork 派生子进程 2. 调用成功后退出父进程 3. 设置新的 sessionid 4. 关闭标准输入、标准输出和标准错误 5. 判断文件描述符如果大于标准…