阿里四年,整理了一份很全的Java后端学习路线

2023-05-27 0 313

序言

VM288我想写很久了,但因为天数的原因始终拖至了那时,我误以为两三天就完稿了,结果从构想到重新整理数据资料,再到写出来用了相差无几两周的天数吧。

你们也晓得丙丙始终都是音乐创作教父来的,所以我的确不会直截了当的写,我想了三四个突破口,最终决定用两个完备的B2C控制系统作为突破口,带着我们看一看,他们需要学些啥,我甚至还搜集基础建设音频和数据资料,暖男石锤啊,VM288是不辞劳苦之作,不要白嫖了。

节录

在写这个该文之前,我花了点天数,他们幻想了两个B2C控制系统,大体上称得上米朗博县Esternay,我今天就用它动手术,一点一点探究,要是讲呵呵他们可能会碰触的控制技术栈可能不全,但绰绰有余,最终给个自学走线。

Tip:请多观赏一会儿,每一点看呵呵,看一看甚么地方是你碰触过的,甚么控制技术栈是你比较复杂的,我真的还称得上比较全的,有甚么建议也可以回帖给我。

阿里四年,整理了一份很全的Java后端学习路线

不晓得我们都看了呵呵没,那时他们要是轻功了,我由上而下依序分析。

后端

你可能会会疑惑,你不是讲后端自学走线嘛,咋还有后端部分,我只能说你,白痴,幼稚。

他们可不能死板,谁说你后端就不学点后端了?

后端那时很多也介绍后端控制技术栈的,你想他们去两个中文网站,种叠碰触的,种叠看到的是啥?

要说就是后端,在理工学院你就算找不出专门针对的后端老师,去做控制系统的确也要他们顶呵呵后端,那我真的最基本的控制技术栈得熟识和介绍吧,丙丙那时也是偶而会合作开发呵呵他们的管理控制系统主就算VUEReact

在这里我列举了我目前真的比较简单和他们后端可以介绍的控制技术栈,都是比较基础的。

作为一名后端介绍部分后端知识还是很有必要的,在以后合作开发的时候,公司有后端那能帮助你前后端联调更顺畅,如果没后端你他们也能顶呵呵简单的页面。

HTMLCSSJSAjax我真的是必须掌握的点,看着简单其实深究或者去操作的话还是有很多东西的,其他作为扩展有兴趣可以介绍,反正入门简单,只是精通很难很难。

在这一层不光有这些还有Http协议和Servlet,requestresponsecookiesession这些也会伴随你整个控制技术生涯,理解他们对后面的你的确有不少好处。

阿里四年,整理了一份很全的Java后端学习路线

Tip:我这里最终删除了JSP相关的控制技术,我个人真的没必要学了,很多公司除了老项目之外,新项目都不会使用那些控制技术了。

后端在我看来比后端难,控制技术迭代比较快,知识好像也没特定的体系,所以面试大厂的后端很多朋友都说难,不是控制技术多难,而是知识多且复杂,找不出两个完备的体系,相比之下后端明朗很多,我后面就开始讲后端了。

网关层:

互联网发展到那时,涌现了很多互联网公司,控制技术更新迭代了很多个版本,从早期的单机时代,到那时超大规模的互联网时代,几亿人参与的春运,几千亿成交规模的双十一,无数互联网前辈的造就了那时互联网的辉煌。

微服务分布式负载均衡等他们经常提到的这些名词都是这些控制技术在场景背后支撑。

单机顶不住,他们就多找点服务器,但怎么将流量均匀的打到这些服务器上呢?

负载均衡,LVS

他们机器都是IP访问的,那怎么通过他们申请的域名去请求到服务器呢?

DNS

我们刷的抖音,B站,快手等等音频服务商,是怎么保证同时为全国的用户提供快速的体验?

CDN

他们这么多控制系统和服务,还有这么多中间件的调度怎么去管理调度等等?

zk

这么多的服务器,怎么对外统一访问呢,就可能需要晓得反向代理的服务器。

Nginx

阿里四年,整理了一份很全的Java后端学习路线

这一层做了反向负载、服务路由、服务治理、流量管理、安全隔离、服务容错等等都做了,我们公司的内外网隔离也是这一层做的。

我之前还碰触过一些比较有意思的项目,所有对外的接口都是加密的,几十个服务会经过网关解密,找到真的路由再去请求。

阿里四年,整理了一份很全的Java后端学习路线

这一层的知识点其实也不少,你往后面学会发现分布式事务,分布式锁,还有很多中间件都离不开zk这一层,他们继续往下看。

服务层:

这一层有点东西了,称得上整个框架的核心,如果你跟我帅丙一样以后都是从事后端合作开发的话,他们大体上整个控制技术生涯,大部分天数都在跟这一层的控制技术栈打交道了,各种琳琅满目的中间件,计算机基础知识,Linux操作,算法数据结构,架构框架,研发工具等等。

我想在看这个该文的各位,计算机基础的确都是学过的吧,如果理工学院的时候没好好学,我真的还是有必要再看一看的。

为甚么他们网页能保证安全可靠的传输,你可能会介绍到HTTP,TCP协议,甚么三次握手,四次挥手。

还有进程、线程、协程,甚么内存屏障,指令乱序,分支预测,CPU亲和性等等,在之后的编程生涯,如果你能掌握这些东西,会让你在遇到很多问题的时候瞬间get到点,而不是像个无头苍蝇一样乱撞(然而丙丙还做得不够)。

介绍这些计算机知识后,你就需要碰触编程语言了,理工学院的C语言基础会让你学甚么语言入门都会快点,我选择了面向对象的JAVA,但也不晓得咋那时还没对象。

JAVA的基础也一样重要,面向对象(包括类、对象、方法、继承、封装、抽象、 多态、消息解析等),常见API,数据结构,集合框架设计模式(包括创建型、结构型、行为型),多线程和并发I/O流,Stream,网络编程你都需要介绍。

代码会写了,你要是开始自学一些能帮助你把控制系统变得更加规范的框架,SSM可以会让你的合作开发更加便捷,结构层次更加分明。

写代码的时候你会发现你理工学院用的Eclipse在公司看不出了,你跟我们一样去用了IDEA,第一天这是甚么玩意,两周后,真香,但这玩意收费有点贵,那免费的VSCode真的就是不错的选择了。

代码写的时候你会碰触代码的仓库管理工具mavenGradle,提交代码的时候会去写项目版本管理工具Git

代码提交之后,发布之后你会发现很多东西需要他们去服务器亲自排查,那Linux的知识点就可以在里面灵活运用了,查看进程,查看文件,各种Vim操作等等。

控制系统的优化很多地方没优化的空间了,你可能会尝试从算法,或者优化数据结构去优化,你看到了HashMap的源码,想去介绍红黑树,然后在算法网上看到了二叉树搜索树和各种常见的算法问题,刷多了,你也能总结出精华所在,甚么贪心,分治,动态规划等。

这么多个服务,你发现HTTP请求已经开始有点不满足你的需求了,你想合作开发更便捷,像访问本地服务一样访问远程服务,所以他们去介绍了Dubbo,Spring cloud

介绍Dubbo的过程中,你发现了RPC的精华所在,所以你去碰触到了高性能的NIO框架,Netty

代码写好了,服务也能通信了,但你发现你的代码链路好长,都耦合在一起了,所以你碰触了消息队列,这种异步的处理方式,真香。

他还可以帮你在突发流量的时候用队列做缓冲,但你发现分布式的情况,事务就不好管理了,你就介绍到了分布式事务,甚么两段式,三段式,TCC,XA,穆萨的全局事务服务GTS等等。

分布式事务的时候你会想去介绍RocketMQ,因为他自带了分布式事务的解决方案,大数据的场景你又看到了Kafka

阿里四年,整理了一份很全的Java后端学习路线

我上面提到过zk,像DubboKafka等中间件都是用它做注册中心的,所以很多控制技术栈最终都组成了两个知识体系,你先介绍了体系中的每一员,你才能把它们联系起来。

阿里四年,整理了一份很全的Java后端学习路线

服务的交互都从进程内通信变成了远程通信,所以性能必然会受到一些影响。

此外由于很多不确定性的因素,例如网络拥塞、Server 端服务器宕机、挖掘机铲断机房光纤等等,需要许多额外的功能和措施才能保证微服务流畅稳定的工作。

Spring Cloud 中就有 Hystrix 熔断器、Ribbon客户端负载均衡器、Eureka注册中心等等都是用来解决这些问题的微服务组件。

你感觉自学得相差无几了,你发现各大论坛博客出现了一些前沿控制技术,比如容器化,你可能就会去介绍容器化的知识,像Docker,Kubernetes(K8s)等。

微服务之所以能够快速发展,很重要的两个原因就是:容器化控制技术的发展和容器管理控制系统的成熟。

阿里四年,整理了一份很全的Java后端学习路线

这一层的东西呢其实远远不止这些的,我不过多赘述,写多了像个劝退师一样,但我们也不用慌,大部分的控制技术都是慢慢碰触了,工作中慢慢去介绍,去深入的。

好啦他们继续沿着图往下看,那再往下是啥呢?

数据层:

数据库可能是整个控制系统中最值钱的部分了,在我码文字的前一天,刚好发生了微盟程序员删库跑路的操作,删库跑路其实是他们在网上最常用的笑话,没想到还是照进了现实。

阿里四年,整理了一份很全的Java后端学习路线

这里也提一点点吧,36小时的故障,其实在互联网公司应该是个笑话了吧,权限控制没做好类似rm -rf 、fdisk、drop等等这样的高危命令是可以实时拦截掉的,备份,全量备份,增量备份,延迟备份,异地容灾全部都考虑呵呵应该也不至于这样,一家上市公司还是有点点不应该。

阿里四年,整理了一份很全的Java后端学习路线

数据库基本的事务隔离级别索引,SQL,主被同步,读写分离等都可能是你学的时候要介绍到的。

上面他们提到了安全,不要把鸡蛋放两个篮子的道理我们应该都晓得,那分库的意义就很明显了,然后你会发现天数久了表的数据大了,就会想到去碰触分表,甚么TDDLSharding-JDBCDRDS这些插件都会碰触到。

你发现流量大的时候,或者热点数据打到数据库还是有点顶不住,压力太大了,那非关系型数据库就进场了,Redis当然是首选,但MongoDB、memcache也有各自的应用场景。

Redis使用后,真香,真快,但你会开始担心最开始提到的安全问题,这玩意快是因为在内存中操作,那断点了数据丢了怎么办?你就开始阅读官方文档,介绍RDB,AOF这些持久化机制,线上用的时候还会遇到缓存雪崩击穿、穿透等等问题。

单机不满足你就用了,他的集群模式,用了集群可能也担心集群的健康状态,所以就得去介绍哨兵,他的主从同步,天数久了Key多了,就得介绍内存淘汰机制……

他的大容量存储有问题,你可能需要去介绍Pika….

阿里四年,整理了一份很全的Java后端学习路线
阿里四年,整理了一份很全的Java后端学习路线

其实远远没完,每个的点我都点到为止,但其实要深究每一点都要学很久,他们接着往下看。

实时/离线/大数据

等你把几种关系型非关系型数据库的知识点,重新整理清楚后,你会发现数据还是大啊,而且数据的场景越来越多多样化了,那大数据的各种中间件你就得介绍了。

你会发现很多场景,不需要实时的数据,比如你查你的支付宝去年的,上个月的账单,这些都是不会变化的数据,没必要实时,那你可能会碰触像ODPS这样的中间件去做数据的离线分析。

然后你可能会碰触Hadoop系列相关的东西,比如于Hadoop(HDFS)的两个数据仓库工具Hive,是建立在 Hadoop 文件控制系统之上的分布式面向列的数据库HBase

写多的场景,适合做一些简单查询,用他们又有点大材小用,那Cassandra就再合适不过了。

离线的数据分析没办法满足一些实时的常见,类似风控,那Flink你也得略知一二,他的窗口思想还是很有意思。

数据碰触完了,计算引擎Spark你是不是也不能放过……

阿里四年,整理了一份很全的Java后端学习路线

搜索引擎:

传统关系型数据库和NoSQL非关系型数据都没办法解决一些问题,比如他们在百度,淘宝搜索东西的时候,往往都是几个关键字在一起一起搜索东西的,在数据库除非把几次的结果做交集,不然很难去实现。

那全文检索引擎就诞生了,解决了搜索的问题,你得思考怎么把数据库的东西实时同步到ES中去,那你可能会思考到logstash去定时跑脚本同步,又或者去碰触伪装成一台MySQL从服务的Canal,他会去订阅MySQL主服务的binlog,然后他们解析了去操作Es中的数据。

这些都搞定了,那可视化的后台查询又怎么解决呢?Kibana,他他是两个可视化的平台,甚至对Es集群的健康管理都做了可视化,很多公司的日志查询控制系统都是用它做的。

阿里四年,整理了一份很全的Java后端学习路线

自学走线

看了这么久你是不是发现,帅丙只是始终在介绍每一层级的控制技术栈,并没说到具体的两个走线,那是因为我想让我们先有个认知或者说是扫盲吧,我一样用脑图的方式汇总呵呵吧,走线】。

阿里四年,整理了一份很全的Java后端学习路线

数据资料/自学中文网站

JavaFamily:由两个在互联网苟且偷生的男人维护的GitHub

CodeGym:两个在线Java编程课程,80%的内容是练习,适合一窍不通的入门者。

Wibit Online Java Courses :两个非常有趣的编程自学中文网站,各种生动的动画形象能让人忘记自学的枯燥。在线音频自学,非常适合零基础。

stanford CS106A: Programming Methodology :斯坦福经典课程系列,完全没有编程经验,想学Java语言的,可以看一看这个课程。

Bloombenc:两个在线交互式自学平台,老师可以根据你的自学能力和节奏修改他们的教学方法,还可以在平台上编码。

Imooc:慕课网,我理工学院的C语言就是在这里看的

CodeAcademy :比较实用的Java在线课程,注重的是在找工作时非常有用的控制技术能力。

PLURALSIGHT:整合了很多Java的音频课程,部分免费,部分付费,可以根据他们的需要挑选。

Lynda Online Java Training Videos:Java进阶课程,包括如何使用JDBC来集成MySQL数据库,Reflection API,管理文件和目录等。

九章基础算法班(Java):中文在线互动课,随时开始自学。

BeginnersBook:Java初学者免费教程,有稍微一些编程基础之后,可以跟着文档里的代码练习。

docs.oracle.com/javase/tutorial:官方Java指南,对介绍几乎所有的java控制技术特性都非常有帮助。

JournalDev:Java相关教程及问答

JavaWorld:最早的两个Java站点,每周更新Java控制技术该文。

developer.com/java :由http://Gamelan.com 维护的Java控制技术该文中文网站。

IBM Developerworks控制技术中文网站:IBM的Develperworks控制技术中文网站,这是其中的Java控制技术主页

走线】好了。

阿里四年,整理了一份很全的Java后端学习路线

絮叨

如果你想去一家不错的公司,但目前的硬实力又不出,我真的还是有必要去努力呵呵的,控制技术能力的高低能决定你走多远,平台的高低,能决定你的高度。

如果你通过努力成功进入到了心仪的公司,一定不要懈怠放松,职场成长和新控制技术自学一样,不进则退。

丙丙发那时工作中发现我身边的人真的就是实力越强的越努力,最高级的自律,享受孤独(周末的歪哥)。

阿里四年,整理了一份很全的Java后端学习路线

总结

我提到的控制技术栈你想全部介绍,我真的初步介绍可能几个月就够了,这里的介绍仅限于你晓得它,晓得他是干嘛的,晓得怎么去使用它,并不是说深入介绍他的底层原理,介绍他的常见问题,熟识问题的解决方案等等。

你想做到后者,大体上只能靠天数上的日积月累,或者不断的去尝试积累经验,也没甚么速成的东西,欲速则不达我们也是晓得的。

控制技术这条路,说实话很枯燥,很辛苦,但待遇也会高于其他一些基础岗位。

所实话我理工学院学这个就是为了兴趣,我从小对电子,对计算机都比较热爱,但那时打磨得,那时就是为了钱吧,是不是很现实?若家境殷实,谁愿颠沛流离。

但至少丙丙因为做软件,改变了家庭的窘境,他们日子也向小康一点一点迈过去。

说做程序员改变了我和我家人的一生可能夸张了,但我总有一种下班辈子会因为我选择走这条路而改变的错觉。

我是敖丙,两个在互联网苟且偷生的工具人。

音乐创作不易,本期硬核,不想被白嫖,各位的「三连」就是丙丙音乐创作的最大动力,他们下次见!

相关文章

发表评论
暂无评论
官方客服团队

为您解决烦忧 - 24小时在线 专业服务