BAT老程序员分享:Linux C/C++ 开发程序员的黄金方向和学习路线!

Linux C/C++ 学习路线 一、秋招 Linux C/C++ offer 情况 二、Linux C/C++ 方向的一些思考 三、计算机基础知识的梳理 四、C++ 方向的深入学习路线 五、项目 + 亮点 + 面试的一些思考 六、总结 前言 Linux C/C++ 从零基础到大神的学习路线,自己的真实学习路线,干货很多,建议收藏,认真阅读。 在校期间,我一直走的都是 Linux C/C++ 学习路线,历经暑期实习、秋招决战、校... 阅读详情

目前从事 Linux C/C++ 开发的程序员很多,尤其是像百度、腾讯、阿里这样的大公司,他们的网站流量巨大,业务逻辑复杂,会遇到很多瓶颈,需要开发底层服务来提高程序效率,快速响应用户请求。

这些公司的 Linux C/C++ 开发属于底层开发(后台服务、算法支持等),而不是应用开发,编写的程序在后台运行,没有界面,不直接面向用户。

从事应用开发(尤其是网站开发)的程序员,工作的前几年提升很快,工资也嗖嗖嗖往上涨,不知不觉年薪就到了 30W。但是这个时候,很多人会遇到瓶颈期,如果没有成为领导,工资就长得慢了。

习惯了自我进步的程序员,怎么能让工资停滞呢,不进步就是退步呀,怎么办?领导不是每个人都能当的。

可以转底层开发呀!!!有了数年应用开发的经验,对用户、业务、交互等都非常了解了,转底层开发很容易,也知道应用层的瓶颈在哪里,明白如何在底层做优化。

底层开发比应用开发的工资要高一些,再过几年,年薪到五六十万不是问题。

                 

当然,上面说的是努力并且聪明的程序员,还有很多程序员工作十来年了依然在做应用层的开发。

那么,这个方向到底适合不适合初学者呢?初学者肯定可以学习,也肯定能找到相关的工作,但是,如果没有应用开发的经验,个人认为只学底层开发是非常枯燥的,因为你做不出一个有趣的东西来,每天面对一堆理论,早晚吐血。

初学者可以给自己树立一个目标,做一个类似 QQ 这样的软件出来,它可以有无限的优化空间,比如:刚开始只是用 Qt、GTK+、WxWidgets、Fltk 等 GUI 库构建了一个界面,并不能发送和接受信息。增加一对一聊天功能,在这个过程中可以学习通信(socket)。同时支持多人聊天,每增加一个对话就开启了一个线程,这个过程中可以学习多线程编程。提高服务器的性能,让单台服务器同时抗住一万个人聊天,这个时候你可能就需要去优化程序了,就需要关注线程创建、调度的开销,关注通信过程中的缓存。增加群聊功能,让服务器可以给多个用户发送消息,这个时候你对通信的理解将更加深入。最后呢,你可以将多台服务器联合起来,抗住几十万人甚至上百万人聊天。

你可以自己完成这个项目,也可以组队完成,在这个过程中你将会全方位的学习 Linux C/C++ 编程。

总之,初学者要让学习过程变得有趣,不要天天研究操作系统、数据结构、算法、内存、线程进程、通信等理论,一定要去实践。

              

学习路线

上面说了 Linux 服务器开发的前景和学习方式,接下来再说一下学习线路。

1) 语言&工具

C语言和C++是传统的 Linux 开发的语言,需要掌握。除了基本的语法,还要玩转一套工具链。

经典的组合是 GCC(编译器)+ Make/Makefile(构建中大型项目必须的工具)+ GBD(调试器)+ Valgrind(内存分析工具)+ Vim/EMACS/Gedit/Sublime Text(编辑器)。

现在有越来越多的新项目使用 Clang/LLVM 来构建了,例如 Android NDK 已经放弃GCC,全面转向 Clang。

由于 C++ 语法变态,到处都是奇*巧*淫*技,并且没有内存回收机制,所以被最近几年大火的 Golang 完爆了,不少底层项目开始转向 Golang,弃用 C++。嗯,这是好事,作为《C++教程》的作者我已经恶心透了,C++ 这种垃圾语言早就该被替代了。

对于初学者来说,不要贪多嚼不烂,先学好 C/C++ 语言,掌握 GCC 就可以,Clang/LLVM 和 Golang 留着以后再学。

2) 数据结构和算法

学习基本的,了解概念就可以,很多库已经封装好了常用的数据结构和算法,实际开发中你不用从零开始,所以千万不要陷在里面不能自拔,算法是个无底洞,耗死你。记住,以后需要了可以再来回顾,不用一开始就吃透。

3) 操作系统

除了基本的 Linux 操作,还有必要了解一些常用命令;当然,这不是重点,只要你经常使用 Linux 操作系统,慢慢就会了。

内存(虚拟地址空间、内存分配策略)+ 进程线程(进程通信、线程调度、死锁) + 文件系统 + 输入输出 + 中断等才是重点。这些都是理论,要和实践相结合起来。

                              

4) 通信(Socket)

在服务器上做开发,通信是必不可少的,而且是重中之重。除了了解 TCP/IP 协议族,还要学习 socket 编程,将理论和实践集合起来。

ACE、Libevent、Libev 等知名的网络库也要掌握一两个的,毕竟在实际开发中不可能直接调用 Linux API 吧,怎么也得搞个库来提高效率。

5) 界面库

当然,在服务器领域一般不需要界面,但是掌握一个界面库会让你做出一个好玩的软件来,学以致用,提高兴趣。

Linux 下常用的界面库有 Qt、GTK、WxWidgets 等,其中 Qt 是老大。

搞 Linux 开发,操作系统原理和通信是重点,也是最难学的部分,这是你跨进 Linux 开发这扇大门的标志,不学这些即使耍流流氓。

“我是一名从事了10年开发的老程序员,最近我花了一些时间整理关于C语言、C++,自己有做的材料的整合,一个完整的学习C语言、C++的路线和工具。如果感觉自己学习C/C++编程有难度的话可以湫湫扫下方二维码。这里是编程爱好者的聚集地,欢迎初学和进阶中的小伙伴。希望你也能凭自己的努力,成为下一个优秀的程序员。

笔者分享的C/C++学习路线图:

 

某里P7程序员推荐,Linux C/C++ 学习路线(内附资料) 前言 Linux C/C++ 从零基础到大神的学习路线,自己的真实学习路线,干货很多,建议收藏,认真阅读。 在校期间,我一直走的都是 Linux C/C++ 学习路线,历经暑期实习、秋招决战、校招期间投的大部分岗位都是 Linux C/C++ 后台方向,对于这个方向,有着自己的理解。 从接触 C++ 到我现在正式工作,大概有 2 年多的时间,对于这个方向的学习路线、以及学习编程的方法摸索出来了一些,看完本文,希望对于正在走 Linux C/C++ 路上的同学能有所帮助。 **【文章福利】:**小编推荐一个 阅读详情

相关推荐

Linux C/C++ 学习路线(已拿腾讯、百度 offer)

一、秋招 Linux C/C++ offer 情况 二、Linux C/C++ 方向的一些思考 三、计算机基础知识的梳理 四、C++ 方向的深入学习路线 五、项目 + 亮点 + 面试的一些思考 六、总结 前言 Linux C/C++ 从零基础到大神的学习路线,自己的真实学习路线,干货很多,建议收藏,认真阅读。 在校期间,我一直走的都是...

qq_45325743的博客 654

Linux C/C++开发方向怎么样,要学习哪些东西

目前从事 Linux C/C++ 开发的程序员很多,尤其是像百度、腾讯、阿里这样的大公司,他们的网站流量巨大,业务逻辑复杂,会遇到很多瓶颈,需要开发底层服务来提高程序效率,快速响应用户请求。 这些公司的 Linux C/C++ 开发属于底层开发(后台服务、算法支持等),而不是应用开发,编写的程序在后台运行,没有界面,不直接面向用户。 从事应用开发(尤其是网站开发)的程序员,工作的前几年提升很快,工...

a15376的博客 5852

C/C++ Linux后端进BAT的学习路线(腾讯官方认证)丨Linux服务器开发

我相信对于每一个程序员来说都有一个进入BAT的梦想,今天Hu先生给大家分享的是经过腾讯官方认证的一份C/C++Linux后端开发的知识点学习路线总结。大家可以根据知识点对比,看看自己目前还有哪些技术需要完善,学习。早日完成进入BAT的梦想。希望大家不要忘记Hu先生哈。喜欢的朋友可以点赞关注一下。 首先来看看腾讯的岗位职级 来看看腾讯岗位再来看看进入腾讯后端开发需要具备的一些能力: 能力范畴分为:代码能力、运营能力、安全能力、架构能力、工程素养 好了,进入正题,今天给大家分享的是由腾讯公司官方

Linuxhus的博客 466

Linux开发必备技能

C语言 嵌入式Linux开发工程师的学习需要具备一定的C语言基础,C语言也是嵌入式领域重要也是主要的编程语言,就比如他会包括基本数据类型、指针、结构体、队列、栈等等。 Linux基础知识 包括Linux操作系统的概念、安装方法,需要精细的学习Linux下的目录结构、基本命令、编辑器VI ,编译器GCC,调试器GDB和 Make 项目管理工具,Shell Makefile脚本编写等知识,嵌入式开发环境的搭建。Linux系统编程与网络编程 像学习标准I/O库、多任务编程中的多进程和多线程等,主要提升对Linux

weifeng blog 2314

C++ & Linux 后端之进BAT的学习路线

C++,相对别的语言学习门槛会高一点,主要原因是学习路线不明确,没有像Java那么多资料。但在大厂里C++岗位不比java少多少。想介绍下自己学习C++的路线,以及自己的看书方式,供参考。 Cpper雄起!!! C++基础 如果刚接触C++,建议去B站搜C++视频辅助《C++ prime 第五版》一起学习。 b站黑马程序员的C++学习视频 《C++ prime 第五版》 关于《C++ prime 第五版》与 《C++ prime Plus 第六版》的选择问题:如果只能选择一本,个人建议选《C++ pri

loOK后端 823

【SIP基础】SIP协议基本呼叫流程

SIP呼叫流程下图显示了一个SIP会话的基本呼叫流程。 下面是上述呼叫流程的详细解释: Alice发送INVITE请求到代理服务器,INVITE请求负责发起会话。 代理服务器立即发送Trying 100给请求者(Alice),表示试图响应INVITE请求,以防止重传该INVITE请求。 代理服务器搜索Bob所在位置服务器的地址,得到的地址后,将转发INVITE请求到Bob。 此后,Bob回应180

VVSIP官网博客 1万+

linux下C++开发

一、 开发环境搭建 操作系统:Ubuntu64位 1.安装GCC,GDB 执行一下指令安装编译器和调试器: sudo apt update // apt相当于手机中的应用市场 sudo apt install build-essetial gdb 安装成功确认: gcc --version g++ --version gdb --version //如果成功,则显示版本号 2.安装CMake 指令: sudo apt install cmake 安装成功确认: cmak

qq_44771537的博客 1万+

实例讲解Simulink CAN通讯丢失故障判定模型搭建及仿真测试验证方法

本文通过ABS通讯丢失故障触发、判定条件Simulink模型的搭建和仿真的讲解,介绍了一种控制器CAN通讯丢失故障判定的方法和建模方法,希望能给相关技术人员带来一定参考和帮助。

qq_43011586的博客 3684

linux C应用开发

linux应用开发

嵌入式分享 7266

窥秘Windows 10:SAM密码破解

Windows 10作为广受欢迎的操作系统,拥有一套强大的安全措施来保护用户账号和数据安全。然而,有时候我们需要了解更多关于密码破解的知识,以加强我们的防护措施。本文将深入探讨如何突破Windows 10的SAM密码,以便更好地了解密码安全性并加强系统的保护。

Sgirll的博客 6840

【保姆级教程】YOLOv8_Pose多目标+关键点检测:训练自己的数据集

【保姆级教程】YOLOv8_Pose多目标+关键点检测:训练自己的数据集

m0_51579041的博客 1万+

linux系统编程-linux下c/c++开发流程

1. vim使用 参考博客 3-5 章: vim使用 2. gcc编译链接 参考博客的前两章: gcc编译链接部分 3.静态链接和动态链接 3.1 静态库链接 1:将各个库对应的.c/.cpp源文件编译为.o文件 2:用ar rcs 将.o文件链接为.a文件 3:把头文件和.a文件一起发给用户,用户可以通过自己编写main函数调用库(把main.c编译为.o文件) 3.2 动态库链接 1:用-fpic -shared代替-c将源文件编译为.so文件 gcc -fpic -shared 众多源文件名 -o

qwertyasdfghh的博客 891

Qt 5.14安装(配置MSVC 2017)

本文主要介绍Qt MSVC的安装,VS2017.

ifeng12358的博客 3710

月薪50K程序员倾心推荐,Linux C/C++ 学习这些就够了

前言 Linux C/C++ 从零基础到大神的学习路线,自己的真实学习路线,干货很多,建议收藏,认真阅读。 在校期间,我一直走的都是 Linux C/C++ 学习路线,历经暑期实习、秋招决战、校招期间投的大部分岗位都是 Linux C/C++ 后台方向,对于这个方向,有着自己的理解。 从接触 C++ 到我现在正式工作,大概有 2 年多的时间,对于这个方向的学习路线、以及学习编程的方法摸索出来了一些,看完本文,希望对于正在走 Linux C/C++ 路上的同学能有所帮助。 【文章福利】小编推荐自己的linux

资料qun832218493 6233

checking OpenSSL library version... configure: error: OpenSSL >= 1.1.1 required (have “100020bf 解决方案

 本文主要介绍了checking OpenSSL library version… configure: error: OpenSSL >= 1.1.1 required (have “100020bf (OpenSSL 1.0.2k-fips 26 Jan 2017)”)解决方案,希望能对使用Linux的同学们有所帮助。 文章目录 1. 问题描述 2. 解决方案

weixin_43178406的博客 2万+

即梦(Dreamina)技术浅析(六):多模态生成模型

多模态生成模型的目标是结合不同模态的数据(如文本和图像),生成新的视觉内容。其核心思想是利用文本描述引导图像或视频的生成过程,使得生成结果能够准确反映用户的意图。

m0_75253143的博客 1333

Linux C/C++ 学习路线(已拿腾讯、百度等)

Linux C/C 从零基础到入门、到熟悉的一些路线,对于想走这个方向的同学,可以认真看看,分享到这里来,希望对于正在走 Linux C/C 路上的同学能有所帮助。 我将大致按照以下的目录,分享自己一路走来的一些学习经历。 一、秋招自己的一些情况 二、Linux C/C 方向的一些思考 三、计算机基础知识的梳理 四、C 方向的深入学习路线 五、项目 亮点 面试的一些思考 六、更多的个人分享 在校期间,我一直走的都是 Linux C/C 学习路线,历经暑期实习、秋招决战、校招期间投的大部分岗位都是 Linux

C/C++Linux、音视频、DPDK 1438

FineReport 动态列切换统计维度

目标: 自己选择统计维度进行数据的汇总统计数据集参数实现动态列。

Davina_yu的博客 1053

某讯T9程序员推荐,Linux C/C++ 学习路线(内附资料)

前言 Linux C/C++ 从零基础到大神的学习路线,自己的真实学习路线,干货很多,建议收藏,认真阅读。 在校期间,我一直走的都是 Linux C/C++ 学习路线,历经暑期实习、秋招决战、校招期间投的大部分岗位都是 Linux C/C++ 后台方向,对于这个方向,有着自己的理解。 从接触 C++ 到我现在正式工作,大概有 2 年多的时间,对于这个方向的学习路线、以及学习编程的方法摸索出来了一些,看完本文,希望对于正在走 Linux C/C++ 路上的同学能有所帮助。 【文章福利】:小编推荐一个C语言/

资料qun832218493 1036

最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版

Part-E1-SDIO-Specification-Ver4.00-Final-120220.pdf:最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版,包括SDIO 接口的外设,SDIO 接口官方协议等。

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

C++ & Linux后端进BAT的学习路线

Linux C/C++后端学习路线

m0_60259116的博客 729

Outlook Express 6 (OE6) for Win7/Win8/Win10

英文版 Outlook Express6.0, 兼容Win7/Win10/WinXP,解压就可用。

Linux C/C++ 学习路线(已拿腾讯、百度 offer)(转载)

Linux C/C++ 学习路线(已拿腾讯、百度 offer) 摘自:https://blog.51cto.com/14419148/2416408 lee哥说架构 0人评论 4236人阅读 2019-07-02 21:36:05 一、秋招 Linux C/C++ offer 情况 二、Linux C/C++ 方向的一些思考 三、计算机基础知识的梳理 四、C++ 方向的深入...

自主无人机 PX4 ROS SLAM 路径规划 MVS等技术分享 762

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

某里P7程序员推荐,Linux C/C++ 学习路线

前言 Linux C/C++ 从零基础到大神的学习路线,自己的真实学习路线,干货很多,建议收藏,认真阅读。 在校期间,我一直走的都是 Linux C/C++ 学习路线,历经暑期实习、秋招决战、校招期间投的大部分岗位都是 Linux C/C++ 后台方向,对于这个方向,有着自己的理解。 从接触 C++ 到我现在正式工作,大概有 2 年多的时间,对于这个方向的学习路线、以及学习编程的方法摸索出来...

小白的逆袭 1146

Linux C/C++ 学习路线(已拿腾讯、百度 offer)2

一、秋招 Linux C/C++ offer 情况二、Linux C/C++ 方向的一些思考三、计算机基础知识的梳理四、C++ 方向的深入学习路线五、项目 + 亮点 + 面试的一些思考六、总结 前言Linux C/C++ 从零基础到大神的学习路线,自己的真实学习路线,干货很多,建议收藏,认真阅读。在校期间,我一直走的都是 Linu...

weixin_30371875的博客 391

如何拿下BAT:我的C++后台开发学习路线

前言 本人学历硕士,专业是电子通信,秋招拿下BAT,字节等多家offer,其中多数为SSP级别offer; 2020年对我而言必定是人生当中最重要的一年。因为实习的原因,我第一次体验了北京和上海的生活,匆匆且忙碌。这一年生活当中充斥着各种求职咨询,面试,做题,仿佛一夜回到了高三。不过,我是幸运的。从寒假实习开始到暑假实习再到秋招,一路以来我并没有体会到太多的挫折,一路高歌,最终也收获了我自己认为还不错的offer。也许是因为运气,也许是因为坚持,但是硕士这2年来我也经历了种种心酸和波折。我起初走过很多弯

资料qun832218493 447
上一篇: C/C++编程笔记:数据结构二叉树的查找(前序、中序、后序、层序遍历)
下一篇: C 语言程序设计基础不好,想10天考国二C语言程序设计证书,可能吗?
CodingPs
博客等级 码龄7年 182粉丝 253原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值