C++ 程序员入门需要多久,怎样才能学好?
我们都知道,C++是所有语言的基础 !记得在大学毕业之后,做了C++的后端开发当然还有一些嵌入式的相关的工作,到现在换工作,工作机会依然那么多,到了一定的阶段,我想你不是在找工作,而是工作在找你 !
C语言作为系统设计语言,编写工作系统应用程序,但是随着标准版本的演进,C++ 里包含的东西也越来越多。 比如你要学习的C++的技术栈有:C/C++,Linux,Nginx,ZeroMQ,MySQL,Redis,fastdfs,MongoDB,ZK,流媒体,CDN,P2P,K8S,Docker,TCP/IP,协程,DPDK等等多个知识点都需要去学习的
如何学习C++呢?
第一阶段,语法基础
如变量、数据类型、运算符等。了解控制流语句,如条件语句、循环语句等。在学习变量的时候,最重要的volatile、mutable、unique_ptr,此外还有函数的定义和调用,特别是实参和实惨的传递,举个例子:
如果在函数调用过程中,进行参数的传递,如果是不可变对象,则函数体的修改不会影响实参的值 ,如果是可变对象,在函数体内的修改会影响到实参的值 这也是面试中常温的一个问题!
第二阶段,C++核心
类、对象、继承、多态等。在学习的时候,一定要去掌握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数据库
数据库对于以后工作是肯定会用到的,如果有时间建议将基础打好,可以先看数据库系统概念,了解数据库的基础知识 ,Mysql服务器的安装与配置 、数据表的的新建、查询等CRUD、事物的使用以及其ACID特性,特别是作为C++开发者来讲,常用的sql语言,ddl语言,数据的优化,建索引,视图,触发器,存储过程啊,数据库备份啊,游标啊,等等,很多要会的。
常用 SQL 操作

当你学会INSERT, SELECT, UPDATE, DELETE几种操作的SQL语法以及如何来操作数据库的时候,你就可以做一个完整的小项目了!
一个脑图分享给大家

C++的语法除了一大堆的对象,模式定义, 其中最难的地方在于对内存的理解掌握,以及对指针的理解掌握, 这个不是看几天书,写几行代码就能摸透的,需要大量的时间与实践.
熟悉目前环境下一些云原生的开发,
包括开发摄像头接入组件,onvif接入、rtsp接入;
另外ffmpeg,以及MFCwindows界面开发,毕竟现在C++可以结合AI做一些大规模语言模型的一些支持,毕竟目前ACGI字当前最流行的一门技术了
C++学习书籍推荐
在学校书籍的时候,当然可以一边阅读一边敲代码,照着书本的实例或者习题撸一遍代码。
入门级书籍
《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写一个中间件之类的
学习C++推荐的5个编程软件
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
相关文章:
C++ 程序员入门需要多久,怎样才能学好?
我们都知道,C是所有语言的基础 !记得在大学毕业之后,做了C的后端开发当然还有一些嵌入式的相关的工作,到现在换工作,工作机会依然那么多,到了一定的阶段,我想你不是在找工作,而是工作…...
SpringBoot项目打war包部署到tomcat访问路径去掉项目名
方法一:手动修改包名 1.先将Tomcat webapp目录下文件全部删除 2.将war包文件放在webapps文件夹下 2.运行tomcat,war文件自动解压成文件夹 3.关闭tomcat,,将步骤2解压的文件夹直接改名为ROOT 4.重新运行tomcat,即可。 5…...
58同城面试
一、Java八股 1、ThreadLocal的底层原理是什么? ThreadLocal 在Java中用于提供线程局部变量,这些变量在每个线程中都有独立的副本,互不干扰。其底层原理可以简要描述如下: 数据存储: 每个线程中都有一个 ThreadLocalMap 的实例&…...
【数据结构】归并排序 的递归实现与非递归实现
归并排序 前言一、归并排序递归实现(1)归并排序的核心思路(2)归并排序实现的核心步骤(3)归并排序码源详解(4)归并排序效率分析1)时间复杂度 O(N*logN…...
Go的命令行工具开发:使用Cobra库
今天我们将深入探讨如何使用Go语言和Cobra库来开发命令行工具。 命令行工具在软件开发中有着广泛的应用,它们快速、高效,且易于自动化。 Go语言因其简洁、高效而被广泛用于命令行工具的开发。Cobra库则是Go中用于构建命令行工具的重要库之一。 为什么选…...
坚持#第420天~阿里云轻量服务器内存受AliYunDunMonito影响占用解决方法
阿里云轻量服务器内存受AliYunDunMonito影响占用解决方法,亲测有效: Mobax好卡啊,那就直接在阿里云后台操作即可,阿里云后台也可以上传文件。 Navicat mysql好卡啊,那就直接在阿里云后台最上面帮助的右边有个数据库&…...
时间序列聚类的直观方法
一、介绍 我们将使用轮廓分数和一些距离度量来执行时间序列聚类实验,同时利用直观的可视化,让我们看看下面的时间序列: 这些可以被视为具有正弦、余弦、方波和锯齿波的四种不同的周期性时间序列 如果我们添加随机噪声和距原点的距离来沿 y 轴…...
vue3的reactive源码解析
reactive源码解析 总结一句: reactive是个函数。reactive函数返回了一个createReactiveObject函数,createReactiveObject又返回了一个“经new Proxy实例化”的对象。 详细介绍: 我们使用时传给reactive函数一个对象类型target,reactive又将target传给cr…...
【ElasticSearch系列-04】ElasticSearch的聚合查询操作
ElasticSearch系列整体栏目 内容链接地址【一】ElasticSearch下载和安装https://zhenghuisheng.blog.csdn.net/article/details/129260827【二】ElasticSearch概念和基本操作https://blog.csdn.net/zhenghuishengq/article/details/134121631【三】ElasticSearch的高级查询Quer…...
Redisson初始
最近的自己,一直都在做些老年的技术,没有啥升级,自己也快麻木了,自己该怎么说,那必须行动起来啊!~来来,我们一起增长自己的内功 分布式锁的最强实现: Redisson 1.概念 在介绍之前,我们要知道这个Redisson是啥? 难道就是Redis的son?(我第一次就这么认为的哈哈!) 事实也的确如…...
【华为OD题库-018】AI面板识别-Java
题目 Al识别到面板上有N(1<N≤100)个指示灯,灯大小一样,任意两个之间无重叠。由于AI识别误差,每次识别到的指示灯位置可能有差异,以4个坐标值描述Al识别的指示灯的大小和位置(左上角x1,y1,右下角x2.y2)。请输出先行…...
[概述] 点云滤波器
拓扑结构 点云是一种三维数据,有几种方法可以描述其空间结构,以利于展开搜索 https://blog.csdn.net/weixin_45824067/article/details/131317939 KD树 头文件:pcl/kdtree/kdtree_flann.h 函数:pcl::KdTreeFLANN 作用:…...
[笔记] 汉字判断
参考博客:如果判断一个字符是西文字符还是中文字符 结论: 汉字转数字后,会占两位字符位,两位都是负数。 参考下面代码 输入:你 输出:01 #include<bits/stdc.h> using namespace std; int main() {cha…...
Android开发笔记(三)—Activity篇
活动组件Activity 启动和结束生命周期启动模式信息传递Intent显式Intent隐式Intent 向下一个Activity发送数据向上一个Activity返回数据 附加信息利用资源文件配置字符串利用元数据传递配置信息给应用页面注册快捷方式 启动和结束 (1)从当前页面跳到新页…...
nodejs+vue+python+php在线购票系统的设计与实现-毕业设计
伴随着信息时代的到来,以及不断发展起来的微电子技术,这些都为在线购票带来了很好的发展条件。同时,在线购票的范围不断增大,这就需要有一种既能使用又能使用的、便于使用的、便于使用的系统来对其进行管理。在目前这种大环境下&a…...
基于Taro + React 实现微信小程序半圆滑块组件、半圆进度条、弧形进度条、半圆滑行轨道(附源码)
效果: 功能点: 1、四个档位 2、可点击加减切换档位 3、可以点击区域切换档位 4、可以滑动切换档位 目的: 给大家提供一些实现思路,找了一圈,一些文章基本不能直接用,错漏百出,代码还藏着掖…...
城市内涝解决方案:实时监测,提前预警,让城市更安全
城市内涝积水问题是指城市地区在短时间内遭遇强降雨后,地面积水过多,导致城市交通堵塞、居民生活不便、财产损失等问题。近年来,随着全球气候变化和城市化进程的加速,城市内涝积水问题越来越突出,成为城市发展中的一大…...
编译正点原子LINUXB报错make: arm-linux-gnueabihf-gcc:命令未找到
编译正点原子LINUX报错make: arm-linux-gnueabihf-gcc:命令未找到 1.报错内容2.解决办法3./bin/sh: 1: lzop: not found4.编译成功 1.报错内容 make: arm-linux-gnueabihf-gcc:命令未找到CHK include/config/kernel.releaseCHK include/generat…...
工地现场智慧管理信息化解决方案 智慧工地源码
智慧工地系统充分利用计算机技术、互联网、物联网、云计算、大数据等新一代信息技术,以PC端,移动端,设备端三位一体的管控方式为企业现场工程管理提供了先进的技术手段。让劳务、设备、物料、安全、环境、能源、资料、计划、质量、视频监控等…...
Javaweb之HTML,CSS的详细解析
2. HTML & CSS 1). 什么是HTML ? HTML: HyperText Markup Language,超文本标记语言。 超文本:超越了文本的限制,比普通文本更强大。除了文字信息,还可以定义图片、音频、视频等内容。 标记语言:由标签构成的语言…...
装饰模式(Decorator Pattern)重构java邮件发奖系统实战
前言 现在我们有个如下的需求,设计一个邮件发奖的小系统, 需求 1.数据验证 → 2. 敏感信息加密 → 3. 日志记录 → 4. 实际发送邮件 装饰器模式(Decorator Pattern)允许向一个现有的对象添加新的功能,同时又不改变其…...
51c自动驾驶~合集58
我自己的原文哦~ https://blog.51cto.com/whaosoft/13967107 #CCA-Attention 全局池化局部保留,CCA-Attention为LLM长文本建模带来突破性进展 琶洲实验室、华南理工大学联合推出关键上下文感知注意力机制(CCA-Attention),…...
汽车生产虚拟实训中的技能提升与生产优化
在制造业蓬勃发展的大背景下,虚拟教学实训宛如一颗璀璨的新星,正发挥着不可或缺且日益凸显的关键作用,源源不断地为企业的稳健前行与创新发展注入磅礴强大的动力。就以汽车制造企业这一极具代表性的行业主体为例,汽车生产线上各类…...
蓝桥杯3498 01串的熵
问题描述 对于一个长度为 23333333的 01 串, 如果其信息熵为 11625907.5798, 且 0 出现次数比 1 少, 那么这个 01 串中 0 出现了多少次? #include<iostream> #include<cmath> using namespace std;int n 23333333;int main() {//枚举 0 出现的次数//因…...
rnn判断string中第一次出现a的下标
# coding:utf8 import torch import torch.nn as nn import numpy as np import random import json""" 基于pytorch的网络编写 实现一个RNN网络完成多分类任务 判断字符 a 第一次出现在字符串中的位置 """class TorchModel(nn.Module):def __in…...
Yolov8 目标检测蒸馏学习记录
yolov8系列模型蒸馏基本流程,代码下载:这里本人提交了一个demo:djdll/Yolov8_Distillation: Yolov8轻量化_蒸馏代码实现 在轻量化模型设计中,**知识蒸馏(Knowledge Distillation)**被广泛应用,作为提升模型…...
初探Service服务发现机制
1.Service简介 Service是将运行在一组Pod上的应用程序发布为网络服务的抽象方法。 主要功能:服务发现和负载均衡。 Service类型的包括ClusterIP类型、NodePort类型、LoadBalancer类型、ExternalName类型 2.Endpoints简介 Endpoints是一种Kubernetes资源…...
现有的 Redis 分布式锁库(如 Redisson)提供了哪些便利?
现有的 Redis 分布式锁库(如 Redisson)相比于开发者自己基于 Redis 命令(如 SETNX, EXPIRE, DEL)手动实现分布式锁,提供了巨大的便利性和健壮性。主要体现在以下几个方面: 原子性保证 (Atomicity)ÿ…...
push [特殊字符] present
push 🆚 present 前言present和dismiss特点代码演示 push和pop特点代码演示 前言 在 iOS 开发中,push 和 present 是两种不同的视图控制器切换方式,它们有着显著的区别。 present和dismiss 特点 在当前控制器上方新建视图层级需要手动调用…...
比较数据迁移后MySQL数据库和ClickHouse数据仓库中的表
设计一个MySQL数据库和Clickhouse数据仓库的表数据比较的详细程序流程,两张表是相同的结构,都有整型主键id字段,需要每次从数据库分批取得2000条数据,用于比较,比较操作的同时可以再取2000条数据,等上一次比较完成之后,开始比较,直到比较完所有的数据。比较操作需要比较…...
