大家好,我是程序喵。
好多同学跟我反馈说想要我带着实战一个C++项目,我想了好久,最终决定做一个埋点相关的客户端SDK。
为什么要做客户端SDK?
我看过很多校招生C++简历中的项目经验,几乎清一色的Web Server,但其实现在C++在后端领域岗位相对比较少,貌似只有量化领域和某些游戏公司在使用C++做后端。
如果大家想做后端方向的话,我建议去学习Go或者Java,可能会比C++更适合一些。
C++现在主要应用在嵌入式领域、人工智能工业化、游戏等方向,很多移动端应用底层为了跨平台,也会使用C++,比如编解码能力、音视频能力、人脸识别能力等,都是使用C++开发,然后编译出可以在多平台运行的SDK,给业务方程序员使用。
很多企业也会用QT C++做桌面端应用,这种岗位需要了解QT的相关API使用,甚至是原理,但想做合格的桌面端程序,还是要深入学习C++才行。
所以,虽然很多人在唱衰客户端,但唱衰的很多都是客户端开发页面的程序员,因为现在比较流行大前端,页面很多可以用Flutter等跨平台相关的组件或前端语言开发,不太能唱衰的到C++。
而且在大企业中,相关的程序性能至关重要,想要高性能,几乎都要用到C++或C,当然,Rust也行,但现在Rust在国内岗位相当少,盲目走Rust方向风险比较高。
为什么要做埋点SDK?
任何一款客户端应用在线上运行,我们需要监控它的在线状态,比如日活、是否有崩溃、崩溃率、某些模块运行过程中是否出现异常、用户频繁使用哪些功能等等。
这些都需要团队内部的成员可以感知到,拿到这些数据,方便产品运营人员修正迭代产品功能,方便开发人员排查线上问题等。
所以一般客户端应用都需要做很多埋点,把客户端应用运行过程中的相关数据传回到团队内部。当然,上面的某些能力可以当做一个特定产品需求开发,不需要走埋点。
不过在线上,场景非常复杂,比如用户的使用方式、用户的操作系统、硬件等都千差万别,程序不会绝对稳定,代码中的异常位置通常不确定,所以需要开发人员在代码中做很多埋点,出现问题可以及时反馈回团队内部,团队做数据追踪和分析,进而快速修复问题。
所以,这里其实就可以成立一个小组,产品主要有埋点客户端SDK + 网站 + 后端,客户端SDK可以给公司内的多个APP业务部门去集成,然后埋点数据上报到后台,各个业务部门可以在管理端查看搜索相关埋点,再提供聚类和分析能力,就更完美了。
不过这个项目中,我们只会做客户端SDK,后端我会做一个模拟的mock server,只负责接收数据和返回固定body。
平台
因为大多数同学都使用Windows电脑,所以咱做的是Windows SDK,但因为使用的是C++语言,其实可以跨平台到Linux、MacOS、Android、iOS等,只需要把Windows平台相关特性的代码去掉,并且改动Cmake配置即可。
相关知识点
整个埋点SDK功能不多,代码量不大,但麻雀虽小五脏俱全,整个项目会涉及到很多C++相关的知识点:
- C、C++
- C++ 新特性
- 线程池
- 定时器
- Windows 注册表操作
- 数据库操作
- 文件系统相关操作
- 时间相关操作
- 日志系统
- Json
- 加解密
- HTTP、HTTPS网络请求
- 网络通信协议的设计
一个大型项目涉及到的技术点,咱这个项目应该多数都会用到。对于学习进阶C++、提升项目经验,我认为还是非常有帮助的。
后面我会用大概15篇左右文章(大概每周更新2篇,还会不定期更新加餐文章),带大家从0到1做这个项目,并提供相关源代码,对代码感兴趣的朋友可以先行查看:https://github.com/chengxumiaodaren/BuriedPoint 。
🚀 【C++埋点SDK实战】开篇啦! 🚀
大家好,我是程序喵!👋 这次我将带大家从0到1实战一个C++埋点客户端SDK项目!🎯
为什么要做埋点SDK?
任何客户端应用都需要监控运行状态,比如日活、崩溃率等,埋点SDK就是为此而生!📊
项目亮点:
✅ 跨平台:Windows、Linux、MacOS、Android、iOS
✅ 涵盖C++核心知识点:线程池、定时器、网络请求、加解密等
✅ 实战经验:提升C++技能,丰富项目经验
每周更新2篇,还有加餐文章哦!🍰 对代码感兴趣的朋友,可以先查看GitHub源码:https://github.com/chengxumiaodaren/BuriedPoint
#C++ #埋点SDK #实战项目 #程序员进阶
快来加入,一起学习吧!💻✨