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

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

我刚开始做Web开发的时候,根本没有前端,后端之说。

原因很简单,那个时候服务器端的代码就是一切: 接受浏览器的请求,实现业务逻辑,访问数据库,用JSP生成HTML,然后发送给浏览器。

即使后来Javascript在浏览器中添加了一些AJAX的效果,那也是锦上添花,绝对不敢造次。因为页面的HTML主要还是用所谓“ 套模板 ”的方式生成:美工生成HTML模板,程序员用JSP,Veloctiy,FreeMaker等技术把动态的内容添加上去,仅此而已。

那个时候最流行的图是这个样子:

在最初的J2EE体系中,这个 表示层 可不仅仅是浏览器中运行的页面,还包括Java写的桌面端,只是Java在桌面端太不争气, 没有发展起来。

每个程序员都是所谓 “全栈”工程师 ,不仅要搞定HTML, JavaScript, CSS,还要实现业务逻辑,编写访问数据库的代码。等到部署的时候,就把所有的代码打成一个WAR包,往Tomcat指定的目录一扔,测试一下没问题,收工回家!

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

虽然看起来生活“简单”又“惬意”,但实际上也需要实现那些多变的、不讲逻辑的业务需求,苦逼的本质并没有改变。

随着大家对浏览器页面的 视觉和交互 要求越来越高,“套模板”的方式渐渐无法满足要求,这个所谓的表示层慢慢地迁移到浏览器当中去了,一大批像Angular, ReactJS之类的框架崛起,前后端分离了!

后端的工程师只负责提供接口和数据,专注于业务逻辑的实现,前端取到数据后在浏览器中展示,各司其职。

像Java这样的语言很适合去实现复杂的业务逻辑,尤其是一些MIS系统,行业软件如税务、电力、烟草、金融,通信等等。 所以剥离表示层,只做后端挺合适的。

但是如果仅仅是实现业务逻辑,那后端也不会需要这么多技术了,搞定SSH/SSM就行了。

互联网,尤其是移动互联网开始兴起以后,海量的用户呼啸而来,一个单机部署的小小War包肯定是撑不住了,必须得做分布式。

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

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

业务越来越复杂,我们不得不把某些业务放到一个机器(或集群)上,把另外一部分业务放到另外一个机器(或集群)上,虽然系统的计算能力,处理能力大大增强,但是这些系统之间的通信就变成了头疼的问题, 消息队列 (MQ), RPC框架 (如Dubbo)应运而生,为了提高通信效率,各种 序列化的工具 (如Protobuf)也争先空后地问世。

单个数据库也撑不住了,那就做数据库的 读写分离 ,如果还不行,就做 分库和分表 ,把原有的数据库垂直地切一切,或者水平地切一切, 但不管怎么切,都会让应用程序的访问非常麻烦,因为数据要跨库做Join/排序,还需要事务,为了解决这个问题,又有各种各样“ 数据访问中间件 ”的工具和产品诞生。

为了最大程度地提高性能,缓存肯定少不了,可以在本机做缓存(如Ehcache),也可以做 分布式缓存 (如Redis),如何搞 数据分片 ,数据迁移,失效转移,这又是一个超级大的主题了。

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

数据量大了,搜索的需求就自然而然地浮出水面,你得弄一个支持全文索引的 搜索引擎 (如Elasticsearch ,Solr)出来。

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

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

得把持续集成做好,能自动化地部署,自动化测试(其实前端也是如此),后来出现了一个革命化的技术 docker , 能够让开发、测试、生成环境保持一致,系统原来只是在环境(如Ngnix, JVM,Tomcat,MySQL等)上部署代码,现在把代码和环境一并打包, 运维的工作一下子就简化了。

公司自己购买服务器比较贵,维护也很麻烦,又难于d性地增长,那就搞点虚拟的服务器吧,硬盘、内存都可以动态扩展(反正是虚拟的), 访问量大的时候多用点,没啥访问量了就释放一点,按需分配,很方便,这就是 云计算 的一个场景。

随着时间的推移,各个公司和系统收集的数据越来越多,都堆成一座大山了,难道就放在那里白白地浪费硬盘空间吗?

有人就惊奇地发现,咦,我们利用这些数据搞点事情啊, 比如把数据好好分析一下,预测一下这个用户的购买/阅读/浏览习惯,给他推荐一点东西嘛。

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

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

现在无论是前端还是后端,技术领域多如牛毛,都严重地细分了,所以 我认为真正的全栈工程师根本不存在,因为一个人精力有限,不可能搞定这么多技术领域,太难了

培训机构所说的“全栈”,我认为就是前后端还在拉拉扯扯,藕断丝连,没有彻底分离的时候的“全栈”工程师。

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

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

往深度挖掘,可以成为某个技术领域的专家,如搜索方面的专家、安全方面的专家,分布式文件的专家等等,不管是哪个领域,重点都不是学会使用某个工具和框架, 而是保证你可以自己的知识和技术去搞定这个领域的顶尖问题。

往广度发展,各个技术领域都要了解,对于某种需求,能够选取合适的软件和技术架构来实现它,把需求转化成合适的技术组件,让这些组件以合适的方式连接、部署、运行,这也需要持续地学习和不断的经验积累。

最后,以一张漫画来结束吧!

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

我们首先来来看两者的定义;

前端就是网站前台部分,运行在PC端,移动端等浏览器上展现给用户浏览的网页。用自己的话来说,前端是网页给访问网站的人看的内容和页面。

那前端开发顾名思义就是这些内容和页面中代码的实现。

程序员是从事程序开发、程序维护的专业人员。一般将程序员分为程序设计人员和程序编码人员,但两者的界限并不非常清楚,特别是在中国。

通过比较,不难发现前端开发人员也会涉及到代码的设计编写,其实程序员是一个很大的范畴,分为初级程序员,中级程序员,高级程序员,而且面向的方向也有所不同前端开发人员也算得上是程序员其中的一种。

人们常说的程序员指的是程序编码人员,也就是码农,是和前端开发有所区别的。但广义上的程序员,是包含所有软件程序开发人员。

前端开发是吃青春饭的,这种说法有些偏颇。

之所以出现这种观点,可能是因为很多人认为在国内开发的工作确实很累,需要耗费大量的时间和精力,只有年轻人才顶得住。这个主要是因为国内的软件行业状况决定的,而并不是说前端开发只有年轻人才能做得了。随着技道术能力和工作经验的增加,不但需要大量的程序员,而且逐渐会需要更多的设计分析、管理人员。当然,你目前首先要做好的是学好功课,然后去做程序员,做上几年程序员以后,再逐步向上发展。没有不辛苦的工作!即使你不工作,也很辛苦。关键是你怎样把工作转化为一种享受,让自己的“心情”快乐起来

Web前端开发是一项很特殊的工作,是所有开发人员中最接近用户的。最应该从用户的角度出发,去站在用户的位置上去想,去琢磨开发新的东西。与后端开发不同,前端开发领域涉及的技术全面,用到的技术也很多,而且要做到与时俱进,这就要求前端工程师们时刻关注新技术发展趋势。

要有人去指导,其实这个我好像谈了无数次,现在一个新手想要全部通过自己学习前端,并且找到工作,首先这种可能性非常的小,如果谁能单凭自己一个人的力量自学前端找到工作,那么这个人一定是一个人才,但是这种人只有1%,所以一定要有一个可以帮你解决小问题的人,不然会走很多弯路,得不偿失。自己也在提升学习细细研磨了大概很多视频,有公开的也有花钱买来的,这些视频加起来大小一共600+G,通过每天不断的分析试听,最终我总结出了一套非常深入、且体系非常完整的 web前端java, 教程,涵盖了web前端 java,所需的各个知识点,从基础到深入、从Node等框架源码解读统统都有。在入门学习的过程当中有遇见任何关于学习方法,学习路线,学习效率等方面的问题,你都可以申请加入我的学习交流扣扣裙前面107中间418最后2891。人生如梦,一切尽是虚幻,不若对酒当歌,满饮一杯,醉眼朦胧看世界又何妨哉! 前端不仅仅有前途,也有钱途,但是一定要加强学习奥,与时俱进。这里引用我的偶像"的一句话,现在的前端开发完全可以这样说"因为我们还年轻",是的,前端开发最近几年开慢慢被大家所熟知,因此,个人认为前端开发不仅有前途,更有钱途。前端开发入门容易,但随着学习的深入,后面每前进一步都要付出很大的努力。前面的div+css很容易让我们踏进前端的大门,但是越往后学,需要掌握的东西会越多,它需要很广的知识面来填充自己。

最近几年,前后端分离的思想主键深入,客户端浏览器形成大前端,技术架构上逐渐的从传统的后台MVC

向RESUFUIAPI前端MV迁移,前端项目通过RESTful服务获取数据,RESTfulAPI就是前后端的边界和桥梁。

前后端分离的好处是前端关注页面展现,后端关注业务逻辑,分工明确,职责清晰,前端工程师和后端工程师并行工作,提高开发效率。

首先,从技术结构上来看,Web前端开发涉及到Html、CSS、JavaScript以及众多的前端开发框架技术;后端开发技术主要完成业务逻辑的处理过程,涉及到存储管理、安全管理、并发处理和其他资源调度方面的内容,有多种编程语言可以从事后端开发,包括Java、Python、PHP、C#、Go等;移动端开发涉及到Android开发、iOS开发以及各种移动端设备所需要的特定开发,Android开发可以采用Java或kotlin,iOS开发可以采用OC或swift,另外移动端开发往往也需要掌握JavaScript语言。

在当前云计算技术的推动下,前端开发全栈化是一个比较明显的发展趋势,前端开发岗位的工作边界也在不断拓展,逐渐形成了包括Web前端开发、后端开发(部分)、移动端开发和大数据呈现端开发的“大前端”概念。从目前的就业情况来看,前端开发的就业前景还是不错的,但是企业对于前端程序员的知识面也提出了更多的要求。

目前在大数据、云计算和人工智能相关技术的共同推动下,后端程序员的发展出现了两个方向,一个方向是全栈程序员方向,另一个方向是研发级程序员方向。对于基础学科(数学)比较薄弱的后端程序员来说,如果想提升自身的岗位竞争力,可以考虑向全栈程序员方向发展,而Java全栈开发就是不错的选择。而对于基础学科比较扎实,同时具有较强研发能力的程序员来说,在产业互联网时期可以走研发级路线,以提升自身的岗位竞争力和职业生命周期。

最后,对于初级程序员来说,如果未来想在技术研发领域走得更远,可以考虑读一下研究生。

我从事互联网行业多年,目前也在带计算机专业的研究生,主要的研究方向集中在大数据和人工智能领域,我会陆续写一些关于互联网技术方面的文章,感兴趣的朋友可以关注我,相信一定会有所收获。

如果有互联网、大数据、人工智能等方面的问题,或者是考研方面的问题,都可以在评论区留言!

以上就是关于程序员分前端与后端,那么后端程序员都做些什么看完就知道了全部的内容,包括:程序员分前端与后端,那么后端程序员都做些什么看完就知道了、前端开发和程序员的区别有哪些、程序员做前端开发45岁,有人告诉他是年轻饭,看他是怎么回答的等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zz/9968923.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-03
下一篇 2023-05-03

发表评论

登录后才能评论

评论列表(0条)

保存