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 后端开发?相关推荐
- python适合做后端开发吗-转行IT做后端开发,学python还是java?
你还在纠结Java还是Python的这件事,毫无疑问,这个时候,你仍然还是一个菜鸟,甚至连门都没入. 我为什么这么说呢,先别怼我,压制你心里的怒火,继续往下 我先问大家一个问题,为什么中国人用刀又是很 ...
- python可以做什么开发-python适合做什么开发_python未来发展怎么样
python概述 Python是一种面向对象的解释型计算机程序设计语言,由荷兰人Guido van Rossum于1989年发明,第一个公开发行版发行于1991年.Python是纯粹的自由软件, 源代 ...
- python最适合做什么-python适合做什么开发_python未来发展怎么样
python概述 Python是一种面向对象的解释型计算机程序设计语言,由荷兰人Guido van Rossum于1989年发明,第一个公开发行版发行于1991年.Python是纯粹的自由软件, 源代 ...
- python最适合做什么-python适合做什么开发?
Python是一种计算机程序设计语言.是一种面向对象的动态类型语言,最初被设计用于编写自动化脚本(shell),随着版本的不断更新和语言新功能的添加,越来越多被用于独立的.大型项目的开发. pytho ...
- python最适合做什么-总算明了python适合做什么
在学习完Python的基础知识之后,有很多朋友为自己接下来要干什么感到迷茫.不知道应该通过什么样的项目来锻炼自己编程水平和思维能力.接下来我就给大家说几个适合Python的新手项目和练手项目,Pyth ...
- 腾讯技术官发布Python零基础就业宝典,想学习Python的朋友有福了
近几年来,互联网行业变化非常大,除了龙头企业的更替,"裁员潮""失业潮"也不断掀起,尤其是对于年纪太大的程序员真的是不太友好.但是,根据数据统计表明,自2018 ...
- Python可以做什么?你所不知道的Python——生活中的奇妙用途
大家都知道Python可以用来做数据分析.爬虫,甚至是人工智能,但却觉得那些东西比较遥远,会担心孩子学Python为时过早. Python 其实Python并不只是能做一些很专业.高端的应用,它在生活 ...
- python适合做后端开发吗-python适合后端开发么
python适合后端开发,因为Python是一种计算机程序设计语言,既可用于前端也可用于后端开发,在Python中编写后端可以简化为编写各个模块,其间的连接随后由前端部分中的用户操作确定和控制. Py ...
- python适合做后端开发吗-pythonWeb后端开发好呢?还是从事网络爬虫比较好呢?
从目前的就业形势看,是从事pythonWeb后端开发好呢?还是从事网络爬虫比较好呢? 目前互联网+的趋势依旧火热,越来越多的行业已经开始向互联网的方向靠拢了.在互联网+的影响下,各行各业都会有无限的可 ...
- python适合做后端开发吗-用Python开发app后端有优势吗
app后端开发学Python. Python的优点: 1.简单易学 Python 编程语言最大的优点之一,是其具有伪代码的特质,它可以让我们在开发 Python 程序时,专注于解决问题,而不是搞明白语 ...
最新文章
- on-my-zsh git 仓库下运行卡顿
- java怎么播放不了声音,怎么在java application中播放声音
- sqli-labs(十三)(hpp)
- 常见荧光定量 PCR 检测方法比较
- python中numpy模块的around方法_Python numpy.around()用法及代码示例
- 【LeetCode-SQL每日一练】—— 620. 有趣的电影
- ipython和pylab模式_为什么要使用IPython?
- 卓越领导者的智慧(精华版)
- Spark之SparkSQL理论篇
- html 写字版插件,JS+HTML5 Canvas实现简单的写字板功能示例
- Linux xmpp网络不通,Pidgin XMPP协议拒绝访问漏洞
- 实习成长:logback收集项目日志,实现日志告警机器人
- Windows定时自动执行python脚本2(自动运行问题已解决)
- 批量提取网页中的超链接
- 基于ASP.NET的读书网站设计与实现
- Excel如何对单元格内的分隔数据进行求和操作?
- 计算机硬盘格式化了如何恢复出厂设置,电脑恢复出厂设置和格式化有什么区别...
- python编程价格_Python基础练习实例46(查询价格)
- 主板怎么安装在计算机主机箱,计算机主板、主机、机箱和计算机的制作方法
- 狂神说java之002.预科
热门文章
- Go-ethereum源码解析-Part I
- Dynamics 365-关于Solution的那些事(一)
- spring mvc拦截器和mvc:annotation-driven /的详解
- android:configChanges=keyboard|keyboardHidden|orientation|screenSize
- 1.CentOS安装Redis
- [转]阿里巴巴集团去IOE运动的思考与总结
- 最适合python程序员用的笔记本-作为一个Python程序员,电脑上应该具备哪些软件?...
- python使用界面-(八)Python 图形化界面设计
- python怎么安装matplotlib-[Python]一步步安装numpy,matplotlib
- python从入门到精通书-100G Python从入门到精通全套资料!