当前位置:首页 > 单片机 > 程序喵大人
[导读]通用库Boost不多介绍,没有不知道的吧,Boost是功能相当丰富的C基础库,boost里有很多好用的组件,都值得我们学习,造轮子时也有个方向。(话说一般C标准库好多东西也都是从Boost里抠出来的。)FollyFacebook的开源库,和Boost类似,但听说比Boost还牛逼...



通用库

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

muduo 是一个基于 Reactor 模式的现代 C 网络库,它采用非阻塞 IO 模型,基于事件驱动和回调,支持多核多线程,适合编写 Linux 服务端多线程网络应用程序。(陈硕大佬写的,值得学习,这里也极力推荐陈硕大佬的《Linux多线程服务端编程》书籍,文中很多篇幅都讲述了如何使用现代C ,及时不进行网络开发也推荐学习一下这本书,我当年看了两遍,收获颇多!)



protobuf

Google出品,protobuf一个具有高效的协议数据交换格式工具库(类似Json),但相比于Json,Protobuf有更高的转化效率,时间效率和空间效率都是JSON的3-5倍。(现在的RPC基本都是用protobuf作为通讯数据格式。)


poco

POCO是一个开源的C 类库的集合,它主要提供简单的、快速的网络和可移植应用程序的C 开发,这个类库和C 标准库可以很好的集成并填补C 标准库的功能空缺。POCO库的模块化、高效的设计及实现使得特别适合嵌入式开发


libevent

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

Ogre是一个三维(3D)图形渲染引擎。它是面向对象的,并且高效,抽象化了不同的API和平台,这样可以以场景为对象来使用物体,支持多种场景。它已经成功地被应用于诸多三维仿真领域,包括网络游戏和三维仿真项目。(我们平时见到的各种特效,比如在人脑袋上贴个大恐龙,贴个B站小电视,可能底层就是用到了Ogre。)


bgfx

bgfx 是一个跨平台、与图形 API 无关, "可打造个性引擎/框架“ 风格的渲染库,类似于Ogre。(我们部门渲染组初期技术选型时就评估了一下Ogre和bgfx,两者都能满足需求,但最终还是选择了Ogre,具体为啥我也忘了...)



线性代数

Eigen

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 后端开发需求。(之前我还特意写了一篇文章介绍过:推荐学习这个C 开源项目)


log

spdlog

目前最火的C log库,只需要头文件即可,兼容C 11,相当方便,现在有人问有什么好的log库推荐,我都是无脑推荐spdlog。


特点:

  • 非常快

  • 无需依赖第三方库

  • 支持跨平台 - Linux / Windows on 32/64 bits

  • 支持多线程

  • 可对日志文件进行循环输出

  • 可每日生成日志文件

  • 支持控制台日志输出

  • 可选的异步日志

  • 支持日志输出级别

  • 可自定义日志格式


glog

Google Glog 是一个C 语言的应用级日志记录框架,提供了 C 风格的流操作和各种辅助宏。我以前参与的项目就有使用过glog,关于glog我还做过源码分析,可以看 glog源码分析。


fmtlib/fmt

formatting库,相当不错,如果觉得下面的代码非常繁琐,可考虑使用fmt。

cout << "(" << a << ")(" << b << ")(" << c << ")" << endl;


并发库

TBB

openmp



深度学习

pytorch

现在深度学习就无脑选pytorch?



内存(高效内存分配器,尤其多线程场景)

jemalloc

tcmalloc

tcmalloc更稳定,占用内存更低,jemalloc性能更高,占用内存更高!



数据压缩

zlib

zlib是提供数据压缩用的函数库,貌似在C 中使用数据压缩都会用zlib。



界面

Qt

QT工具丰富、功能丰富、开源并跨平台、架构的优势等,导致原来越多的程序员投向了QT的怀抱。



数据库

sqlite3

一款轻型的数据库,我之前简单写过一篇sqlite3的入门文章:C sqlite3使用指南



参数解析

gflags

google开源的gflags是一套命令行参数解析工具,功能强大,使用起来非常方便,gflags还支持从环境变量、配置文件读取参数(可用gflags代替配置文件)。


rpc

brpc

brpc又称为baidu-rpc,百度出品。brpc目前被应用于百度公司内部和其他外部好多公司的各种核心业务上。


grpc

gRPC 是可以在任何环境中运行的现代开源高性能 RPC 框架。google出品,必属经典。


打完收工,点赞走起



往期推荐



关于多线程,我给出13点建议

编程5分钟,命名2小时!聊聊命名规则!

shared_ptr是线程安全的吗?

为什么我十分喜欢C,却很不喜欢C ?

累够呛!整理了一份C 学习路线图!

如何阅读《深入理解计算机系统》?(文末送书)


本站声明: 本文章由作者或相关机构授权发布,目的在于传递更多信息,并不代表本站赞同其观点,本站亦不保证或承诺内容真实性等。需要转载请联系该专栏作者,如若文章内容侵犯您的权益,请及时联系本站删除。
换一批
延伸阅读

LED驱动电源的输入包括高压工频交流(即市电)、低压直流、高压直流、低压高频交流(如电子变压器的输出)等。

关键字: 驱动电源

在工业自动化蓬勃发展的当下,工业电机作为核心动力设备,其驱动电源的性能直接关系到整个系统的稳定性和可靠性。其中,反电动势抑制与过流保护是驱动电源设计中至关重要的两个环节,集成化方案的设计成为提升电机驱动性能的关键。

关键字: 工业电机 驱动电源

LED 驱动电源作为 LED 照明系统的 “心脏”,其稳定性直接决定了整个照明设备的使用寿命。然而,在实际应用中,LED 驱动电源易损坏的问题却十分常见,不仅增加了维护成本,还影响了用户体验。要解决这一问题,需从设计、生...

关键字: 驱动电源 照明系统 散热

根据LED驱动电源的公式,电感内电流波动大小和电感值成反比,输出纹波和输出电容值成反比。所以加大电感值和输出电容值可以减小纹波。

关键字: LED 设计 驱动电源

电动汽车(EV)作为新能源汽车的重要代表,正逐渐成为全球汽车产业的重要发展方向。电动汽车的核心技术之一是电机驱动控制系统,而绝缘栅双极型晶体管(IGBT)作为电机驱动系统中的关键元件,其性能直接影响到电动汽车的动力性能和...

关键字: 电动汽车 新能源 驱动电源

在现代城市建设中,街道及停车场照明作为基础设施的重要组成部分,其质量和效率直接关系到城市的公共安全、居民生活质量和能源利用效率。随着科技的进步,高亮度白光发光二极管(LED)因其独特的优势逐渐取代传统光源,成为大功率区域...

关键字: 发光二极管 驱动电源 LED

LED通用照明设计工程师会遇到许多挑战,如功率密度、功率因数校正(PFC)、空间受限和可靠性等。

关键字: LED 驱动电源 功率因数校正

在LED照明技术日益普及的今天,LED驱动电源的电磁干扰(EMI)问题成为了一个不可忽视的挑战。电磁干扰不仅会影响LED灯具的正常工作,还可能对周围电子设备造成不利影响,甚至引发系统故障。因此,采取有效的硬件措施来解决L...

关键字: LED照明技术 电磁干扰 驱动电源

开关电源具有效率高的特性,而且开关电源的变压器体积比串联稳压型电源的要小得多,电源电路比较整洁,整机重量也有所下降,所以,现在的LED驱动电源

关键字: LED 驱动电源 开关电源

LED驱动电源是把电源供应转换为特定的电压电流以驱动LED发光的电压转换器,通常情况下:LED驱动电源的输入包括高压工频交流(即市电)、低压直流、高压直流、低压高频交流(如电子变压器的输出)等。

关键字: LED 隧道灯 驱动电源
关闭