python适合做后端开发吗-想从事Python 后端开发?

先说思路,再说操作。

不管你用什么语言,PHP、Python 还是 Java,后端都会涉及到这些东西

1、计算机基础:操作系统、网络系统(协议)、数据库系统、数据结构与算法

2、中间件:Nginx、MQ 等

3、开发工具:Git、Docker 等

4、架构方面:CAP、SOA、微服务等

而其中的每一项,又包含了很多东西。比如数据库,又分关系型和非关系型

1、关系型:MySQL、PostgreSQL 等

2、非关系型:Redis、Memcache、MongoDB 等

用 MySQL 的话,基本的 SQL 操作你要会吧。

写简单的查询、更新 SQL 的时候,为了理解这里面执行的过程,你了解了 MySQL 架构里的连接器、分析器等组件。

后面碰到优化,你可能会慢慢了解到索引的概念。为了更好的理解索引,你又去了解它的实现,比如 B+ 树。

当碰到一些数据异常问题后,你会听到不可重复读、幻读的名词,然后你去了解了隔离级别。为了理解它怎么实现的,你又知道了 MVCC 相关的东西。这个过程中,你又会碰到表级锁、行级锁的概念,在了解 MySQL 怎么解决幻读的时候,你又了解了 Record lock 和 Gap lock 的概念。

针对 Python 语言,也有一些特定的东西

1、Python 基础

2、Web 框架:Flask、Django 等

3、常用类库:Request、SQLAlchemy、Celery 等

4、WSGI 服务器:Gunicorn 等

5、包管理工具:Pipenv 等

之所以列举这么多,是想说,不管你用的什么语言,后端都有很多相通的地方,并且这里面,每个方面,都可以作为你深入的方向。不管是在工作中,还是面试中,你能在某几个方面特别深入,能解决别人不能解决的问题,这就是你的价值。

所以,具体往哪个方向去深入,要根据你的实际情况,看哪些方面用得多,才有机会去深挖。这里,我从一个初学者的角度如何找到一个 Python 后端开发职位,说下我的一些想法。

有一个二八定律,不知道是描述什么的。在找工作的过程中,我觉得有类似的一个道理,可以用 20% 的知识去应对 80% 的问题。特别是在精力有限的时候,我们更应该抓住核心的东西。

首先是 Python 基础,题主有一些基础,就看常用的装饰器、迭代器、各种推导式等,在网上扒下相关的文章,理解下就 OK 了。对于一些常用的数据结构,比如 collections、queue,时间充裕的话,你也可以过下源码看看具体是怎么实现的。

其次是 Web 框架,如果之前没接触其它的,就选 Flask。一方面,这个框架教程多;另一方面,源码相对较少,深入相对容易些。先自己动手写一个博客,了解下 Flask 到底有些什么功能,这里我推荐国内大佬李辉刚出不久的书《Flask Web开发实战》,里面有特别多的实战项目,选一个简单的和一个相对复杂的,跟着做。了解了 Flask 的基本用法后,可以深入去源码理解下,书中也有相关的说明,理解透几个点就行,不要过于追求全。

在实践的过程中,你会接触到 HTTP 协议的一些东西,不知道的谷歌/必应一下就行,如果想了解稍微系统点,可以看下《图解HTTP》。

至于数据库,关系型的和非关系型的都分别选一个用得多的。关系型的选 MySQL,基础的看《SQL必知必会》或者《MySQL必知必会》,进阶的可以看极客时间专栏《MySQL实战45讲》,如果你能把后面的专栏吃透,初级的后端数据库的面试问题应该难不倒你了。非关系型的重点学习 Redis,主要是它支持的数据类型和使用场景,能大概的知道某个类型在底层对应的数据结构,比如有序集合对应跳表和哈希表。这个看你的时间情况选择是否看《Redis设计与实现》,如果能看完这个,相关的问题应该都能回答了。

对于任务队列队列方面,对 Celery 的架构有个大致的认识,常用的 Borker 比如 Redis、RabbitMQ 等,会基本的使用,应该就没什么问题了。

对于工具方面,Git 和 Docker 等也是,会使用就行。

上面的都是 Python 后端开发基本都要掌握的东西。掌握了这些,只能说你能干事情了,但是对于面试,你还需要准备其它的。

最前面提到的的计算机基础东西,实操过程中,就只有数据库说得详细一些,其它的都是没说或者简单带过,但都是大块头。数据结构与算法、网络系统和操作系统,短时间内,看那些经典书籍费时间,效果也不一定好,推荐在 CyC2018/CS-Notes 里面去看下对应的栏目。算法看其中的栏目「算法」和「LeetCode 题解」,前者介绍了一些基础的数据结构,后者对 LeetCode 的题进行了分类,每类练几个就行。至于刷题语言,选择你顺手的就行,我用的 C++,主要是要理解解题思路;「网络」那块可以花个几天时间看完;「操作系统」里可以先看下 Linux 的常用命令,如果有时间,可以看完其它的内容。像「系统设计」那块,也可以简单过过,对于初级的后端,如果能在面试的时候,说一些系统设计方面的认识,肯定有加分。

小结一下,核心就是 Python 基础、Flask、MySQL、Redis、数据结构和算法、网络(HTTP、TCP/IP)。

上面的操作,主要是针对想短期内找到后端开发工作的伙伴。如果你已经工作,应该结合自己的一些实际情况,选一两个方面进行深入。看文档、看源码或者看经典书籍,根据自己的喜好选择。你了解得越深入,就会学到更多的知识。就像数据库的索引那块,如果你深入下去,就把数据结构的 B+ 树给了解了。就是说,深度和广度,其实并不冲突。

完。

------------

2020.6.2 更新

为了方便,我贴下文中涉及的图书链接,有需要的可以看看

PS:上面两本书,如果你用的是 MySQL,我更推荐《MySQL 必知必会》

你可能感兴趣的:(python适合做后端开发吗-想从事Python 后端开发?)