有没有什么好的C++项目推荐?

news2024/11/17 23:34:00

据我粗略估计,问我“有没有什么好的C++项目推荐“这个问题出现的频率仅次于“问我帅不帅“。

「C++」是一门贴近底层的语言,不像「Java」那样能够快速搭建一个业务系统,比如「XX」秒杀系统、「XX」电商系统这种看着“高大上“的项目,「C++」一般只能用来做一些“轮子”。

轮子:一般指我们封装好的组件、库等底层组件。

我这两天花时间整理了一下,推荐几个个人觉得还不错的C++项目,难度由易到难、逐渐增大。

1、手把手教你从零开始实现一个JSON

『Json』是一种用于数据交换的文本格式,可用于任何编程语言。一般来说一个动态网页想从服务器获得数据时,服务器首先从数据库查找数据,然后将数据转换成JSON文本格式再进行网络传输的。
Json格式如下:

{
"title": "Design Patterns",
"subtitle": "Elements of Reusable Object-Oriented Software",
"author": [
  "Erich Gamma",
  "Richard Helm",
  "Ralph Johnson",
  "John Vlissides"
],
"year": 2009,
"weight": 1.8,
"hardcover": true,
"publisher": {
  "Company": "Pearson Education",
  "Country": "India"
},
"website": null
}

这个项目还可以,是从 0 开始一步一步教你做的。项目作者是腾讯『T4』大佬, 曾参与《天涯明月刀》、《斗战神》、《爱丽丝:疯狂回归》等游戏项目的制作,而且也是《C++ Primer 中文版(第五版)》的审校人之一…反正是一个大佬就是了

链接:https://github.com/miloyip/json-tutorial

2、实现属于你自己的 STL

一个合格的C++程序员是必须要会STL的,其中的容器、算法在刷各种OJ平台上的题的时候简直是无往而不利,堪称一大利器。我知道有很多同学都有想过写一个属于自己的STL,你猜对了,我也想过,但没行动过

『MyTinySTL』这个项目把你我想的做了,它是基于C++11tinySTL,其中实现了大部分STL中的容器与函数 ,所以你也是完全可以照着它来实现自己的STL的,做完就变成你的项目了。

链接:https://github.com/Alinshans/MyTinySTL

3、烂大街的HTTP服务器

这个似乎成了『Linux C/C++』技术栈人手一个的项目了?

虽然这个项目烂大街了,看着也挺简单的,不过能玩的花样还是不少的,比如加入代理功能、添加支持CGI功能或者加入日志记录等。

它越简单,你可以做的改进就越多。相应的,在面试的时候,你就可以跟面试官聊你的改进和你添加的功能也就越多,面试官是很愿意看到你的自己在做一个项目时的思考和改进的。偷偷跟你说,这种在前人项目基础上的改进是很加面试分的。

这里我推荐牛客大佬健康成长天线宝宝啊的『HTTP』的服务器,这位大佬在阿里云做平台开发。他在牛客上写的C++求职/基础架构路线的文章非常不错,真心推荐那些想要走C++路线的同学去牛客网看看他的帖子。

健康成长天线宝宝啊个人主页:https://www.nowcoder.com/profile/2765647?noredirect=true

健康成长天线宝宝啊项目链接:https://github.com/linyacool/WebServer

不瞒大家说,我在秋招的时候也做了一个『HTTP』服务器,是在看完游双老师的《Linux高性能服务端编程》,在『TinyHttpd』的基础上加以改良的。这里也推荐下自己的破产版HTTP服务器项目,主要加入了CGI功能,也支持get/post两种请求方式,采用双管道方式进行通信。

阿秀个人项目链接:https://github.com/forthespada/MyPoorWebServer

4、实现一个多线程网络服务器

这个是我在github上发现的,这里直接搬运一下该项目的说明吧。

本项目为C++11编写的基于『epoll』的多线程网络服务器框架,应用层实现了简单的HTTP服务器HttpServer和一个回显服务器EchoServer,其中『HTTP』服务器实现了HTTP的解析和get方法请求,目前支持静态资源访问,支持HTTP长连接;该框架不限于这两类服务器,用户可根据需要编写应用层服务。

通过该项目你可以了解到部分C++11的语法和编码规范、学习巩固网络编程、网络IO模型、多线程、git使用、Linux命令、性能分析、TCP/IP、HTTP协议等知识。

链接:https://github.com/chenshuaihao/NetServer

5、从0开始手把手教你做的服务器框架

说实话,这个算是比较难的C++项目了,是我在B站发现的一个可以跟着学的项目,我看了底下的评论,相当不错。

这是一个『C++』高性能分布式服务器框架 的项目,我已经确认过了,是新手不要尝试的那种难度。

该项目主要有 13 大模块组成,分别是日志模块、配置模块、线程模块、协程模块、协程调度模块、IO协程调度模块、Hook模块、Socket模块、ByteArray序列化模块、TcpServer模块、Stream模块、HTTP模块、Servlet模块。

B站视频教程:https://www.bilibili.com/video/av53602631?from=search&seid=9029288577396826503

服务器框架链接:https://github.com/sylar-yin/sylar

6、做个操作系统内核吧

《深入理解计算机系统》这本书大家应该都听说过吧,被誉为“跟金子一样珍贵的计算机基础书籍”,如果你还没看过,赶快去买一本补补功课。

这本书也是美国麻省理工学院推荐的计算机书籍之一,课后的一些lab也会布置给上课的学生。你完全可以实现其中一些不错的小lab来作为自己的『C++』项目,而且试想一下,面试官问你的项目背景是什么的时候,你直接告诉他“这是美国麻省理工学院的计算机专业学生的结课大作业”,难道没有分量吗?不能装逼吗?

建议先看一下B站『MIT 6.828』视频,再去动手亲自实践。

《CSAPP》课后lab链接:https://github.com/woai3c/MIT6.828

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/592470.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

python按行写入json文件,每一行都是一个标准json对象,但是整体文件却非json对象

今天这篇文章主要是一个小小的偏向于应用的实践,为啥会写这个,还要回溯到2017年,那时候做项目的时候有一个是要做数据处理分析的工作,给到我的数据集我拿到的时候总觉得怪怪的,每一行都是一个字典对象,但是…

聊聊部署在K8S的项目如何获取客户端真实IP

前言 最近部门有个需求,需要对一些客户端IP做白名单,在白名单范围内,才能做一些业务操作。按我们的部门的一贯做法,我们会封装一个client包,提供给业务方使用。(注: 我们的项目是运行在K8S上&a…

LAMP的实战应用之部署wordpress论坛,并实现正常访问登录论坛

目录 环境配置: 一、安装配置基础环境 步骤一:配置本地yun 步骤二:安装Remi 仓库配置包(清华源获取) 步骤三:配置Remi 仓库配置包 步骤四:安装php的加速器配置 步骤五:启动服…

Cesium实战 - 实现大气云层效果

Cesium实战 - 实现大气云层效果 Cesium 实现大气云层效果主要思路核心代码在线示例 Cesium 实现大气云层效果 在实际开发中,一般会有天气的效果,雨雪雾比较常见,相关的博客也很多,但是关于云层的天气效果还是比较少,而…

【调峰】储能辅助电力系统调峰的容量需求研究(Matlab代码实现)

💥💥💞💞欢迎来到本博客❤️❤️💥💥 🏆博主优势:🌞🌞🌞博客内容尽量做到思维缜密,逻辑清晰,为了方便读者。 ⛳️座右铭&a…

经典神经网络(6)ResNet及其在Fashion-MNIST数据集上的应用

经典神经网络(6)ResNet及其在Fashion-MNIST数据集上的应用 1 ResNet的简述 ResNet 提出了一种残差学习框架来解决网络退化问题,从而训练更深的网络。这种框架可以结合已有的各种网络结构,充分发挥二者的优势。 ResNet以三种方式挑战了传统的神经网络架…

【LeetCode】342. 4的幂

342. 4的幂(简单) 方法一:二进制 思路 首先考虑一个数字是不是 2 的整数次方:如果一个数字 n 是 2 的整数次方,那么它的二进制一定是 0...010...0 这样的形式,将它和 -n 按位与的结果一定是它本身。如果 …

前沿质谱应用沙龙分享会暨苏州百趣落成仪式即将开幕!

质谱作为一项医学检验新技术,凭借高特异性、高灵敏度、多指标检测等优势,成为了体外诊断领域最富生命力的新技术之一。目前质谱技术能够准确的测定多种生物小分子代谢物,且质谱在大分子物质例如蛋白质方面也应用的非常广泛。目前,…

要电脑重装系统装在哪个盘最好

在进行电脑重装系统时,选择一个合适的系统安装盘是非常重要的。本文将为您介绍如何选择最佳的系统安装盘,以确保系统性能和稳定性的最佳表现。 工具/原料: 系统版本:windows系统 品牌型号:华硕VivoBook14 软件版本…

张小龙发明了小程序,是否意味着失败?

今天微信小程序上线,从开发到上线仅仅用了四天时间,这是一个了不起的成就。 小程序诞生以来,一直存在着一种声音:它是张小龙“伟大的发明”,是微信“伟大的创新”。然而,张小龙在小程序发布会上宣布&#…

Spark SQL概述、数据帧与数据集

文章目录 一、准备工作1、准备数据文件2、启动Spark Shell 二、加载数据为Dataset1、读文件得数据集 三、给数据集添加元数据信息1、定义学生样例类2、导入隐式转换3、将数据集转换成学生数据集4、对学生数据集进行操作(1)显示数据集内容(2&a…

认识熟悉 Stable Diffusion(SD)基本参数

界面样式 界面参数 界面参数说明prompt希望生成的图片的描述negative prompt不希望在图片中出现的描述Batch size每次生成的图片个数Width图片宽度Height图片高度 这里需要注意的就是尺寸,尺寸并非越大越好,需要根据自己的配置和需求适当调整&#xff…

node.js+vue学生读书笔记共享分享系统

从上面的描述中可以基本可以实现软件的功能: 1、开发实现读书笔记共享平台的整个系统程序; 2、管理员;首页、个人中心、用户管理、笔记分享管理、个人笔记管理、管理员管理、交流互动、系统管理等。 3、用户:首页、个人中心、笔记分享管理、个人笔记管理、我的收藏管理。 4、前…

Window10配置Maven详细教程

文章目录 一、Maven概述二、Maven下载三、配置Maven环境变量四、查看Maven是否配置成功五、为Maven配置本地仓库以及指定远程仓库5.1 Maven构件搜索顺序5.2 Maven配置本地仓库5.3 Maven指定远程仓库 一、Maven概述 Maven是专门管理和构建Java项目的工具,Maven的主要…

Linux nohup-后台挂起运行程序神器

一. 场景描述 天黑了,我得离开实验室去吃饭了。为了环保,我必须关闭电脑,减少不必要的浪费!正常情况下当我关闭终端或电脑时,上面运行的任务代码即会自动停止,但我依旧希望保持代码的正常运行,此…

Android 更新后跑不起来?快来适配 AGP8 和 Flamingo/JDK 17

随着 Android Studio Flamingo 正式版的发布,AGP 8(Android Gradle Plugin 8)也正式进入大家的视野,这次 AGP 8 相关更新属于「断代式」更新,同时如果想体验 AGP 8,就需要升级到 Android Studio Flamingo 版…

揭秘速卖通卖家成功的绝佳秘籍,助您打造畅销店铺!

在竞争激烈的速卖通市场中,如何让您的店铺脱颖而出并实现畅销?林哥今天就跟大家讲一讲一些成功速卖通卖家的绝佳秘籍,帮助您引导高流量和高转化率,成就一个畅销的店铺。 ​一、精确定位目标受众 成功的速卖通店铺离不开精确的目标…

自动生成作文的软件有哪些?盘点五种自动生成作文软件

写作是一项需要花费大量时间和精力的任务,而自动生成作文的软件可以帮助我们节省大量的时间。这些软件通过分析和归纳大量的素材和语言模型,能够快速生成高质量的文章。相比于传统的写作方式,使用自动生成作文软件可以更快地完成文章&#xf…

一套完整的客户管理系统应该包含哪些模块呢?

一套完整的客户管理系统应该包含哪些模块呢? 想要弄清楚一个完整的客户管理系统应该具备哪些功能,首先得清楚系统使用者、使用场景以及主要功能这三个因素。 以我们公司为例: 主要使用者:运营人员、市场人员、产品人员。主要目…

Android Settings中Preference的理解以及使用

Preference 是Android App 中重要的控件之一,Settings 模块大部分都是通过 Preference 实现 优点: Preference 可以自动显示我们上次设置的数据,Android提供preference这个键值对的方式来处理这种情况,自动保存这些数据&#xff…