首页
学习
活动
专区
圈层
工具
发布

设计模式在C语言中的应用–读nginx源码

市面上的“设计模式“书籍文章,皆针对Java/C++/C#等面向对象语言,似乎离开了面向对象的种种特性,设计模式就无法实现,没有用武之地了。 是这样吗?...然而,存在即合理,C语言直到今日仍然在大型软件工程中担纲主角,其种种设计方法其实与我们通常见到的设计模式本质是相同的。...例如nginx这个纯C语言写就的的高性能WEB服务器,就有许多地方使用到了市面书籍提到的设计模式。下面通过nginx源码来看看C语言是怎么做的。...由于UML本就是针对OO语言的,所以以上我画的类图都比较牵强,什么是继承?什么是聚合?在C语言中,往往都是通过几个函数指针,或者void*指针实现各种封装和多态。...当然以上只是一家之言,不必当真,如果对nginx源码有研究的话,欢迎各位拍砖。

2.3K40
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    读Kafka Consumer源码

    带着这样的疑问,最近把Kafka Consumer部分的源码读了一遍,因为: Kafka应该是业界最著名的一个开源MQ了(RocketMQ最初也是参考了Kafka去实现的) 希望通过读Kafka源码能找到一些定义...MQ接口的想法 但是在读完Kafka Consumer部分的源码后稍稍有一些失望,因为它并没有给我代码我想要的,反而在读完后觉得接口设计和源码实现上相对于Kafka的盛名有一些名不副实的感觉。...(读源码时光看完这部分接口我就已经晕了) 上面的方法大致可以分为四类: 订阅相关:subscribe、unsubscribe 消费相关:assign、poll、commit 元数据相关:搜索、设置、获取...Consumer部分的包组织和我自己读源码使对它的整理: ?...右边是Kafka源码Consumer部分的包结构,所有的类分了两块,内部的在internals中。右边是自己读源码时根据各个模块对Consumer的类进行划分。

    92720

    源码共读-Koa

    Koa是基于 Node.js 平台的下一代 web 开发框架,它的源码可以看这里,本章通过源码来简绍一下Koa是怎么实现的。 核心代码 Koa的核心代码只有4个文件,如图。...application源码 为了方便查看application的核心逻辑,下面是我去掉了部分非核心代码的application源码: const onFinished = require('on-finished...koa-compose源码 在讲述源码之前我们先看看koa-compose中间件是怎么使用的。...2个中间件开始 第3个中间件开始 第3个中间件结束 第2个中间件结束 第1个中间件结束 处理完成了 koa-compose把多个中间件合并成一个函数,通过await next()来调用下一个中间件,其源码如下...context源码 context是对上下文对象的封装,具体代码如下: const util = require('util') const createError = require('http-errors

    15910

    开始读 Go 源码了

    原文链接: 开始读 Go 源码了 学完 Go 的基础知识已经有一段时间了,那么接下来应该学什么呢?有几个方向可以考虑,比如说 Web 开发,网络编程等。...所以,我决定开始读 Go 标准库源码,Go 一共有 150+ 标准库,想要全部读完的话不是不可能,但绝对是一项大工程,希望自己能坚持下去。 为什么从 Go 标准库的源码开始读呢?...这要是一上来就读这部分代码,恐怕直接就放弃 Go 语言学习了。 而标准库就不一样了,有一部分代码根本不涉及底层原理,实现也相对简单,同时又能对 Go 的理念加深理解,作为入门再好不过了。...unsafe:包含了一些打破 Go 语言「类型安全」的命令,一般程序不会使用,可用在 C/C++ 程序的调用中。...如果想要深入了解语言的底层原理,则需要阅读 runtime 库。 要想快速入门,并且了解语言的设计理念,建议阅读 io 以及 fmt 库,阅读后会对接口的设计理解更深。

    56931
    领券