程序员分前端与后端,那么后端程序员都做些什么?看完你就明白了!

程序员这条路,技术往深度走还是广度走会比较好?看完这篇文章你就明白了 来自老程序员的心声 阅读详情

  我刚开始做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及其生态系统就应运而生了。

  之前听说过一个大前端的概念,把移动端和网页端都归结为“前端”,我这里造个词“大后端”,把那些用户直接接触不到的、发生在服务器端的都归结进来。想要在程序员生涯内有更高的成就的话,C/C++就是一个既可以强化思维能力,又可以打好编程基础的编程语言,要做软件开发,成为核心程序员的话,就来湫湫学习C/C++吧!你如果感觉自学C/C++语言有困难的话,C/C++编程学习,六零四,一六8和719。即使是零基础的学习者,都可以一起成长进步。

                         

4、怎么学好后端?

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

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

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

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

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

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

  最后,以一张漫画来结束吧!学习C/C++编程,欢迎关注微信公众号:C语言编程学习基地。

                                        

新手学编程前端好还是后端? 1.LintCode网站是国内较大的在线编程&测评网站2.网站提供编程题库,题目从最简单的开始,难度不断增加。并且网站会对参与者进行排名。其实真不用上多少网站刷题,一个力扣足够了,其他的我是看面试资料细数面试技巧就挺多了,最重要的是你一定要表述的清楚,朋友可以互相之间进行面试、提问,总结一些遇到的面试的问题。还有一点是项目,可以去gitlub上找一些开源的项目,看一看别人的代码、技术点,将别人的项目熟悉之后当作自己的项目。... 阅读详情

相关推荐

安卓前端如何与.net后端通信(一)

今天在公司工作,由于项目人手不够,后端是使用.net开发的,然后一个写交换的哥们不知道如何下手。 刚开始,我也是狗吃王八无从下口。 回想一下以前做的开发,任何与后端的通信,无非就是找到后端的相应路径,然后加上对应的参数,就能完成对应的功能。 例如: 一、在浏览器中,用百度搜索123的结果。 如图: 从上面的图片中可以看到,web前端和后端的数据交互后的结果无非就是一段地址: http

雨淋一整夜 3602

科普:程序员有哪些分类,前端、后端、测试分别是做什么?从零基础到精通,收藏这篇就够了!

每个岗位的职责和工作内容有所不同,但是都需要掌握基本的编程能力和计算机基础知识,同时需要不断学习和掌握新的技术和工具,以适应快速变化的互联网技术发展。总的来说,程序员需要具备扎实的编程基础,不断学习新技术和不断提高自己的解决问题能力。

leah126的博客 6931

IIS - 会话cookie中缺少HttpOnly属性

不啰嗦,我们直接开始! 先进行常规设置 打开配置编辑器 选中图中节点,将httpOnlyCookies设置为true 然后。。。不起作用。。。 换种方式 通过配置出站规则getcookie添加HttpOnly 在Web.config中添加如下出站规则 <rewrite> <outboundRules> <rule name="Add HttpOnly"> <match serverVa.

。 21万+

程序员应该选择干前端还是干后端呢?

程序员新人的职业选择,应该是干前端工程师、还是后端工程师呢.我的一点见解

weixin_43549003的博客 4991

Mediapipe手势识别实战——基于关节角度计算实现动态手势分类

本文详细介绍了如何利用Mediapipe进行手势识别,通过计算手指关节弯曲角度实现动态手势分类。文章从基础原理出发,讲解了关节角度计算的数学方法,并提供了Python实现代码。同时,还分享了数字手势和OK手势的识别实战经验,以及性能优化和工程实践中的关键技巧,帮助开发者快速掌握实时手势识别技术。

weixin_26891599的博客 403

Mplus实战:如何用潜在类别分析(LCA)快速搞定心理学数据分类?

本文详细介绍了如何运用Mplus软件进行潜在类别分析(LCA),以快速处理心理学数据并识别内部异质性群体。文章从数据准备、Mplus语法编写、模型拟合与选择,到结果解读与高级应用(如纳入协变量),提供了完整的实战指南,帮助研究者从变量视角转向个体视角,有效挖掘数据中的潜在子类别。

weixin_28318011的博客 409

科普:程序员有哪些分类,前端、后端、测试分别是做什么?从零基础到精通,收藏这篇就够了!_软件后端和软件测试

每个岗位的职责和工作内容有所不同,但是都需要掌握基本的编程能力和计算机基础知识,同时需要不断学习和掌握新的技术和工具,以适应快速变化的互联网技术发展。总的来说,程序员需要具备扎实的编程基础,不断学习新技术和不断提高自己的解决问题能力。

程序员阿飘 的博客 7161

手把手教你在VirtualBox里复活Win98,并搞定驱动和文件传输(含资源寻找攻略)

本文详细指导如何在VirtualBox中安装和配置Windows 98,包括驱动安装、文件传输等实用技巧。通过逐步教程和资源寻找攻略,帮助技术爱好者完美复刻这一经典操作系统,满足怀旧或兼容性测试需求。

weixin_29596051的博客 324

后端程序员要掌握哪些知识?

加油卷吧各位(2023/4/16春招中)

qq_45800977的博客 1966

大模型实战—通义千问大模型微调

这个参数仅针对 llama 类型的模型结构,默认勾选的是 q_proj 和 v_proj,具体的名词不容易理解,我就不多说了,可以简单的认为是对模型的理解能力进行优化,一般这两个就够了。当这个值较高时,适应新任务的能力会增强,但是对基础模型的影响会比较大,有过拟合的风险,尤其是在数据量有限的情况下。为了方便测试,我在云环境也创建了一个镜像,相关的环境都配置好了,可以直接使用几个国内开源的大语言模型,比如清华智谱的ChatGLM3-6B、零一万物的Yi-34B,还有最近阿里云开源的Qwen1.5-32B。

7万+

Quuppa 如何引领蓝牙 ® 定位服务的全新发展方向

我们最优质的客户,是那些对其他实时定位系统(RTLS)的承诺感到失望、转而寻求 “能覆盖全业务场景的更广泛赋能技术” 的客户 —— 前文提到的消防车制造商就是典型案例:他们尝试并通过 Quuppa 的蓝牙方案取得了成功。我们希望业务合作伙伴(如系统集成商、解决方案提供商)能充分利用 Quuppa 智能定位系统的功能,为客户提供专属解决方案:无论是追踪微型标签、实现未来移动设备的 AoD 功能,还是基于 RSSI 的简单信标(信标作为物联网网关),这些功能都能让同一套 Quuppa 系统支持广泛的用例。

专业开发者的博客,一个从事Android WiFi和蓝牙的工程师 831

java后端程序员是干什么的

Java 后端程序员是负责开发后端系统的软件工程师。他们负责设计、开发和维护后端系统,以便与前端系统(如网页或移动应用)进行交互。他们需要编写高效、可扩展的代码,并使用 Java 技术(如 Servlets 和 JavaServer Pages)构建 Web 应用程序的后端组件。后端程序员还负责与数据库管理员(DBAs)合作,以确保数据安全和效率。 ...

weixin_42576186的博客 541

RK3588网卡出现丢包或者带宽不足的问题验证排查

注意除了有最大的TCP数据接收缓冲,还有/proc/sys/net/core/wmem_max — 最大的TCP数据发送缓冲可以调整,这里暂时没用到,针对具体需要可适当调整。比如把ethx接口中断从默认的cpu0迁移到其它cpu,例如将eth0中断234移到cpu7 (10是16进制, cpu0 =3588的cpu有8个核,4个A55(小核)+4个A76(大核),可以找到对应中断 将中断从默认cpu0核切到cpu7。tcp_rmem:单位是字节,接收缓存区大小,缓存从对端接收的数据,后续会被应用程序读取。

Android/Linux驱动开发传帮带学习,让驱动入门门槛更低! 2027

怎么把后端的数据添加进html_程序员分前端与后端,那么后端程序员都做些什么?看完你就明白了!...

  我刚开始做Web开发的时候,根本没有前端,后端之说。 原因很简单,那个时候服务器端的代码就是一切:接受浏览器的请求,实现业务逻辑,访问数据库,用JSP生成HTML,然后发送给浏览器。 即使后来Javascript在浏览器中添加了一些AJAX的效果,那也是锦上添花,绝对不敢造次。因为页面的HTML主要还是用所谓“套模板”的方式生成:美工生成HTML模板,程序员用JSP,V...

weixin_39924779的博客 972

【AUTOSAR-E2E】-2.2-配置E2E:基于E2EPW配置一个TX发送的Signal Group(使用E2E Profile 2)

《共13页精讲》:此法也适用于E2E Profile 4/5/6/7/11/22 目录 1 检查CAN Matrix Arxml/DBC是否满足E2E需求 2 在DaVinci Developer中为Port添加E2E保护 3 在DaVinci Configurator settings设置 4 如何使用应用层的E2E保护 5 结尾 <--返回「Autosar_BSW高阶配置」总目录--> <--返回「Autosar_BSW高阶配置」专栏主页--> &lt.

「汽车电子助手」的博客 4218

锂电池充电器电路设计 里面有电路

锂电池充电器电路设计 里面有电路 3.7V升压到5V电路设计。

前端和后端怎么进行数据交互的_前端VS后端

前言对于广义上的前端来说,上游是接口, 下游是界面。对于后端来说,上游是数据库, 下游是接口。前端的工作的核心是交互,消费接口的数据,给到用户。我们分别来看这几个方面:前端能够抵达的最上游是接口,作为数据的消费者( 或者说使用者), 接口数据是-切 功能的根基,换句话说,你要做多复杂的功能交互,都要在能拿到的数据基础上。而接口往往是后端给出的,所以在需求评审的时候,前端同学通常就是关注一...

weixin_39856589的博客 5375

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

前端到底怎么调用后端服务的?什么是Vue?怎么调用C#写的后端!

前言 前端的概念很广,可以直观上理解为直接呈现给用户的网页部分,前端的实现涉及多种编程技术或语言,如HTML、CSS、JavaScript、Vue.js、ajax等,它们只需要一个浏览器即可运行。但是有时候前端网页需要的某些功能不好直接在前台(浏览器)中实现,这时候需要借助某种后端编程语言如Java、Python、PHP、C#等,可以在本地服务器上编写代码实现该功能,然后作为一种服务提交给前端进行调用。那么问题来了,前端究竟是怎么调用后端服务的呢?和我一起来一探究竟吧! 正文 1. 工具准...

Read by heart 7718

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

前端难,还是后端难?我写了 8 年 Java,终于想明白了

前端从 jQuery 干到 Vue、React,工具链从 Webpack 烧到 Vite,我算是一路旁观前端“内卷”的历史。我是个写了 8 年 Java 的后端开发,从金融系统到中后台平台,从单体架构到微服务,从 JSP 到前后端分离,什么形态都见过。一个优秀的前端,能搞懂服务端渲染、架构拆分、组件复用,比很多“伪全栈”更专业;这篇文章,不是为了拉踩谁,而是换一个更立体的视角,看看“前后端到底谁更难”。前端也好,后端也罢,本质上我们解决的,都是“让人更好地使用系统”的问题。

m0_60456028的博客 702

java配合什么做前端_作为一个java程序员 ,前端的技术需要达到什么水平?

一个后端程序员,需要掌握前端技术吗?JSP时代8年前,刚刚进入编程这个行业,当时的Web开发使用古老的SSH框架+JSP。那个时候,几乎所有的Java程序员都要懂得如何写JavaScript、如何解决页面布局问题。所以在当时,从事Web开发不会明明白白地的分成前端程序员、后端程序员,几乎每一个人都既要懂后端,又要懂前端。JSP虽然功能很强大,性能也不错,但是会导致前端页面代码过于凌乱。想想看,一个...

weixin_42501631的博客 1319

java程序员需要会前端吗_一个后端程序员,需要掌握前端技术吗?

一个后端程序员,需要掌握前端技术吗?JSP时代8年前,刚刚进入编程这个行业,当时的Web开发使用古老的SSH框架+JSP。那个时候,几乎所有的Java程序员都要懂得如何写JavaScript、如何解决页面布局问题。所以在当时,从事Web开发不会明明白白地的分成前端程序员、后端程序员,几乎每一个人都既要懂后端,又要懂前端。JSP虽然功能很强大,性能也不错,但是会导致前端页面代码过于凌乱。想想看,一个...

weixin_39854778的博客 2945

嵌入式累还是程序员累_[丁哥开讲28期]前端开发累还是后端开发累?

总的来说,在开发的过程当中,前端的工作量大于后端的工作量。[复杂度问题]关于程序复杂度的问题,如果你的程序的规模,跟你的程序的复杂度成正比的话,说明你的程序架构出问题了。 也就是说随着项目规模的增加,程序的复杂度不能够显著的增加。 就是因为程序复杂度的增加,而不是工作量的增大,导致了维护成本越来越高,接下来的工作你会需要越来越多的后端人员或者前端人员。 这一点上来说,主要就看你程序的架构是如何设计...

weixin_39855796的博客 3880

兄弟做了一年前端就转行了!前端开发程序员有未来吗?

我的兄弟在去年十月份入行前端,今年11月份就离职了,离职前告诉我:发际线越来越高了,女朋友觉得我每天加班,都没时间陪她,拿着上万块钱的工资有什么用,给她买再多的口红,包包,也抵不过周末的时候能好好跟她吃一顿饭,看一场电影。 听到他说完这段话,我的心中也是泛起了波澜!我又何时见过六七点下班高峰期,马路上人来人往的车辆呢? 这位兄弟在辞职之后去考公务员去了,也许他的内心更渴望平平淡淡的生活。 做开发...

程序员生活 1781

前端、后端、测试,究竟应该如何抉择?

最近,有朋友留言问我,0基础的小白,想转入IT行业,前端、后端和测试,哪个更好?笔者以为,道听途说,永远不如适合自己最重要。 我是一名从业8年的前端工程师,后端也略会一二,期间也兼职过公司的测试岗位,谈谈我的一点想法,仅供参考。 1、前端工程师的日常 首先要搞明白,你是否对前端开发、编程敲代码感兴趣,而不是说看中了IT行业的高薪,觉得别人去培训机构培训半年,出来在西安月薪8K等。 如果你对编程不感兴趣,那么你在培训机构或者是工作上班后,每天都是折磨,都是煎熬。因为前端开发这一行,是需要你不断去学习的。停滞不

xuezhangmen的博客 1万+

什么是后端渲染?什么是前端渲染?后端渲染和前端渲染又有什么区别呢?

什么是后端渲染?什么又是前端渲染呢?后端渲染和前端渲染又有什么区别呢? 最近在学习Vue的时候接触到了这个话题,我觉得还挺有意思的,所以写下来,记下来。 一、什么是后端渲染? 我们都知道现在的网页都由html+css+js组成,但是在比较早的时候是没有js(JavaScript)的。所以那时候网页开发一般都是用html+css+jsp(java server page)/php来开发。我自学前端写的第一个算是有网络交互功能的东西(留言板)用的就是html+css+php来完成的(php代码的作用是从数据库

weixin_48681975的博客 4586

一文搞懂什么是前端渲染和后端渲染以及两者的区别

一文搞懂什么是前端渲染和后端渲染以及两者的区别

m0_51358164的博客 5050

学编程到底难不难呢。看完这一篇你就全明白了

经常有一些朋友问我,学编程到底难不难。我现在学编程晚不晚。这里我也写一篇文章来分享一下。什么叫程序,以及怎么去学习编程。 什么是程序 什么是程序。什么是程序,程序一种计算机能够懂语言,程序经过编译之后,分发给计算机去执行某种功能的,一些系列代码集合。比如说播放电影,拍照。这些都是程序,我们打车软件,QQ,微信等等都是一些程序,随意信息化的发展,IT技术正在改变我们的生活。程序种类也保罗万象。也正在...

1474
上一篇: HR怎么从面试中了解程序员的真实水平?需要面试的程序员,注意了!
下一篇: @计算机专业大学生,毕业后如何明确自己的职业方向,该走那条路?
CodingPs
博客等级 码龄7年 182粉丝 253原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值