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

  • 相关阅读:
    Study Plan The TwentySecond Day
    Study Plan The Nineteenth Day
    Study Plan The TwentySeventh Day
    Study Plan The Twentieth Day
    Study Plan The TwentyFirst Day
    python实现进程的三种方式及其区别
    yum makecache
    JSONPath 表达式的使用
    oracle执行cmd的实现方法
    php daodb插入、更新与删除数据
  • 原文地址:https://www.cnblogs.com/wuchenggong/p/9700352.html
Copyright © 2011-2022 走看看