<small id='B6n3SPsRD'></small> <noframes id='yMuCZpFYtr'>

  • <tfoot id='nU1GyVLidz'></tfoot>

      <legend id='jD6iwmAX'><style id='zgXUG'><dir id='EwmDay'><q id='7EWcdYa9U'></q></dir></style></legend>
      <i id='T6WChFqds'><tr id='9eBy'><dt id='A2oC'><q id='2cVqQfH'><span id='U5mMqN7'><b id='0hL7dVpD1'><form id='8fNvR72'><ins id='Are1Cok'></ins><ul id='VqBk7D'></ul><sub id='lEez5QLn'></sub></form><legend id='IixX'></legend><bdo id='9BYUwgu6xd'><pre id='aiBo0k'><center id='kpeoc'></center></pre></bdo></b><th id='ry9npUs53'></th></span></q></dt></tr></i><div id='H8zeXRx1P'><tfoot id='Yh5TgQk'></tfoot><dl id='Zj35'><fieldset id='Z1eJG'></fieldset></dl></div>

          <bdo id='yfJr5qMOAu'></bdo><ul id='r9xOhNbTLa'></ul>

          1. <li id='VPo9'></li>
            登陆

            程序员分前端与后端,那么后端程序员都做些什么?看完就知道了

            admin 2019-12-24 164人围观 ,发现0个评论

              我刚开端做Web开发的时分,底子没有前端,后端之说。

            原因很简略,那个时分服务器端的代码便是全部:承受阅读器的恳求,完成业务逻辑,拜访数据库,用JSP生成HTML,然后发送给阅读器。

            即便后来Javascript在阅读器中增加了一些AJAX的作用,那也是如虎添翼,必定不敢造次。由于页面的HTML首要仍是用所谓“套模板”的方法生成:美工生成HTML模板,程序员用JSP,Veloctiy,FreeMaker等技能把动态的内容增加上去,仅此而已。

             程序员分前端与后端,那么后端程序员都做些什么?看完就知道了 那个时分最盛行的图是这个姿态:

            在开端的J2EE体系中,这个表明层可不只仅是阅读器中运转的页面,还包含Java写的桌面端,仅仅Java在桌面端太不争光, 没有开展起来。

            每个程序员都是所谓“全栈”工程师,不只要搞定HTML, JavaScript, CSS,还要完成业务逻辑,编写拜访数据库的代码。比及布置的时分,就把全部的代码打成一个WAR包,往Tomcat指定的目录一扔,测验一下没问题,收工回家!

              不差钱的公司会把程序布置到Weblogic,Websphere这样的应用服务器中,还会用上巨大上的EJB。

              尽管看起来日子“简略”又“惬意”,但实际上也需求完成那些多变的、不讲逻辑的业务需求,苦逼的实质并没有改动。

            1、前后端的别离

            跟着咱们对阅读器页面的视觉和交互要求越来越高,“套模板”的方法逐渐无法满足要求,这个所谓的表明层慢慢地搬迁到阅读器傍边去了,一大批像Angular, ReactJS之类的结构鼓起,前后端别离了!

              后端的工程师只担任供给接口和数据,专心于业务逻辑的完成,前端取到数据后在阅读器中展现,各司其职。

              像Java这样的言语很适宜去完成杂乱的业务逻辑,尤其是一些MIS体系,行业软件如税务、电力、烟草、金融,通讯等等。 所以剥离表明层,只做后端挺适宜的。

              但是假如仅仅是完成业新网务逻辑,那后端也不会需求这么多技能了,搞定SSH/SSM就行了。

            2、后端技能

            互联网,尤其是移动互联网开端鼓起今后,海量的用户吼叫而来,一个单机布置的小小War包必定是撑不住了,必须得做分布式。

            本来的单个Tomcat得变成Tomcat的集群,前边弄个Web服务器做恳求的负载均衡,不只如此,还得考虑状况问题,session的一致性。

              (注:拜见文章《小白科普:分布式和集群》)

            业务越来越杂乱,咱们不得不把某些业务放到一个机器(或集群)上,把别的一部分业务放到别的一个机器程序员分前端与后端,那么后端程序员都做些什么?看完就知道了(或集群)上,尽管体系的核算才干,处理才干大大增强,但是这些体系之间的通讯就变成了头疼的问题,音讯行列(MQ),RPC结构(如Dubbo)应运而生,为了进步通讯功率,各种序列化的东西(如Protobuf)也抢先空后地面世。

            单个数据库也撑不住了,那就做数据库的读写别离,假如还不可,就做分库和分表,把原有的数据库垂直地切全部,或许水平地切全部, 但不管怎样切,都会让应用程序的拜访十分费事,由于数据要跨库做Join/排序,还需求业务,为了处理这个问题,又有各式各样“数据拜访中间件”的东西和产品诞生。

            为了最大程度地进步功能,缓存必定少不了,能够在本机做缓存(如Ehcache),也能够做分布式缓存(如Redis),怎样搞数据分片,数据搬迁,失效搬运,这又是一个超级大的主题了。

            互联网用户喜爱上传图片和文件,还得搞一个分布式的文件体系(如FastDFS),要求高可用,高牢靠。

            数据量大了,查找的需求就自然而程序员分前端与后端,那么后端程序员都做些什么?看完就知道了然地浮出水面,你得弄一个支撑全文索引的查找引擎(如Elasticsearch ,Solr)出来。

            林子大了,什么鸟都有,必须得考虑安全,数据的加密/解密,签名、证书,避免SQL注入,XSS/CSRF等各种进犯。

            3、“大后端”

            前面提到了这么多的体系,还都是分布式的,每次上线,运维的同学说:把这么多体系协调好,把老子都累死了。

            得把继续集成做好,能自动化地布置,自动化测程序员分前端与后端,那么后端程序员都做些什么?看完就知道了验(其实前端也是如此),后来呈现了一个革命化的技能docker, 能够让开发、测验、生成环境保持一致,体系本来仅仅在环境(如Ngnix, JVM,Tomcat,MySQL等)上布置代码,现在把代码和环境同时打包, 运维的作业一会儿就简化了。

            公司自己购买服务器比较贵,保护也很费事,又难于弹性地增加,那就搞点虚拟的服务器吧,硬盘、内存都能够动态扩展(反正是虚拟的), 拜访量大的时分多用点,没啥拜访量了就开释一点,按需分配,很便利,这便是云核算的一个场景。

              跟着时刻的推移,各个公司和体系搜集的数据越来越多,都堆成一座大山了,莫非就放在那里白白地糟蹋硬盘空间吗?

              有人就惊讶地发现,咦,咱们运用这些数据搞点工作啊, 比方把数据好好分析一下,猜测一下这个用户的购买/阅览/阅读习气,给他引荐一点东西嘛。

            但是这么多数据,用传统的方法核算好几天乃至好几个月才干出个成果,到时分黄花菜都凉了,所以也得运用分布式的技能,想办法把核算分到各个核算机去,然后再把核算成果收回来, 时势造英雄,Hadoop及其生态体系就应运而生了。

              之前听说过一个大前端的概念,把移动端和网页端都归结为“前端”,我这儿造个词“大后端”,把那些用户直接触摸不到的、发生在服务器端的都归结进来。

            4、怎样学好后端?

            现在无论是前端仍是后端,技能范畴数不胜数,都严重地细分了,所以我以为真实的全栈工程师底子不存在,由于一个人精力有限,不可能搞定这么多技能范畴,太难了

              训练组织所说的“全栈”,我以为便是前后端还在拉拉扯扯,藕断丝连,没有完全别离的时分的“全栈”工程师。

              那么问题来了, 后端这么多东西,我该怎样学?

              之前写过一篇文章叫做《上天仍是入地》,说了学习的广度和深度,在这儿也是相通的。

              往深度发掘,能够成为某个技能范畴的专家,如查找方面的专家、安全方面的专家,分布式文件的专家等等,不管是哪个范畴,要点都不是学会运用某个东西和结构, 而是确保你能够自己的常识和技能去搞定这个范畴的顶尖问题。

              往广度开展,各个技能范畴都要了解,关于某种需求,能够选取适宜的软件和技能架构来完成它,把需求转化成适宜的技能组件,让这些组件以适宜的方法衔接、布置、运转,这也需求继续地学习和不断的经历堆集。

              最终,以一张漫画来完毕吧!

            想要在程序员生计内有更高的成果的话,C/C++便是一个既能够强化思维才干,又能够打好编程根底的编程言语,你想要做软件开发,成为中心程序员的话,学习C/C++的话笔者有一个C/C++的编程千人羣(Q艘索:C言语编程学习聚集地(无言树立))你假如感觉自学C/C++言语有困难的话,有爱好学习或许了解一下C/C++编程的小伙伴就能够进来沟通。

            C/C++高级工程师学习路线图:

            请关注微信公众号
            微信二维码
            不容错过
            Powered By Z-BlogPHP