(67)c++后台开发
还记得自己在学校的时候,一直都比较注重的是:编程语言+数据结构与算法。没错,对于一个在校的计算机专业的学生,这是很重要的方面。但是,这往往不够,或许是因为毕业前一直没有进入企业实习,以至于自己在毕业之前,对自己未来的职业规划做得很不够,不知道自己以后会做什么方向,那时候比较宽泛且迷茫的定位是,只要是软件开发的工作,我都OK。毕业后,主要是从事C++后台开发,工作一段时间后,才知道自己擅长什么,对什么感兴趣。
前端和后端,你喜欢什么?一提到前端,大家都会想到html+javascript+css,或许这是web前端的最最基本的东西了吧。我个人会将与用户直接打交道的端称为前端,除了前面所提到的传统意义上的前端,我还会把android和ios开发的app称为前端。现在前端各种框架的迭代速度相当的快,要跟上各种比较NB的框架的步伐,也不是那么简单的事情。虽然工作之后,没有做过前端方面的项目,更多的是与前端工程师FE合作,但是我知道,前端领域也有很多东西要学,而且前端的东西由于能自己直接看到开发结果,或许在工作中会很有成就感,所以永远不要觉得前端工程师做的事情没技术含量,萝卜青菜,各有所爱,任何一个领域,只要深入了,都很有技术含量,关键在于自己喜不喜欢,擅长不擅长。就我个人而言,更喜欢的是后端开发,主要原因是在学校的时候一直学的是C++,工作之后一直做的是后端的项目,没有直接参与前端的项目,既来之,则安之,既然上天给我分配了一个方向,我就应该在这个方向上做深入研究。
后台开发是什么?我第一次听说过后台开发这个岗位是在腾讯的招聘网站上,有一个岗位叫后台开发。个人觉得,后台开发也很广,开发语言也很多,如:php,node.js,java,C/C++,go ,每一个公司都有自己主打的语言,如腾讯和百度的后端开发中,C++用的比较多,当然php也用得比较多,阿里和美团,java用得比较多。当然,语言只是一种实现工具而已,不能单一地认为那种语言好那种语言不好,没有最好,只有最适合。后台开发,是相对前端开发而言,个人觉得,所有跟前端直接交互的开发都可以认为是后台开发。企业里面,除了前端开发的岗位,就是后台开发了吗?当然不是。这也是我要说的,希望能够给在校的学生一点思考。在互联网公司里面,有美学功底非常好的UE工程师,他们常常会站在用户的角度进行审美,提高用户体验,能够在产品真正落地之前,做出各种demo;有市场调研和需求分析的产品经理PM,具有严密的逻辑思维和良好的沟通能力;有前面所提到的前端工程师FE,负责向后端发送用户提交的请求,并接收后端返回的结果,进行展示;有软件研发工程师RD,需要具备一定的研发能力和bug定位和修复,系统性能优化等能力;有测试开发工程师QA,上线前的最后把关;又做运维的OP,负责维护和监控线上的稳定;有做运营的,像双十一等大型的购物节,一般都需要强大的运营支持;有做大数据的,hadoop+spark+storm各种大数据框架;有做基础架构的;有做算法分析的。。。还有更多的职位。
C++后台开发需要掌握什么?这个话题有点大,而且像我这种小菜,只能抛砖引玉。语言只是基础,不能一味地去研究语法糖。记得我在学校的时候,特别喜欢去研究语法糖,现在想想,浪费了很多时间。当然,作为C++后端的研发工程师,你首先需要掌握C++的基础语法,需要掌握STL里面常用的库和算法,如果你觉得这还不够,你可以去系统地学习下boost库,里面多STL里面所不具有很备的,看看C++11就知道了,里面很多新增的东西都是来自boost库。当然,仅仅掌握语言还远远不够,C++做后台开发时,模块跟模块直接除了通过lib库或so库的方式相互调用外,还有更多的是采用网络交互,这个时候,你就需要掌握多线程编程和网络编程的基础知识,当然,由于开发效率的需要,现在你不需要从零搭建一个网络服务框架,比如:ACE、boost的asio和libevent。当然现在已经有各种开源的RPC框架了,比如google-rpc,你可以通过调用本地函数来完成网络包的发送与接收,so easy!那么网络通信包的格式如何定义呢?客户端和服务端需要提前约定?数据交互格式,常用的包括:json、xml和protobuffer,通常前端后后端交互会采用json,而后端各个模块的交互,你可以随便选择;对于HTTP协议的交互,我用的比较多的是json,而 tcp协议,我用的比较多的是protobuffer。当然,服务端的平台有很重要,国内后台开发,基本都是运行在Linux系统上,所以你需要掌握Linux系统的常用的命令,这样你才可以在Linux系统上运用自如,所以,如果你想从事或者即将从事C++后台开发,请暂时抛下VS下的C++学习,从现在开始,转向Linux平台下的C++开发,那里有你要编译器GCC/G++,调试时用到的gdb,如果你想依次性一个命令编译所有的文件,请学习下如何编写makefile。好了,有了编程语言,有了编译和调试方法,你就可以将你的应用程序放在你的Linux系统上监听客户端的请求了。如果某一天,你的程序出core了怎么办?你必须要学会如果找出bug,除了前面提到的gdb,在大型的应用里面,你必须要学会掌握如何追bug,这个时候,你就要学会打日志,并且分等级打印日志,这样一出问题了你就能够快速定位问题的所在。日志有了,程序也能正常跑了,那你怎么算你程序的性能或者收益呢?所以,你需要学会编写脚本语言,我个人推荐你去掌握shell脚本和python脚本,脚本语言能够一边执行一边编译,具有比较高的开发效率,不用你每次执行前编译,掌握了脚本,你不用再那么忙了,哈哈。
提高自己的技术硬实力。这个话题更大,但是适合很多技术岗位。在工作中,你不能只跟项目中的业务逻辑打交道,那样你会觉得自己做的事情越来越没意思,越来越没技术含量。你应该有一种开源的情怀,你要找一个比较NB的开源软件,如 redis, zookeeper,nginx等,去阅读其中的源码,当然,你也可以将你写的一些库上传到gitlab上,让大家给你提建议,相信开源让人进步;你可以去gitlab上下载和学习各种有意思的开源库,这会给你带来更多的成就感。同时你要学会利用各种资源来解决你所遇到的各种问题,如segmentfault,stackoverflow等国外著名的网站。
提高自己的情商。这个话题与我的tittle当然没有直接关系了,哈哈。我是一名工科男,周边的同事基本都是工科男,工科男大多比较直接,也容易发泄自己的不满。对于自认为一些不合理的需求,要深入思考该需求是否确实不合理,深入分析,有理有据,让人心服口服。
(67)c++后台开发的更多相关文章
- 给大一的学弟学妹们培训java web的后台开发讨论班计划
蓝旭工作室5月大一讨论班课程计划 课时 讨论班性质 讨论班名称 主要内容 主讲人 第一讲 先导课 后台开发工具的使用与MySQL数据库基础 后台开发工具的基本使用方法与工程的创建,MySQL数 ...
- discuz后台开发常用函数
showsetting()表单显示 返回值:无 参数: $setname - 指定输出标题,如:setting_basic_bbname, 自动匹配描述文字为:setting_basic_bbname ...
- php后台开发(二)Laravel框架
php后台开发(二)Laravel框架 为了提高后台的开发效率,往往需要选择一套适合自己的开发框架,因此,选择了功能比较完善的Laravel框架,仔细学来,感觉和Python语言的框架Django非常 ...
- php后台开发(一)hello world
php后台开发(一)hello world 环境安装 开发环境为Ubuntu 12.04,选择linux+apache+php的开发环境 安装 apache2 sudo apt-get install ...
- Linux后台开发面试问题汇总
个人从事安全后台开发,当然是linux环境下的了.举几个常见的问题.1. 数据结构基础.比如实现一个最简单的哈希表.2. 操作系统基础.linux进程模型,堆/栈的区别,大概的位置,各往哪个方向生长, ...
- 携程Java后台开发三面面经
前言 携程是我面试的第一个互联网公司,投递的岗位是后台开发实习生,总共面了三面,止步于人才库.中间兜兜转转,复杂的心理活动,不足与外人道也.唯有面试的技术部分与大家共享. 宣讲会完了之后有个手写代码的 ...
- SpringBoot技术栈搭建个人博客【后台开发】
前言:在之前,我们已经完成了项目的基本准备,那么就可以开始后台开发了,突然又想到一个问题,就是准备的时候只是设计了前台的RESTful APIs,但是后台管理我们同样也是需要API的,那么就在这一篇里 ...
- JavaWeb网站后台开发记录手册
1.javaweb网站后台开发 1.封装DBTools类 1.注册数据库驱动 Class.forName("oracle.jdbc.driver.OracleDriver"); 2 ...
- Golang后台开发初体验
转自:http://blog.csdn.net/cszhouwei/article/details/37740277 补充反馈 slice 既然聊到slice,就不得不提它的近亲array,这里不太想 ...
随机推荐
- HDU 2973 YAPTCHA (威尔逊定理)
YAPTCHA Time Limit: 10000/5000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Su ...
- sqlserver迁移mysql语法修改
1.top 100 选取表中前100条改为 limit #{limit},limit 为变量2.获取当前日期getdate()改为now()3.id=#{id,jdbcType=BIGINT}改为i ...
- 洛谷P1029 最大公约数和最小公倍数问题 (简单数学题)
一直懒的写博客,直到感觉不写不总结没有半点进步,最后快乐(逼着)自己来记录蒟蒻被学弟学妹打压这一年吧... 题目描述 输入22个正整数x_0,y_0(2 \le x_0<100000,2 \le ...
- C++继承中的同名覆盖
1,父子间的冲突是由继承带来的,两个类之间存在了继承的关系,必然的会带来一 些问题,本文要讨论的是父子之间成员变量或成员函数的命名问题: 2,思考: 1,子类中是否可以定义父类中的同名成员? 1,可以 ...
- mysql5.6
5.6 与之后版本有差别本文以5.6为例** 1.mysql5.6安装 本文采用2进制安装 mkdir /server/tools -p cd /server/tools 1.下载 wget http ...
- Python进阶编程 反射
1.7反射 python面向对象中的反射:通过字符串的形式操作对象相关的属性.python中的一切事物都是对象(都可以使用反射) class Foo: f = '类的静态变量' def __init_ ...
- IE6兼容笔记
1.IE6中,元素右浮动的时候前面不能有文本或内联元素,否则会换行独占一行 解决办法:将浮动元素放到文本或内联元素前面,大都在制作新闻列表的时候会遇到这种问题. 未完,待续!
- 85. Maximal Rectangle (JAVA)
Given n non-negative integers representing the histogram's bar height where the width of each bar is ...
- 76. Minimum Window Substring (JAVA)
Given a string S and a string T, find the minimum window in S which will contain all the characters ...
- Verilog中的Timescale作用
很多时候,我们拿到已有的东西理所当然的用了,其实,你真的对你所使用的东西了解吗? 再次犯下这样的错误,是因为在把代码从Altera 的CycloneV移植到Xilinx的Spartan6上,我遇到了非 ...