【C++】C++的工具库

目录 处理高并发的库 日志 PRC 嵌入式文件系统 代码质量 深度学习库 HTTP 网络库 单元测试 性能测试 文件压缩 下次造轮子前先看看现有的轮子吧 值得学习的C语言开源项目 - 1. Webbench - 2. Tinyhttpd - 3. cJSON (C++的不推荐这个库) - 4. CMockery - 5...
摘要由CSDN通过智能技术生成

目录

处理高并发的库

日志

PRC

嵌入式文件系统

代码质量

深度学习库

HTTP 网络库

单元测试

性能测试

文件压缩

下次造轮子前先看看现有的轮子吧

值得学习的C语言开源项目

- 1. Webbench 

- 2. Tinyhttpd

- 3. cJSON (C++的不推荐这个库)

- 4. CMockery

- 5. Libev

- 6. Memcached

- 7. Lua

- 8. SQLite

- 9. UNIX v6

- 10. NETBSD

C++ 资源大全

标准库

框架

人工智能

异步事件循环

音频

生态学

压缩

并发性

容器

密码学

数据库

调试

游戏引擎

图形用户界面

图形

图像处理

国际化

Jason

日志

机器学习

数学

多媒体

网络

物理学

机器人学

科学计算

脚本

序列化

视频

虚拟机

Web应用框架

XML

多项混杂

软件

编译器

在线编译器

调试器

集成开发环境(IDE)

构建系统

静态代码分析


能不用cpp就不用要用了

处理高并发的库

libevent:事件通知库,主要有以下几个亮点:事件驱动( event-driven),高性能;轻量级,专注于网络,不如 ACE 那么臃肿庞大;源代码相当精炼、易读;跨平台

(libevent、libev、libuv)

日志

glog:google的开源日志系统,相比较log4系列的日志系统,它更加轻巧灵活,而且功能也比较完善。

spdlog: logger库, 重点推荐! 为什么呢? 因为好使! 没有废话. 而且是header only的.

gabime/spdlog

PRC

gRPC:是由Google主导开发的RPC框架,使用HTTP/2协议并用ProtoBuf作为序列化工具。

            (鹅厂用的RPC:https://github.com/TarsCloud/Tars)

abseil:谷歌的库,可以看作是STL的扩充

OpenCV:视觉图像处理库

FFTW :号称最快的FFT!

深度学习:推荐Eigen,它也是tensorflow的基础组件之一。

嵌入式文件系统

buildroot:(文件系统搭建,强烈建议直接用buildroot,官网[http://buildroot.uclibc.org/]上有使用教程非常详细)文件系统通常要包含很多第三方软件,比如busybox,udhcpc,tftp,apache,sqlite,PHP,iptable,DNS等,为了避免繁杂的移植工作。buildroot应运而生。

  • abseil-cpp
    Abseil-cpp 传说是非 Google 官方开源的 C++ 基础库,收集/整理了 Google 众多 C++ 开源项目的基础库。可以认为和 Facebook folly 类似。
  • gtest 和 gmock
    Gtest 是 Google 开源的 C++ 单元测试框架,可以配合 gmock 使用。
  • glog
    Google 开源的日志库。
  • protobuf
    Protobuf 是 Google 开源的序列化、反序列化库。兼容性特别好。性能也还不错。
  • leveldb
    Leveldb 是 Google 开源的一个 LSM 存储引擎,代码质量比较高,是学习 C++ 不错的参考代码。
  • rocksdb
    Rocksdb 是 Facebook 开源的一个 LSM 存储引擎,最开始基于 leveldb 修改得到的。不过现在 rocksdb 可以说是青出于蓝而胜于蓝。
  • braft
    百度开源的 Raft 算法的 C++ 实现。
  • rapidjson
    腾讯开源的 C++ json 库。


链接:https://www.zhihu.com/question/51134387/answer/582057574

代码质量

静态代码检查工具 cppcheck

深度学习库

caffe

HTTP 网络库

cpp-httplib

header-only 的 HTTP 网络库!!! s/c 端都支持一些常用方法。

效率跟 curl/cpp-netlib/cpprestsdk 之类的重器没得比,但胜在写 demo 之类的小东西很方便。

喏,一个服务端完整示例:

#include <httplib.h>
int main() {
    httplib::Server svr;
    svr.get("/fuck", [](auto &req, httplib::Response &res) {
        res.set_content("SHIT!", "text/plain");
    });    
    svr.listen("localhost", 80);
}

http客户端curl

http服务器 crow

gzip压缩zlib

json序列化nlohmann/json

二进制序列化protobuf

嵌入式数据库sqlite

日志库glog

参数解析库gflags

消息队列zmq

rpc库brpc

tcp网络库evpp

  •  
  • WebRTC,非常赞的框架,做音视频通信绕不开的。
  • TinyXml,小巧的C++ XML库,几个源文件,直接加入到项目中就可以用
  •  
  • FreeImage,强大好用的图形库
  •  

作者:张友东
链接:https://www.zhihu.com/question/51134387/answer/387612085
来源:知乎
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

做存储, 数据库系统方面的开发,主要用到

* grpc/libevent/libev/libasio 实现高性能网络服务器
* protobuf 数据结构序列化/反序列化,方便数据交换
* LevelDB/RocksDB 嵌入式KV数据库
* snappy/zlib/lz4 数据压缩,解压缩
* jemalloc/tcmalloc 高效内存分配器,尤其多线程场景
* jerasure Reed Solomon编解码,给存储系统实现erasure code
* murmurhash… 实现hash摘要
* crc32 数据存储或传输时的数据校验
* cJSON 解析json格式配置文件
* libBSON JSON序列化/反序列化,MongoDB使用这种格式存储数据
* boost 功能丰富的C++基础库,轻度使用,C++11/14后基本不用了。
* libRedis redis是一个数据库服务,并不是单独的库,但其代码精简,质量非常高,里面很多代码都可以拿出来直接复用,比如网络,各种数据结构的实现。

作者:iiif
链接:https://www.zhihu.com/question/51134387/answer/571858930
来源:知乎
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

为什么 ——

A. 自己写一遍太累
B. 写得很好
C. 实用且满足我的需求
D. 好用不折腾
E. 代码有深度且可读性高,可以挖宝贝

用过才敢推荐,其中 B/E 读过才敢评价
重点推荐 microprofile,不只用来分析性能好用,用来帮助理解引擎运行流程也是极其特别好用,往 Unreal 里面随便一放,它哪个线程什么时候在做什么事情、调用关系、调度状况、依赖关系一切都看得清清楚楚明明白白真真切切 —— 而且本身性能影响极小,可以远程监控,报表可以存下来慢慢研究,神器

不管怎么看Unreal代码,都没这一幅图清晰

Update: 再加两个没人提的

单元测试

  • BCD: 又小又快又方便的单元测试库,嗯测试很重要: onqtam/doctest
  • ABCDE: 高精度浮点数运算库,Fabrice Bellard 一出手总是把很复杂的东西弄得跟玩似的,境界真的高: LibBF Library

Catch2: 著名的单元测试框架, 那么它和boost或者google的单元测试框架有什么不同呢?

就在于它首先是header only的, 其次是没有废话,直击要害! 你要测试对吧? 给你!

catchorg/Catch2

性能测试

Celero: 简单清晰的benchmark库, 特点就是简单易用没有废话.

DigitalInBlue/Celero

文件压缩

bundle: 把几乎所有常见的压缩库封装成了一个库, 接口完全统一, 想用哪个用哪个.

就一个h和一个巨TM大的cpp文件,巨好使巨方便.

下次造轮子前先看看现有的轮子吧

值得学习的C语言开源项目

- 1. Webbench 

Webbench是一个在linux下使用的非常简单的网站压测工具。它使用fork()模拟多个客户端同时访问我们设定的URL,测试网站在压力下工作的性能,最多可以模拟3万个并发连接去测试网站的负载能力。Webbench使用C语言编写, 代码实在太简洁,源码加起来不到600行。

下载链接:http://home.tiscali.cz/~cz210552/webbench.html

- 2. Tinyhttpd

tinyhttpd是一个超轻量型Http Server,使用C语言开发,全部代码只有502行(包括注释),附带一个简单的Client,可以通过阅读这段代码理解一个 Http Server 的本质。

下载链接:http://sourceforge.net/projects/tinyhttpd/

- 3. cJSON (C++的不推荐这个库)

cJSON是C语言中的一个JSON编解码器,非常轻量级,C文件只有500多行,速度也非常理想。

cJSON也存在几个弱点,虽然功能不是非常强大,但cJSON的小身板和速度是最值得赞赏的。其代码被非常好地维护着,结构也简单易懂,可以作为一个非常好的C语言项目进行学习。

项目主页:http://sourceforge.net/projects/cjson/

- 4. CMockery

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

主要特点:

  • 免费且开源,google提供技术支持;
  • 轻量级的框架,使测试更加快速简单;
  • 避免使用复杂的编译器特性,对老版本的编译器来讲,兼容性好;
  • 并不强制要求待测代码必须依赖C99标准,这一特性对许多嵌入式系统的开发很有用

下载链接:

  • 0
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值