C++是一个强大的编程语言,有许多优秀的开源项目。以下是一些知名的C++开源项目,涵盖了不同的领域:
1. Boost:一个优秀的C++库集合,包含许多实用的算法、容器、文件系统操作、网络编程等,是许多C++项目的基石。
2. OpenCV:计算机视觉库,用于图像处理和计算机视觉任务,如图像分析、物体识别等。
3. Qt:跨平台的应用开发框架,提供了丰富的图形用户界面组件和工具。
4. SFML:跨平台的2D游戏开发框架,支持音频、图形和输入。
5. CMake:一个自动化构建系统,用于管理和构建跨平台的C++项目。
6. Poco:C++的跨平台应用程序开发框架,包含网络、XML、数据、文件系统、数据库等模块。
7. Eigen:一个高效的线性代数库,用于数值计算。
8. Redis:一个高性能的键值存储系统,用C++编写。
9. FFmpeg:用于处理音频和视频的开源库,支持多种格式的编码、解码和流处理。
10. Git:虽然主要用C编写,但其命令行接口的实现大量使用C++,是一个非常重要的开源项目。
这些项目在各自的领域都有着广泛的应用和贡献,是学习和研究C++的好例子。
暑假在家没事干不如敲项目,5大优秀c++开源项目,入门练手必备
粗看了一下子oatpp,这代码写的很漂亮
优秀的cpp开源小项目
浙江台州做什么小生意好很多人表示学完C + +不知道用来干什么,该项目的作者就用C++11重新复写了一个小型STL (容器库+算法库)。代码结构清晰规范、包含中文文档与注释,并且自带一个简单的测试框架,非常适合新手学习与参考。
头条怎么都是套路私信要加群啊
一个使用C + +编写的跨平台;运行于终端上的音乐播放器。可以在Windows , macos和linux. 上轻松编译和运行。也可以在带有raspbian的树莓派上很好地运行, 并且可以设置为流音频服务器。
本指南的目的是通过详细阐述 C++ 注意事项来驾驭其复杂性. 这些规则在保证代码易于管理的同时, 也能高效使用 C++ 的语言特性.
C++ 是 Google 大部分开源项目的主要编程语言,正如每个 C++ 程序员都知道的, C++ 有很多强大的特性, 但这种强大不可避免的导致它走向复杂,使代码更容易产生 bug,难以阅读和维护。
gtest 使用一系列断言的宏来检查值是否符合预期,主要分为两类:ASSERT 和 EXPECT。区别在于 ASSERT 不通过的时候会认为是一个 fatal 的错误,退出当前函数(只是函数)。而 EXPECT 失败的话会继续运行当前函数,所以对于函数内几个失败可以同时报告出来。通常我们用 EXPECT 级别的断言就好,除非你认为当前检查点失败后函数的后续检查没有意义。
程序写的好,单元测试少不了。现在流行的软件开发模式「测试驱动开发」,学习使用单元测试保证代码健壮性,Google 的开源 C++ 单元测试框架 Google Test 也称为 gtest ,提供了丰富的断言和各类比较操作。
TARS是腾讯从2008年到今天一直在使用的后台逻辑层的统一应用框架,覆盖腾讯100多个产品。目前支持C++,Java,PHP,Nodejs,Go语言。该框架为用户提供了涉及到开发、运维、以及测试的一整套解决方案,帮助一个产品或者服务快速开发、部署、测试、上线。 它集可扩展协议编解码、高性能RPC通信框架、名字路由与发现、发布监控、日志统计、配置管理等于一体,通过它可以快速用微服务的方式构建自己的稳定可靠的分布式应用,并实现完整有效的服务治理。
TARS是Linux基金会的开源项目,它是基于名字服务使用TARS协议的高性能RPC开发框架,配套一体化的运营管理平台,并通过伸缩调度,实现运维半托管服务。
把你组织中使用的协议快速地加入brpc,或定制各类组件, 包括命名服务 (dns, zk, etcd), 负载均衡 (rr, random, consistent hashing)
百度内最常使用的工业级RPC框架, 有1,000,000+个实例(不包含client)和上千种多种服务。”brpc”的含义是”better RPC”。
在 gRPC 里客户端应用可以像调用本地对象一样直接调用另一台不同的机器上服务端应用的方法,使得您能够更容易地创建分布式应用和服务。与许多 RPC 系统类似,gRPC 也是基于以下理念:定义一个服务,指定其能够被远程调用的方法(包含参数和返回类型)。在服务端实现这个接口,并运行一个 gRPC 服务器来处理客户端调用。在客户端拥有一个存根能够像服务端一样的方法
c++11, high performance, cross platform, easy to use rpc framework.
二进制串:序列化所生成的二进制串指的是存储在内存中的一块数据。C++语言具有内存操作符,所以二进制串的概念容易理解,例如,C++语言的字符串可以直接被传输层使用,因为其本质上就是以’ ’结尾的存储在内存中的二进制串。在Java语言里面,二进制串的概念容易和String混淆。实际上String 是Java的一等公民,是一种特殊对象(Object)。对于跨语言间的通讯,序列化后的数据当然不能是某种语言的特殊数据类型。二进制串在Java里面所指的是byte[],byte是Java的8中原生数据类型之一(Primitive data types)。
数据结构和对象:对于类似Java这种完全面向对象的语言,工程师所操作的一切都是对象(Object),来自于类的实例化。在Java语言中最接近数据结构的概念,就是POJO(Plain Old Java Object)或者Javabean--那些只有setter/getter方法的类。而在C++这种半面向对象的语言中,数据结构和struct对应,对象和class对应。
业界有名的 zeromq 核心代码也是用 C++ 编写,如果想深入研究消息队列,可以从这入手试试,下面给出项目主页和门户网站。
学习 moduo 源码可以配合陈硕的《Linux多线程服务器端编程》,这本书以muduo 网络库为例,讲解这种编程模型的使用方法及注意事项,重点讲解一种适应性较强的多线程服务器的编程模型,即one loop per thread。
下面会介绍几个 C++ 后台开发中,具有代表性的项目和开源框架,做后台开发,这些项目你或多或少会使用到,了解一些项目源码自然更好。
YAML 也是一种类似XML和JSON一样的配置文件语言,YAML 的意思其实是:”Yet Another Markup Language”(仍是一种标记语言),是专门用来写配置文件的语言,相比 JSON 更加简洁和方便阅读。
我们经常需要在项目中处理 XML 配置文件,有没有想过自己编写一个简单通过的XML解析器,这里就是一个用C++ 编写的,非常简单小巧的 XML 解析器,可以很容易地集成到其它项目中,出于C++学习目的的话,你也可以把代码下载下来学习练手。
json11 is a tiny JSON library for C++11, providing JSON parsing and serialization.
在后台项目中需要经常处理配置文件解析工作,这些配置文件可以是XML、JSON或者是YAML等格式的标记语言文件,下面这几个项目就是几个不错的文件解析器,代码可读性好。
这是一个 C++11编写的轻量级 Redis 客户端,具有异步、线程安全、无依赖、pipelining、跨平台等特性。代码量不大,可以学习如何编写一个简洁高效的网络通信客户端程序,另外项目采用了C++11编写,通过这个开源项目,你还可以学习如何使用这些语言新特性。
经过我前面介绍的C++学习书籍、博客网站、在线视频学习网站(没有看过的同学可以到我的主页翻看),相信大家已经有一些C++基础的,有了理论,需要通过项目来提升自身技术能力,下面推荐几个开源项目:
C++设计模式代码实现。软件设计模式是解决面向对象设计环境中反复出现的问题的通用可重用解决方案。这不是可以直接转换为源代码的最终设计,而是解决问题的模板。我们可以按目的将它们分为创建性(抽象实例化过程),结构(如何将类和对象组成更大的结构)和行为模式(对象之间的职责分配)。
spdlog::info(“Positional args are {1} {0}..”, “too”, “supported”);
spdlog::critical(“Support for int: {0:d}; hex: {0:x}; oct: {0:o}; bin: {0:b}”, 42);
各种日志目标:循环日志文件。每日日志文件。控制台日志记录(支持颜色)。系统日志。Windows调试器(OutputDebugString(..))使用自定义日志目标可以轻松扩展(只需在接收器接口中实现单个功能)。
该项目的动机是为Matrix提供本机桌面应用程序,感觉更像是主流聊天应用程序(Riot,Telegram等),而不像IRC客户端。使用高版本Qt和VS开发。
又一个2048游戏。游戏逻辑用C ++编写,GUI用Qt 5.2.1编写。整个GUI是用代码编写的,没有使用Qt Creator的UI设计器。使用观察者模式将内核与GUI分离,因此很容易提取代码,提取内核然后围绕它构建新的GUI。
兼容性:QtAV可以同时使用Qt4和Qt5,FFmpeg(> = 1.0)和Libav(> = 9.0)来构建。建议使用最新的FFmpeg版本。
OpenGL和ES2支持几乎所有格式,包括Hi10P视频(ES2中的第1个播放器/库支持10bit?VLC,XBMC,mplayer现在不支持)
硬件解码支持:DXVA2,VAAPI,VDA / VideoToolbox,CedarX,CUDA(第一个播放器在Linux上支持CUDA吗?)
一款支持 PDF 手写注释的笔记软件,支持 Linux、Windows、macOS 平台。看书的时候喜欢标注、做笔记,那这款工具肯定适合你。
auto result = pool.enqueue([](int answer) { return answer; }, 42);
一个使用 C++ 17 开发的终端模拟器。可在 Windows、Linux 和 MacOS 三大平台使用,支持字体连字 Font Ligatures(例如 Fira Code 字体)、GPU 加速渲染、背景模糊(Win10、KDE)、256 色、True Color 和配色主题。
免费开源的 Nintendo Switch 模拟器。刚刚开源的项目小项目在哪学的比较好一点,目前仅支持 Windows、Linux,部分主流游戏:塞尔达传说、宠物小精灵、马里奥等。
这是一个用 C++ 和 Qt 开发的记事本项目。支持代码高亮、自定义字体样式,还可以命令行呼出:notepanda main.cpp,支持 Windows、Linux 和 MacOS 三大系统。可作为学习 Qt、如何做开源项目的实战。
一个用来把伪代码生成纯字符流程图的小工具。让使用者仅需要写一段简单的伪代码,便可以生成对应的流程图。该项目结构清晰、使用简单,代码量少适合使用和“把玩”。示例图如下:
一个基于 C++ 实现的多画面播放器。能播放文件源、网络源、设备捕获源,界面为多画面监控网格,可自由切换多画面风格,支持拖拽与合并。适合想要入门音视频、播放器开发的小伙伴们学习,该项目用到的技术栈:
一个免费开源、跨平台的可视化源码探索项目。能够十分高效的帮助使用者探索、熟悉陌生的代码,支持 C、C++、Python 和 Java 语言,同时提供了相关 SDK 用于拓展支持其它语言,相信在未来会提供更多语言的支持。程序员在它的帮助下可以快速熟悉陌生项目、学习开源项目、框架等,此等利器赶快去试试吧。
分享几个适合初学者的C语言/C++开源项目!涉及从基础语法到算法
项目简介:tmux一个开源免费的终端复用软件。它的命令行界面非常炫酷易用,支持自由分割窗口,并且可以自由移动和调整,灵活且强大。一个非常强大的使用场景是:当远程连接到服务器使用时,只需要启动tmux,利用它就可以方便地进行后续操作,而无需打开多个ssh控制台窗口。
项目简介:C PlusPlusThings是一个适合初学者的从入门到进阶的仓库,里面包含了大量 C++语言的基础和进阶教程、源码剖析、工具推荐、实战练习等等,解决了初学者从入门到深入 C++的学习问题。
专题:
农村创业坑
农村里创业
农村创业县