C/C++常用开源库总结

文章目录

库名主要功能和组件语言
miniftpd研究简单的ftp服务器C
muduo的研究目录记录学习muduo库的一些笔记C++
yaziyazi封装的json解析库、ini解析库、xml解析库、简单的基于TCP的多线程服务器
ZeroMQ
Abseil字符串操作: Abseil 提供了一套强大而灵活的字符串处理工具,包括字符串拼接、分割、查找、替换等常用操作,以及基于模式匹配的功能。
并发库:Abseil 提供了各种并发编程的工具和原语,包括互斥锁、条件变量、原子操作等,帮助开发人员编写高效且线程安全的并发代码
容器和算法:Abseil 包含了一系列高性能的容器类型,如 flat_hash_map、flat_hash_set、InlinedVector 等,用于管理数据集合并提供高效的访问和操作,
日志库:Abseil 提供了灵活的日志记录功能,支持多级别的日志消息、消息格式化、日志过滤等,方便开发人员进行调试和错误追踪
时间和日期:Abseil 提供了可靠且易于使用的时间处理工具,包括时钟类型、时间间隔计算、日期时间格式化等,满足日常的时间操作需求,
效用库:Abseil 包含了许多实用的小工具和功能,如命令行解析器、随机数生成器、文件操作等,简化了常见任务的编码过程。
测试框架:Abseil 提供了全面而强大的测试框架,包括单元测试、性能测试和基准测试等,方便开发人员进行代码测试和性能优化。
C++
C++ – 常用的C++命令行参数解析第三方库
purecpp社区开源项目列表rest_rpc:header only的c++11 rpc库 ;
cinatra:cinatra是一个高性能易用的跨平台http(server和client)框架 ;
iguana:通用的跨平台的序列化引擎,支持c++对象到json、xml等格式的相互转换;
ormpp:为用户提供统一的接口,支持多种数据库,提高数据库开发效率;
feather:快速开发一个高性能的web网站;
asio_redis_client:The best c++ redis client!;
future:解决标准库的future无法实现链式调用问题,提供了多线程异步并行的方法;
NoahGameFrame:C++跨平台插件式,模块化的游戏服务器架构,面向接口编程;
ajson:a utility for serialize C++ and json.;
plugincpp:现代C++跨平台插件框架,零依赖 :现代C++跨平台插件框架;
raftcpp:An implementation of Raft consensus algorithm in modern C++.;
moon:C++编写的跨平台游戏服务器框架,采用(线程绑定)Actor模型,C/CPP编写核心库,Lua编写逻辑代码的开发方式。框架注重游戏服务器开发,仅提供核心功能,不带游戏逻辑代码。
drogon:Drogon是一个基于C++14/17的Http应用高性能跨平台异步框架,使用Drogon可以方便的使用C++构建各种类型的Web应用程序。
workflow: Workflow可以同时用于异步调度和并行计算,自带Http/Redis/MySQL/Kafka协议,除OpenSSL无其他依赖,通过任务流模式为用户提供完备的通信计算融为一体的编程范式,自带服务治理,是一个设计优雅的企业级编程引擎,在搜狗内部支撑搜索服务、云输入法、在线广告的每日数百亿以上的请求。;
srpc:srpc是基于workflow开发的RPC系统,兼具高性能和低门槛。支持IDL:Protobuf/Thrift;支持协议:SRPC/BRPC/ThriftFramed/ThriftHttp;支持压缩类型:snappy/gzip/zlib/lz4;支持json且可使用Http进行跨语言。自带部分代码生成,其中thrift纯手工解析,并且打通workflow自带的其他功能包括任务流、计算调度和服务治理等。
librf: 一个基于C++20 coroutines编写的无栈协程库。
nebula: Nebula Graph 是一款开源的图数据库,擅长处理千亿个顶点和万亿条边的超大规模数据集。
cpp-ipc: 使用共享内存的跨平台(Linux/Windows,x86/x64/ARM)高性能IPC通讯库。
C++, 需要甄别研究再选,或者看懂以后自己改最好,最原始的代码并不是很好用,不能直接应用于工程
awesome-cpp,C++ 资源大全中文版C++开源项目大全
Tinyhttpd项目简介:Tinyhttpd 是J. David Blackstone在1999年写的一个不到 500 行的超轻量型 Http Server,用来学习非常不错,可以帮助我们真正理解服务器程序的本质。建议源码阅读顺序为:main->startup->accept_request->execute_cgi
tmuxtmux一个炫酷的终端复用软件
musikcubemusikcube是一个使用C ++编写的跨平台,运行于终端上的音乐播放器
MyTinySTLC++11 重新复写了一个小型 STL(容器库+算法库),代码结构清晰规范、包含中文文档与注释,并且自带一个简单的测试框架
oatpp一个轻量、跨平台、高性能、完全零依赖,用纯 C++ 实现的 Web 框架
CppNetCppNet一个封装在 TCP 协议上的 Proactor 模式 multi-thread 网络库。包含 OS 接口调用、回调处理、定时器、缓存管理等,这里有从操作系统到应用层的所有网络细节,便于初学者学习和实践。
简单:只导出了最少量的接口,其声明都类似系统 socket API。对客户端而言,只新增了一个 buffer 类型
快速:采用性能最优的 epoll 和 IOCP 做事件驱动。每个连接都独享一个内存池,从内存池中申请的内存都由智能指针管理
清晰:结构上分为事件驱动,会话管理,接口三层,通过回调向上通知。模块之间职责分工明确,最大的类不超过 500 行代码
Poco跨平台支持:Poco库支持多个操作系统,包括Windows、Linux、macOS等
组件化设计:Poco库的设计基于组件化思想,将常用的功能封装成独立的可重用组件
网络和通信:Poco库提供了强大而易用的网络和通信功能,包括HTTP、SMTP、POP3、FTP、WebSocket、TCP/UDP等协议的支持,以及HTTP服务器和客户端的实现
数据库访问:Poco库具有对多种数据库的支持,包括MySQL、SQLite、PostgreSQL、Oracle等。它提供了简单而灵活的接口,方便进行数据库连接、查询和事务处理。
加密和安全:Poco库提供了包括AES、RSA、HMAC、SSL等在内的各种加密算法的支持,以及摘要、签名、证书管理等安全功能。
多线程和并发:Poco库提供了多线程和并发编程的支持,包括线程、互斥锁、条件变量、线程池等工具,方便编写高效的并发代码。
XML和JSON处理:Poco库提供了对XML和JSON格式的解析、生成和处理的支持,方便开发者进行配置文件解析、数据交换等操作。
文件系统和IO操作:Poco库提供了强大的文件系统和IO操作功能,包括文件读写、目录遍历、文件监控等,简化了文件和目录处理的过程。
单元测试和文档生成:Poco库内置了用于单元测试和文档生成的工具集,方便开发者进行代码测试、文档编写和生成。
spdlog简单易用:Spdlog 提供简洁的 API,使得日志记录变得非常容易。你只需要包含头文件,并使用简单的方法调用即可输出日志
多种日志目标:Spdlog 支持多种日志目标,可以将日志记录到控制台、文件、网络等不同的位置。你可以根据需求选择适合的日志目标
灵活的格式化:Spdlog 具有灵活的日志格式化选项,可以自定义日志的输出格式。你可以按照自己的需求定义日期、时间、日志级别和其他附加信息的格式。
多线程支持:Spdlog 在设计上考虑到多线程环境下的安全性,可以在多个线程中同时记录日志,而无需担心竞争条件。
高性能:Spdlog 使用异步日志记录方式和高效的写入策略,以提供卓越的性能。它可以处理大量的日志消息而不会对应用程序的性能产生显著影响。
支持不同的日志级别:Spdlog 提供了不同的日志级别(如 DEBUG、INFO、WARNING、ERROR 等),可以根据需求选择适当的级别进行日志记录,以帮助你更好地控制日志输出。
集成第三方库:Spdlog 可以与其他流行的 C++ 库和框架集成,如 fmtlib、Google Protocol Buffers (protobuf) 等。
跨平台支持:Spdlog 支持在多个操作系统和编译器上运行,包括 Windows、Linux 和 macOS。它可以无缝地在不同平台上提供一致的 API 和功能。

C++相关技术学习文档

技术文档简介
cloud-design-patterns, 中文版关于云设计模式的相关内容
Rust for C++ programmersRust学习资料
CPP-Concurrency-In-Action-2ed-2019C++并发编程资料更多:c++开源库和框架

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

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

相关文章

ROS Node

ROS Node ROS(Robot Operating System)节点是指在ROS中运行的基本单元,它们是一个独立的进程,执行特定的任务,并与其他节点进行通信以完成更复杂的功能。ROS节点是ROS中实现模块化、分布式和可扩展性的关键组件之一。…

【LeetCode】191. 位1的个数

题目链接:191. 位1的个数 题目描述: 解法1:题意很简单就不说了,这里先说一种最简单的解法,首先我们知道一点:n&(n-1)相当于把是将n的二进制位中最低位的1变为了0,其它位保持不变&#xff0…

强制内容在一行显示

强制内容在一行显示 .one {white-space: nowrap;overflow: hidden;text-overflow: ellipsis; /* 可选,当内容超出一行时,用省略号表示 */ }效果

【机器学习】概率模型在机器学习中的应用:以朴素贝叶斯分类去为例

概率模型在机器学习中的应用:以朴素贝叶斯分类器为例 一、概率模型的基本原理二、朴素贝叶斯分类器的原理与实现三、朴素贝叶斯分类器的应用与挑战四、结论与展望 在大数据与人工智能时代,概率模型在各个领域发挥着至关重要的作用。概率模型以概率论和统…

基于STM32F4系列的ETH IAP在线升级程序

目录 1、前言 2、以太网的移植(无操作系统) 3、移植FATS 系统 4、移植ETH 驱动及 DP83848驱动 5、Tftp 服务程序 6、注意事项 ​7、代码 资料下载地址:基于STM32F4系列的ETH IAP在线升级程序 1、前言 此bootloader程序可以通过http…

网络爬虫之HTTP原理

** URI和URL URI的全称Uniform Resource Identifier ,即统一资源标志符。URL的全称Uniform Resource Locator 即统一资源定位符。 URL是URI的子集,也就是每一个URL就是URI,但是每一个URI不一定是URL,URI还有一个子类叫URN&#x…

从零开始写 Docker(十二)---实现 mydocker stop 停止容器

本文为从零开始写 Docker 系列第十二篇,实现类似 docker stop 的功能,使得我们能够停止指定容器。 完整代码见:https://github.com/lixd/mydocker 欢迎 Star 推荐阅读以下文章对 docker 基本实现有一个大致认识: 核心原理&#x…

[韭]第一次参加护网行动要注意什么??

前言 为什么要写这篇文章呢,一是对当下安全环境进行一个分析,二是以过来人的身份留下一点经验。 当下安全环境分析 现在这个时代,大家都已经踏上了信息高速公路,可以自己拿搜索引擎搜一下自己知道的大厂裁员情况,有…

油猴脚本:bing 搜索结果居中

文章目录 效果预览脚本使用步骤安装油猴脚本添加脚本 效果预览 脚本 // UserScript // name bing居中 // namespace http://tampermonkey.net/ // version 2024-04-24 // description try to take over the world! // author You // match http…

rust 卸载重新安装 安装

原因:接触区块链时报错 linking with x86_64-w64-mingw32-gcc failed: exit code: 1 Rust编译需要C环境,如果你没有,Rust也能安装成功,只是无法编译代码 C的编译工具有两个,一个是msvc,也就是visual studi…

CTFshow-PWN-栈溢出(pwn44)

64位的 system(); 但是好像没"/bin/sh" 上面的办法不行了,想想办法 检查: 是 64 位程序 ida 反编译 main 函数: 跟进 ctfshow 函数: 存在栈溢出 offset:0xAh8 在前面经验的基础上,这里我们直…

Python-VBA函数之旅-issubclass函数

目录 一、issubclass函数的常见应用场景: 二、issubclass函数使用注意事项: 三、如何用好issubclass函数? 1、issubclass函数: 1-1、Python: 1-2、VBA: 2、推荐阅读: 个人主页&#xff…

Linux下载及安装OpenSSL

文章目录 前言一、OpenSSL下载二、OpenSSL安装1.上传下载好的安装包到服务器2.解压3.切换目录4.配置config5.编译6.安装7.备份旧版本OpenSSL7.创建软链接8.添加OpenSSL动态链接库9.更新库缓存10.查看OpenSSL版本验证安装是否成功 前言 一般系统会自带有OpenSSL,我们…

CV新手的一些细节点记录

文章目录 前言 一、CV是什么? 二、细节点记录 1.图像坐标与图像矩阵 2.透视变换 总结 前言 很早之前就听闻计算机视觉,尔后又听闻机器学习,一个个高大上的大名,让人有种可望而不可及的感觉。 某日入坑其中,其实…

ubuntu 24.04 beta server NAT模式上网设置

在Ubuntu 24.04 Beta上设置网络通常涉及使用命令行工具。以下是设置静态IP地址和动态IP地址的步骤: 动态IP设置: 查找你的网络接口名称: ip a ens37是我NAT模型的一张网卡,此时是没有ip的。 下面介绍如何NAT模式下添加DHCP动态…

xmind思维导图的绘制技巧

思维导图是一种用来表示思维关系的图形化工具。它将复杂的思维过程和信息整理成一个树状图,可以帮助我们更好地理清思路、整理信息、记忆知识。 在使用xmind绘制思维导图时,有一些技巧可以帮助我们更高效地绘制出清晰、易读的导图,下面是一些…

【数据结构与算法】:带你手搓顺序表(C/C++篇)

文章目录 一、顺序表1.1 线性表 二、顺序表2.1 概念及结构2.2 实现方法1. 顺序表的初始化2. 顺序表的销毁3. 扩容4. 尾部插入/尾部删除5. 头部插入/头部删除6. 指定位置插入/删除7. 顺序表的查找8. 顺序表元素的索引9. 顺序表元素的修改10. SeqList.c完整代码 一、顺序表 1.1 …

FL Studio21中文版值不值得下载?2024优点和缺点测评介绍

FL Studio21的优点和缺点分析如下: 优点: 功能全面: FL Studio 21提供了从音频录制、编辑到混音和母带处理的全套工具,满足音乐制作的全流程需求。内置多种虚拟乐器和效果器,覆盖了广泛的音色和风格。直观易用&#…

数字证书及秘钥的PEM格式、PFX格式、JKS格式介绍

文章目录 前言一、PEM格式二、PFX格式三、JKS格式 前言 三种格式可以相互进行转换 一、PEM格式 PEM格式是一种广泛用于存储和交换安全信息的文件格式,主要用于数字证书和私钥的管理。PEM文件通常是文本文件,使用Base64编码,使得二进制数据可以…

Vue2源码学习路径

文章的更新路线:JavaScript基础知识-Vue2基础知识-Vue3基础知识-TypeScript基础知识-网络基础知识-浏览器基础知识-项目优化知识-项目实战经验-前端温习题(HTML基础知识和CSS基础知识已经更新完毕) 正文 核心代码 它主要包括 Vue 实例、模板编…