仿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客户端(>>点我进传送门<<)

自学youku_web的更多相关文章

  1. 从零自学Hadoop(22):HBase协处理器

    阅读目录 序 介绍 Observer操作 示例下载 系列索引 本文版权归mephisto和博客园共有,欢迎转载,但须保留此段声明,并给出原文链接,谢谢合作. 文章是哥(mephisto)写的,Sour ...

  2. 前端自学路线之js篇

    上一篇我们讲了前端切图的学习路线,不知大家有没有收获.今天来聊聊前端工程师的核心技能之——JavaScript.js这门语言看似简单,但要做到入门.熟练以至于架构的程度,还是有一段路要走的,今天就来聊 ...

  3. 从零自学Hadoop(20):HBase数据模型相关操作上

    阅读目录 序 介绍 命名空间 表 系列索引 本文版权归mephisto和博客园共有,欢迎转载,但须保留此段声明,并给出原文链接,谢谢合作. 文章是哥(mephisto)写的,SourceLink 序 ...

  4. 从零自学Hadoop系列索引

    本文版权归mephisto和博客园共有,欢迎转载,但须保留此段声明,并给出原文链接,谢谢合作. 文章是哥(mephisto)写的,SourceLink 从零自学Hadoop(01):认识Hadoop ...

  5. 从零自学Hadoop(21):HBase数据模型相关操作下

    阅读目录 序 变量 数据模型操作 系列索引 本文版权归mephisto和博客园共有,欢迎转载,但须保留此段声明,并给出原文链接,谢谢合作. 文章是哥(mephisto)写的,SourceLink 序 ...

  6. 从零自学Hadoop(19):HBase介绍及安装

    阅读目录 序 介绍 安装 系列索引 本文版权归mephisto和博客园共有,欢迎转载,但须保留此段声明,并给出原文链接,谢谢合作. 文章是哥(mephisto)写的,SourceLink 序 上一篇, ...

  7. 从零自学Hadoop(18):Hive的CLI和JDBC

    阅读目录 序 Hive CLI(old CLI) Beeline CLI(new CLI) JDBC Demo下载 系列索引 本文版权归mephisto和博客园共有,欢迎转载,但须保留此段声明,并给出 ...

  8. 【转】JAVA自学之路

    JAVA自学之路 一: 学会选择 为了就业,不少同学参加各种各样的培训. 决心做软件的,大多数人选的是java,或是.net,也有一些选择了手机.嵌入式.游戏.3G.测试等. 那么究竟应该选择什么方向 ...

  9. 前端自学vs跟大神系统学?你看着办

    前端自学vs跟大神系统学?你看着办 一名广告专业学生,在大三的时候对于广告行业的前景不是很看好,转而自学web前端,刚开始接触的前端语言是html(html应该不算编程语言),上手很容易,在w3csh ...

随机推荐

  1. AndroidStudio打包jar

    1.像平常一个样新建一个项目 2.(在步骤1的基础上)点击File-->New-->New Module—>选择Android Library-->点击Next(如下图:) 定 ...

  2. C++的友元函数

    友元函数不是成员函数,是类外函数所以声明放在类的私有段或公有段且没有区别.但是它可以访问类中的私有成员.友元的作用在于提高程序的运行效率,但是,它破坏了类的封装性和隐藏性,使得非成员函数可以访问类的私 ...

  3. maya 安装不上

    AUTODESK系列软件着实令人头疼,安装失败之后不能完全卸载!!!(比如maya,cad,3dsmax等).有时手动删除注册表重装之后还是会出现各种问题,每个版本的C++Runtime和.NET f ...

  4. UGUI Image血条或者进度条效果

    把图片的Image组件中的image type选成Filled,下面就出现了Fill Amount,通过GetComponent<Image>().fillAmount; 就可以拿到flo ...

  5. CharacterController控制的物体移动

    CharacterController控制的物体移动: public class playerMove  : MonoBehaviour { public float Speed; private C ...

  6. jQuery OCUpload一键上传文件

    1 引入相关的js文件 <!--引入OCUpload的js文件,之前需要引入jQuery的js文件 --> <script type="text/javascript&qu ...

  7. java 多线程 yield方法的意义

    Thread.yield( )方法: 使当前线程从执行状态(运行状态)变为可执行态(就绪状态).cpu会从众多的可执行态里选择,也就是说,当前也就是刚刚的那个线程还是有可能会被再次执行到的,并不是说一 ...

  8. JEECMS站群管理系统-- Jeecms项目导入myeclipse

    1.在myeclipse中新建一个项目jeecms,将服务器中jeecms项目下web-inf文件夹下内容拷到新建项目中 解压缩jeecms-3.0.2-final-src,在src文件夹下会看到有三 ...

  9. .NET MVC强类型参数排除和包含属性

    MVC接收强类型对象时排除或只接收某几个属性时可使用Bind特性: Bind(Include="属性");如果相包含多个属性可以用逗号分割符分开:Bind(Include=&quo ...

  10. guava的重试机制guava-retrying使用

    1,添加maven依赖 <dependency> <groupId>com.github.rholder</groupId> <artifactId>g ...