后端程序员应该需要掌握编程语言、操作系统、数据库、服务器基础、计算机网络协议、数据结构
和算法、开发工具等相关的知识。
一、编程语言
后端现目前语言太多太多了,我也没办法一一列举,下图为“2020年12月TIOBE指数”,
在这里插入图片描述
目前比较代表性的编程语言就介绍这么多,每一种语言针对不同场景都有其独特的优势,整体的学习难度排序C/C++>Java>C#>PHP>Python。如果你是想要以后从事后端开发的工作,个人建议可以以Java或者C语言作为第一门学习的语言,在工作后期根据实际需求再去拓展其他语言相关知识。如果你只是因为兴趣,想感受一下编程的魅力,建议你可以学习Python。
无论哪种语言,程序代码只是一个工具,最后真正留下的只有原理、协议、框架、思维。
二:操作系统
Windows操作系统
这个相信是大家最熟悉的操作系统了,基本上使用过电脑的人都知道它。目前已经发展到windows10,它的重要性不言而喻。
Linux操作系统
学习Linux操作系统可以更好的掌握计算机技术,更好了解计算机工作的原理,可以很好巩固自身的基础知识,是目前后端必须掌握的操作系统。
目前服务器端开发的市场基本上都被Linux操作系统占有。例如Android系统就是基于Linux内核开
发出来的,大数据、云计算等也都支持Linux操作系统。作为成熟的程序员基本上都需要掌握Linux操作系统。
三:数据库
1、MySQL
是一款开源的关系型数据库,属于中型数据库。因为免费、速度、可靠性、适应性等都较好是目前很多项目首选的数据库。市面上很多软件和网站的都是使用的MySQL数据库,目前被Oracle(甲骨文)公司收购。还有一系列分支:
MariaDB是MySQL原始团队一些人开发,对于server端做了加强,同时能支持更多的引擎。
nnosqll是网易开发的,使得性能、可靠性得到进一步加强。
Drizzle高效的内存使用,专为多CPU/多核设计
Webscaleesql是由Facebook、谷歌、LinkedIn、以及Twitter合作成果专攻海量数据
2、Oracle
是甲骨文公司出品的一款关系型数据库,属于大型数据库。它是一种高效率、可靠性好的、稳定性好、适应高吞吐量的大型数据库,主要应用于银行、证券类业务等。因为它后期维护相对麻烦、对硬件要求比较高、崩溃后恢复很麻烦、不免费等缺点主要是一些大型公司在使用。
3、SqlServer
也是一款基于服务器端的关系型数据库,属于中型数据库。在处理大量数据的效率、后台开发的灵活性、可扩展性等方面强大,而且其易用性、适合分布式组织的可伸缩性、良好的性价等优势让其
在数据库的领域占有比较大的份额。
但它也有因为其开放性弱(只能运行在Windows平台上)、性能稳定性弱、只支持C/S模式等缺点
也在某些领域开发受到一定的局限性。
4、Mongodb
是一个基于分布式文件存储的数据库,介于关系型数据库和非关系型数据库之间的产品,是非关系
数据库当中功能最丰富,最像关系数据库的。具有实用性好、快速、可用性、负载均衡上的实现非
常简洁和友好、扩展性强等特性。同时它的缺点不支持事务操作(因此事务要求严格的系统如:银
行系统就不适用)、占用空间过大、删除记录不释放空间。应用于如游戏、电商、物联网、视频直
播、社交等方面。
还有很多的数据库如: Redis、 Memcached、 Riak KV、Hazelcast、 Ehcache 、Memcached、
Riak KV、Hazelcast、 Ehcache 、Elasticsearch、 Solr、 Splunk、 MarkLogic、 Sphinx 等等就不
介绍了。
针对后端的学习目前必须掌握MySQL、Oracle、 SqIServer三个数据库其中-个,根据后期的工作
学习需要可以进一步增加掌握内容。
四、服务器基础
在这里插入图片描述
服务器也是一种计算机。也称伺服器,是提供计算服务的设备。它的构成和通用的计算机类似,但是因为它需要为响应客户机(可以是移动端、PC端、ATM机等终端甚至可以是飞机、火车等大型设备)的服务请求并进行处理回复,提供可靠的服务。所以在计算处理能力、安全性、可靠性、稳定性、扩展性等方面要求都比较高。
后端也可以被称为服务器端,服务器是网站、软件安全关键,所以了解服务器基础和作用也是后端
程序员必不可少的一-方面。
五、计算机网络协议
计算机网络是指将地理位置不同的具有独立功能的多台计算机及其外部设备,通过通信线路连接
起来,在网络操作系统,网络管理软件及网络通信协议的管理和协调下,实现资源共享和信息传
递的计算机系统。
而网络协议是为计算机网络中进行数据交换而建立的规则、标准或约定的集合。没有网络协议就根
本不可能上网,任何和互联网有关的操作都离不开网络协议。我们开发的软件网络是不可缺少的,
因此计算机协议的相关知识也是不可或缺的。
六、开发工具
编程开发工具从宏观角度来分类的话只有两个:编辑器、IDE。
编辑器(Editor) :最初编辑器的定义就是编辑纯文本的工具,功能简单,打开编辑,编辑完保
存关闭即可;但随着技术发展的需要,编辑器的功能也越来越丰富,从最初的纯编辑,到现在可
以实现代码高亮、语法提示、自动格式化等功能,相比最初,编辑器可以说是发生了翻天覆地的
变化。编辑器软件在运行时系统占用较小,因此使用起来比较流畅。
常见的编辑器: Vim、Emacs、 Sublime Text, NotePad++等。
IDE (集成开发环境) :集成开发环境IDE是用于提供程序开发环境的应用程序, . -般包括代码编
辑器、编译器、调试器和图形用户界面等工具。集成了代码编写功能、分析功能、编译功能、调
试功能等一体化的开发软件服务套件。由于功能非常强大,因此在软件运行的过程中会占用大量
的系统资源,对电脑配置不高的机器不太友好,容易出现卡死的现象。
常见的IDE
Java语言: Eclipse、 IDEA、 MyEclipse。
C语言: Microsoft Visual Studio、turbo c2.0、visual C+ + 2008。
Python语言: Pycharm。
现在的IDE已经不局限于某-种编程语言了,比如Eclipse可以做Java、 安卓、Python的开发。
编译器相对于IDE功能简单,在编写代码过程中没有那么多提供便捷的功能。如果你选择使用编译
器书写代码语言那么你学习路线会比较陡峭,当然带来的好处就是熟练使用后纯手敲代码的效率飞
快,对于代码的理解也更深入。
IDE相比于编辑器,那就是为程序员提供便捷的方式,只要掌握了使用方法可以提供很多的便利。
例如:提供代码提示、纠错、调试等。使得让程序员编码的过程非常友好,快捷。
不管是编译器还是IDE都是属于开发工具让我们的代码可以执行出相应的效果,没有绝对的好与
坏。你可以根据你选择的语言和自己学习习惯选择适合的开发工具。
七:数据结构和算法
有一个说法“程序=数据结构+算法”这是瑞士计算机科学家Niklaus Wirth于1976年出版的一本书
的书名。这个说法在当时获得了大家的一致赞同。
虽然随着时代的发展,出现了很多编程语言,也有很多开发工具让我们可以很方便、快捷地开发和
部署应用程序,逐渐淡化了数据结构和算法的重要性(现在中小学就能学习Python做一 些简单的程
序),感觉有时候根本就不需要数据结构和算法,但这只是一种片面的想法。随着目前硬件设施的
能力提升,用户数量的激增,对于软件运营效率要求更高,因此拥有良好的数据结构和算法写出来
的程序也更简洁、有效。
举一个简单的例子:目前一个大中型公司每天产生的数据量都是以TB计算,在这个数量级的处理下
不单纯考研的是对于硬件的运算能力,设计一套优秀的数据结构和算法可能1分钟就能完成任务,而
垃圾的算法可能需要几倍甚至几十倍的时间。那么对于硬件的损耗、用户体验、软件的稳定性等都
会造成很大的影响,所以其重要性可想而知。