10个超赞的C语言开源项目,强烈推荐!

点击蓝字

4cbbdad8810a0281520a871b4c9006e0.png

关注我们

来源于网络,侵删

今天分享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 获得。

7d63614ed87666eaeb82c552c19d5d3d.gif

如果你年满18周岁以上,又觉得学【C语言】太难?想尝试其他编程语言,那么我推荐你学Python,现有价值499元Python零基础课程限时免费领取,限10个名额!
▲扫描二维码-免费领取

117915c39b193e0bac26ad202fa517c9.gif

戳“阅读原文”我们一起进步

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/337256.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

jboss性能指标_JBoss BRMS复杂事件处理(CEP)性能基准

jboss性能指标技术来了又去,但是一件事保持不变。 在设计企业解决方案时,我们喜欢使我们的生活更轻松的复杂组件,作为建筑师和开发人员,我们一直在寻找使我们的生活更轻松的方法。 一种方法是跟上与感兴趣的技术有关的流行新站点…

C语言经验分享:二维指针与二维数组的两种错误用法

点击蓝字关注我们来源于网络,侵删引子首先看一段代码:void test(int *p) {}int main() {int arr[] {30, 450,14,5};test(arr);return 0; }毫无疑问,上面这段代码是运行OK的。因为C语言标准中有以下规则:在函数参数的声明中,数组名被编译器当作…

camel 使用_使用Camel从WildFly 8向WebLogic 12发送JMS消息

camel 使用系统集成是一个很好的挑战。 特别是当您在寻找通信标准和可靠的解决方案时。 在当今的微服务世界中,每个人都在谈论REST服务和基于http的协议。 实际上,对于大多数通常具有更复杂的需求集的大多数企业项目来说,这是远远不够的。 合…

C++异常处理控制流下的OLLVM混淆

点击蓝字关注我们来源于网络,侵删Inflated!!!C异常化处理OLLVM-控制流平坦化Two PuzzlesException一般碰到C异常逆向,确定了异常分发、处理部分,直接把call throw改为jmp catch块,再F5即可。PS: 多个catch块根据rdx来当为异常处理…

【微服务】springboot整合kafka-stream使用详解

目录 一、前言 二、kafka stream概述 2.1 什么是kafka stream 2.2 为什么需要kafka stream 2.2.1 对接成本低 2.2.2 节省资源 2.2.3 使用简单 2.3 kafka stream特点 2.4 kafka stream中的一些概念 2.5 Kafka Stream应用场景 三、环境准备 3.1 搭建zk 3.1.1 自定义d…

C语言知识总结一:C语言的基本知识汇总

点击蓝字关注我们来源于网络,侵删C语言是一种计算机程序设计语言。它既有高级语言的特点,又具有汇编语言的特点。它可以作 为系统设计语言,编写工作系统应用程序,也可以作为应用程序设计语言,编写不依赖计算机 硬件的应…

jboss8日志级别设置_罐中研讨会:设置JBoss BPM Suite全日研讨会

jboss8日志级别设置是否在寻找一种简单的方法来宣传,展示或演示JBoss业务流程管理套件(BPM Suite)产品的入门难度? 别无所求,因为我们已经召集了这个研讨会,因此您可以围绕JBoss BPM Suite构建一个晚上&a…

yapi 接口文档_1分钟docker部署顶尖 API 文档管理系统

YApi 是高效、易用、功能强大的 api 管理平台,旨在为开发、产品、测试人员提供更优雅的接口管理服务。可以帮助开发者轻松创建、发布、维护 API,YApi 还为用户提供了优秀的交互体验,开发人员只需利用平台提供的接口数据写入工具以及简单的点击…

微软CTO建议业界弃用C/C++采用Rust,遭C++之父回怼

点击蓝字关注我们来源于网络,侵删近日,Microsoft Azure CTO、Sysinternals 的主要开发者 Mark Russinovich 在其社交账号上发布动态称,开发人员是时候停止使用 C/C 来启动新项目,并建议可在需要使用 non-GC 语言的场景中使用 Rust…

红帽 jboss_红帽峰会2015所需的JBoss BPM内容指南

红帽 jboss明年再见? 今年在Red Hat Summit上,我们在JBoss BRMS和JBoss BPM Suite演讲中获得了很多乐趣。 在DevNation周围也有一些社区会议,重点介绍了使我们的产品成为可能的项目。 您可以在他们的博客上找到此演讲的概述,并…

Python、C、Java 和 C++ 四足鼎立,其他已无胜算? | TIOBE 10 月编程语言排行榜

点击蓝字关注我们来源于网络,侵删技术的千变万化,都是有迹可循的,最新的 TIOBE 十月编程语言榜单重磅发布,快来看看有哪些值得关注的变化吧!四大编程语言不断增强其主导地位曾几何时,编程语言界中 Java、C、…

C语言 #define 和 typedef 区别

点击蓝字关注我们来源于网络,侵删在C语言编程中,typedef 和 #define是最常用语句,可能很多工作过几年的工程师都没有去深究过它们的一些用法和区别。typedef的用法在C/C语言中,typedef常用来定义一个标识符及关键字的别名&#xf…

Spring Batch –用JavaConfig替换XML作业配置

最近,我协助一个客户启动并运行了Spring Batch实现。 该团队决定继续使用针对批处理作业的基于JavaConfig的配置,而不是传统的基于XML的配置。 随着这越来越成为配置Java应用程序的一种常用方法,我觉得是时候更新Keyhole的Spring Batch系列了…

sql limit 子句_Java 8流中的常见SQL子句及其等效项

sql limit 子句功能编程允许使用通用语言进行准声明性编程 。 通过使用功能强大的流畅API(例如Java 8的Stream API )或jOOλ的顺序Stream扩展Seq或更复杂的库(例如javaslang或functionaljava) ,我们可以以一种非常简洁…

C++编程中的核心知识点!

点击蓝字关注我们来源于网络,侵删尊重函数接口,尽量不作内部改动C代码语句分为:内置类型,名字,变量,操作符,标量,字符串,预处理指示(如#include)等…

C++ 语言的单元测试与代码覆盖率

点击蓝字关注我们来源于网络,侵删前言测试是软件开发过程中一个必须的环节,测试确保软件的质量符合预期。对于工程师自己来说,单元测试也是提升自信心的一种方式。直接交付没有经过测试的代码是不太好的,因为这很可能会浪费整个团…

C++ 模板(Template)总结,长点小知识

点击蓝字关注我们因公众号更改推送规则,请点“在看”并加“星标”第一时间获取精彩技术分享来源于网络,侵删前言:大家好,今天给大家分享一篇关于 C 模板总结概述.模板(Template)指 C 程序设计设计语言中采用…

归并排序 java_归并排序(Java实现)

package primary_01;/** 归并排序* 1.算法实现* 2.验证算法的正确性* 3.分析算法的复杂度*/public class Merge_sort {public static void main(String[] args) {int arr [] {2,1,6,5,9,8,2020,199};sort(arr, 0, arr.length-1);for (int i : arr) {System.out.print(i" &…

C++17 常用新特性:带初始化的 if 和 switch 语句

点击蓝字关注我们因公众号更改推送规则,请点“在看”并加“星标”第一时间获取精彩技术分享来源于网络,侵删早在2016-03-14,Thomas Kppe 在https://wg21.link/p0305r0中就提出了在if和switch使用初始化语句,使用时的代码示例如下&…

四大语言加强统治地位,Rust威胁C/C++

点击蓝字关注我们因公众号更改推送规则,请点“在看”并加“星标”第一时间获取精彩技术分享来源于网络,侵删TIOBE 公布了 2022 年 10 月的编程语言排行榜。截至今日,Python、Java、C 和 C 语言已经在 TIOBE 榜单的前 4 位盘踞了相当长的一段时…