我们都知道,C++是所有语言的基础 !记得在大学毕业之后,做了C++的后端开发当然还有一些嵌入式的相关的工作,到现在换工作,工作机会依然那么多,到了一定的阶段,我想你不是在找工作,而是工作在找你 !
C语言作为系统设计语言,编写工作系统应用程序,但是随着标准版本的演进,C++ 里包含的东西也越来越多。 比如你要学习的C++的技术栈有:C/C++,Linux,Nginx,ZeroMQ,MySQL,Redis,fastdfs,MongoDB,ZK,流媒体,CDN,P2P,K8S,Docker,TCP/IP,协程,DPDK等等多个知识点都需要去学习的
如变量、数据类型、运算符等。了解控制流语句,如条件语句、循环语句等。在学习变量的时候,最重要的volatile、mutable、unique_ptr,此外还有函数的定义和调用,特别是实参和实惨的传递,举个例子:
如果在函数调用过程中,进行参数的传递,如果是不可变对象,则函数体的修改不会影响实参的值 ,如果是可变对象,在函数体内的修改会影响到实参的值 这也是面试中常温的一个问题!
类、对象、继承、多态等。在学习的时候,一定要去掌握C++的标准库,如输入输出流、容器、算法等。学习异常处理和模板编程。比如,智能指针:shared_ptr,weak_ptr,std::exception,try/throw/catch,noexcept,短发的话,可以去了解遍历算法,排序算法,查找算法
你可以每天不停地用C+写一个小算法,比如快排,倒叙,Tree算法,如有有必要,可以给自己定义一个小目标,每天刷一个算法,我每天还在坚持一篇算法,去大公司的时候是非常的必要的一个考点!
其实个人觉得高级特性还是蛮多的,比如内存管理,包括动态内存分配和智能指针,文件操作和异常处理机制。学习C++的多线程编程和并发控制,这个时候可以写一些小程序了,向文本中做个打印机的效果,写个五子棋的小游戏之类的
在使用C++开发网络通信功能时,首先需要选择一个合适的网络库。一个好的网络库不仅能提供丰富的网络功能,还能提供高性能的网络通信。
一些常用的C++网络库有Asio,Boost.Asio,POCO个人建议是使用POCO。毕竟是一个轻量级的C++类库,其中包含了许多工具和组件,包括网络通信。POCO的网络库提供了一组简单易用的类,支持TCP、UDP和HTTP等网络协议。
根据不同的需求和使用场景,可以选择合适的网络库来开发高性能的网络通信功能。
比用C++30行代码就可以实现编写一个简单的聊天程序
数据库对于以后工作是肯定会用到的,如果有时间建议将基础打好,可以先看数据库系统概念,了解数据库的基础知识 ,Mysql服务器的安装与配置 、数据表的的新建、查询等CRUD、事物的使用以及其ACID特性,特别是作为C++开发者来讲,常用的sql语言,ddl语言,数据的优化,建索引,视图,触发器,存储过程啊,数据库备份啊,游标啊,等等,很多要会的。
常用 SQL 操作
当你学会INSERT, SELECT, UPDATE, DELETE几种操作的SQL语法以及如何来操作数据库的时候,你就可以做一个完整的小项目了!
C++的语法除了一大堆的对象,模式定义, 其中最难的地方在于对内存的理解掌握,以及对指针的理解掌握, 这个不是看几天书,写几行代码就能摸透的,需要大量的时间与实践.
包括开发摄像头接入组件,onvif接入、rtsp接入;
另外ffmpeg,以及MFCwindows界面开发,毕竟现在C++可以结合AI做一些大规模语言模型的一些支持,毕竟目前ACGI字当前最流行的一门技术了
在学校书籍的时候,当然可以一边阅读一边敲代码,照着书本的实例或者习题撸一遍代码。
入门级书籍
《C++ Primer》
内容很全面,循序渐进,非常适合自学。这本书籍C++对象在内存中是怎么存储,以及成员函数是如何调用。每章末设计了大量复习题和编程练习,帮助读者巩固所学知识和提高实际编程能力。
《C++编程规范(C++ Coding Standards) 》
“编程规范”这里并不是”代码缩进要用几个空格”。这本书包含了101个例子、惯用法、缺陷,通过这些可以帮助你编写正确、清晰高效的C++代码。书中对每一条 规范都给出了精确的描述,并辅以实例说明;从类型定义到错误处理,都给出了最佳的C++实践
《大规模C++程序设计》
本书介绍了如何管理大规模C++软件项目的技术,比如你可以把把当前的项目代码作了不小的重构,主要是从程序的物理结构方面,分层更明确,实现隐藏更彻底,编译耦合进一步降低,自己感觉还不错哦!
《C++性能优化指南》
书中从多个角度深入浅出地介绍了 C++ 的性能优化方法,包括 CPU 缓存、指针和引用、内存池、智能指针等多个方面。同时,书中也提供了大量的代码实例和性能测试数据,帮助读者更好地理解和实践这些优化方法。
此外还有
《More Effective C++中文版》
《C++ STL 中文版》
《Effective C++》
《Accelerated C++中文版》
《C++设计新思维》
《C++代码设计与重用》
技术点:tcp服务器,如何升级https服务器,epoll的实现,reactor的原理与实现,百万并发,websocket协议,Redis,memcached。nginx网络组件.UDP可靠传输,QUIC,kcp.posixAPI网络协议栈 ,比如你可以利用redis写一个中间件之类的
visual studio
号称全宇宙第一IDE,可以用来开发c++、c#、asp等,现在很多公司和个人都在用,方便团队协作,开发效率高,使用起来非常方便。
code blocks
也是一个开源的IDE,可以跨平台,也就是说windows、linux、macOS都可以用。
MinGW
MinGW 是一组包含文件和端口库,其功能是允许控制台模式的程序使用微软的标准C运行时(C Runtime)库(MSVCRT.DLL),该库在所有的 NT OS 上有效,在所有的Windows 95发行版以上的 Windows OS 有效,使用基本运行时,你可以使用 GCC 写控制台模式的符合美国标准化组织(ANSI)程序
GNU C
他是一个按照LGPL许可协议发布的,公开源代码的,免费的,方便从网络下载的C的编译程序!
Dev-C++
Dev-C++是一款小巧方便的编译器,开源的c++ ide,一键下载安装,无需任何多余配置,有中文版本 。就给那些刚刚学习编程的同学讲一下这个软件的安装和基本的编译以及一些使用的技巧
看遍代码一万行,不如下场写一行. 任何一门编程语言的学习,都需要做到有的放矢——项目实战。离开了项目实战,阅读编程书籍学习效率将大打折扣 要在代码里进行一遍一遍的历练, 实际敲过,运行过,调试过的代码,才是真正被你掌握的代码!
举个例子
一个开源的TinyHttpd项目,麻雀虽小,五脏俱全。我们都知道Tiny 为极小的,Http 为应用层协议,当我们输入网址回车的那一刻就看到页面上想看到的内容,这里就涉及到HTTP协议。
这个项目可以让你清楚的了解 Http 请求头,响应头等细节信息,同时代码中使用多进程的方式对 Http 进行了实现。
对初学者的新手而言,则是应当静下来,不必心浮气躁。C++是一门啃着最有滋味的编程语言,痛苦并快乐着。要变成C++的开发人员,必须要坚持不懈的去学习和实践项目,只要你行动起来,就一定能学好!
转载:https://www.zhihu.com/question/31151252/answer/3210449780