后端程序员:如果把Java比作恋人.......

Posted TechGuide

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了后端程序员:如果把Java比作恋人.......相关的知识,希望对你有一定的参考价值。

恭喜发现宝藏!微信搜索公众号【TechGuide】关注更多新鲜好文和互联网大厂的笔经面经。
作者@TechGuide【全网同名】
点赞再看,养成习惯,您动动手指对原创作者意义非凡🤝

相识:见客入来,袜刬金钗溜。和羞走,倚门回首,却把青梅嗅。

大家好,我叫番小海,是一名萌新程序员,很多人叫我番哥。七夕节这天,老板开着它新买的法拉利和秘书去海边度假了,说是去拉投资很辛苦,顺便交给我一个加班任务,要锻炼新人,给我赋能,咱是萌新咱也不懂咱也不敢问。具体任务是给我一周时间做一个男/女盆友自动分发管理系统,七夕上线。众所周知,我的后端开发知识库像我的脸一样干净,我很烦恼。这几天,忧愁他总围绕着我,做不好这个项目,月底的二百五奖金又要泡汤了。于是我打开电脑,百度【程序开发常用语言】

好家伙,各种号称“全世界最好的语言”的编程开发语言看花了眼,我决定哪个最简单容易上手就用哪个,而且刚刚白嫖到手的IntellliJ Idea,据说牛逼的不得了,不得拉出来秀秀?OK,就决定是你啦,Java开始整活!

相遇:有美一人,清扬婉兮。邂逅相遇,适我愿兮。

据说Java有非常丰富的类库和社区支持,JVM的性能到8之后有了一个质的飞跃,让我们愉快的开始学习java…诶…等等…不对,老板是要让我做一个男/女盆友自动分发管理系统(以下简称伴侣分发系)给读者送福利的,这样钻到一门语言里去,岂不是要学到猴年马月?我得看看怎么快速开发一个管理系统。

伴侣分发系得有页面展示吧,自拍照、身高、体重、三围等等信息的展示肯定是必不可少的。那么页面我该怎么开发呢?于是你百度【前端入门】,然后你就知道了原来有前端三剑客这三个东东,使用 htmljavascript、css就可以写一个静态页面出来展示我这个系统需要的所有静态信息啦,包括图片、文字以及各种排版啊等等。

美滋滋,费老大劲写个静态网页找周围一圈同事炫耀一波,突然发现被人秀了一脸,人家早就用上了各种前端框架,你一个下午的工作量人家直接半小时解决,装逼指数直接拉满,听着同事纷纷吐槽用 js 写好麻烦啊,原生的JavaScript还有各种浏览器兼容性的问题,你写出来的东西在chrome浏览器上能用,在ie浏览器上就不能正常显示了。没说的,上网百度【前端框架】

蹬蹬蹬蹬,JQuery闪亮登场,基于JQuery的插件真的多呀,用起来一个字爽,两个字够轻,很多字就是,DOM选择器很丰富,常见的样式与动画操作被封装的很简洁,浏览器兼容性还不错。有了JQuery,你感觉自己又行了,但是这次你学聪明了,你决定先使用一上午,看看是不是还存在什么问题,果然,你用的越多,产生的痛点越多,比如这里有个小鲜肉需要身高高点,但是数据和DOM对象没有绑定,每次修改都要主动操作DOM对象,有没有办法作到只关心数据修改,而和数据绑定的页面元素可以自动同步呢?这样多省事!多番打听,你了解到了啥叫响应式或者叫做双向绑定的概念,并且知道大神们都在用一种叫做VUE的框架,用过的都说效果好极尼奥~没说的, 直接百度【Vue入门】

这下不得了,你仿佛打开了新世界的大门,各种前端操作信手拈来,随着了解的深入,你知道了更多诸如node.js、模块化、js组件化的概念,玩的不亦乐乎,这么好玩,还学个p的后端,直接换工作跑路,转投前端,于是你百度【前端技术学习路线】,伴侣分发系统就此搁浅。

本来刚刚知道java这个神器,雄心勃勃准备大搞特搞,怎么也要达到我这个月定下的的0.0000025个小目标,这可不行,前端再有意思,达成这个目标之后我在去鼓捣。

相知:愿我如星君如月,夜夜流光相皎洁。

终于!终于!到后端部分了,番哥我很开心,因为做成这个伴侣分发系统之后,番哥作为管理员肯定可以给自己多发几个老婆学习到知识。然后领到奖金,经过一年的奋斗,终于可以给老板的法拉利换个新轮胎。

现在,我已经是个会写简单页面的大人了,但是新的问题是,我怎么把数据给前端页面,总不能全写死在前端吧。比如石原里美注册了会员,想要上传一张自己的写真照,新的数据(照片)总要有个地方保存吧,在前端需要的时候再拿出来展示,比如番小海,也就是区区在下想要鉴赏一下的时候。所以,这个保存数据的地方,就是数据库啦!于是你再次打开网页,搜索了更多新垣结衣的照片…你是来学习的…好吗?给我百度【数据库入门】

这样你就知道了原来有这么多关系型数据库呀,什么mysql、Oracle、SQL Server等等。但是他们都有一个共通点,就是基于SQL语言操作的,所以你决定快速学习一下,什么select、insert、delete、update语句,你凭藉着聪明的小脑袋瓜子,很快就掌握了简单的数据库的增删改查。但是问题的关键是,广大帅气的男同胞们来用你的系统是为了看图找对象的,你这样只会sql让他们很为难呀,总不至于看个刘亦菲的高清照还非要找你这个sql boy吧。这肯定涉及到前后端交互的,也就是说你必须要将数据库的增删改查的控制权转移到java手里,由java完成这部分工作,那么怎么完成编程语言(Java)和数据库(DataBase)的连接(Connection)呢?没错,就是JDBC啦!于是你再次暴露你好学的本质,百度【JDBC学习】

很快,你就掌握了jdbc的连接和简单操作,现在你可以直接用java去操作数据库而不依赖任何的数据库客户端或者是原生sql语句了,这就意味着,你在某种程度上,拜托了不熟悉 sql 对你的限制,你可以自如的通过java去查询数据库里刘亦菲的高清照片啦夹带私货哈哈哈哈哈哈哈哈哈哈。

回到刚刚的问题,后端怎么把数据给到前端页面?我们刚刚做的jdbc相关的工作实际还是在后端范围内的,前后端交互这块还没有涉及到,当屏幕前的这位帅比(试问觉得干货满满点个赞的xdm谁不帅呢?)想要获取后端数据库里的某位幸运女嘉宾的相关信息时,应该怎么办呢?换个问题就是,前端页面怎么向后端发送请求呢?于是好学且帅气的你,再次百度【前后端交互】

于是,你搜到了 Ajax,前端页面可以通过它向后端接口请求数据并且展示潜在伴侣的相关信息在分发系统上。在这个过程中,你知道了一种应用层通信协议,叫HTTP,get、post都是这块内容,你还知道了一种数据结构,JSON 格式,前后端接收到的消息都是这个格式的。

现在回过头看,短短几天你已经掌握了很多东西啦,你知道了前端如何展示页面,如何发送Ajax请求到后端,java是怎么操作数据库的,以及数据库如何存储数据,但是还差一点点,就是目前为止,前端的请求是过来了,但是后端没有接口可以接收这个请求,之后按照指示进行提取数据的动作。就像是李云龙在二战转折点平安格勒战役中的意呆利炮,如果没有开炮手接收团长的 “开炮” 的指示,再完成 “发射” 的动作,那不是乱打一气吗?现在就相当于开炮指示是有了(也就是 Ajax 请求),但是开炮手没有呀,这玩个毛呀。

于是你再次百度【后端接口学习】,你了解到了现在后端很多都是基于HTTP接口接收请求的,首先你需要开发一个称作servlet的后端小工具,将其放在Tomcat这个服务器里,这样 servlet 就会老老实实的接受请求,“合理开炮,指哪打哪” 了。就这样,你通过五天的学习,终于掌握了从前端页面展示,到前后端交互(http),再到后端操作(jdbc)数据库的全过程链路。翻译成人话就是,你作为一个帅比用户,使用咱们的伴侣分发系统,根据刘亦菲的基本信息匹配提交请求到后端,后端操作数据库查询到相关照片和视频再返回给前端展示,呈现给你啦,惊不惊喜?意不意外?

相恋:长相思兮长相忆,短相思兮无穷极。

关于伴侣分发系统,如果看完上面一部分,只是完成了简单的查询展示功能,你就满足了的话,那你就只能停留在入门的阶段啦!

这样的系统随着开发进度的推进,你越来越觉得太麻烦了,你每天都在吐槽:首先,jdbc操作数据库实在是太繁琐了吧,每次连接都得open connection,重复写了很多DAO数据层的代码,你坚信,你的痛一定有人能懂,没错,MyBatis早就解放了这部分劳动力,只是你一直不知道而已。时间不多,于是你赶紧百度【MyBatis入门】

卧槽!卧槽!卧槽!卧槽三连,以示尊重,这也太香了吧!极大的简化了JDBC操作,还有丰富的ORM映射和贴心的二级缓存优化性能,甚至直接用在配置文件中一行SQL语句就行,再也不用编写冗余繁杂的dao层代码了,我可真是太谢谢宁啦!

提高了持久层开发的效率之后,你又开始思考是不是servlet配置和开发也能简单点,每次都得重写方法,然后对每一个servlet都要在XML配置文件里详细说明相关信息,而且返回的JSON数据也是拼接起来,一点都不优雅,时间一长,你觉得这样不行,得想想法子提高下效率,没错,你终于!终于!终于!察觉到了Spring的存在!这种神器一直都有听说他的威名,他到底神气在哪里?你决定见识见识。遂百度【Spring入门】

用了这种神器之后,就像用了 IDEA 就再也没办法回到 Eclipse 了一样。Spring再也不用你没事就NEW一个对象了,导致后面实例管理乱七八糟,他直接给你提供了一个容器,你需要的实例都帮你准备好,随取随用,你只需要关心怎么用就行了,至于实例的生命周期管理就全部交给spring容器就好啦!是不是究极贴心。而且spring还能够将例如事务、安全、日志这些功能模块化,哪里需要插哪里,业务模块就只用写好自己的业务代码就好啦,完全不用操心这些功能。没错,以上这两个就是 Spring 著名的 IOC 和 AOP 功能啦。

除此之外,你还了解到一个 Spring MVC 的框架,从展示到后端一条龙服务,轻松代替 servlet、tomcat 那一套,效率轻松提升十倍都不止,哈哈哈哈哈哈哈哈哈哈,你觉得自己这么久的坚持终于达到一个新的高度啦,开心!等等,Spring、Spring MVC 和 MyBatis 不就是著名的 SSM 框架吗? 学到这里,你第一次有了一种一切都有安排,只要努力,早晚水到渠成的快感和一丝感悟。

相爱:金风玉露一相逢,便胜却、人间无数。

随着一周的鼓捣,你终于在老板度假回来之前,顺利开发了一个伴侣分发系统。系统刚一上线,好评如潮,你收获了很多来自老板的鸡汤和大饼,虽然你消化能力不好,但是能拿到那250快奖金你还是非常开心的。很多网友都顺利领到了一个老婆,奔走相告,用户数量剧增,你的数据库有点扛不住啦,现在 tomcat 和 mysql 放在同一台服务器部署,实在是太慢啦,没办法,为了广大网友的福利,你决定分开部署在两台服务器上,这样暂时解决了一部分问题,系统又运转起来啦!你非常开心,为了表扬自己,请自己吃了老板经常光顾的五星级大酒店旁边的六块钱麻辣烫。

好景不长,越来越多的人反映你的系统太卡了,看个迪丽热巴的高清照片,加载的时候总是卡在奇怪的位置上,于是你再次挑灯夜战,没错,你用 redis 加了个缓存,这样不是用户的所有请求都要访问数据库了,减轻数据库访问压力的同时,还减少了用户操作的响应时间。这下图片加载一点都不卡顿了,用户好感直接拉满,老板的收入又增加啦。

但是单身狗实在是太多了,你这个伴侣分发系统实在是太火爆,在市场上着实供不应求,有的时候,单身狗们急起来纷纷比起手速,你这后台的请求就像雨点一样打过来了,就算加了缓存,还是很吃力,没办法,你只有再次将数据库分库分表了,男生、女生分一分,年龄、长相、籍贯分一分,你甚至动用了读写分离,因为你听说大家都是这么用的。反正自己百度来的各种优化性能的方法你全都使上了,终于功夫不负苦心人。系统再次高效运转起来,并且这一次你为了后续用户激增,你甚至申请了几台备用服务器,还引进了一些降级限流的策略。自信如你,终于我也成长为一名资深的程序员了!

程序员世界 Bug 永远不断,你还是发现了新的问题,因为有用户觉得自己太帅,想要更多的资源,于是你开发了会员功能满足这部分需求;还有些用户手头比较拮据,你又开发了优惠券功能,还有其他各种打折促销、信息推荐的功能越来越多,你发现模块管理也是一个新的问题,很多重复的功能不仅占用资源,而且不方便管理,于是你了解到了微服务的概念,开始了大刀阔斧的系统重构…

相守:死生契阔,与子成说。执子之手,与子偕老。

不开玩笑啦,到了这里,常规的后台系统已经初具雏形,足够应付秋招、毕设之流。但是随着对自己的要求不断提高,互联网时代的信息爆炸,高并发、高流量的场景层出不穷,不断有着新的挑战等待着你,微服务、容器化、云原生等等等等。

作为一名程序员必须时刻拥抱变化、不忘初心。

始终记得自己若干年前为之奋斗的那0.0000025个小目标和老板去的某个海边。

恭喜发现宝藏!微信搜索公众号【TechGuide】关注更多新鲜好文和互联网大厂的笔经面经。
作者@TechGuide【全网同名】
点赞再看,养成习惯,您动动手指对原创作者意义非凡🤝

以上是关于后端程序员:如果把Java比作恋人.......的主要内容,如果未能解决你的问题,请参考以下文章

如果把二极管比作人

Java后端小程序微信登录怎么写??

Java基础之流程控制

把机器手臂变成纯爱AI恋人,制造开源男友的女码农到底在想什么?

SpringBoot集成gRPC微服务工程搭建实践

Java多线程学习笔记