工作也快两年了,偶然看到自己以前写过的一些技术博客,发现自己自毕业后一直没有更新过自己的技术博客,趁现在是刚过完春节快要回公司工作之际,谈谈我个人对后台开发的一些个人见解,希望能够对在校的学生或者刚刚接触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当然没有直接关系了,哈哈。我是一名工科男,周边的同事基本都是工科男,工科男大多比较直接,也容易发泄自己的不满。对于自认为一些不合理的需求,要深入思考该需求是否确实不合理,深入分析,有理有据,让人心服口服。

随随便便写了一点东西,新的一年工作希望跟大家一块进步,一同成长!

——————————————————————————作者作于2017-2—————————————————————————

【转】C++后台开发之我见的更多相关文章

  1. 给大一的学弟学妹们培训java web的后台开发讨论班计划

    蓝旭工作室5月大一讨论班课程计划   课时 讨论班性质 讨论班名称 主要内容 主讲人   第一讲 先导课 后台开发工具的使用与MySQL数据库基础 后台开发工具的基本使用方法与工程的创建,MySQL数 ...

  2. discuz后台开发常用函数

    showsetting()表单显示 返回值:无 参数: $setname - 指定输出标题,如:setting_basic_bbname, 自动匹配描述文字为:setting_basic_bbname ...

  3. php后台开发(二)Laravel框架

    php后台开发(二)Laravel框架 为了提高后台的开发效率,往往需要选择一套适合自己的开发框架,因此,选择了功能比较完善的Laravel框架,仔细学来,感觉和Python语言的框架Django非常 ...

  4. php后台开发(一)hello world

    php后台开发(一)hello world 环境安装 开发环境为Ubuntu 12.04,选择linux+apache+php的开发环境 安装 apache2 sudo apt-get install ...

  5. Linux后台开发面试问题汇总

    个人从事安全后台开发,当然是linux环境下的了.举几个常见的问题.1. 数据结构基础.比如实现一个最简单的哈希表.2. 操作系统基础.linux进程模型,堆/栈的区别,大概的位置,各往哪个方向生长, ...

  6. 携程Java后台开发三面面经

    前言 携程是我面试的第一个互联网公司,投递的岗位是后台开发实习生,总共面了三面,止步于人才库.中间兜兜转转,复杂的心理活动,不足与外人道也.唯有面试的技术部分与大家共享. 宣讲会完了之后有个手写代码的 ...

  7. SpringBoot技术栈搭建个人博客【后台开发】

    前言:在之前,我们已经完成了项目的基本准备,那么就可以开始后台开发了,突然又想到一个问题,就是准备的时候只是设计了前台的RESTful APIs,但是后台管理我们同样也是需要API的,那么就在这一篇里 ...

  8. JavaWeb网站后台开发记录手册

    1.javaweb网站后台开发 1.封装DBTools类 1.注册数据库驱动 Class.forName("oracle.jdbc.driver.OracleDriver"); 2 ...

  9. Golang后台开发初体验

    转自:http://blog.csdn.net/cszhouwei/article/details/37740277 补充反馈 slice 既然聊到slice,就不得不提它的近亲array,这里不太想 ...

随机推荐

  1. 配置一个nginx反向代理&负载均衡服务器

    一.基本信息 系统(L):CentOS 6.9 #下载地址:http://mirrors.sohu.com 反代&负载均衡(N):NGINX 1.14.0 #下载地址:http://nginx ...

  2. Java线程状态图

    嘤,先盗图一张,后面再补充描述!

  3. Altium Designer常用快捷键

    一:Altium原理图快捷键:    Shift+左键选择    :实现多个目标选择    Ctrl+左键拖动    :保持连线拖动目标        Shift+c       :清除当前过滤(?? ...

  4. 关于指针的笔记【1】【C语言程序设计-谭浩强】

    指针是什么? 一个 变量的地址称为该变量的"指针"[将地址形象化的称为“指针”].(指针是什么百度百科) 注意区分储存单元的地址和内容这两个概念的区别. 直接访问:直接按变量名进行 ...

  5. CORDIC算法(1):圆周旋转模式下计算三角函数和模值

    CORDIC(Coordinate Rotation Digital Computer)坐标旋转数字计算机,是数学与计算机技术交叉产生的一种机器算法,用于解决计算机的数学计算问题.发展到现在,CORD ...

  6. Map,Hashmap,LinkedHashMap,Hashtable,TreeMap

    java为数据结构中的映射定义了一个接口java.util.Map;它有四个实现类,分别是HashMap Hashtable LinkedHashMap 和TreeMap. Map主要用于存储健值对, ...

  7. 对于微信小程序登录的理解图

    有两种获取用户信息的方案. 1.不包含敏感信息openId 的json对象(包含:nickname.avatarUrl等基本信息) 2.包含敏感信息openId的基本信息. 第一种获取方案 1.首先调 ...

  8. 成都Uber优步司机奖励政策(3月8日)

    滴快车单单2.5倍,注册地址:http://www.udache.com/ 如何注册Uber司机(全国版最新最详细注册流程)/月入2万/不用抢单:http://www.cnblogs.com/mfry ...

  9. 【SQLSERVER】从数据库文件mdf中拆分ndf的方法和利弊

    一.数据文件格式 SQLSERVER中,数据库的文件后缀有3种:mdf.ndf.ldf. 如下图所示,DW_TEST.mdf.DW_TEST_HIS.ndf.DW_TEST.ldf 属于同一个数据库T ...

  10. join_tab计算代价

    此路不通,还是需要按照顺序进行计算