-
Hello World (C++基础和CMake)
- 学习基本的C++语法
- 编译并运行你的第一个C++程序
- 学习如何使用CMake来管理你的项目,包括如何引用第三方库
- 掌握基础的C++特性,如类、继承、模板、STL等
-
HTTP Requests and JSON Parser (网络编程和数据处理)
- 使用C++发出HTTP请求
- 处理服务器的响应
- 利用第三方库处理JSON数据
- 增加错误处理、重试、超时等特性
-
Memory Management in C++
- 学习C++中的内存管理机制,理解栈(stack)和堆(heap)的区别
- 理解和使用智能指针(如unique_ptr和shared_ptr)进行内存管理
- 学习如何防止内存泄漏和其他常见的内存问题
-
C++ Advanced Features (C++的高级特性)
- 学习和理解C++17中新增的特性,包括但不限于结构化绑定(Structured bindings)、if constexpr、std::optional、std::variant等,并通过实践加深理解。
- 深入理解左值、右值、左值引用、右值引用的概念,明白C++11引入的移动语义和右值引用,并通过实践了解其优点及适用场景。
- 探索模板的高级用法,包括理解和应用模板元编程,掌握一些常用的元编程技术,如SFINAE(Substitution Failure Is Not An Error,替换失败并非错误)、类型萃取等。
- 学习理解完美转发(Perfect Forwarding)的概念和用法,理解std::forward的工作原理,实践在函数模板中使用std::forward进行参数转发。
-
Multithreading (并行和并发)
- 学习C++的多线程编程、异步编程以及同步原语(如互斥锁和条件变量)
- 创建一个简单的项目,如一个并发的web爬虫
-
Web Server (网络编程深化)
- 学习套接字编程和HTTP协议,创建一个简单的Web服务器,能够处理基本的GET和POST请求
- 开始从一个单线程服务器开始,然后添加多线程或异步处理来支持并发连接
- 学习并处理一些网络编程中的错误情况
-
KeyValue Store (数据库和持久化)
- 创建一个简单的键值存储,学习如何在C++中进行文件I/O,以及如何将数据持久化到磁盘
- 尝试使用一些数据结构,如B树或哈希表,来优化查询性能
- 掌握如何处理并发写入和读取
-
Unit Testing in C++
- 学习C++的单元测试方法和工具,例如Google Test
- 学习如何编写可测试的代码,理解单元测试的重要性
- 为之前的demo添加测试
-
Vector Search with HNSWlib
- 学习HNSWlib的使用,创建一个简单的应用程序,如一个图像检索系统,来应用向量搜索
- 对HNSWlib的数据结构进行持久化,使其能够在程序重启后重新加载
-
Building Your Vector Database
- 将上述所有的技术整合到一起,创建你的向量数据库
- 在这个阶段,进行一些设计和架构的工作,处理一些更复杂的问题,如并发控制和错误恢复
- 在项目的开发过程中应用所学的错误处理和内存管理知识,确保代码的健壮性
- 利用单元测试方法和工具进行全面的测试,确保项目的可用性
- 支持数据持久化和恢复
-
Basic Graphics Programming with OpenGL (OpenGL图形编程基础)
- 学习OpenGL的渲染管线和基础概念
- 使用OpenGL创建窗口并渲染简单的2D形状
- 使用OpenGL渲染3D几何形状,并应用基本的光照模型
-
Basics of Filament Library (使用Filament库基础)
- 学习并理解Filament库的基本结构和主要类/函数
- 在C++程序中集成并配置Filament库
- 使用Filament创建简单的3D场景,例如添加光源、摄像机和基本几何体
- 学习和实现Filament的基本材质系统
- 使用Filament库加载和渲染3D模型
-
Physically Based Rendering with Filament (物理基础渲染与Filament)
- 学习物理基础渲染(PBR)的基本理论和技术
- 使用Filament库实现PBR渲染
- 在一个3D模型上应用PBR材质
-
Rendering Performance Optimization (渲染性能优化)
- 学习关于3D渲染性能优化的常见技术,如LOD、空间分区等
- 在Filament渲染中应用至少一种优化技术
- 通过工具进行性能分析,对比优化前后的效果
-
Video Streaming with WebRTC (使用WebRTC库进行视频流传输)
- 学习WebRTC的基本结构和API
- 使用WebRTC实现视频流的捕获
- 实现通过WebRTC进行视频流的发送和接收
-
WebRTC Screen Capture and Data Channels (WebRTC屏幕捕捉及数据通道)
- 学习WebRTC库的基本使用和结构
- 实现使用WebRTC捕获屏幕的视频流
- 学习WebRTC的数据通道,用于传输非音视频数据
- 实现使用WebRTC的数据通道发送和接收简单消息
-
WebRTC Video Codec (WebRTC视频编解码)
- 深入学习WebRTC的媒体流处理,包括音频视频编解码
- 实现H264编解码操作,理解编解码对于视频质量和网络传输的影响
- 使用WebRTC进行视频流的发送和接收,实现基于WebRTC的点对点视频通话
- 测试并优化视频流的传输效率,学习如何处理网络波动情况
-
IDD Driver (虚拟显示器)
- 学习虚拟显示器虚拟开发
- 接受虚拟显示器画面并通过WebRTC发送
-
Combining WebRTC with 3D Rendering (将WebRTC和3D渲染结合)
- 将3D渲染的结果作为WebRTC视频流的输入
- 实现WebRTC视频流的发送和在Web前端的接收
- 在Web前端实现视频流的播放
-
CUDA Environment Setup and Hello World (CUDA环境配置与Hello World)
- 学习如何在你的开发环境中配置CUDA
- 使用C++编写并运行你的第一个CUDA程序,例如一个简单的"Hello, World!"程序
- 使用CUDA并行执行一个简单的向量加法操作
-
CUDA Memory Management and Parallel Programming (CUDA内存管理与并行编程)
- 使用CUDA进行内存管理,包括设备内存和主机内存的分配和释放
- 学习并行编程基础,并实现并行化的向量运算
- 利用CUDA对向量运算进行优化,并评估和CPU实现的性能差异
-
CUDA Concurrency and Streams (CUDA并发处理与流 )
- 学习并实践使用CUDA流来并行执行多个内核或内存拷贝操作
- 使用CUDA并行处理多个向量运算请求
- 将并发处理技术集成到向量数据库中,进行性能评估和优化
-
Advanced CUDA Optimization Techniques (CUDA高级优化技术 )
- 学习并应用共享内存、常量内存和纹理内存等CUDA内存优化技术
- 对向量数据库进行高级优化,提高查询和计算性能
- 进一步优化并发处理和内存使用,确保数据库的稳定性和效率
-
CUDA Error Handling and Debugging (CUDA错误处理与调试 )
- 学习如何在C++中处理和检测CUDA程序中的错误
- 优化和调试向量数据库的CUDA实现
- 对整个项目进行全面的测试和优化,确保其可靠性和效率
-
Notifications
You must be signed in to change notification settings - Fork 0
szpnygo/cppstudy
Folders and files
| Name | Name | Last commit message | Last commit date | |
|---|---|---|---|---|
Repository files navigation
About
First commit on 2023/06/21
Resources
Stars
Watchers
Forks
Releases
No releases published
Packages 0
No packages published