ToB企服应用市场:ToB评测及商务社交产业平台
标题:
常用 C / C++开源库 [收藏]
[打印本页]
作者:
鼠扑
时间:
2024-10-24 14:59
标题:
常用 C / C++开源库 [收藏]
软件开发工作好多年了,推荐用过的一些开源库吧!
通用库
Boost:
不多介绍,没有不知道的吧,Boost是功能相称丰富的C++底子库,boost里有很多好用的组件,都值得我们学习,造轮子时也有个方向。(话说一般C++标准库好多东西也都是从Boost里抠出来的。)
Folly:
Facebook的开源库,和Boost类似,但听说比Boost还牛逼。(之前研究过一个运行时检测死锁的问题,就采用了Folly库里面deadlock.py中检测图中最小环的思路。)
Abseil:
Google的STL,我个人更喜欢的一个开源库,主要文档比较全,官方文档关于Abseil介绍的也很详细。
通讯
zeromq:
zmq是一个为可伸缩的分布式或并发应用程序计划的高性能异步消息库。它提供一个
高性能消息队列
,该库计划成常见的套接字风格的API。(估计C/C++开发都会用到zmq吧,记得以前zmq是C++接口,貌似为了高性能又用C语言重写了一遍。关于zmq网上有太多学习资料了,大家有需要也可以关注我加我好友找我要!
asio:
asio 是一个跨平台的C++网络编程框架,通过先进的C++方法为开发职员提供连续异步模型。(我进行网络通讯就是用的asio,大家呢?)
muduo:
一个基于 Reactor 模式的当代 C++ 网络库,它采用非壅闭 IO 模型,基于事故驱动和回调,支持多核多线程,得当编写 Linux 服务端多线程网络应用程序。(陈硕大佬写的,值得学习,这里也极力推荐陈硕大佬的《Linux多线程服务端编程》书籍,文中很多篇幅都报告了如何使用当代C++,及时不进行网络开发也推荐学习一下这本书,我当年看了两遍,收获颇多!)
protobuf:
Google出品,protobuf一个具有高效的协议数据交换格式工具库(类似Json),但相比于Json,Protobuf有更高的转化服从,时间服从和空间服从都是JSON的3-5倍。(现在的RPC根本都是用protobuf作为通讯数据格式。)
poco:
一个开源的C++类库的集合,它主要提供简朴的、快速的网络和可移植应用程序的C++开发,这个类库和C++标准库可以很好的集成并填补C++标准库的功能空缺。POCO库的模块化、高效的计划及实现使得特别得当
嵌入式开发
。
libevent:
一个用C语言编写的、轻量级的开源高性能事故通知库,主要有以下几个亮点:事故驱动,高性能,轻量级,专注于网络,不如 ACE 那么臃肿庞大;源代码相称精炼、易读;跨平台;支持多种 I/O 多路复用技能:epoll、poll、select 和 kqueue 等;支持 I/O,定时器和信号等事故;注册事故优先级等。
音视频
FFmpeg:
音视频届的yyds,音视频开发有谁能绕过ffmpeg?ffmpeg的功能相称强大,音视频收罗、音视频格式转换、滤镜、水印、音视频编解码、推送到流媒体服务器等等,太多了,对视频的绝大多数处理都可以使用ffmpeg,可以说无所不能。
图像处理
OpenCV:OpenCV用C++语言编写,它具有C ++,Python,Java和MATLAB接口,并支持Windows,Linux,Android和Mac OS多种平台, 现在也提供对于C#、Ch、Ruby,GO的支持。是计算机视觉里非常举足轻重的库,主要可用于物体检测、人脸检测、图像处理等。(我更多主要用它来读图片文件,进行格式转码和预览等,是不是有点大材小用了)
图形
OpenGL:
用于渲染2D、3D矢量图形的跨语言、跨平台的应用程序编程接口(API),图型开发者貌似都离不开OpenGL,与纹理有关的利用根本都会用到OpenGL,常用于CAD、虚拟实际、科学可视化程序和电子游戏开发。(我平时做音视频开发就需要经常使用OpenGL,搭配下面介绍的glm使用,真香。)
Vulkan:
下一代的OpenGL,可解决OpenGL很多框架层面的缺陷,更高性能,可能我们以后都会从OpenGL迁徙到Vulkan吧,但升级永远没有那么容易,本钱太高,至少它现在还没那么普及。
Ogre:
一个三维(3D)图形渲染引擎。它是面向对象的,而且高效,抽象化了不同的API宁静台,如允许以以场景为对象来使用物体,支持多种场景。它已经成功地被应用于诸多三维仿真领域,包括网络游戏和三维仿真项目。(我们平时见到的各种特效,好比在人脑袋上贴个大恐龙,贴个B站小电视,可能底层就是用到了Ogre。)
bgfx:
一个跨平台、 "可打造个性引擎/框架“ 风格的渲染库,类似于Ogre。(我们部门渲染组初期技能选型时就评估了一下Ogre和bgfx,两者都能满足需求,但终极还是选择了Ogre,具体为啥我也忘了...)
线性代数
Eigen:
一个线性算术的C++模板库,功能强大、快速、优雅以及支持多平台。想找关于数学运算的三方库,首选Eigen就对了!
GLM:
由于 C/C++标准库中没有几何数学库,如许造成在开发一个三维系统之初往往都需要自行实现一个实用的几何数学库,如许太费时费力了。GLM的出现可以很好的解决这个问题,而且GLM不需要编译成任何库,只需要依靠头文件即可使用(OpenGL搭配GLM使用,很爽)。
JSON
rapidjson
nlohmann/json
cJSON
C++语言就在rapidjson和nlohmann/json中选一个,C语言就用cJSON。
服务端引擎
workflow:
搜狗公司C++服务器引擎,支撑搜狗几乎全部后端C++在线服务,包括全部搜索服务,云输入法,在线广告等,逐日处理超百亿请求。这是一个计划轻盈优雅的企业级程序引擎,可以满足大多数C++后端开发需求。
log
spdlog:
目前最火的C++log库,只需要头文件即可,兼容C++11,相称方便,现在有人问有什么好的log库推荐,我都是无脑推荐spdlog。
特点:
非常快
无需依靠第三方库
支持跨平台 - Linux / Windows on 32/64 bits
支持多线程
可对日志文件进行循环输出
可逐日天生日志文件
支持控制台日志输出
可选的异步日志
支持日志输出级别
可自界说日志格式
glog:
Google Glog 是一个C++语言的应用级日志记录框架,提供了 C++ 风格的流利用和各种辅助宏。
fmtlib/fmt:
formatting库,相称不错,假如觉得下面的代码非常繁琐,可考虑使用fmt。
cout << "(" << a << ")(" << b << ")(" << c << ")" << endl;
复制代码
并发库
TBB
openmp
深度学习
pytorch
现在深度学习就无脑选pytorch?
内存(高效内存分配器,尤其多线程场景)
jemalloc
tcmalloc
tcmalloc更稳定,占用内存更低,jemalloc性能更高,占用内存更高!
数据压缩
zlib:
提供数据压缩用的函数库,貌似在C++中使用数据压缩都会用zlib。
界面
Qt:
工具丰富、功能丰富、开源并跨平台、架构的上风等,导致原来越多的程序员投向了QT的怀抱。
数据库
sqlite3:
一款轻型的数据库,我之前简朴写过一篇sqlite3的入门文章。
参数剖析
gflags:
google开源的gflags是一套下令行参数剖析工具,功能强大,使用起来非常方便,gflags还支持从环境变量、配置文件读取参数(可用gflags代替配置文件)。
rpc
brpc:
brpc又称为baidu-rpc,百度出品。brpc目前被应用于百度公司内部和其他外部好多公司的各种核心业务上。
grpc:
gRPC 是可以在任何环境中运行的当代开源高性能 RPC 框架。google出品,必属经典。
觉得有点收获就给点个赞吧!
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
欢迎光临 ToB企服应用市场:ToB评测及商务社交产业平台 (https://dis.qidao123.com/)
Powered by Discuz! X3.4