商汇粹外网资源平台

搜索
查看: 2096|回复: 5

有哪些好的github上c/c++学习项目?

[复制链接]

该用户从未签到

5

主题

28

帖子

118

积分

注册会员

Rank: 2

积分
118
发表于 2022-10-22 09:46:41 | 显示全部楼层 |阅读模式
大一新生打算学习c/c++想找好的方向来学习
回复

使用道具 举报

该用户从未签到

0

主题

6

帖子

46

积分

新手上路

Rank: 1

积分
46
发表于 2022-10-22 10:05:01 | 显示全部楼层
那你真是问对人了!
7 个 C 语言开源项目,7 个 C ++ 开源项目!
废话不多说,我就直接开始了!
一、C 项目

1.acwj(5.7k+ star)

教你写 C 语言编译器的实战教程。
教程注重实战循序渐进,一步步教你如何用 C 语言写一个可以自己编译自己(自举)、能够在真正的硬件上运行的 C 语言编译器。

传送门:https://github.com/DoctorWkt/acwj
2.Tinyhttpd(7.3k+ star)

一个不到 500 行的超轻量型 HTTP Server,可以用来理解服务器程序的原理和本质。
C语言的入门级项目!
传送门:https://github.com/EZLippi/Tiny
3.db_tutorial(5.9k+ star)

用 C 从零创建一个简单的数据库。
传送门:https://github.com/cstack/db_tu
4. project-based-tutorials-in-c (7.6k+ star)

用 C 语言写玩具或项目的教程集合。
教程分为游戏开发、操作系统、计算机网络等分类,其中包含图文、视频、代码等资料。
传送门:https://github.com/rby90/project-based-tutorials-in-c
5.SimpleKernel(1.8k+ star)

一个用来练手的简单内核项目。
提供了各个阶段完成度不同的内核,可以选择从自己喜欢的地方开始。
传送门:https://github.com/Simple-XX/SimpleKernel
6.myscan(0.1k+ star)

开源的多线程 socket 扫描 IP 端口的程序。
目前仅支持 Windows 系统,代码简单可作为初学者学习项目。
传送门:https://github.com/nobackdoor/myscan
7.smartdns(4.1k+ star)

一个运行在本地的 DNS 服务器。能够提高网络访问速度等诸多妙用。
架构图如下:

传送门:https://github.com/pymumu/smartdns
二、C++ 项目

C++ 开源项目的推荐,我之前回答过类似的问题:

为了方便大家阅读,我把重要的内容再摘出来供大家看。
1.TinyWebServer(3.6k+ star)

Linux下C++轻量级Web服务器,助力初学者快速实践网络编程,搭建属于自己的服务器.

  • 使用 线程池 + 非阻塞socket + epoll(ET和LT均实现) + 事件处理(Reactor和模拟Proactor均实现) 的并发模型
  • 使用状态机解析HTTP请求报文,支持解析GET和POST请求
  • 访问服务器数据库实现web端用户注册、登录功能,可以请求服务器图片和视频文件
  • 实现同步/异步日志系统,记录服务器运行状态
  • 经Webbench压力测试可以实现上万的并发连接数据交换
传送门:GitHub - qinguoyi/TinyWebServer: Linux下C++轻量级Web服务器
2.libqalculate(545 star)

使用 C++ 编写的多功能计算器桌面应用、库和 CLI 程序。
它易于使用功能强大,支持大型可定制函数库、单位计算和转换、符号计算(包括积分和方程)。
作为用户你可以直接在命令行中使用,作为开发者你也可以在自己的项目中使用这个库。官方还制作了Qt和GTK两个版本的 GUI 计算器应用。

3.spdlog(12.7k+)

快速、上手简单的 C++ 日志库。示例代码:
#include "spdlog/spdlog.h"int main() {    spdlog::info("Welcome to spdlog!");    spdlog::error("Some error message with arg: {}", 1);    spdlog::warn("Easy padding in numbers like {:08d}", 12);    spdlog::critical("Support for int: {0:d};  hex: {0:x};  oct: {0:o}; bin: {0:b}", 42);    spdlog::info("Support for floats {:03.2f}", 1.23456);    spdlog::info("Positional args are {1} {0}..", "too", "supported");    spdlog::info("{:<30}", "left aligned");    spdlog::set_level(spdlog::level::debug); // Set global log level to debug    spdlog::debug("This message should be displayed..");        // change log pattern    spdlog::set_pattern("[%H:%M:%S %z] [%n] [%^---%L---%$] [thread %t] %v");    // Compile time log levels    // define SPDLOG_ACTIVE_LEVEL to desired level    SPDLOG_TRACE("Some trace message with param {}", 42);    SPDLOG_DEBUG("Some debug message");}
4.CPlusPlusThings(15.4k+star)

这是一个适合 C++ 初学者从入门到进阶的教程。
解决了面试者想要深入 C++ 及如何入坑 C++ 的问题。
除此之外,该仓库拓展了更加深入的语法分析、多线程并发等的知识,是一个比较全面的 C++ 从入门学习到进阶提升的项目。
5.indicators(1.7k+star)

一个使用 C++ 编写的进度条库,你可以用它在命令行中实现美观的进度条。它使用方便、线程安全、支持多种进度条样式。
6.sudoku(299 star)

C++ 实现的命令行数独游戏。600 余行代码,初学者也可以轻松学习。

7.dbg-macro(1.7k+)

打日志是 C++ 开发中必不可少的一种 debug 方式,dbg-macro 受 rust-lang 中 的 dbg 启发,提供比 printf 和 std::cout 更好的宏函数。主要有如下特点:

  • 美观的彩色输出(当输出不是交互式终端时,颜色将自动禁用)
  • 兼容 C++11,并且是 header-only
  • 支持基础类型和 STL 容器类型的输出
  • 除了基本信息外,还输出变量名和类型
  • 启用 DBGMACRODISABLE 生成 release 版
#include <vector>#include <dbg.h>// You can use "dbg(..)" in expressions:int factorial(int n) {  if (dbg(n <= 1)) {    return dbg(1);  } else {    return dbg(n * factorial(n - 1));  }}int main() {  std::string message = "hello";  dbg(message);  // [example.cpp:15 (main)] message = "hello" (std::string)  const int a = 2;  const int b = dbg(3 * a) + 1;  // [example.cpp:18 (main)] 3 * a = 6 (int)  std::vector<int> numbers{b, 13, 42};  dbg(numbers);  // [example.cpp:21 (main)] numbers = {7, 13, 42} (size: 3) (std::vector<int>)  dbg("this line is executed");  // [example.cpp:23 (main)] this line is executed  factorial(4);  return 0;}

希望对你有所帮助

内容已经在这了,万事俱备,差的就是你学习的驱动力和对作者 Star 的支持了。
让走在开源路上的开发者不再孤单,让想进入开源世界的人不再畏惧。
看完有所收获?
记得帮我 @Rocky0429
点个赞,让更多人可以看到,谢谢啦!
回复

使用道具 举报

该用户从未签到

4

主题

31

帖子

93

积分

注册会员

Rank: 2

积分
93
发表于 2022-10-22 10:23:21 | 显示全部楼层
看了一下其它推荐的,node.js, leveldb, os, 我只想说:
你们牛逼!!!

哎,我推荐几个我看过的吧,见识不广不好意思:

  • miloyip/json-tutorial  不解释了,看过的都说好用
  • isocpp/CppCoreGuidelines 英文的,英文好的可以看看
  • zh-google-styleguide/zh-google-styleguide 这个也有英文的
  • julycoding/The-Art-Of-Programming-By-July 有多种语言的
还有一些看过但是忘了吧,但是新生看我觉得差不多了。
顺便推荐一些可以拿来的:

  • fmtlib/fmt 很叼的方便格式化的库
  • catchorg/Catch2 测试框架
  • ryanhaining/cppitertools 像PY一样写CPP
差不多得了。
回复

使用道具 举报

该用户从未签到

1

主题

11

帖子

45

积分

新手上路

Rank: 1

积分
45
发表于 2022-10-22 10:41:41 | 显示全部楼层
让我再自卖自夸一次哈
一个跨平台,无标准库三方库依赖C语言的项目,PainterEngine----目标是用C语言一次开发即可编写任意平台的应用,实现无代码修改的任意平台移植
PainterEngine包含了一系列底层数据结构、数学库、内存管理算法,然后以此为基础,实现了多种图像及音频信号处理、反走样几何绘制算法,2D、3D软渲染器、多种图形、音乐文件格式解析,MODBUS,MQTT,网络同步协议、基础神经网络框架,并再在此基础上,实现了声学,图形学和多种功能性库,其中包括了包含live2D动画系统。实现了钢琴、吉他的物理建模实现(支持midi解析播放),还集成一个完整的编译型脚本引擎(包含脚本的编译器,调试器,虚拟机)
PainterEngine包含了一个面向对象的框架管理机制,集成了一个UI设计库,这意味着业务逻辑代码、实际功能应用可以以一个插件对象的形式部署到项目中来,目前PainterEngine的star数量在去年四月份正式发布推广后匀速稳定增长,目前star数为1.4k
总的来说,PainterEngine涵盖了:图形学、声学、编译原理、操作系统、机器学习、通信及加密安全、程序设计架构等众多领域。
其架构图如下所示:

可以说,只要有足够的运行资源,能够提供C语言编译环境,能提供对于的平台接口,PainterEngine就能够在这个平台上运行,正如你在实例中看到的那样,PainterEngine可以在
windows,linux,iOS,web、android、甚至是裸环境的嵌入式MCU上运行,通用型项目,是一个字母都不用修改就能够完成全平台移植的。




而附带的编译型脚本引擎,更提供了平台及编译器无关的多线程、协程、跨平台调试器实现(就像java)

PainterEngine插件化的架构模式,意味着你想要哪些功能,都可以像“拖控件”一样把这个功能拖进来使用

进一步,你可以用C语言的平台实现更底层更具性能的控制,退一步,你可以使用搭积木的开发模式,快速搭建出一个全方位跨平台的App

以上PPT非画大饼,我近几年制作的程序全是基于PainterEngine,每一个功能,都被应用在工程实践中打磨完善,实践是检验真理的唯一标准,毕竟东西只有自己用的爽了,才能说推给别人用。
今年PainterEngine刚刚开设官网,搜一下就有,欢迎github点star
回复

使用道具 举报

该用户从未签到

4

主题

13

帖子

49

积分

新手上路

Rank: 1

积分
49
发表于 2022-10-22 11:00:01 | 显示全部楼层
首先给大家推荐一个C语言/C++学习平台地址,需要的资料文章都有,访问点击下面链接:

1   The Algorithms - C

C语言实现各种算法,同时也可以学习下算法!
项目地址:https://github.com/TheAlgorithms/C#the-algorithms---c--mainpage
2 libhv

libhv是一个类似于libevent、libev、libuv的跨平台网络库,提供了更简单的接口和更丰富的协议。详细介绍见项目README
精妙小巧跨平台,简单实用易上手

  • base封装了很多跨平台的代码,如hatomic原子操作、hthread线程、hmutex线程同步,当然这都是基于configure/cmake自动生成的hconfig.h和hplatform.h两个头文件中提供的平台宏、编译器宏等实现的;
  • event模块则实现了事件循环(包括IO、timer、idle),不同的平台有不同的实现,如Linux使用epoll,Windows使用IOCP、Mac使用kqueue、Solaris使用evport,感兴趣的可以读一读event下的源码;
  • http模块则基于event模块实现了本世纪最为通用的应用层协议http协议,包括http服务端和客户端,libhv中examples下提供的httpd,性能可媲美nginx服务;
  • libhv是c++编写HTTP API服务端/客户端最简单的库,没有之一
项目地址:https://github.com/ithewei/libhv.git
3 C语言入门项目

包括C语言迷宫、24点游戏、奔跑的火柴人、超市管理系统、打字母、电子时钟、对对碰、俄罗斯方块、黑白棋、华容道、火车票订票管理源码、连连看、商品销售系统、象棋、超级玛丽、图书管理系统、学生成绩管理系统.......


4 tmux

tmux是一个终端多路复用器:它允许从单个屏幕创建、访问和控制多个终端。tmux可以从屏幕上分离并在后台继续运行,然后重新连接。
项目地址:https://github.com/tmux/tmux
5  C语言PAT练习

PAT习题C语言题解。全部用C语言写,追求代码高效简洁。
项目地址:GitHub - OliverLew/PAT
6 Learn-Algorithms

项目主要是 C语言实现算法相关的学习笔记,包括各类知识点,链表、队列、哈希表等等
项目地址:https://github.com/nonstriater/Learn-Algorithms
7 Sqlite

SQLite是一个开源的嵌入式关系数据库,实现自包容、零配置、支持事务的SQL数据库引擎。

  • 不需要一个单独的服务器进程或操作的系统(无服务器的)。
  • SQLite 不需要配置,这意味着不需要安装或管理。
  • 一个完整的 SQLite 数据库是存储在一个单一的跨平台的磁盘文件。
  • SQLite 是非常小的,是轻量级的,完全配置时小于 400KiB,省略可选功能配置时小于250KiB。
  • SQLite 是自给自足的,这意味着不需要任何外部的依赖。
  • SQLite 事务是完全兼容 ACID 的,允许从多个进程或线程安全访问。
  • SQLite 支持 SQL92(SQL2)标准的大多数查询语言的功能。
  • SQLite 使用 ANSI-C 编写的,并提供了简单和易于使用的 API。
  • SQLite 可在 UNIX(Linux, Mac OS-X, Android, iOS)和 Windows(Win32, WinCE, WinRT)中运行。
项目地址:SQLite Home Page
8 EasyLogger

一款轻量级且高性能的日志库,作者armink,EasyLogger 是一款超轻量级、高性能的 C/C++ 日志库,非常适合对资源敏感的软件项目,相比之下, EasyLogger 的功能更加简单,提供给用户的接口更少,上手会更快,更多实用功能支持以插件形式进行动态扩展。
目前EasyLogger支持以下功能:

  • 日志输出方式支持串口、Flash、文件等;
  • 日志内容可包含级别、时间戳、线程信息、进程信息等;
  • 支持多种操作系统,支持裸机;
  • 各级别日志支持不同颜色显示;
项目地址:https://gitee.com/Armink/EasyLogger
9 struct2json

struct2json 是一个开源的C结构体与 JSON 快速互转库,它可以快速实现 结构体对象 与 JSON 对象 之间序列化及反序列化要求。快速、简洁的 API 设计,大大降低直接使用 JSON 解析库来实现此类功能的代码复杂度。
起源

把面向对象设计应用到C语言中,是当下很流行的设计思想。由于C语言中没有类,所以一般使用结构体struct充当类,那么结构体变量就是对象。有了对象之后,很多时候需要考虑对象的序列化及反序列化问题。C语言不像很多高级语言拥有反射等机制,使得对象序列化及反序列化被原生的支持。
对于C语言来说,序列化为 JSON 字符串是个不错的选择,所以就得使用 cJSON 这类 JSON 解析库,但是使用后的代码冗余且逻辑性差,所以萌生对cJSON库进行二次封装,实现一个 struct 与 JSON 之间快速互转的库。 struct2json就诞生于此。下面是 struct2json 主要使用场景:

  • 持久化 :结构体对象序列化为 JSON 对象后,可直接保存至文件、Flash,实现对结构体对象的掉电存储;
  • 通信 :高级语言对JSON支持的很友好,例如: Javascript、Groovy 就对 JSON 具有原生的支持,所以 JSON 也可作为C语言与其他语言软件之间的通信协议格式及对象传递格式;
  • 可视化 :序列化为 JSON 后的对象,可以更加直观的展示到控制台或者 UI 上,可用于产品调试、产品二次开发等场景;
项目地址:https://gitee.com/Armink/struct2json
10 TencentOS-tiny

encentOS tiny的内核确实是非常非常小巧,最少资源占用为RAM 0.6KB,ROM 1.8 KB。这是他们团队自主研发的RTOS,源码非常简单易懂,源码作者以非常清晰的逻辑实现了整个内核。

TencentOS tiny主要由一个轻量级RTOS内核+多个物联网组件构成,,从下到上主要包括:
CPU库 :TencentOS tiny支持的CPU IP核架构,当前主要支持ARM Cortex M0/3/4/7,还有现在很火的RISC-V,当然,腾讯物联网团队肯定也会支持更多种类更多IP核与开发板。
驱动管理层 :包括BSP板级支持包,这些东西主要由MCU芯片厂家开发与维护,、HAL硬件抽象、Drivers设备驱动,这部分对于纯粹嵌入式开发者来说还是很重要的,肯定会越来越完善的!
内核 :TencentOS tiny实时内核包括任务管理、实时调度、时间管理、中断管理、内存管理、异常处理、软件定时器、链表、消息队列、信号量、互斥锁、事件标志等模块,接下来我也将写一系列TencentOS tiny内核源码分析的文章,敬请期待吧!
IoT协议栈 :TencentOS tiny提供lwip、AT Adapter、SAL层,支持不同的网络硬件,如以太网、串口WIFI、GPRS、NB-IoT、4G等通信模块。在TCP/IP网络协议栈上提供常用的物联网协议栈应用层,如COAP、MQTT,支撑终端业务快速接入腾讯云;
安全框架 :TencentOS tiny为了确保物联网终端数据传输安全以及设备认证安全,提供了比较完整的安全解决方案。安全框架提供的DTLS和TLS安全协议加固了COAP及MQTT的传输层,可确保物联网终端在对接腾讯云时实现安全认证和数据加密;另外针对低资源的终端硬件,安全框架还提供与腾讯云IoTHub配套的密钥认证方案,确保资源受限设备也能在一定程度上实现设备安全认证;物联网安全是非常重要的,这些框架也是必须存在的。
组件框架 :TencentOS tiny提供文件系统、KV存储、自组网、JS引擎、低功耗框架、设备框架、OTA、调试工具链等一系列组件,这部分我觉得还是很不错的,期待ing;
开放API (规划开发中):TencentOS tiny将在协议中间件和框架层上提供开放API函数,这样子就能很方便使用中间组件的功能,我是最喜欢这种开发的,不造轮子,能直接使用。简单来说这个API能快速对接腾讯云,实现终端业务上云的需求,最大程度减少终端物联网产品开发周期,节省开发成本;
示例应用 :TencentOS tiny提供的示例代码,模块测试代码等,方便用户参考使用。
腾讯云物联网平台(图中最上层的部分):严格来说这部分不算TencentOS tiny的框架内容,这是接入平台层了,腾讯云的物联网平台都是提供多种语言的SDK包,当然在嵌入式设备上肯定使用C SDK的,不过总的来说都是很不错的。
总的来说TencentOS tiny还是非常不错的,该有的功能都有,可以考虑使用一下这个操作系统~
项目地址:https://github.com/Tencent/TencentOS-tiny
11 ffmpeg

FFmpeg是一套可以用来记录、转换数字音频、视频,并能将其转化为流的开源计算机程序。采用LGPL或GPL许可证。它提供了录制、转换以及流化音视频的完整解决方案。
项目地址:git.ffmpeg.org Git - ffmpeg.git/summary
12 Lua

Lua 很棒,Lua 是巴西人发明的,这些都令我不爽,但是还不至于脸红,最多眼红。
让我脸红的是 Lua 的源代码,百分之一百的 ANSI C,一点都不掺杂。在任何支持 ANSI C 编译器的平台上都可以轻松编译通过。我试过,真是一点废话都没有。Lua 的代码数量足够小,5.1.4 仅仅 1.5W 行,去掉空白行和注释估计能到 1W 行。
项目地址:http://www.lua.org/
13 cJSON

cJSON 是C语言中的一个 JSON 编解码器,非常轻量级,C文件只有 500 多行,速度也非常理想。
cJSON 也存在几个弱点,虽然功能不是非常强大,但 cJSON 的小身板和速度是最值得赞赏的。其代码被非常好地维护着,结构也简单易懂,可以作为一个非常好的C语言项目进行学习。
项目地址: http://sourceforge.net/projects/cjson/
14.CMockery

cmockery 是 google 发布的用于C单元测试的一个轻量级的框架。它很小巧,对其他开源包没有依赖,对被测试代码侵入性小。cmockery 的源代码行数不到 3K,你阅读一下 will_return 和 mock 的源代码就一目了然了。
主要特点:

  • 免费且开源,google 提供技术支持;
  • 轻量级的框架,使测试更加快速简单;
  • 避免使用复杂的编译器特性,对老版本的编译器来讲,兼容性好;
  • 并不强制要求待测代码必须依赖 C99 标准,这一特性对许多嵌入式系统的开发很有用
项目地址:http://code.google.com/p/cmockery/downloads/list
15. FreeNOS
lordsergioinspa/FreeNOS · GitHub
深入理解C++,以及操作系统原理。FreeNOS(Free Niek的操作系统)是一个基于C++的基于微内核的学习操作系统。这是一个用C++实现的微内核的操作系统,各种宏内核中的服务作为一个独立的services在微内核中,基于消息的通信方式,这点其实跟mac内核中的mach那部分机制相似。
除了是一个操作系统的实现,另外从中也能很好的学习到OOP的设计方式,整个代码风格特别好,完全基于面相对象,还有一些常见的设计模式,在接触了这个开源项目之后,才了解,代码风格,注释,doxygen,scons,设计模式。

  • Intel x86(PC)和ARMv6/ARMv7体系结构(Raspberry Pi 1,2,3,Allwinner H2+/H3)
  • Virtual memory
  • 简单任务调度
  • 进程间通信(IPC)
  • 支持MPI的对称多处理
  • 设备:VGA/键盘控制台(也支持Ed的libtekenhttp://80386.nl/projects/libteken/)、i8250串行UART PCI主机控制器CMOS RTC时钟ATA主机控制器USB控制器和(根)集线器(仅限Raspberry Pi)环回网络和SMSC95xx以太网(仅限Raspberry Pi)
  • 文件系统:虚拟文件系统(VFS)临时文件系统(TmpFS)Linnenbank文件系统(LinnFS)
  • 网络(IP、UDP、ICMP,仅适用于Raspberry pi 1)
  • POSIX、ansic库
  • 动态共享内存
  • 全自动检测
  • 使用jenkins的自动化连续集成(http://www.jenkins.io)还有Vagrant(http://www.vagrantup.com)
  • 所有来源都记录在Doxygen中(http://www.doxygen.org/)
  • C++中从头开始编写的用户和内核代码
  • 非常小的微内核(~2k行的C++代码,包括汇编中的一小部分)
  • 使用最近的GCC生成(http://gcc.gnu.org/),LLVM(http://www.llvm.org/)还有烤饼(http://www.scons.org/)POSIX系统上的版本
16.Boost
Boost 库是一个经过千锤百炼、可移植、提供源代码的C++ 库,作为标准库的后备,是C++ 标准化进程的发动机之一。 Boost 库由C++标准委员会库工作组成员发起,在C++ 社区中影响甚大,其成员已近2000 人。 Boost 库为我们带来了最新、最酷、最实用的技术,是不折不扣的“ 准” 标准库。
网址:http://www.boost.org/
17. muduo
一个基于 Reactor 模式的现代 C++ 网络库,它采用非阻塞 IO 模型,基于事件驱动和回调,支持多核多线程,适合编写 Linux 服务端多线程网络应用程序。
地址:GitHub - AlexStocks/muduo: a muduo branch without boost and cmake, just using c++11 and makefile
18. ACE 和 libevent  一个是重量级的网络库, 一个是轻量级的网络库。仔细想想,现在那个程序不用网络啊。不懂网络, 你将寸步难行啊。 熟悉这两个开源库的前提是你必须懂socket的原理, 给大家推荐的好书就是 《UNIX网络编程》,看懂这本书就可以了, 其他的什么《windows网络编程》这些都不用看, 因为网络编程,你学会了伯克利的套接字, 你就可以在任何平台上进行网络编程了, 不需要学什么windows下的网络编程, 因为windows下的网络也是从伯克利套接字搞过来的, 如果你学习《windows网络编程》, 那么你那天在linux,unix下进行网络编程,你还得在学习一下。没有那个必要。
地址:libevent
19. log4cpp
这个日志库, 支持多线程, 日志重定向到网络等都有, 反正你能想到的日志的功能, 都有。
日志嘛,一个是方便查找问题, 方便记录程序运行的一些情况。这是必须的。
网址:http://log4cplus.sourceforge.net/
20.  OpenSSL
OpenSSL 包含一个命令行工具用来完成OpenSSL 库中的所有功能,更好的是,它可能已经安装到你的系统中了。
OpenSSL 是一个强大的安全套接字层密码库,Apache 使用它加密HTTPS ,OpenSSH 使用它加密SSH ,但是,你不应该只将其作为一个库来使用,它还是一个多用途的、跨平台的密码工具。
网址:http://www.openssl.org/source/


另外还有:
STLport-------SGI STL库的跨平台可移植版本,在以前有些编译器离符合 标准比较远的情况下 那时还是有用的,当然目前vc71已经比较接近标准了, 故目前不怎么用它了。
WxWindows-----功能强大的跨平台GUI库 ,它的功能和结构都类似 MFC,故原则上 可以通过WxWindows把现有MFC程序移植到非Win平台下
Blitz---------高效率的数值计算函数库 ,你可以订制补充你需要的算法
Crypto++ -----加/解密算法库, 非常专业的C++ 密码学函式库
CppUnit --- 一个c++的单元测试框架 类似 java 的JUnit
Loki ------- 一个实验性质的库,尝试把类似设计模式这样思想层面的东西通过 库来提供,他是C++的一个模板库,系C++"贵族", 它把C++模板的功能发挥到了极致
FC++ --------The Functional C++ Library ,用库来扩充语言的一个代表作 ,模板库
CGAL ------- Computational Geometry Algorithms Library计算几何方面的大部分重要的
最后

觉得有帮助的话,点个赞!!! github发现一宝藏仓库,里面有很多资源,分享给大家,地址:https://github.com/tangtangcoding/C-C-
欢迎关注 @程序员编程指南
回复

使用道具 举报

该用户从未签到

0

主题

7

帖子

53

积分

注册会员

Rank: 2

积分
53
发表于 2022-10-22 11:18:21 | 显示全部楼层
我以前在找工作的时候也曾经在知乎上找过类似的项目,但找到的源码要么没有注释,要么基本跑不通。。。
这就很尴尬了。
于是,既然找的跑不通,那我就自己写一个好了。
已经上传到github上了:https://github.com/forthespada/MyPoorWebServer
下面是我以前写在简历上的关于本项目的功能描述,已经写的挺清楚的了

下面就简单说说我自己做的这个Webserver吧,功能基本都满足,最重要的是能跑通。。。按照我写明的步骤跑就行,肯定能跑通。
一款可运行的基于C++11 实现的HTTP服务器

1、简介

1、由来
该项目是基于C++ 实现的HTTP服务器,也就是那种烂大街的WebServe服务器,不过由于是自己动手做的,所以还是很有意义的就上传上来了。
该项目也是我自己在2020年找工作时简历上的第二个项目。
关于项目的详细功能介绍请看该文章的项目描述处:

2、其余
最好在看过文末的两本书即《TCPIP网络编程》和《Linux高性能服务器编程》或者对于C++网络编程有一定了解后,再来进行实践本项目。
2、编译

请严格按照下面步骤进行编译
1、编译准备工作

文件夹中的 post.html 以及 post.cgi 文件需要一定的权限才可以执行。
所以需要先进行权限给予。
第一步、克隆项目并给予足够权限,打开命令行依次输入下述命令:
git clone  https://github.com/forthespada/MyPoorWebServercd  httpdocssudo chmod 600 test.htmlsudo chmod 600 post.htmlsudo chmod +X post.cgi
在进行sudo命令时,需要输入Linux下的sudo命令。
如下图所示:

如果忘记自己设置的sudo密码,可以按照如下教程进行密码重置:sudo密码重置
2、编译执行

依次输入下述命令即可。
cd  ../make./myhttp
3、整体过程图

1、项目默认端口号是6379,如像下图地址栏所示,默认显示的界面是是test.html界面。
2、运行成功后默认显示的为test.html界面,同时同一路径下还有 post.html界面,可以将地址栏的“test.html”改成“post.html”来进行查看。




4、整体框架图

5、参考资料
《TCPIP网络编程》-韩国-尹圣雨
《Linux高性能服务器编程》-中国-游双
https://www.cnblogs.com/qiyeboy/p/6296387.html
https://www.jianshu.com/p/18cfd6019296
<hr>下面这些回估计对你也有帮助~
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

快速回复 返回顶部 返回列表