最值得学习的10个C语⾔开源项⽬
最好别下载最新版,因为代码量⽐较⼤,可以下载很早的版本
搜索词:开源 C
Webbench
Webbench是⼀个在linux下使⽤的⾮常简单的⽹站压测⼯具。它使⽤fork()模拟多个客户端同时访问我们设定的URL,测试⽹站在压⼒下⼯作的性能,最多可以模拟3万个并发连接去测试⽹站的负载能⼒。Webbench使⽤C语⾔编写, 代码实在太简洁,源码加起来不到600⾏。
CMockery
cmockery是google发布的⽤于C单元测试的⼀个轻量级的框架。它很⼩巧,对其他开源包没有依赖,对被测试代码侵⼊性⼩。cmockery的源代码⾏数不到3K,你阅读⼀下will_return和mock的源代码就⼀⽬了然了。
主要特点:
免费且开源,google提供技术⽀持;
轻量级的框架,使测试更加快速简单;
c语言如何去学避免使⽤复杂的编译器特性,对⽼版本的编译器来讲,兼容性好;
并不强制要求待测代码必须依赖C99标准,这⼀特性对许多嵌⼊式系统的开发很有⽤
Libev
libev是⼀个开源的事件驱动库,基于epoll,kqueue等OS提供的基础设施。其以⾼效出名,它可以将IO事件,定时器,和信号统⼀起来,统⼀放在事件处理这⼀套框架下处理。基于Reactor模式,效率较⾼,并且代码精简(4.15版本8000多⾏),是学习事件驱动编程的很好的资源。
Memcached
Memcached 是⼀个⾼性能的分布式内存对象缓存系统,⽤于动态Web应⽤以减轻数据库负载。它通过在内存中缓存数据和对象来减少读取数据库的次数,从⽽提供动态数据库驱动⽹站的速度。Memcached 基于⼀个存储键/值对的 hashmap。Memcached-1.4.7的代码量还是可以接受的,只有10K⾏左右。
Lua
Lua很棒,Lua是巴西⼈发明的。
Lua的源代码,百分之⼀百的ANSI C,⼀点都不掺杂。在任何⽀持ANSI C编译器的平台上都可以轻松编译通过。我试过,真是⼀点废话都没有。Lua的代码数量⾜够
⼩,5.1.4仅仅1.5W⾏,去掉空⽩⾏和注释估计能到1W⾏。
SQLite
SQLite是⼀个开源的嵌⼊式关系数据库,实现⾃包容、零配置、⽀持事务的SQL数据库引擎。其特点是⾼度便携、使⽤⽅便、结构紧凑、⾼效、可靠。⾜够⼩,⼤致3万⾏C代码,250K。
Redis
Redis是⼀个⽤ANSI C 编写的开源数据结构服务器。Redis的代码⾮常容易读懂,代码写的很整洁,并且代码量相对较⼩(4.5w⾏)。⼤部分都是单线程的,⼏乎不依赖其它库。
下载地址:redis.io/
Nginx
Nginx("engine x") 是⼀个⾼性能的 HTTP 和反向代理服务器,也是⼀个 IMAP/POP3/SMTP 代理服务器。Nginx 是由 Igor Sysoev 为俄罗斯访问量第⼆的Rambler.ru站点开发的,它已经在该站点运⾏超过四年多了。Igor 将源代码以类BSD许可证的形式发布。⾃Nginx 发布四年来,Nginx 已经因为它的稳定性、丰富的功能集、⽰例配置⽂件和低系统资源的消耗⽽闻名了。
nginx的优秀除了体现在程序结构以及代码风格上,nginx的源码组织也同样简洁明了,⽬录结构层次结构清晰,值得我们去学习。
UNIXv6
UNIX V6 的内核源代码包括设备驱动程序在内约有1 万⾏,这个数量的源代码,初学者是能够充分理解的。有⼀种说法是⼀个⼈所能理解的代码量上限为1 万⾏,UNIX V6的内核源代码从数量上看正好在这个范围之内。看到这⾥,⼤家是不是也有“如果只有1万⾏的话没准⼉我也能学会”的想法呢?
另⼀⽅⾯,最近的操作系统,例如Linux 最新版的内核源代码据说超过了1000 万⾏。就算不是初学者,想完全理解全部代码基本上也是不可能的。
NETBSD
NetBSD是⼀个免费的,具有⾼度移植性的 UNIX-like 操作系统,是现⾏可移植平台最多的操作系统,
可以在许多平台上执⾏,从 64bit alpha 服务器到⼿持设备和嵌⼊式设备。NetBSD计划的⼝号是:"Of course it runs NetBSD"。它设计简洁,代码规范,拥有众多先进特性,使得它在业界和学术界⼴受好评。由于简洁的设计和先进的特征,使得它在⽣产和研究⽅⾯,都有卓越的表现,⽽且它也有受使⽤者⽀持的完整的源代码。许多程序都可以很容易地通过NetBSD Packages Collection获得。
备注:根据⽹友的建议,增加了Redis和Nginx,同时删除tinyhttp和cJSON。(见下)
Tinyhttpd
tinyhttpd是⼀个超轻量型Http Server,使⽤C语⾔开发,全部代码只有502⾏(包括注释),附带⼀个简单的Client,可以通过阅读这段代码理解⼀个 Http Server 的本质。cJSON
cJSON是C语⾔中的⼀个JSON编解码器,⾮常轻量级,C⽂件只有500多⾏,速度也⾮常理想。
cJSON也存在⼏个弱点,虽然功能不是⾮常强⼤,但cJSON的⼩⾝板和速度是最值得赞赏的。其代码被⾮常好地维护着,结构也简单易懂,可以作为⼀个⾮常好的C语⾔项⽬进⾏学习。
参考
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论