阅读nginx源代码
2010-04-18 15:21:20
周末和同事一起讨论nginx的优缺点,有了深入了解nginx的冲动,再加上一直都没有在Linux下用C写过像样的程序,于是就开始了nginx的学习。
首先是下载源代码,打开 nginx.org就可以下载源代码;由于被Eclipse和Visual Studio给带坏了,没有了IDE就不会读程序,也不会写代码了,于是又找到用起来比较顺手的IDE CodeLite。
初识代码:作为一个外行,我的感觉是nginx的代码写的非常简洁,有条理性,给我极大的诱惑力, 而之前 看apache代码,一看代码就晕了(可能当时不习惯在linux下看代码,或者没有找到合适的IDE吧,反正一大堆的类型定义让我找不到北)。遗憾的是,代码太多, 有234个文件,11万行代码。面度这堆代码感觉是不是庐山真面目!
求助: Nginx Wiki , Joshua Zhu的talk, 浪湾(langwan)的博客, 以及 RainX的CodeReview。很快我就看到庐山真面目了。
感触: c和Java的风格太不一样了。c太简单,似乎一切都得从头开始,连最基本的数据结构,例如: array, list, queue, hash等都得自己去实现,当然这一切会更加灵活;nginx中的内存管理策略简单粗暴,但是却能解决很多问题,例如:内存泄漏,内存分配的效率等问题。当然其他的很多c系统,例如: python, memcached也各有各的内存管理特色。
总结: N 人很多,自己很弱,Nginx代码很美。以后的路还很艰难,作为一个程序员既要看到系统设计等大的方面,又要深入各种具体环境,了解程序设计的细节,并且最好也能自己动手熟悉代码,才能领略其中的精华。 还有,网上尽量多多结交一路上的朋友,让这一路走得块,走得有意思
首先是下载源代码,打开 nginx.org就可以下载源代码;由于被Eclipse和Visual Studio给带坏了,没有了IDE就不会读程序,也不会写代码了,于是又找到用起来比较顺手的IDE CodeLite。
初识代码:作为一个外行,我的感觉是nginx的代码写的非常简洁,有条理性,给我极大的诱惑力, 而之前 看apache代码,一看代码就晕了(可能当时不习惯在linux下看代码,或者没有找到合适的IDE吧,反正一大堆的类型定义让我找不到北)。遗憾的是,代码太多, 有234个文件,11万行代码。面度这堆代码感觉是不是庐山真面目!
求助: Nginx Wiki , Joshua Zhu的talk, 浪湾(langwan)的博客, 以及 RainX的CodeReview。很快我就看到庐山真面目了。
感触: c和Java的风格太不一样了。c太简单,似乎一切都得从头开始,连最基本的数据结构,例如: array, list, queue, hash等都得自己去实现,当然这一切会更加灵活;nginx中的内存管理策略简单粗暴,但是却能解决很多问题,例如:内存泄漏,内存分配的效率等问题。当然其他的很多c系统,例如: python, memcached也各有各的内存管理特色。
总结: N 人很多,自己很弱,Nginx代码很美。以后的路还很艰难,作为一个程序员既要看到系统设计等大的方面,又要深入各种具体环境,了解程序设计的细节,并且最好也能自己动手熟悉代码,才能领略其中的精华。 还有,网上尽量多多结交一路上的朋友,让这一路走得块,走得有意思