行业资讯

首页-88新博2娱乐【新博2平台】新博2注册登录中心

2022-11-27 12:29:07 yqs888 0

首页-88新博2娱乐【新博2平台】新博2注册登录中心报道,大部分人都有 C++经验了,那应该可以看懂一些大中型C++项目源码,所以我推荐的项目有小型的也有大型成熟的,但是都是C++后台开发相关的项目。

项目涉及后台开发组件包括:网络库、RPC框架、数据库、配置文件处理、消息队列、序列化等等


话不多说,我们开始吧。下面这个项目,我最先推荐。

Google开源代码规范

我们学习开源项目源码,但是自己写代码的时候,良好的代码规范也必不可少,这方面可以参考Google 开源代码规范。

C++ 是 Google 大部分开源项目的主要编程语言,正如每个 C++ 程序员都知道的, C++ 有很多强大的特性, 但这种强大不可避免地导致它走向复杂,使代码更容易产生 bug,难以阅读和维护。

本指南的目的是通过详细阐述 C++ 注意事项来驾驭其复杂性. 这些规则在保证代码易于管理的同时, 也能高效使用 C++ 的语言特性.

这个代码规范的PDF文档,已经有人已经在评论区给出。

项目主页
https://github.com/zh-google-styleguide/zh-google-styleguide

数据库

cpp_redis

项目主页
https://github.com/Cylix/cpp_redis/

C++11 Lightweight Redis client: async, thread-safe, no dependency, pipelining, multi-platform

这是一个 C++11编写的轻量级 Redis 客户端,具有异步、线程安全、无依赖、pipelining、跨平台等特性。代码量不大,可以学习如何编写一个简洁高效的网络通信客户端程序,另外项目采用了C++11编写,通过这个开源项目,你还可以学习如何使用这些语言新特性。


LevelDb

项目主页:
https://github.com/google/leveldb

由 Google 的两位工程师 Sanjay Ghemawat 和 Jeff Dean 开发的键/值对(Key/Value Pair)嵌入式数据库,具有很高的随机写,顺序读/写性能,采用 LSM树 (Log Structured-Merge Tree)实现,LSM树的核心思想就是放弃部分读的性能,换取最大的写入能力.

关于LevelDb 详细内容学习可参考教程:

https://kevins.pro/leveldb_chinese_doc.html

https://leveldb-handbook.readthedocs.io/zh/latest/basic.html


文件解析器

在后台项目中需要经常处理配置文件解析工作,这些配置文件可以是XML、JSON或者是YAML等格式的标记语言文件,下面这几个项目就是几个不错的文件解析器,代码可读性好。

JSON处理

C++ JSON 解析器

JSON++ is a light-weight JSON parser, writer and reader written in C++. JSON++ can also convert JSON documents into lossless XML documents.

用C++写的轻量级 JSON 解析器,同时还可以将 jSON 文档转换成 XML 文档

项目主页
https://github.com/hjiang/jsonxx


迷你的C++11 JSON库

json11 is a tiny JSON library for C++11, providing JSON parsing and serialization.

同样是是个mini JSON 库,仅 1个 CPP 文件和一个头文件,方便地嵌入到自己的项目中

项目主页
https://github.com/dropbox/json11


TinyXML

我们经常需要在项目中处理 XML 配置文件,有没有想过自己编写一个简单通过的XML解析器,这里就是一个用C++ 编写的,非常简单小巧的 XML 解析器,可以很容易地集成到其它项目中,出于C++学习目的的话,你也可以把代码下载下来学习练手。

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

yaml-cpp

YAML 也是一种类似XML和JSON一样的配置文件语言,YAML 的意思其实是:"Yet Another Markup Language"(仍是一种标记语言),是专门用来写配置文件的语言,相比 JSON 更加简洁和方便阅读。

这个项目就是一个用cpp写的yaml文件解析器,项目代码量也不大,结构清晰,可以用作学习参考。

项目主页:
https://github.com/jbeder/yaml-cpp


如果说前面的是练手,那下面介绍的项目会高级一些

下面会介绍几个 C++ 后台开发中,具有代表性的项目和开源框架,做后台开发,这些项目你或多或少会使用到,了解一些项目源码自然更好。

网络库

Muduo

https://github.com/chenshuo/muduo

说到开源网络库,就不得不提 muduo ,它是一个基于 Reactor 模式的现代 C++ 网络库,采用非阻塞 IO 模型,基于事件驱动和回调,原生支持多核多线程,适合编写 Linux 服务端多线程网络应用程序。

muduo 是知乎大神陈硕开发,基于 Reactor 模式,Redis和Java的Netty库也是采用这种模式实现,具有如下特点:采用非阻塞 IO 模型、基于事件驱动和回调,原生支持多核多线程。

学习 moduo 源码可以配合陈硕的《Linux多线程服务器端编程》,这本书以muduo 网络库为例,讲解这种编程模型的使用方法及注意事项,重点讲解一种适应性较强的多线程服务器的编程模型,即one loop per thread。


首页
产品
新闻
联系