python全栈开发day103-python垃圾回收机制、mro和c3算法解析、跨域jsonp\CORS、Content-Type组件
Python垃圾回收
-- 引用计数
-- Python为每个对象维护一个引用计数
-- 当引用计数为0的 代表这个对象为垃圾
-- 标记清除
-- 解决孤立的循环引用
-- 标记根节点和可达对象
-- 不可达视为垃圾
-- 分代回收
-- 解决标记清除的效率问题
-- 0代 1代 2代
-- 阈值 (700,10,10)
-- 当调用c的接口开辟内存和销毁内存的差值为700的时候出发0代回收
-- 0代触发10次 触发1代回收
-- 1代触发10次 触发2代回收
-- 每次回收结束 没有被回收的对象放入下一代 PythonMRO c3算法
-- 找到类的mro的继承顺序
-- 第一步 找到所有父类的mro
-- 第二步 用这些父类的mro 跟所有的父类进行归并
-- 取每个表表头 并且其他表去掉表头的部分不能含有我们要取的那个表头
-- 如果不满走就去取第二个表头 跨域
-- 浏览器的同源策略 阻止ajax请求 不阻止src请求
-- jsonp
-- 我们利用src发送请求
-- core
-- class MyCore(MiddlewareMixin):
def process_response(self, request, response):
response['Access-Control-Allow-Origin'] = "*"
if request.method == "OPTIONS":
# 复杂请求 预检
response['Access-Control-Allow-Headers'] = "Content-Type"
response['Access-Control-Allow-Methods'] = "POST, DELETE, PUT"
return response
ContentType组件
-- 应用 价格策略 常见问题 优惠券
-- 一张表跟多张表建立外键关系的
-- 用法
# 第一步 先生成ForeignKey字段 关联ContentType
content_type = models.ForeignKey(to=ContentType)
# 第二步 生成一个IntergerField 字段关联
object_id = models.PositiveIntegerField()
# 第三步 生成一个GenericForeignKey 把上面两个字段注册进去
content_object = GenericForeignKey("content_type", "object_id")
-- 创建和查询
# 通过contentType找到OldBoy中所有的信息
# content = ContentType.objects.filter(app_label="app01", model="oldboy").first()
# oldboy_model = content.model_class()
# ret = oldboy_model.objects.all()
# print(ret)
# 给Yuan局长加优惠券信息
yuan_obj = OldBoy.objects.filter(id=2).first()
Coupon.objects.create(name="苑局1000-750优惠券", content_object=yuan_obj) # alex_obj = OldBoy.objects.filter(id=1).first()
# Coupon.objects.create(name="Alex打折优惠券", content_object=alex_obj) # 查询优惠券id=1的关联的商品
# coupon_obj = Coupon.objects.filter(id=1).first()
# goods_obj = coupon_obj.content_object
# print(goods_obj) # 查询苑昊的优惠券
yuan_obj = OldBoy.objects.filter(id=2).first()
coupon_list = yuan_obj.coupons.all()
print(coupon_list) #######################################################################
- ContentType实例提供的接口
- ContentType.model_class()
- 获取当前ContentType类型所代表的模型类
- ContentType.get_object_for_this_type()
- 使用当前ContentType类型所代表的模型类做一次get查询
- ContentType.model_class()
- ContentType管理器(manager)提供的接口
- ContentType.objects.get_for_id()
- 通过id寻找ContentType类型,这个跟传统的get方法的区别就是它跟get_for_model共享一个缓存,因此更为推荐。
- ContentType.objects.get_for_model()
- 通过model或者model的实例来寻找ContentType类型
- ContentType.objects.get_for_id()
--------------------- 数据接口
-- 作业
-- 表结构
-- 课程类别
-- 课程表
-- 课程详细表
-- 推荐课程!!!
-- 关联课程表
-- 价格策略ContentType
-- 课程章节
-- 课程详细关联
-- 课时表
-- 跟章节关联
-- 常见问题表 ContentType
-- 讲师表
-- 跟课程详细关联
https://juejin.im/entry/5b4eeda2e51d4519700f4c04
python全栈开发day103-python垃圾回收机制、mro和c3算法解析、跨域jsonp\CORS、Content-Type组件的更多相关文章
- python 全栈开发:python基础
python具有优美.清晰.简单,是一个优秀并广泛使用的语言.诞生于1991年2.python历史 1989年,为了打发圣诞节假期,Guido开始写Python语言的编译器.Python这个名字,来自 ...
- Python 全栈开发四 python基础 函数
一.函数的基本语法和特性 函数的定义 函数一词来源于数学,但编程中的「函数」概念,与数学中的函数是有很大不同的.函数是指将一组语句的集合通过一个名字(函数名)封装起来,要想执行这个函数,只需调用其函数 ...
- Python 全栈开发二 python基础 字符串 字典 集合
一.字符串 1,在python中,字符串是最为常见的数据类型,一般情况下用引号来创建字符串. >>ch = "wallace" >>ch1 = 'walla ...
- Python 全栈开发一 python初识
1.Python简介 python的创始人为吉多·范罗苏姆(Guido van Rossum).1989年的圣诞节期间,吉多·范罗苏姆为了在阿姆斯特丹打发时间,决心开发一个新的脚本解释程序,作为ABC ...
- Python 全栈开发三 python基础 条件与循环
一. 条件语句 python条件语句是根据一条或多条语句的执行结果的真假(True Or False)来决定代码块的执行. 而执行内容可以多行,以缩进来区分表示同一范围. 1.Python判断条件真假 ...
- Python 全栈开发【第0篇】:目录
Python 全栈开发[第0篇]:目录 第一阶段:Python 开发入门 Python 全栈开发[第一篇]:计算机原理&Linux系统入门 Python 全栈开发[第二篇]:Python基 ...
- Python全栈开发【面向对象进阶】
Python全栈开发[面向对象进阶] 本节内容: isinstance(obj,cls)和issubclass(sub,super) 反射 __setattr__,__delattr__,__geta ...
- 学习笔记之Python全栈开发/人工智能公开课_腾讯课堂
Python全栈开发/人工智能公开课_腾讯课堂 https://ke.qq.com/course/190378 https://github.com/haoran119/ke.qq.com.pytho ...
- Python全栈开发【面向对象】
Python全栈开发[面向对象] 本节内容: 三大编程范式 面向对象设计与面向对象编程 类和对象 静态属性.类方法.静态方法 类组合 继承 多态 封装 三大编程范式 三大编程范式: 1.面向过程编程 ...
随机推荐
- BZOJ4977[Lydsy1708月赛]跳伞求生——贪心+堆+模拟费用流
题目链接: 跳伞求生 可以将题目转化成数轴上有$n$个人和$m$个房子,坐标分别为$a_{i}$和$b_{i}$,每个人可以进一个他左边的房子,每个房子只能进一个人.每个房子有一个收益$c_{i}$, ...
- Django+Vue打造购物网站(十)
首页.商品数量.缓存和限速功能开发 将环境切换为本地,vue也切换为本地 轮播图 goods/serializers.py class BannerSerializer(serializers.Mod ...
- Magento2 API 服务合同设计模式 依赖注入 介绍
公共接口和API 什么是公共界面? 一个公共接口是一组代码,第三方开发者可以调用,实现或构建一个 插件 .Magento保证在没有重大版本更改的情况下,此代码在后续版本中不会更改. 模块的公共接口 标 ...
- JDK动态代理(Proxy)的两种实现方式
JDK自带的Proxy动态代理两种实现方式 前提条件:JDK Proxy必须实现对象接口 so,创建一个接口文件,一个实现接口对象,一个动态代理文件 接口文件:TargetInterface.java ...
- 三步解决fiddler升级后https无法通过证书验证问题
有时候使用fiddler时,https页面会出现错误提示,我们可以这样设置来避免错误 第一步:去掉https的抓取 Tools>Option 去掉Capture HTTPS CONNECTs 的 ...
- HDU 1426(数独 DFS)
题意是完成数独. 记录全图,将待填位置处填 0,记录下所有的待填位置,初始化结束.在每个待填位置处尝试填入 1 - 9,若经过判断后该位置可以填入某数字,则继续向下填下一个位置, 回溯时把待填位置重新 ...
- fedora make: gcc:命令未找到(解决方法)
安装C开发环境 由于gcc包需要依赖binutils和cpp包,另外make包也是在编译中常用的,所以一共需要9个包来完成安装,因此我们只需要执行9条指令即可: yum install cpp yum ...
- 【转载】c++类的实例化与拷贝
https://www.cnblogs.com/chris-cp/p/3578976.html c++的默认拷贝构造函数,从深度拷贝和浅拷贝说起: https://blog.csdn.net/qq_2 ...
- UML建工工具
本篇博文简单介绍一下自己在搜索UML建模工具的过程中收集到的一些信息. 如果想用中文的,可以考虑楚凡科技的Trufun Plato,不过最近好像没有怎么更新了. 很多前辈以前用的是Rational R ...
- [再寄小读者之数学篇](2014-04-08 from 1297503521@qq.com $\sin x-x\cos x=0$ 的根的估计)
(2014-04-08 from 1297503521@qq.com) 设方程 $\sin x-x\cos x=0$ 在 $(0,+\infty)$ 中的第 $n$ 个解为 $x_n$. 证明: $$ ...