这21 张思维导图,足足让我肝了半个月的「后端技术学习路线」长啥样?(附全套Java资料)

本文作者分享了花费半个月时间整理的后端技术学习路线,涵盖计算机基础、Linux、数据库、高并发、设计模式、分布式等方面。重点强调了计算机基础的四大专业课:计算机组成原理、计算机网络、操作系统、数据结构。同时提到了学习Linux、网络编程、数据库技术、高可用和高性能的重要性,并概述了中间件、监控统计、安全等相关知识。
摘要由CSDN通过智能技术生成

 

写的文章也都是围绕着这个主题,这位读者的问题让我突然意识,我忽略了读者群体里有很多是初学编程,或者刚接触计算机的同学。

作为一个普通大学非计算机专业,自学后端技术进入腾讯从事后端开发工作,我自己也是非科班自学计算机成功转行软件开发(有想听转行之路经历的吗,可以留言告诉我,人多就写写),体会过当初想学又不知从何学起的迷茫,还好最后摸索出了一条正确学习的路线。

思来想去,学习方向和路线很重要。比起具体的技术细节,可复制的经验、清晰的学习路线,是大部分人更加需要的东西

朝着正确的方向努力否则只会离目标越来越远,不是吗?

只顾着写各种技术,不告诉大家这个知识点在后端技术图谱的什么位置,有点盲人摸象不知全貌的感觉,很多在我看来大家都懂的内容,其实只是我以为,信息差是客观存在的,抹平信息差是分享的价值所在。

所以这一期文章柠檬哥足足花了半个月时间,整理了一张后端技术学习路线思维导图,来和你聊聊:

要成为一个符合 BAT、TMD 大厂要求的后端技术工程师,到底需要学哪些技术?后端技术学习路线是怎样的?

学习路线

话不多说,直接上刚画完的后端技术学习路线思维导图框架:

图中的每一个节点都可以点开,我都做了细分,在后面章节逐个展开介绍。

后端技术学堂开课半年以来,写了 30+ 篇原创文章,内容有Linux、数据库、算法、架构、微服务、甚至中间还写了一个系列的Golang基础教程,真算得上是天马行空,这就是才华横溢吧(狗头)。

历史文章都在后端知识体系范畴内,你甚至可以对照下我历史文章分享的内容,都可以在我今天整理的这张学习路线图中找到相应的位置,后续更新的文章我也会归类到其中,方便大家归纳复习。

计算机基础

不管是后端开发还是前端开发,说到底我们所有的软件开发都是在计算上编写程序,虽然对于大部分人来说,真正开始写代码的时候很少会让你去解决计算机底层的问题,不接触不代表不重要,计算机基础是最重要的。

后端开发工作中经常用到 Java、C++、Python、Golang 这些语言称为高级编程语言,称为高级是它们接近我们日常交流的自然语言,离计算机底层远,但所有的高级语言最终都会转化成汇编->计算机指令->控制流操控计算机硬件,所以学习计算机构成和工作原理、操作系统这些基础知识,能够加深我们队高级语言的理解。

那我们一直说的计算机基础到时是什么?计算机科学技术 CS(Computer Science)作为一门专业课程,就和其他工科课程一样有自己的理论体系,如果你是计算机专业的同学不用我来教该学什么,计算机专业大学四年学校教的那些就是基础,别小看你在学校学的那些看起来没啥用的课程。我这有一份中中科大的计算机技术本科主要课程结构安排

一流大学的计算机专业要学什么可以对照着看下,从学科数学理论基础、计算机体系结构、软件工程方法等等维度展开。

那如果你不是计算机相关专业的想转行,也不要被吓到了,毕竟这是人家四年时间的学习内容,本科的培养目标不仅仅是培养出一个软件工程师,本科学习还是面向硕士博士的基础培养,注意是计算机科学专业,名字里有个词叫「科学」,我这篇文章要说的 BAT 公司后台软件开发,可以认为是「工学」方向,更多的是服务于工程开发。

如果只是面向后台开发和工作面试,或者你是非计算机专业想转行,社畜没有太多时间去学习大学那些理论课程,那帮我把计算机基础的范围缩小到下面这 4 门专业课:计算机组成原理、计算机网路、操作系统、数据结构

计算机组成原理

这门课程让你了解计算机的组成和工作原理,要学习的内容包括:

  • 数据在计算机中的表示和运算(柠檬说:计算机不识数,只认得高低电平,所以数据在计算机内部都用二进制的0和1表示)

  • 存储系统(柠檬说:数据和程序指令都要存储下来,学习计算机的存储层次,内存、外存、高速缓存、虚拟存储技术)

  • 指令系统(柠檬说:写的代码最终都要被翻译成计算机指令,指令格式和寻址方式有多种,控制器来控制指令执行)

  • 中央处理器(也就是 CPU 计算机的大脑,主要构成是运算器和控制器)

  • 总线(柠檬说:计算机的血管动脉,连接计算机各功能组件,用来传输数据、地址信号、控制信号)

  • 输入输出系统(柠檬说:Input/Output 也叫 IO 系统,连接和管理各种外部设备比如键盘、显示器等等)

计算机网络

世界上第一台通用计算机「ENIAC」于 1946 被发明出来,如其名字一样仅仅是用于计算,在后来计算机越来越多,如果没有网络每台计算机都将成为一个孤岛,也不会有现在互联网的繁荣,「计算机网络」这门课程的学习路线非常清晰,就是围绕着如何让地理位置上不同的计算机连接起来,并高效可靠的交换数据信息,实现人在家中做,天下事尽知。

计算机网络有分层次,根据各层属性和特点,分为:

  • 物理层

  • 数据链路层

  • 网络层

  • 传输层

  • 应用层

这个层次划分从上到下就是一个网络数据包的接收路径,反之就是发送路径。既然要交换信息肯定得商量一套通用的协议,就像我们和老外交流,要么他们学中文要么我们学英文,反正得统一出一个标准语言出来,这在计算机网络中称之为「通信协议」。如上述的网络分层,每层都有各自适配的协议,所以计算机网络的学习基本就是围绕着分层协议的学习。

操作系统

操作系统也是一种软件。你熟悉的微软Windos操作系统,后台开发熟悉的各种发行版的 Linux 系统,都是通过软件的形式安装在计算机上。

只不过这个软件和我们平常接触的应用程序软件不同,它比较特殊,因为它向下和计算机硬件(就是我们在计算机组成原理中学习的那些硬件)打交道,向上给其他应用程序和用户提供通用的交互的接口,说白了操作系统就是个中介和管家的角色。它帮我们做了下面这些事情:

  • 进程管理(柠檬说:你写的程序运行起来才能干活,运行起来的程序称为进程,进程是资源的最小单位)

  • 内存管理(柠檬说:计算机内存又贵又少,动不动又要来个高并发,内存管理大有学问)

  • 文件管理(柠檬说:计算机中的资料和信息需要通过文件系统来保存、管理)

  • 输入输出管理(柠檬说:各种外部设备如何接入计算机和接入之后又如何管理)

数据结构

数据结构大家最熟悉,即使毫无计算机基础或是想转行计算机,第一个遇到的就是数据结构,因为面试刷的算法题本质上就是对各种数据结构的运用。所以单纯对面试功利的角度来说,数据结构也是必须要掌握的计算机基础,数据结构要学到:

  • 线性表(链表、数组、循环链表)

  • 栈和队列

  • 树和各种二叉树(二叉排序树、平衡二叉树、哈夫曼树、B树、B+树、Trie树)

  • 图(图的存储结构、BFS、DFS、最短路径、最小生成树、拓扑排序、关键路径)

  • 查找算法(二分查找、B树查找、HASH表、KMP字符串模式匹配)

  • 排序算法(插入排序、冒泡排序、归并排序、基数排序、堆排序)

  • 贪心算法

  • 位运算

  • 分治算法

  • 动态规划

好了,计算机基础四大专业课已经大概过了一遍,当然这是我给没有计算机基础同学的实用主义建议,等你学完这四门课程也只能够说入门计算机了,不过这已经比很多人厉害了。如果想真正的了解计算机这门学科,可以等学完了这 4 门基础课程之后,再花写时间挑一些上面培养方案中的课程去学习,做一个知识体系完备的计算机软件后端开发工程师。

Linux

在后台开发领域,你所能接触到的后端服务不敢说 100%,至少也有 90% 以上是运行在 Linux 系统之上,因为它开源、便利、功能强大,需要学习以下技术点:

评论 9
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值