学习资料1:https://pan.baidu.com/s/15uq-LwUVJxq87xlOh1cuAQ 提取码: fxnk
学习资料2:https://share.weiyun.com/Av8n5sen 密码:rda6fw
本文给大家讲解几个C++的项目课程:
一、C++ 实现太阳系行星系统
项目使用 C++实现 OpenGL GLUT 实现一个简单的太阳系行星系统,将涉及一些三维图形技术的数学基础、OpenGL 里的三维坐标系、OpenGL 里的光照模型、GLUT 的键盘事件处理。
项目涉及的知识点:
C++ 语言基础
基本的 Makefile
基本的 OOP 编程思想
OpenGL GLUT 的结构基本使用
二、C++实现运动目标的追踪
这个项目是在前面一个项目的后续项目,利用 OpenCV 来实现对视频中动态物体的追踪。
项目涉及的知识点:
C++ 语言基础
g++ 的使用
图像基础
OpenCV 在图像及视频中的应用
Meanshift 和 Camshift 算法
本次实验要实现的效果是追踪太阳系中运动的行星(图中选择了浅绿颜色轨道上的土星,可以看到追踪的目标被红色的椭圆圈住)
三、C++ 实现银行排队服务模拟
项目使用 C++对银行排队服务进行模拟,以事件驱动为核心思想,手动实现模板链式队列、随机数产生器等内容,进而学习概率编程等知识。作为可选进阶,这个模型同时还能稍加修改的应用到 CPU 资源争夺模型中。
项目涉及知识点:
OOP 编程思想
std::rand() 函数原理
概率编程
排队理论
链式队列数据结构及其模板实现
事件驱动的设计
蒙特卡洛方法
CPU 资源争夺模型
时间片轮转调度
四、可以用几种方法创建 Visual C++ 项目:
可以使用项目模板(如 如何:创建 CLR 控制台应用程序 (C++/CLI))帮助你快速创建简单的项目。
你还可以使用应用程序向导来帮助你创建解决方案。解决方案可以包含许多项目,并且可以用 Visual Studio 附带的任何语言来编写。Visual Studio 开发环境可以处理项目之间的依赖项、单个项目的配置、项目部署和源代码管理。这种方法非常适用于较大型的应用程序。
你可以创建简单的文本文件,然后用 .cpp 扩展名保存它。使用 Win32 应用程序向导 创建一个空项目。将 .cpp 文件添加到 Visual Studio 环境中。此方法很适合非常简单、控制台样式的应用程序。
创建了项目后,可以使用代码向导和属性页管理项目的具体细节来管理它。
五、先决条件
设置适用于跨平台 C++ 开发的 Visual Studio
首先,安装 Visual Studio,然后选择“使用 C++ 的桌面开发”和“使用 C++ 的 Linux 开发”工作负载。 此最小安装仅为 3 GB。 根据下载速度,安装不应超过 10 分钟。
设置适用于跨平台 C++ 开发的 Linux 计算机
Visual Studio 不需要任何特定的 Linux 发行版。 OS 可在物理计算机上、VM 或云中运行。 也可以使用适用于 Linux 的 Windows 子系统 (WSL)。 但是,在本教程中,需要一个图形环境。 不建议在此处使用 WSL,因为它主要用于命令行操作。
Visual Studio 在 Linux 计算机上需要这些工具:C++ 编译器、gdb、ssh、rsync、make 和 zip。 在基于 Debian 的系统上,可以使用此命令安装这些依赖项:
sudo apt install -y openssh-server build-essential gdb rsync make zip
Visual Studio 需要有已启用服务器模式(至少为 3.8)的 Linux 计算机上的最新 CMake 版本。 Microsoft 生成可以在任何 Linux 发行版上安装的通用 CMake 版本。 建议使用此版本以确保拥有最新功能。 可从 GitHub 上的 CMake 存储库 Microsoft 分支获得 CMake 二进制文件。 转到该页面并下载与 Linux 计算机上的系统架构匹配的版本,然后将其标记为可执行文件:
wget <path to binary>
chmod +x cmake-3.11.18033000-MSVC_2-Linux-x86_64.sh
六、CppNet
CppNet一个封装在 TCP 协议上的 Proactor 模式 multi-thread 网络库。包含 OS 接口调用、回调处理、定时器、缓存管理等,这里有从操作系统到应用层的所有网络细节,便于初学者学习和实践。
简单:只导出了最少量的接口,其声明都类似系统 socket API。对客户端而言,只新增了一个 buffer 类型
快速:采用性能最优的 epoll 和 IOCP 做事件驱动。每个连接都独享一个内存池,从内存池中申请的内存都由智能指针管理
清晰:结构上分为事件驱动,会话管理,接口三层,通过回调向上通知。模块之间职责分工明确,最大的类不超过 500 行代码
有疑问加站长微信联系(非本文作者)