(67)c++后台开发

 

        还记得本身在学校的时候,一直都比较注重的是:编程语言+数据结构与算法。没错,对于一个在校的计算机专业的学生,这是很重要的方面。可是,这每每不够,或许是由于毕业前一直没有进入企业实习,以致于本身在毕业以前,对本身将来的职业规划作得很不够,不知道本身之后会作什么方向,那时候比较宽泛且迷茫的定位是,只要是软件开发的工做,我都OK。毕业后,主要是从事C++后台开发,工做一段时间后,才知道本身擅长什么,对什么感兴趣。javascript

        前端和后端,你喜欢什么?一提到前端,你们都会想到html+javascript+css,或许这是web前端的最最基本的东西了吧。我我的会将与用户直接打交道的端称为前端,除了前面所提到的传统意义上的前端,我还会把android和ios开发的app称为前端。如今前端各类框架的迭代速度至关的快,要跟上各类比较NB的框架的步伐,也不是那么简单的事情。虽然工做以后,没有作过前端方面的项目,更多的是与前端工程师FE合做,可是我知道,前端领域也有不少东西要学,并且前端的东西因为能本身直接看到开发结果,或许在工做中会颇有成就感,因此永远不要以为前端工程师作的事情没技术含量,萝卜青菜,各有所爱,任何一个领域,只要深刻了,都颇有技术含量,关键在于本身喜不喜欢,擅长不擅长。就我我的而言,更喜欢的是后端开发,主要缘由是在学校的时候一直学的是C++,工做以后一直作的是后端的项目,没有直接参与前端的项目,既来之,则安之,既然上天给我分配了一个方向,我就应该在这个方向上作深刻研究。php

        后台开发是什么?我第一次据说事后台开发这个岗位是在腾讯的招聘网站上,有一个岗位叫后台开发。我的以为,后台开发也很广,开发语言也不少,如:php,node.js,java,C/C++,go ,每个公司都有本身主打的语言,如腾讯和百度的后端开发中,C++用的比较多,固然php也用得比较多,阿里和美团,java用得比较多。固然,语言只是一种实现工具而已,不能单一地认为那种语言好那种语言很差,没有最好,只有最适合。后台开发,是相对前端开发而言,我的以为,全部跟前端直接交互的开发均可以认为是后台开发。企业里面,除了前端开发的岗位,就是后台开发了吗?固然不是。这也是我要说的,但愿可以给在校的学生一点思考。在互联网公司里面,有美学功底很是好的UE工程师,他们经常会站在用户的角度进行审美,提升用户体验,可以在产品真正落地以前,作出各类demo;有市场调研和需求分析的产品经理PM,具备严密的逻辑思惟和良好的沟通能力;有前面所提到的前端工程师FE,负责向后端发送用户提交的请求,并接收后端返回的结果,进行展现;有软件研发工程师RD,须要具有必定的研发能力和bug定位和修复,系统性能优化等能力;有测试开发工程师QA,上线前的最后把关;又作运维的OP,负责维护和监控线上的稳定;有作运营的,像双十一等大型的购物节,通常都须要强大的运营支持;有作大数据的,hadoop+spark+storm各类大数据框架;有作基础架构的;有作算法分析的。。。还有更多的职位。css

        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脚本,脚本语言可以一边执行一边编译,具备比较高的开发效率,不用你每次执行前编译,掌握了脚本,你不用再那么忙了,哈哈。html

         提升本身的技术硬实力。这个话题更大,可是适合不少技术岗位。在工做中,你不能只跟项目中的业务逻辑打交道,那样你会以为本身作的事情愈来愈没意思,愈来愈没技术含量。你应该有一种开源的情怀,你要找一个比较NB的开源软件,如 redis, zookeeper,nginx等,去阅读其中的源码,固然,你也能够将你写的一些库上传到gitlab上,让你们给你提建议,相信开源让人进步;你能够去gitlab上下载和学习各类有意思的开源库,这会给你带来更多的成就感。同时你要学会利用各类资源来解决你所遇到的各类问题,如segmentfault,stackoverflow等国外著名的网站。前端

        提升本身的情商。这个话题与个人tittle固然没有直接关系了,哈哈。我是一名工科男,周边的同事基本都是工科男,工科男大多比较直接,也容易发泄本身的不满。对于自认为一些不合理的需求,要深刻思考该需求是否确实不合理,深刻分析,有理有据,让人心服口服。java

相关文章
相关标签/搜索