https://github.com/google/googletest Google Test / gtest: 的开源 `C++ 单元测试框架` 1. 提供了丰富的 `断言 和 各类比较操作` 用很多 `断言的宏` 来 `检查值是否符合预期`, 主要分两类 宏:·ASSERT 和 EXPECT· 2. 区别: ASSERT `不通过时, 认为是 fatal 错误, 退出 当前函数`; EXPECT 不通过时 `继续运行` 当前函数, 可 同时报告 多个失败 出来 通常用 EXPECT 断言就好,除非 你认为 当前检查点失败后 函数的后续检查没有意义
这是搜狗自研的RPC系统,主要功能和特点: 这是一个基于Sogou C++ Workflow的项目,兼具: 高性能 低开发和接入门槛 完美兼容workflow的串并联任务流 对于已有pb/thrift描述文件的项目,可以做到一键迁移
gRPC: 谷歌开源的 高性能 `远程 过程 调用系统` 1. `客户端应用` 可以 `像 调用本地对象 一样`, 直接调用 `另一台不同的机器上 服务端应用` 的方法, 使得 更容易地创建 `分布式应用和服务` 2.与许多 RPC 系统类似,gRPC 也是基于以下理念: (1)定义一个 `服务`,声明 `其能够被远程调用的方法/接口(包含参数和返回类型)` (2)服务端 1)`实现这个接口` 2)并运行一个 gRPC 服务器 来 处理客户端调用 (3)客户端 拥有一个 `存根` 能够 像 服务端 一样的方法 3. gRPC 官方文档中文版 https://doc.oschina.net/grpc?t=58008
1. 简单的玩具项目入手: https://github.com/qicosmos/rest_rpc high performance, cross platform, easy to use rpc framework. c++11 rpc库 It's so easy to love RPC. Modern C++ 开发的RPC库就是这么简单好用 其 目标: 让 Tcp 通信 简单易用, 即使不懂 网络通信 的人也可以 快速上手, 使用者 只需要关注 自己的 业务逻辑 2. RPC (Remote Procedure Call)远程过程调用是一个计算机通信协议。 一般的 程序调用是 本地程序内部的调用, RPC允许 像调用本地函数 一样 去调用另一个程序的函数, 这中间涉及 网络通信 和 进程间通信, 但你无需知道实现细节,RPC框架为你屏蔽了底层实现 服务器-客户端(Client/Server)模式 经典实现: 是一个 通过 发送请求-接受回应 进行 信息交互 的系统
后端开发 常用到 消息队列 消息队列是 分布式系统中重要的组件 主要有 4个应用场景 / 解决4类问题: (1)应用耦合:多应用 对 消息队列中 同一消息进行处理,避免 调用接口失败 导致整个过程失败 (2)异步处理:多应用 对 消息队列中 同一消息进行处理,应用间 并发处理消息 (3)限流削峰:用于秒杀或抢购,避免 流量过大导致 应用系统挂掉 (4)消息驱动的系统:消息队列、消息生产者、消息消费者 2. 消息队列机制参考https://cloud.tencent.com/developer/article/1006035
https://github.com/leethomason/tinyxml2 经常需要在项目中处理 XML 配置文件。 用C++ 编写的,非常简单小巧的 XML 解析器,可以很容易地集成到其它项目中
https://github.com/google/leveldb 由 Google 的 Sanjay Ghemawat 和 Jeff Dean 开发(Key/Value Pair)嵌入式数据库,具有很高的随机写,顺序读/写性能,采用 LSM树 (Log Structured-Merge Tree)实现,LSM树的核心思想就是放弃部分读的性能,换取最大的写入能力