56 - git使用
m1day04
内容回顾:
1. Flask
- 基本使用
- 路由
- 视图
- FBV
- CBV
- 模板
- session
- 闪现
- 蓝图,目录结构划分
- 特殊装饰器
面试题:
a. flask和django的区别?
flask轻量级、短小精悍、可扩展强
django内置非常多的组件的重武器、大而全,内置的组件有:ORM、Form、ModelForm、中间件、Admin...
选型?
b. flask请求声明周期?
当请求进来之后
1.
将请求相关数据封装成RequesContext对象(request/session)
将App相关的数据封装到AppContext对象中(app,g)
然后将两个对象放到“空调”上。
然后将两个对象放到Local对象中。
2. 执行before_request函数。
3. 执行视图函数
4. 执行after_request函数。
5. 请求终止,将“空调”上的两个对象杀掉。
c. MVC和MTV
数据库 模板 视图函数
MTV: Model Template View
MVC: Model View Controller
- 上下文管理
- threading.local,对线程之间的数据进行隔离。
- 自定义的类似于threading.local的类,粒度更细,根据协程进行划分。
- 请求进来时,设置值: LocalStack -> Local(ctx对象和app_ctx对象)
- 视图函数中,调用值: LocalProxy -> 偏函数 > LocalStack -> Local(ctx对象和app_ctx对象)
2. SQLALchemy
问题:ORM和原生SQL有什么区别?
ORM是关系对象映射,其实就是:类对应数据库表、对象对应数据库行,之后再执行类和对象时ORM帮助我们转换成SQL语句并执行。
pymysql直接执行SQL语句。
ORM:执行效率差,开发效率高
pymysql: 执行效率高,开发效率低
Flask-SQLALchemy组件:
SQLALchemy和Flask组合起来应用。
原生SQL一定要用数据库连接池:
- DBUtils(*)
- SQLALchemy
3. WebSocket
目标:让浏览器上的数据实时更新。
http协议:
- 轮询
- 长轮询
websocket协议:
- WebSocket
websocket协议
- 默认连接不断开
- 握手
- 数据解密
框架中使用:
- flask: gevent-websocket
- tornado: 内置
- django:channel
今日内容:
1. git
2. redis
3. celery
4. 在flask中使用celery
5. saltstack
- 文件分发
- 执行脚本
内容详细:
1. git,版本控制的软件。
赵峰峰的创业史,卖水果:
第一阶段:
git init
git status
git add '文件名'
git add .
git commit -m '详细的描述信息'
初次提交:
git config --global user.email "wupeiqi@live.com"
git config --global user.name "wupeiqi"
修改代码 * 8:
git status
git add '文件名'
git commit -m '详细的描述信息'
git log
git reflog
git reset --hard 版本号
第二阶段:在开发新功能的过程中,有其他需要到来,就可以使用
方式一:stash
git stash
继续开发
提交
git stash pop
git stash 将当前工作区所有修改过的内容存储到“某个地方”,将工作区还原到当前版本未修改过的状态
git stash list 查看“某个地方”存储的所有记录
git stash clear 清空“某个地方”
git stash pop 将第一个记录从“某个地方”重新拿到工作区(可能有冲突)
git stash apply 编号, 将指定编号记录从“某个地方”重新拿到工作区(可能有冲突)
git stash drop 编号,删除指定编号的记录
方式二:分支(*)
git branch
git branch dev
git checkout dev
git merge xxx
面试题:如果git开发过程中,临时出现bug,应该如何解决?
- 创建一个bug分支,进行修复
- 修改完成删除。
第三阶段:github/码云/csdn/gitlab
在家:
git remote add xxxxx https://gitee.com/wupeiqi/day04.git
git push xxxxx master
三里屯:
git clone 地址
git branch -b dev
git pull origin dev
git fetch origin dev
git merge origin/dev
# 无分叉
git fetch origin dev
git rebase origin/dev
第四阶段:协同开发
- 合作者
- 组织
PS:每个人都要有一个分支
注意:
- 自己分支的功能开发完毕后,提交到自己分支。
- 合并到dev
- 先去dev中拉取最新的代码
- 在自己本地进行合并,解决冲突。
- 在提交到dev分支。
问题1:你们如何做代码review?
创建一个review分支,将功能合并到review分支,老大看了没问题,再合并到dev分支。
开发小组组长
分支:
master
dev
review
fengfeng
xiaoliang
问题2:如何给优秀的框架贡献代码?
fork来完成
poll request
其他:
1. 用户名和密码
https:
https://wupeiqi:密码@gitee.com/wupeiqi/day04.git
ssh:
git@gitee.com:wupeiqi/day04.git
2. .gitignore文件,让git不要在检测某些文件
3. tag
git tag -a v1.0 -m '版本介绍' 本地创建Tag
git show v1.0 查看
git tags -n 查看本地Tag
git tag -l 'v1.4.2.*' 查看本地Tag,模糊匹配
git tag -d v1.0 删除Tag
git push origin :refs/tags/v0.2 更新远程tag
git checkout v.10 切换tag
git fetch origin tag V1.2
git push origin --tags
git pull origin --tags
git clone -b v0.1 https://github.com/WuPeiqi/Coursepy.git
做有积累的事~~

浙公网安备 33010602011771号