10个经典的C++源码
开源世界有许多优秀的开源项⽬,我选取其中⼗个最优秀的、最轻量级的C语⾔的项⽬,希望可以为C语⾔开发⼈员提供参考。
1. Webbench
2. Tinyhttpd
3. cJSON
4. CMockery
5. Libev
6. Memcached
7. Lua
8. SQLite
9. UNIX v6
10. NETBSD
⼗个最值得阅读学习的C开源项⽬代码
1. Webbench
Webbench是⼀个在linux下使⽤的⾮常简单的⽹站压测⼯具。它使⽤fork()模拟多个客户端同时访问我们设定的URL,测试⽹站在压⼒下⼯作的性能,最多可以模拟3万个并发连接去测试⽹站的负载能⼒。Webbench使⽤C语⾔编写, 代码实在太简洁,源码加起来不到600⾏。下载链接:
2. Tinyhttpd
tinyhttpd是⼀个超轻量型Http Server,使⽤C语⾔开发,全部代码只有502⾏(包括注释),附带⼀个简单的Client,可以通过阅读这段代码理解⼀个 Http Server 的本质。下载链接:
3. cJSON
cJSON是C语⾔中的⼀个JSON编解码器,⾮常轻量级,C⽂件只有500多⾏,速度也⾮常理想。
cJSON也存在⼏个弱点,虽然功能不是⾮常强⼤,但cJSON的⼩⾝板和速度是最值得赞赏的。其代码被⾮常好地维护着,结构也简单易懂,可以作为⼀个⾮常好的C语⾔项⽬进⾏学习。项⽬主页:
4. CMockery
cmockery是google发布的⽤于C单元测试的⼀个轻量级的框架。它很⼩巧,对其他开源包没有依赖,对被测试代码侵⼊性⼩。cmockery的源代码⾏数不到3K,你阅读⼀下will_return和mock的源代码就⼀⽬了然了。
主要特点:
1. 免费且开源,google提供技术⽀持;
2. 轻量级的框架,使测试更加快速简单;
3. 避免使⽤复杂的编译器特性,对⽼版本的编译器来讲,兼容性好;
4. 并不强制要求待测代码必须依赖C99标准,这⼀特性对许多嵌⼊式系统的开发很有⽤
下载链接:
5. Libev
libev是⼀个开源的事件驱动库,基于epoll,kqueue等OS提供的基础设施。其以⾼效出名,它可以将I
O事件,定时器,和信号统⼀起来,统⼀放在事件处理这⼀套框架下处理。基于Reactor模式,效率较⾼,并且代码精简(4.15版本8000多⾏),是学习事件驱动编程的很好的资源。
6. Memcached
Memcached 是⼀个⾼性能的分布式内存对象缓存系统,⽤于动态Web应⽤以减轻数据库负载。它通过在内存中缓存数据和对象来减少读取数据库的次数,从⽽提供动态数据库驱动⽹站的速度。Memcached 基于⼀个存储键/值对的 hashmap。Memcached-1.4.7的代码量还是可以接受的,只有10K⾏左右。下载地址:
7. Lua
Lua很棒,Lua是巴西⼈发明的,这些都令我不爽,但是还不⾄于脸红,最多眼红。
让我脸红的是Lua的源代码,百分之⼀百的ANSI C,⼀点都不掺杂。在任何⽀持ANSI C编译器的平台上都可以轻松编译通过。我试过,真是⼀点废话都没有。Lua的代码数量⾜够⼩,5.1.4仅仅1.5W⾏,去掉空⽩⾏和注释估计能到1W⾏。下载地址:
8. SQLite源代码下载开源社区
SQLite是⼀个开源的嵌⼊式关系数据库,实现⾃包容、零配置、⽀持事务的SQL数据库引擎。其特点是⾼度便携、使⽤⽅便、结构紧凑、⾼效、可靠。⾜够⼩,⼤致3万⾏C代码,250K。下载地址:。
9. UNIX v6
UNIX V6 的内核源代码包括设备驱动程序在内约有1 万⾏,这个数量的源代码,初学者是能够充分理解的。有⼀种说法是⼀个⼈所能理解的代码量上限为1 万⾏,UNIX V6的内核源代码从数量上看正好在这个范围之内。看到这⾥,⼤家是不是也有“如果只有1万⾏的话没准⼉我也能学会”的想法呢?
另⼀⽅⾯,最近的操作系统,例如Linux 最新版的内核源代码据说超过了1000 万⾏。就算不是初学者,想完全理解全部代码基本上也是不可能的。下载地址:
10. NETBSD
NetBSD是⼀个免费的,具有⾼度移植性的 UNIX-like 操作系统,是现⾏可移植平台最多的操作系统,可以在许多平台上执⾏,从 64bit alpha 服务器到⼿持设备和嵌⼊式设备。NetBSD计划的⼝号是:"Of course it runs NetBSD"。它设计简洁,代码规范,拥有众多先进特性,使得它在业界和学术界⼴受好评。由于简洁的设计和先进的特征,使得它在⽣产和研究⽅⾯,都有卓越的表现,⽽且它也有受使⽤者⽀持的完整的源代码。许多程序都可以很容易地通过NetBSD Packages Collection获得。下载地址:

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。