python进阶手记(二)

魔法属性与魔法方法

强烈建议阅读python魔术方法指南:
https://pyzh.readthedocs.io/en/latest/python-magic-methods-guide.html

魔术属性和魔法方法

  • __dict __ / __doc __ / __module __ / __class __ / __stots __
  • 两阶段构造:__new __ / __init __
  • 运算符重载:__lt __ / __ge __ / __add __ / __getitem __
  • 可调用对象: __call __
  • 深拷贝和浅拷贝:__copy __ / __deepcopy __
    上下文管理器:__enter __ / __exit __

MRO(方法解析顺序)问题

  • 新式类:C3算法 (类似广度优先)
  • 旧式类:深度优先搜索
  • 类的mro()方法

示例 :在python3中求最后的运行结果
在这里插入图片描述
元类

class SingletonMeta(type):
    def __init__(cls, *args, **kwargs):
    # args是一个三元组
    # 第一个元素是元类创建的类
    # 第二个参数是要创建的类的父类(元组)
    # 第三个参数是要创建的类的所有属性(字典)
        cls._instance = None
        super().__init__(*args, **kwargs)

    def __call__(cls, *args, **kwargs):
        if cls._instance is None:
            cls._instance = super().__call__(*args, **kwargs)
        return cls._instance


class Boss(object, metaclass=SingletonMeta):
    def __init__(self, name, sex):
        self.name = name
        self.sex = sex

    def __str__(self):
        return f"老板信息:{self.name},{self.sex}"


b1 = Boss("叔本华", "男")
b2 = Boss("天问一号", "男")

print(b1, b2)

典型互联网公司架构

在这里插入图片描述

软件开发过程模型

瀑布模型

在这里插入图片描述

敏捷开发

在这里插入图片描述

敏捷闭环工具:禅道

必看文档:基于JIRA的Scrum敏捷开发的项目管理

代码管理流程

Github-flow流程

在这里插入图片描述

git clone xxx.git   # 克隆仓库及所有之前的版本提交信息
git clone --depth=1 xxx.git    # 只克隆最新一版的仓库
git clone xxx.git  aaa   # 克隆仓库并在本地改为aaa的名字
git long    # 查看git日志(需进入到.git目录下) 
git branch aaa  # 创建aaa的分支
git branch # 查看分支
git branch -a   # 查看所有分支,包括远端
git switch -c bbb  # 创建并切换到bbb分支
git switch aaa  # 切换到aaa的分支  
git status  # 工作区、暂存区、本地的版本仓库是否同步 
git add xxx.py  # 将xxx.py 加入到暂存区
git restore --staged xxx.py  # 从暂存区取出
git commit -m "提交信息:完成了某项功能"  # 从暂存区加入到本地版本仓库中
git remote  # 查看远程仓库
git remote -v  # 查看远程仓库信息  
git push -u origin aaa:aba  # 将本地aaa分支推到服务器中并改名为aba
# 完成到一定程度后,在服务器中请求合并分支,由代码审查人员审定通过  
git checkout master  # 在本地切回master分支
git branch -d aaa  # 删除已在服务器合并的本地aaa分支
git branch -D aaa  # 强制删除已在服务器合并的本地aaa分支
git pull  # 将服务器代码更新到本地
git pull origin master  # 将服务器master分支合并到本地分支
#  CONFLICT 冲突
git diff  # 查看冲突文件  协商解决
# 协商解决好后,在push到服务器,请求合并

Git-flow流程

在这里插入图片描述
可参见:

由于这套流程相对复杂,强烈建议使用SmartGit / SourceTree这些工具进行版本管理开发。

补充:git mergegit rebase的区别

git rebase相比git merge在合并代码时结构更清晰
在这里插入图片描述

git rebase master  # 变基到master
git switch master
git merge dev  # 合并dev (--no-ff 不要快速合并,有利于保留历史信息 这里不需要加)
#git pull = git fetch + git merge    拉取再合并 
git stash  # 将当前未完成的分支工作进行临时存放到栈中  (git status 为空)
git stash list  # 查看栈中临时存放的任务
git stash pop  # 弹出之前临时存放的分支工作 (git status重新为红色)

最佳git教程电子版在线阅读:pro git

代码优化

代码结构优化

在这里插入图片描述
代码中的坏味道:

  • 重复代码
  • 长方法
  • 巨型类
  • 长参数
  • 继承滥用

代码性能优化

在这里插入图片描述
排序算法可参考:排序算法详解
查找算法可参考:常见快速查找算法图解
在这里插入图片描述
第三方剖析工具:

  • line_profiler:在需要剖析的函数加上装饰器@profile,运行kernprof -lv test.py,可分析出该函数每行的执行时间
  • memory_profiler:在需要剖析的函数加上装饰器@profile,运行python3 -m memory_profiler test.py,可分析出该函数每行的内存占用情况

并发编程

内容太多,暂时略过

代码安全

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

项目架构

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
业务架构:

项目整体介绍,交代具体模块划分,项目目前的运营状况,用户群体,每日PV、UV、独立IP等。

技术架构:

  • 前端核心技术:Vue.js / React / Uni-App / ReactNative / Flutter / Electron
  • 后端核心框架:Django / Flask / Tornado / Sanic / FastAPI
    • djangorestframework / django-filter / drf-extensions
    • django-redis / pillow /reportlab / xlrd / xlwt
    • celery / apscheduler / pyjwt
    • pycrypto / itsdangerous
  • 持久化(关系型数据库):MySQL / PostagreSQL / Oracle / TiDB
  • 缓存:Memcached / Redis
  • 消息队列:Redis / RabbitMQ / Kafka
    • 任务异步化(削峰)
    • 上下游解耦合
  • 搜索引擎:实现全文检索 - ElasticSearch / Solr / Whoosh+jieba
    • 倒排索引
    • 中文分词(ik-analysis、smartch) / 拼音分词(pinyin)
  • 静态资源:
    • 文件服务器 / 分布式文件系统 - FastDFS
    • 云存储(资源管理、CDN) AWS / OSS / Qiniu / Bmob
  • 三方服务
    • 短信邮件:云片、螺丝帽、SendCloud
    • 监控:云监控 / Nagios / Zabbix
    • 登录:微博 / 微信 / QQ / 推特 / 脸书 / Goodle
    • 支付:支付宝 / 微信 / 银联 / ApplePay / 翼支付
      • 支付集成:Ping++

物理架构:

  • 云服务器:VPC(内网)/ 跳板机(SSH)/ 反向代理(Nginx / 邮件服务器 / 静态资源)
    • Nginx / LVS / Squid / Vanish
  • 硬件采购:刀片服务器 / 电信机房(数据中心)托管

web应用工作流程:
在这里插入图片描述

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值