说在前面:小伙伴们在学习的过程中难免会遇到很多的困难,有的是初学不知道如何入手,亦或是想要继续提升自己,小编为了帮助大家解决学习问题,大家可以点击上方我的头像私信我发送:“学 习”两个字,我将会针对性的帮助解答你学习上的问题和发送你学习资料哦,大家一起进步
![e0088047ef00927959b0ef39118d6c10.png](https://i-blog.csdnimg.cn/blog_migrate/a6be8f508d26b965aabd116e06f67d16.jpeg)
C语言
代码行数统计结果如下:
![b8c59613df5d8105ebde05ead9d9b804.png](https://i-blog.csdnimg.cn/blog_migrate/941152d30a99c9faed98dc222dddbead.jpeg)
C语言
不是一个理想的服务器压力测试工具,因为能达到的并发连接数远远不够,后面我们可以考虑对它进行优化改进。
2. Tinyhttpd
tinyhttpd是一个超轻量型Http Server,使用C语言开发,全部代码只有356行(不包括注释和空行),附带一个简单的Client,可以通过阅读这段代码理解一个 Http Server 的本质,也可以学习linux套接字编程的基本流程。
3. Boa
boa是一个非常小巧的Web服务器,其可执行代码60KB不到。作为一种单任务Web服务器,Boa只能依次完成用户的请求,而不会fork出新的进程来处理并发连接请求。但Boa支持CGI,能够为CGI程序fork出一个进程来执行。Boa最初的设计目标是速度和安全。小巧也就意味着它的功能很简单,但至今为止还是有人会选用它作为嵌入式web服务器,因为它能满足基本的网页服务功能。代码量7000行不到,统计结果如下:
![b94a66df8ccc7ac5f0de06ad2ed28c03.png](https://i-blog.csdnimg.cn/blog_migrate/f3d97d272673ec8e65ace1da06d0992d.jpeg)
C语言
Boa源码编译时有些错误,关于debug这些错误网上有许多指导教程。
4. libevent
Libevent 是一个用C语言编写的、轻量级的开源高性能事件通知库,主要有以下几个亮点:事件驱动(event-driven),高性能,轻量级;源代码相当精炼、易读;跨平台,支持 Linux,*BSD, Mac OS X, Solaris, Windows;支持多种 I/O 多路复用技术,/dev/poll, kqueue(2), event ports, POSIX select(2), Windows select(), poll(2),and epoll(4)。
著名分布式缓存软件memcached也是基于libevent,而且libevent在使用上可以做到跨平台,而且根据libevent官方网站上公布的数据统计,似乎也有着非凡的性能。
代码统计如下:
![b718df79650df6600f8910775a2a36dd.png](https://i-blog.csdnimg.cn/blog_migrate/8a15751c1c7dfaa9104e2fd1c55cbd01.jpeg)
C语言
代码量有点多,阅读起来会吃力一些。
5. Libev
libev是libevent之后的一个事件驱动的编程框架,其接口和libevent基本类似。据官方介绍,其性能比libevent还要高,bug比libevent还少,基于epoll,kqueue等OS提供的基础设施。其以高效出名,它可以将IO事件,定时器,和信号统一起来,统一放在事件处理这一套框架下处理。基于Reactor模式,效率较高,并且代码精简(4.22版本6000多行),是学习事件驱动编程的很好的资源。官网:http://software.schmorp.de/pkg/libev.html
代码统计如下:
![8b040653809b3da1a4f89337e1b47cff.png](https://i-blog.csdnimg.cn/blog_migrate/f10935bd98bcb6e8481605725ae3d1ce.jpeg)
C语言
6. Memcached
Memcached 是一个高性能的分布式内存对象缓存系统,用于动态Web应用以减轻数据库负载。它通过在内存中缓存数据和对象来减少读取数据库的次数,从而提供动态数据库驱动网站的速度。它是一个基于内存的“键值对”存储,用于存储数据库调用、API调用或页面引用结果的直接数据,如字符串、对象等。
代码统计:
![97b1a6aedc806aeb271ac7864ba639c6.png](https://i-blog.csdnimg.cn/blog_migrate/f3afa9cd4edf8ec575c6e12419fbad1c.jpeg)
C语言
不到2万行的代码,还是可以接受的。
7. CJSON
cJSON是C语言中的一个JSON编解码器,很是轻量级,C文件只有500多行,速度也很是理想。cJSON也存在几个弱点,虽然功能不是很是强大,但cJSON的小身板和速度是最值得赞赏的。其代码被很好地维护着,结构也简单易懂,可以作为一个很好的C语言项目进行学习。
8. SQLite
SQLite 是一个进程内库,实现了自给自足的、无服务器的、零配置的、事务性的 SQL 数据库引擎。SQLite 是在世界上最广泛部署的 SQL 数据库引擎。阅读其代码可以对关系型数据库的实现细节有深入的了解。特别是数据的组织、磁盘访问和数据一致性的保证等。
代码量统计:
![3a43c9781bab4e3124a2fe3ad6ed6061.png](https://i-blog.csdnimg.cn/blog_migrate/b839adce7a3e6295e84e80d4892128cd.jpeg)
C语言
13万行+的代码,有点可怕。
9. GoAhead
GoAhead是一个开源(商业许可)、简单、轻巧、功能强大、可以在多个平台运行的嵌入式Web Server。是目前为止最成熟、功能最全的嵌入式web服务器。它还有一个加强版叫appweb。
代码统计:
![97c89d10e2d3b3a465e3bf13102bd8f4.png](https://i-blog.csdnimg.cn/blog_migrate/e258855e73c0660b3a5da52eb1684917.jpeg)
C语言
12万行+,看起来挺可怕。
10. c-algorithms
一个常用算法和数据结构的集合。
代码统计:
![c91cc51e3175f3e7bcdc2b3f3a5c498e.png](https://i-blog.csdnimg.cn/blog_migrate/2e2eb902ad0e5d79adbda10667155d5a.jpeg)
C语言
7000多行,小意思。
![b5aa4a343b9b46a21e7e3c9eeccdf0de.png](https://i-blog.csdnimg.cn/blog_migrate/45a45ea507877369f0e56b6549b0e84c.jpeg)
C语言