zoukankan      html  css  js  c++  java
  • python全栈开发day103-python垃圾回收机制、mro和c3算法解析、跨域jsonpCORS、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管理器(manager)提供的接口
      • ContentType.objects.get_for_id()
        • 通过id寻找ContentType类型,这个跟传统的get方法的区别就是它跟get_for_model共享一个缓存,因此更为推荐。
      • ContentType.objects.get_for_model()
        • 通过model或者model的实例来寻找ContentType类型
    
    ---------------------
    
    
    
    数据接口 
    -- 作业
    	-- 表结构
    		-- 课程类别
    		-- 课程表
    		-- 课程详细表
    			-- 推荐课程!!!
    			-- 关联课程表
    		-- 价格策略ContentType
    		-- 课程章节
    			-- 课程详细关联
    		-- 课时表
    			-- 跟章节关联
    		-- 常见问题表 ContentType
    		-- 讲师表
    			-- 跟课程详细关联
    

      https://juejin.im/entry/5b4eeda2e51d4519700f4c04

  • 相关阅读:
    Ubuntu格式化分区时的一个小错误
    VS 2013中的新特性browser link
    回车登录,兼容
    ASP.NET MVC 站点设置.html 为起始页
    WebBrowser 禁用右键
    C# 获取时间差(几天前,几小时前,几分钟前,几秒前)
    JavaScrip操作Cookie
    JS生成GUID算法
    老李推荐: 第3章2节《MonkeyRunner源码剖析》脚本编写示例: MonkeyDevice API使用示例 4
    老李推荐: 第3章2节《MonkeyRunner源码剖析》脚本编写示例: MonkeyDevice API使用示例 3
  • 原文地址:https://www.cnblogs.com/wuchenggong/p/9700352.html
Copyright © 2011-2022 走看看