zoukankan      html  css  js  c++  java
  • 自学youku_web

    仿youku架构

    数据库设计

    管理员
        注册
        登录
        上传视频
        删除视频
        发布公告
    
    普通用户
        注册
        登录
        充会员
        查看视频
        下载免费视频
        下载收费视频
        查看观影记录
        查看公告

     思路

    class Field
        表示数据表里的字段(字段属性:名字,类型,是否为主键,默认值)
            类的对象————>数据库表的字段
    
    class IntegerField(Field)
        整型
    class StringField(Field)
        字符型
    
    class ModelsMetaclass(type)
        重写元类,让类创建之前,拦截它并重写__new__方法,name,bases,attrs,
        循环attrs,进行更进一步判断操作
        使attrs剔除掉原始初始化时赋予的属性值,且仅有table_name,primary_key,mappings
            def __new__
    
    class Models(dict,metaclass=ModelsMetaclass)
        如何在类进行实例化的时候,k=v,都能放进属性里
            dict,
        字典取值用的是中括号[],而我们需要的是用点(.)
            __getattr__
            __setattr__
    
        根据类名查对象
            注意防止SQL注入
            # select * from %s where %s = ? % (cls.table_name,key)
            @classmethod
            select_one
    
            # select * from %s where % (cls.table_name)
            # select * from %s where %s = ? % (cls.table_name,key)
            @classmethod
            select_many
    
    
    
    
    
    模拟session机制
        服务端验证成功后,生成一个密文
    
    客户端一旦断开,服务器保存的session状态清除掉
    采用字典的pop方法
        拼接字典
        #live_user = {addr:[session,user_id],addr:[session,user_id],addr:[session,user_id]}
        live_user.pop(addr)

    源码:

    youku服务端(>>点我进传送门<<)

    youku客户端(>>点我进传送门<<)

  • 相关阅读:
    linux 创建python虚拟环境
    dic1.update(dic2)和{**dic2, **dic1}的区别
    redis
    电脑开机一卡一卡的,重启就好了
    股东大会和董事会的区别
    word空白框打钩
    计划资产回报
    成本法为什么要转权益法
    租赁负债
    AIDA64序列号
  • 原文地址:https://www.cnblogs.com/limengjie0104/p/9049474.html
Copyright © 2011-2022 走看看