python变量作用域
局部变量 ——>外层变量——>全局变量——>内置变量
1
闭包
在不改变原有代码的前提下,增加业务功能(验证,校验......),根据外层函数的局部变量,可以得到不同的结果
1
python代码执行流程
代码由python编译器,编译为电脑可执行代码,编译的结果保存在内存的pycodeobject中,当代码执行完毕,python解释器将pycodeobject写入在.pyc文件中,当程序第二次执行时,程序会在硬盘中查找这个.pyc文件,找到,则直接载入,找不到执行上边步骤。
.pyc文件只会在python程序认为是重要文件时才会编译,即(import导入模块,from ... import ...导入模块时)
如果原代码文件发生改变,python程序会对.pyc文件跟.py文件的修改时间进行对比,不一样,则重新编译并覆盖原.pyc文件,一样,载入。
1
2
3
请求钩子
flask框架中的请求钩子分为四种,即:before_first_request(执行程序前执行一次,适合做验证,测试),before_request(每次执行程序前都会执行,适合做增加功能),after_request(执行程序后执行,适合做清理内存),teardown_request(程序退出执行,适合做统计功能)
1
ORM
orm是对象关系映射框架,使用SQLAlchemy,在模型类使用,对象,方法的关系,通过SQLAlchemy映射为sql原生语句,对数据库进行增删改查
1
迭代器
每一个迭代器内部都会由两个方法__iter__,__next__,__iter__方法的作用是为了迭代每一个数据,__next__方法的作用是获取迭代完 的下一条数据
1
中间件
在django中,中间件其实就是一个类,在请求到来和结束后,django会根据自己的规则在合适的时机执行中间件中相应的方法。
1
生成器
当用户需要使用某个对象时,Python才根据事先设计好的规则开辟内存空间创建这个对象供用户使用,而不是像列表一样事先将所有的对象都创建完毕之后再提供给用户使用。这种机制在Python中成为生成器(generator)。
在一个函数定义中包含yield关键字,则这个函数就不再是一个普通的函数,而是一个生成器(generator)
def func():
n=1
for i in range(3):
yield n
n+=1
c=func()
a1=c.next()
a2=c.next()
a3=c.next()
[流程解释]:
对于普通的生成器,第一个__next__()方法的调用相当于启动生成器,此时会从生成器函数的第一行开始执行,直到第一次执行完yield语句(第四行)后,跳出生成器函数。
当调用第二个__next__()方法后,会重新进入生成器函数,并从yield语句的下一条语句(第五行)开始执行,直到重新运行到yield语句,执行后再次跳出生成器函数。
后面的__next__()方法调用以此类推
1
2
cors跨域
(http://www.ruanyifeng.com/blog/2016/04/cors.html)
同源指:协议相同,域名相同,端口相同
1
2
3
wsgi工作原理
链接地址:
https://blog.csdn.net/aifore/article/details/86721626
1
2
Mysql读写分离
1.https://www.cnblogs.com/nyxd/p/5382482.html
2.https://www.cnblogs.com/luckcs/articles/2543607.html
1
2
Redis集群
https://blog.csdn.net/jaylaozhou/article/details/86493626
1
JWT机制
https://blog.csdn.net/why15732625998/article/details/78534711
1
FastDFS分布式系统
什么是FastDFS?
FastDFS 是用 c 语言编写的一款开源的分布式文件系统。FastDFS 为互联网量身定制, 充分考虑了冗余备份、负载均衡、线性扩容等机制,并注重高可用、高性能等指标,使用 FastDFS 很容易搭建一套高性能的文件服务器集群提供文件上传、下载等服务。
FastDFS 架构包括 Tracker server 和 Storage server。客户端请求 Tracker server 进行文 件上传、下载,通过 Tracker server 调度最终由 Storage server 完成文件上传和下载。
Tracker server 作用是负载均衡和调度,通过 Tracker server 在文件上传时可以根据一些 策略找到 Storage server 提供文件上传服务。可以将 tracker 称为追踪服务器或调度服务器。
Storage server 作用是文件存储,客户端上传的文件最终存储在 Storage 服务器上, Storageserver 没有实现自己的文件系统而是利用操作系统 的文件系统来管理文件。可以将 storage 称为存储服务器。
服务端两个角色:
Tracker: 管理集群,tracker 也可以实现集群。每个 tracker 节点地位平等。收集 Storage 集群的状态。
Storage: 实际保存文件, Storage 分为多个组,每个组之间保存的文件是不同的。每 个组内部可以有多个成员,组成员内部保存的内容是一样的,组成员的地位是一致的,没有 主从的概念。
流程:
客户端向Tracker server发送保存文件请求,Tracker server询问Storage server中的是否有空闲内存,有空闲地址,Storage server分配地址并返回Tracker server,客户端接收到Tracker server中的地址地址,并携带数据发送请求并保存,Tracker server返回保存结果跟地址。
文件索引信息包括:组名,虚拟磁盘路径,数据两级目录,文件名。
1
2
MVC/MVT
MVC,其核心思想是分工、解耦,让不同的代码块之间降低耦合,增强代码的可扩展性和可移植性,实现向后兼容。
M全拼为Model,主要封装对数据库层的访问,对数据库中的数据进行增、删、改、查操作。
V全拼为View,用于封装结果,生成页面展示的html内容。
C全拼为Controller,用于接收请求,处理业务逻辑,与Model和View交互,返回结果。
MVT,是在MVC的基础上改进过来的
M全拼为Model,与MVC中的M功能相同,负责和数据库交互,进行数据处理。
V全拼为View,与MVC中的C功能相同,接收请求,进行业务处理,返回应答。
T全拼为Template,与MVC中的V功能相同,负责封装构造要返回的html。
1
2
Restful设计风格
1.https://blog.csdn.net/xiaochendefendoushi/article/details/81083332
2.https://www.cnblogs.com/kuyuecs/p/5949075.html
3.https://www.jianshu.com/p/65ab865a5e9f
1
2
3
Celery异步处理任务
Celery 是一个专注于实时处理和任务调度的分布式任务队列, 同时提供操作和维护分布式系统所需的工具… 所谓任务就是消息, 消息中的有效载荷中包含要执行任务需要的全部数据.
链接:https://www.jianshu.com/p/027538ffb8c1
1
2
GIL全局解释器锁
https://www.cnblogs.com/SuKiWX/p/8804974.html
1
Docker
https://blog.csdn.net/hcljava/article/details/78588623
1
Git命令总结:
1.安装git
-
sudo apt-get intall git
终端输入git 如果有提示证明安装成功
2.git单人操作
-
2.1 创建空的git仓库: git init
提示: git仓库和项目的根路径在一起,用来管理项目
-
2.2 配置git提交的用户名,邮箱
例如: git config user.name ‘zhangsan’
git config user.email ‘111@qq.com’
如果没有配置,默认使用的: home/.gitconfig 根目录下的用户信息
-
2.3 查看文件状态: git status
红色: 表示新建文件, 或者新修改了文件,目前位于工作区中
绿色: 表示文件在暂存区
-
2.4将工作区代码, 添加到暂存区(工作区–>暂存区)
-
例如: git add .
git add xxx.py
点表示添加所有变动, xxx.py表示指定文件
-
2.5将工作区代码,添加到仓库区(工作区—>仓库区)
-
例如: git commit -m ‘注释’
-
2.6将工作区,直接添加到仓库区(工作区–>暂存区—>仓库区)
-
例如: git commit -am ‘注释信息’
-
2.7查看版本历史
例如: git log
git reflog
log查看详细信息, reflog查看简要信息
-
2.8回退版本
例如: git reset --hard HEAD
或者: git reset --hard 版本号
HEAD表示当前最新版本
HEAD^表示当前最新版本的, 上一个版本
HEAD^^表示当前最新版本的, 前两个版本, 依次类推
HEAD~1 表示当前最新版本的, 上一个版本
HEAD~2 表示当前最新版本的, 前两个版本, 依次类推
-
2.9撤销工作区,暂存区修改
撤销工作区: git checkout 文件名
撤销暂存区:
git checkout HEAD 文件名 (暂存区-工作区)
git checkout 文件名
仓库区代码不能撤销
-
2.10 版本对比
例如: git diff HEAD HEAD^ – xxx.py
HEAD表示当前版本, HEAD^表示上个版本, xxx.py对比的文件
-
2.11误删除文件,恢复
格式1: rm 文件名
恢复1: git checkout – 文件名
格式2: git rm 文件名
恢复2: git reset --hard HEAD^
3.git多人操作
-
3.1 clone项目到本地
例如: git clone 项目地址
-
3.2 推送项目到远程仓库
例如: git push
第一次推送会提示输入账号, 密码
-
3.3 配置是否输入登陆密码信息
git config --global credential.helper cache 十五分钟有效期
git config credential.helper ‘cache --timeout==3600’ 一个小时有效期
git config --global credential.helper store 长期有效
-
3.4 拉取远程最新代码到本地
例如: git pull
4.标签
-
4.1 设置本地标签
例如: git tag -a 标签名 -m ‘标签描述’
-
4.2 推送本地标签到远程
例如: git push origin 标签名
-
4.3 删除本地标签
例如: git tag -d 标签名
-
4.4 删除远程标签
例如: git push origin --delete tag 标签名
5.分支
-
5.1查看当前分支
例如: git branch
-
5.2创建本地分支,并切换到指定分支
例如: git checkout -b 分支名
-
5.3推送本地分支,到远程
例如: git push -u origin 分支名
-
5.4切换分支
例如: git checkout master / dev
切换到主分支,或者是其他分支
其他用户第一次pull代码后,切换切换后才能使用git branch查看
-
5.5合并子分支到主分支
例如: git merge 分支
需要在master分支下操作该命令
1
2
TCP/UDP
https://blog.csdn.net/zhang6223284/article/details/81414149
1
数据结构
https://blog.csdn.net/yeyazhishang/article/details/82353846
1
算法排序
https://www.cnblogs.com/onepixel/articles/7674659.html
1
数据库操作
待补充
1
Elasticsearch
待补充
欢迎使用Markdown编辑器
你好! 这是你第一次使用 Markdown编辑器 所展示的欢迎页。如果你想学习如何使用Markdown编辑器, 可以仔细阅读这篇文章,了解一下Markdown的基本语法知识。
新的改变
我们对Markdown编辑器进行了一些功能拓展与语法支持,除了标准的Markdown编辑器功能,我们增加了如下几点新功能,帮助你用它写博客:
- 全新的界面设计 ,将会带来全新的写作体验;
- 在创作中心设置你喜爱的代码高亮样式,Markdown 将代码片显示选择的高亮样式 进行展示;
- 增加了 图片拖拽 功能,你可以将本地的图片直接拖拽到编辑区域直接展示;
- 全新的 KaTeX数学公式 语法;
- 增加了支持甘特图的mermaid语法1 功能;
- 增加了 多屏幕编辑 Markdown文章功能;
- 增加了 焦点写作模式、预览模式、简洁写作模式、左右区域同步滚轮设置 等功能,功能按钮位于编辑区域与预览区域中间;
- 增加了 检查列表 功能。
功能快捷键
撤销:Ctrl/Command + Z
重做:Ctrl/Command + Y
加粗:Ctrl/Command + B
斜体:Ctrl/Command + I
标题:Ctrl/Command + Shift + H
无序列表:Ctrl/Command + Shift + U
有序列表:Ctrl/Command + Shift + O
检查列表:Ctrl/Command + Shift + C
插入代码:Ctrl/Command + Shift + K
插入链接:Ctrl/Command + Shift + L
插入图片:Ctrl/Command + Shift + G
合理的创建标题,有助于目录的生成
直接输入1次#,并按下space后,将生成1级标题。
输入2次#,并按下space后,将生成2级标题。
以此类推,我们支持6级标题。有助于使用TOC
语法后生成一个完美的目录。
如何改变文本的样式
强调文本 强调文本
加粗文本 加粗文本
标记文本
删除文本
引用文本
H2O is是液体。
210 运算结果是 1024.
插入链接与图片
链接: link.
图片:
带尺寸的图片:
居中的图片:
居中并且带尺寸的图片:
当然,我们为了让用户更加便捷,我们增加了图片拖拽功能。
如何插入一段漂亮的代码片
去博客设置页面,选择一款你喜欢的代码片高亮样式,下面展示同样高亮的 代码片
.
// An highlighted block
var foo = 'bar';
生成一个适合你的列表
- 项目
- 项目
- 项目
- 项目
- 项目1
- 项目2
- 项目3
- 计划任务
- 完成任务
创建一个表格
一个简单的表格是这么创建的:
项目 | Value |
---|---|
电脑 | $1600 |
手机 | $12 |
导管 | $1 |
设定内容居中、居左、居右
使用:---------:
居中
使用:----------
居左
使用----------:
居右
第一列 | 第二列 | 第三列 |
---|---|---|
第一列文本居中 | 第二列文本居右 | 第三列文本居左 |
SmartyPants
SmartyPants将ASCII标点字符转换为“智能”印刷标点HTML实体。例如:
TYPE | ASCII | HTML |
---|---|---|
Single backticks | 'Isn't this fun?' | ‘Isn’t this fun?’ |
Quotes | "Isn't this fun?" | “Isn’t this fun?” |
Dashes | -- is en-dash, --- is em-dash | – is en-dash, — is em-dash |
创建一个自定义列表
-
Markdown
- Text-to- HTML conversion tool Authors
- John
- Luke
如何创建一个注脚
一个具有注脚的文本。2
注释也是必不可少的
Markdown将文本转换为 HTML。
KaTeX数学公式
您可以使用渲染LaTeX数学表达式 KaTeX:
Gamma公式展示 Γ ( n ) = ( n − 1 ) ! ∀ n ∈ N \Gamma(n) = (n-1)!\quad\forall n\in\mathbb N Γ(n)=(n−1)!∀n∈N 是通过欧拉积分
Γ ( z ) = ∫ 0 ∞ t z − 1 e − t d t   . \Gamma(z) = \int_0^\infty t^{z-1}e^{-t}dt\,. Γ(z)=∫0∞tz−1e−tdt.
你可以找到更多关于的信息 LaTeX 数学表达式here.
新的甘特图功能,丰富你的文章
- 关于 甘特图 语法,参考 这儿,
UML 图表
可以使用UML图表进行渲染。 Mermaid. 例如下面产生的一个序列图::
这将产生一个流程图。:
- 关于 Mermaid 语法,参考 这儿,
FLowchart流程图
我们依旧会支持flowchart的流程图:
- 关于 Flowchart流程图 语法,参考 这儿.
导出与导入
导出
如果你想尝试使用此编辑器, 你可以在此篇文章任意编辑。当你完成了一篇文章的写作, 在上方工具栏找到 文章导出 ,生成一个.md文件或者.html文件进行本地保存。
导入
如果你想加载一篇你写过的.md文件或者.html文件,在上方工具栏可以选择导入功能进行对应扩展名的文件导入,
继续你的创作。
注脚的解释 ↩︎