C++ 作为元老级的编程语言,任时光更迭依旧屹立不倒。Gitee 上的 C++ 项目从人工智能、程序开发、到游戏和娱乐等方面都有涉及,以下是码云 Gitee 上优秀的 C++项目,希望对你有帮助:)
1、项目名称:车牌识别系统 EasyPR
项目简介:EasyPR 是一个中文的开源车牌识别系统,其目标是成为一个简单、高效、准确的车牌识别引擎。相比于其他的车牌识别系统,EasyPR 有如下特点:
它基于 openCV 这个开源库。这意味着你可以获取全部源代码,并且移植到java等平台。
它能够识别中文。例如车牌为 苏EUK722 的图片,它可以准确地输出std:string类型的"苏EUK722"的结果。
它的识别率较高。图片清晰情况下,车牌检测与字符识别可以达到80%以上的精度。
项目地址:https://gitee.com/easypr/EasyPR
2、项目名称:高性能中文车牌识别库 HyperLRP
项目简介:HyperLRP 是一个开源的、基于深度学习高性能中文车牌识别库,由北京智云视图科技有限公司开发,支持PHP、C/C++、Python语言,Windows/Mac/Linux/Android/IOS 平台。
项目地址:https://gitee.com/zeusees/HyperLPR
3、项目名称:人脸跟踪算法 HyperFT
项目简介:开源视频人脸跟踪算法,基于mtcnn人脸加测+onet人脸跟踪,移动端速度可以达到150fps+。该项目基于Android工程,提供底层JNI实现,使用者可以自行编译移植到其他平台。算法依赖ncnn深度学习计算库,体积小,易于集成。
项目地址:https://gitee.com/zeusees/HyperFT
1、项目名称:C++ 服务器框架 fastrpc
项目简介:高性能 c++ 服务器框架,封装了尽量易用协程特性,包括了:
协程下同步编码异步化(使得mysql/redis/socket在不用修改任何代码情况下同步自动转异步)
协程下定时器
协程下生产者消费者队列
甚至协程下的线程池
同时结合了rpc server、http server和游戏中的应用,提供完整的协程示例解决方案。
项目地址:https://gitee.com/feimat/fastrpc
2、项目名称:异步 RPC 框架 ftrpc
项目简介:ftrpc 是一个异步框架,真正的模块化运作。它只关心从 idl 中生成目标代码,而异于 Thrift 等自带通信组件的 RPC 框架。用户可以通过调用自己的 socket 或者 websocket 又或者别的什么组件去完成整个 RPC 动作。
项目地址:https://gitee.com/RonxBulld/ftrpc
3、项目名称:全平台 UI 框架 GuiLite
项目简介:GuiLite(超轻量 UI 框架)是6千行代码的全平台 UI 框架,可以完美运行在 iOS、Android、Windows(包含VR)、Mac、单片机和市面所有的 ARM Linux 物联网终端设备上。
GuiLite鼓励混合编程,开发者可以用 GuiLite 接管UI部分,用Swift,Java,Go,C#,Python发开业务部分。
项目地址:https://gitee.com/idea4good/GuiLite
4、项目名称:directui 界面框架 REDM
项目简介:REDM 是一套基于商业化标准的开源 directui 界面框架,不仅能提供完善的项目管理方案、详细的文档框架,也可轻松协助完成可视化界面设计,其核心库的稳定性已在内部多个大型商化项目中通过验证。
项目地址:https://gitee.com/hgy413/REDM
5、项目名称:Markdown 编辑器 Smark
项目简介:不想在修改文件时总是在编辑器、文字终端和浏览器间换来换去,所以本项目编辑器在后台调用 pandoc 将当前编辑的 markdown 内容转化为 HTML,而后将 HTML 在 smark 中的浏览器中显示出来。Smark 依赖于 pandoc、Qt 4.8 和 MathJax,在此向上述软件包开发者们致敬。
项目地址:https://gitee.com/elerao/Smark
游戏 & 娱乐
1、项目名称:跨平台单机麻将 mahjong
项目简介:基于最新版 Cocos2d-X 3.17 与 cocostudio V3.10 开发的单机麻将游戏,麻将算法为商业级麻将服务器端算法,整个项目代码精简、注释详细。 可以运行于iOS,Mac,Android,Windows平台。
项目地址:https://gitee.com/xiyoufang/cocostudio-mahjong
2、项目名称:碰碰球游戏 CollisionBall
项目简介:一个联网的趣味性小游戏—碰碰球,在游戏中通过操纵自己的小球吃掉随机产生的食物,不断壮大自己,或者撞击其它玩家,通过自己的体力和大小之间的关系和他人的体力与大小之间的关系决定谁是胜利者,还有30s一波的随机黑洞,刺激!
项目地址:https://gitee.com/lsylovews/CollisionBall
体验 码云企业版 - 码云 Gitee.com 有序规划和管理软件研发全流程
关注码云微信公众号:giteecom
发现更多优质开源项目:GVP-码云最有价值开源项目
无论做什么项目,在写简历时,最好要整理出项目中的技术点,思考如何跟面试官介绍你的项目,要经得起面试官的提问。项目的话,可以考虑做下面的这几个:
来源:https://t.zsxq.com/06vjQVRzr
基于各种网络库实现网络服务器/web服务器/http服务器等
做这个的就太多了,在github上搜一搜到处都是这个。面C++的很多都写了这个。
一个多线程网络服务器,
https://github.com/chenshuaihao/NetServer
TinyWebServer
Linux下C++轻量级Web服务器,助力初学者快速实践网络编程,搭建属于自己的服务器.
使用 线程池 + 非阻塞socket + epoll(ET和LT均实现) + 事件处理(Reactor和模拟Proactor均实现) 的并发模型
使用状态机解析HTTP请求报文,支持解析GET和POST请求
访问服务器数据库实现web端用户注册、登录功能,可以请求服务器图片和视频文件
实现同步/异步日志系统,记录服务器运行状态
经Webbench压力测试可以实现上万的并发连接数据交换
https://github.com/qinguoyi/TinyWebServer
迷你数据库
cpp_redis
这是一个 C++11编写的轻量级 Redis 客户端,具有异步、线程安全、无依赖、pipelining、跨平台等特性。代码量不大,可以学习如何编写一个简洁高效的网络通信客户端程序,另外项目采用了C++11编写,通过这个开源项目,你还可以学习如何使用这些语言新特性。
https://github.com/Cylix/cpp_redis/
写个操作系统。
这个在网上也有专门的课程,可以跟着 B 站 MIT 6.828 视频做。
MIT6.828 是 MIT 开源的一门操作系统课程--理论与实践相结合的经典。只要你跟着项目一步一步走,做完 6 个实验,就能实现一个简单的操作系统内核。
每个实验都有对应的知识点供你学习(也可以自行查找资料),学完理论知识后会有相应的练习,大多数都需要你手写代码。
边学边做,学习效果更加高效。
做这个项目之前建议看看下列资料:
x86汇编语言:从实模式到保护模式
xv6-chinese
操作系统导论或任意一本操作系统书籍
B站:https://www.bilibili.com/video/BV1px411E7ST/?from=search&seid=94735724635768212 https://github.com/woai3c/MIT6.828
日志系统
dbg-macro
打日志是 C++ 开发中必不可少的一种 debug 方式,dbg-macro 受 rust-lang 中 的 dbg 启发,提供比 printf 和 std::cout 更好的宏函数。
https://github.com/sharkdp/dbg-macro
Json解析库。
从零开始的 JSON 库教程
https://github.com/miloyip/json-tutorial
libjson
这是一个超级高效的JSON解析器,并且高度可定制的,非常轻巧。
https://sourceforge.net/projects/libjson/
实现属于你自己的 STL
基于 C++11 的 tinySTL,使用了中文文档与中文注释,刚开始是作为新手练习用途,直到现在已经发布了 2.x.x 版本。实现了大部分 STL 中的容器与函数,
https://github.com/Alinshans/MyTinySTL
从0教你做的服务器框架
该项目主要有 13 大模块组成,分别是日志模块、配置模块、线程模块、协程模块、协程调度模块、IO协程调度模块、Hook模块、Socket模块、ByteArray序列化模块、TcpServer模块、Stream模块、HTTP模块、Servlet模块。
https://github.com/sylar-yin/sylar
仿muduo,实现个人网络库
使用C++动手实现自己的网络库(参考Muduo)
本项目是参考陈硕老师的Muduo网络库,与Muduo的不同点:
去掉了Muduo库中的Boost依赖,完全使用C++标准,如使用std::function<>
没有单独封装Thread,使用C++11引入的std::thread搭配lambda表达式实现工作线程,没有直接使用pthread库。类似的直接使用C++11/17的还有std::atomic,std::any等
只实现了epoll这一个IO-Multiplexing,没有实现poll/select
异步日志模块前端不同与原作者的C++风格,是格式化字符串(fmt)风格,前后端异步日志写入使用陈硕老师双缓冲区的思想实现。由于只用于学习,不支持日志滚动功能
Buffer部分Muduo库没有提供writeFd方法,本项目加入了writeFd,在处理outputBuffer剩余未发数据时交给Buffer来处理
示例中仅实现了http服务器与echo服务器,使用了Apache Benchmark做了压测,详见下文
暂时没有做TcpClient部分
https://github.com/shiyu-ren/mymuduo
基于 C++ 和 Qt5 的音乐播放器
https://gitee.com/freedomzzq/IcePlayer
基于Qt,QCustomPlot,OpenCV等库实现图像分析处理系统
https://github.com/QiTianyu-0403/OpenCVImage
C++音视频 FFmpeg 播放 RTSP/Webcam 流
https://github.com/ikuokuo/rtsp-wasm-player