10个超赞的c语言开源项目,值得学习(代码片段)

小麦大叔 小麦大叔     2023-01-19     622

关键词:

大家好,我是小麦。

今天和大家分享一下10个超赞的C语言开源项目。

  1. Webbench

  2. Tinyhttpd

  3. cJSON

  4. CMockery

  5. Libev

  6. Memcached

  7. Lua

  8. SQLite

  9. UNIX v6

  10. NETBSD

1. Webbench

Webbench 是一个在 linux 下使用的非常简单的网站压测工具。

它使用 fork()模拟多个客户端同时访问我们设定的 URL,测试网站在压力下工作的性能。

最多可以模拟 3 万个并发连接去测试网站的负载能力。

Webbench 使用C语言编写, 代码实在太简洁,源码加起来不到 600 行。

项目地址

http://home.tiscali.cz/~cz210552/webbench.html

2. Tinyhttpd

tinyhttpd 是一个超轻量型 Http Server,使用C语言开发,全部代码只有 502 行(包括注释),附带一个简单的 Client

可以通过阅读这段代码理解一个 Http Server 的本质

项目地址

http://sourceforge.net/projects/tinyhttpd/

3. cJSON

cJSON 是C语言中的一个 JSON 编解码器,非常轻量级,C文件只有 500 多行,速度也非常理想。

cJSON 也存在几个弱点,虽然功能不是非常强大,但 cJSON 的小身板和速度是最值得赞赏的。

其代码被非常好地维护着,结构也简单易懂,可以作为一个非常好的C语言项目进行学习。

项目主页:

http://sourceforge.net/projects/cjson/

4. CMockery

cmockerygoogle 发布的用于C单元测试的一个轻量级的框架。

它很小巧,对其他开源包没有依赖,对被测试代码侵入性小。

cmockery 的源代码行数不到 3K,你阅读一下 will_returnmock 的源代码就一目了然了。

主要特点:

  • 免费且开源,google 提供技术支持;

  • 轻量级的框架,使测试更加快速简单;

  • 避免使用复杂的编译器特性,对老版本的编译器来讲,兼容性好;

  • 并不强制要求待测代码必须依赖 C99 标准,这一特性对许多嵌入式系统的开发很有用

项目地址

http://code.google.com/p/cmockery/downloads/list

5. Libev

libev 是一个开源的事件驱动库,基于 epoll,kqueue 等 OS 提供的基础设施。

其以高效出名,它可以将 IO 事件,定时器,和信号统一起来,统一放在事件处理这一套框架下处理。

基于 Reactor 模式,效率较高,并且代码精简(4.15 版本 8000 多行),是学习事件驱动编程的很好的资源

项目地址

http://software.schmorp.de/pkg/libev.html

6. Memcached

Memcached 是一个高性能的分布式内存对象缓存系统,用于动态 Web 应用以减轻数据库负载。

它通过在内存中缓存数据和对象来减少读取数据库的次数,从而提供动态数据库驱动网站的速度。

Memcached 基于一个存储键/值对的 hashmap。

Memcached-1.4.7 的代码量还是可以接受的,只有 10K 行左右

项目地址

http://memcached.org/

7. Lua

Lua 很棒,Lua 是巴西人发明的,这些都令我不爽,但是还不至于脸红,最多眼红。

让我脸红的是 Lua 的源代码,百分之一百的 ANSI C,一点都不掺杂。

在任何支持 ANSI C 编译器的平台上都可以轻松编译通过。

我试过,真是一点废话都没有。

Lua 的代码数量足够小,5.1.4 仅仅 1.5W 行,去掉空白行和注释估计能到 1W 行。

项目地址

http://www.lua.org/

8. SQLite

SQLite 是一个开源的嵌入式关系数据库,实现自包容、零配置、支持事务的 SQL 数据库引擎。其特点是高度便携、使用方便、结构紧凑、高效、可靠。

足够小,大致 3 万行C代码,250K。

项目地址

http://www.sqlite.org/

9. UNIX v6

UNIX V6 的内核源代码包括设备驱动程序在内约有 1 万行,这个数量的源代码,初学者是能够充分理解的。有一种说法是一个人所能理解的代码量上限为 1 万行,UNIX V6 的内核源代码从数量上看正好在这个范围之内。

看到这里,大家是不是也有“如果只有 1 万行的话没准儿我也能学会”的想法呢?

另一方面,最近的操作系统,例如 Linux 最新版的内核源代码据说超过了 1000 万行。

就算不是初学者,想完全理解全部代码基本上也是不可能的。

项目地址

http://minnie.tuhs.org/cgi-bin/utree.pl?file=V6

10. NETBSD

NetBSD 是一个免费的,具有高度移植性的 UNIX-like 操作系统。

NetBSD 计划的口号是:”Of course it runs NetBSD”。

它设计简洁,代码规范,拥有众多先进特性,使得它在业界和学术界广受好评。

由于简洁的设计和先进的特征,使得它在生产和研究方面,都有卓越的表现,而且它也有受使用者支持的完整的源代码。

许多程序都可以很容易地通过 NetBSD Packages Collection 获得。

版权声明:本文来源网络,版权归原作者所有。版权问题,请联系删除。

往期推荐

学了很久STM32,却还是不会做项目

简单实用!STM32硬件错误的调试技巧

嵌入式 C 语言的核心是什么?

陀螺仪工作原理,你懂了吗?

C语言进阶小技巧,弱符号和弱引用

10个超赞的c语言开源项目,值得学习(代码片段)

大家好,我是小麦。今天和大家分享一下10个超赞的C语言开源项目。WebbenchTinyhttpdcJSONCMockeryLibevMemcachedLuaSQLiteUNIXv6NETBSD1.WebbenchWebbench是一个在linux下使用的非常简单的网站压测工具。它使用fork()模拟多个客户端同时访问我们设... 查看详情

我又发现了超赞的软硬件项目,全部开源(代码片段)

点击上方“小麦大叔”,选择“置顶/星标公众号”福利干货,第一时间送达大家好,我是小麦。今天给大家推荐一个开源的无刷电机驱动项目。项目地址:https://github.com/vedderb项目主页ESC是ElectricSpeedController的缩... 查看详情

linux-六个超赞的字符画生成器

...的人会懂得ASCII是多么的独特。我们在这里为你准备了五个超赞的ASCII字符艺术生成器。1GlassGiantASCIIArtGlassGiantASCIIArt  可以把图片转换成ASCII字符艺术-一堆胡乱堆在一起的文字,数 查看详情

最值得阅读学习的10个c语言开源项目代码

...模拟3万个并发连接去测试网站的负载能力。Webbench使用C语言编写, 代码实在太简洁,源码加起来不到600行。下载链接:http://home.tiscali.cz/~cz210552/webbench.h 查看详情

一个超赞的开源的图片去水印解决方案

【公众号回复“1024”,免费领取程序员赚钱实操经验】大家好,我是章鱼猫。今天给大家推荐一个开源项目,这个开源项目的图片去水印效果非常好。这个开源项目就是:Watermark-Removal,是可基于机器学习的... 查看详情

知识分享:值得学习的c语言经典开源项目

盘点一些值得学习的C语言开源项目,大多是曾经比较经典的案例,感兴趣的朋友可以了解一下!Libeventlibev是一个开源的事件驱动库,基于epoll,kqueue等OS提供的基础设施。其以高效出名,它可以将IO事件... 查看详情

go语言值得学习的开源项目推荐

谷歌官方维护了一个基于go语言的开源项目列表:https://github.com/golang/go/wiki/Projects 其中有非常多的优秀项目值得学习,有几百行代码适合新手阅读的项目,也有大型如nsq、docker等的项目。 下面推荐几款适合学习的项目:1... 查看详情

github掘金:一个超赞的java文件在线预览项目

点击上方关注“终端研发部”设为“星标”,和你一起掌握更多数据库知识简介基于OpenOffice服务将文件(.doc、.docx、.xls、.ppt)转化为pdf、html格式,然后直接在浏览器渲染输出。内置功能文件上传功能文件转换功能文件预... 查看详情

分享10个适合初学者学习的c开源项目代码

来源|嵌入式arm十个最值得阅读学习的C开源项目代码1.Webbench2.Tinyhttpd3.cJSON4.CMockery5. Libev6.Memcached7.Lua8.SQLite9.UNIXv610.NETBSD1.WebbenchWebbench是一个在linux下使用的非常简单的网站压测工具。它使用fork()模拟多个客户端同时访问我们设定... 查看详情

十个最值得阅读学习的c/c++开源项目

...xff0c;硬核文章第一时间送达!十个最值得阅读学习的C开源项目代码1.Webbench2.Tinyhttpd3.cJSON4.CMockery5. Libev6.Memcached7.Lua8.SQLite9.UNIXv610.NETBSD1.WebbenchWebbench是一个在linux下使用的非常简单的网站压测工具。它使用fork()模拟多个客 查看详情

又一开源神器,值得收藏学习!(代码片段)

大家好,我是小麦。今天给大家推荐一个不错的Qt开源项目项目主页支持功能支持传统的串口调试助手的基本收发功能,同时可以刷新大量的数据而不卡顿支持保存接收的数据支持最大200条可编辑指令的设置,并用于... 查看详情

超赞的linux软件分享(持续更新)

开发 Androidstudio-Android 的官方 IDE:AndroidStudio 提供在各种类型的安卓设备上构建应用最快的工具。Aptana-AptanaStudio 利用了 Eclipse 的灵活性并且专注于让它成为强大的web 开发引擎。ArduinoIDE- 开源的&... 查看详情

c语言开源项目

值得学习的C语言开源项目-1.WebbenchWebbench是一个在linux下使用的非常简单的网站压测工具。它使用fork()模拟多个客户端同时访问我们设定的URL,测试网站在压力下工作的性能,最多可以模拟3万个并发连接去测试网站的负载能力。W... 查看详情

高仿「开眼」,这个开源项目值得学习

...户端。这个开源项目基于Google热推Android框架Jetpack和流行语言Kotlin开发的,对于新手入门学习而言更具前沿性的 查看详情

c开源代码学习1tinyhttpd(代码片段)

...源代码学习1Tinyhttpd一、简介二、环境搭建1.新建一个ClionC语言项目2.把tinyhttpd的源代码拖进项目3.这里不需要simpleclient.c,把它删除4.编译5.把htdocs拷进cmake-build-debug6.设置一下权限7.运行程序8.观察控制台输出的端口号,在... 查看详情

20个新的且值得关注的vue开源项目(代码片段)

译者:前端小智作者:NastassiaOvchinnikova来源:flatlogic.com个人专栏ES6深入浅出已上线,深入ES6,通过案例学习掌握ES6中新特性一些使用技巧及原理,持续更新中,←点击可订阅。点赞再看,养成习惯本文GitHubhttps://github.com/qq44924588... 查看详情

这10个超实用的python函数,你不妨试试!(代码片段)

...、数据挖掘、好玩工具!大家好,今天我要推荐10个超实用的Python内置函数,而且简单实用,收藏学习或者复习,简直舒服。喜欢技术交流的朋友,文末加入我们的学习群。废话不多说,我们开始学习... 查看详情

newtonsoft六个超简单又实用的特性,值得一试上篇(代码片段)

...阅读了一些Newtonsoft源码,对它有了新的认识,先总结六个超经典又实用的特性,同大家一起分享,废话不多说,快来一起看看吧~~~二:特性分析1.代码格式化如果你直接使用JsonConvert.SerializeObject的话,默认情况下所有的json是挤... 查看详情