zoukankan      html  css  js  c++  java
  • 仿优酷架构项目框架分析

        1.优酷架构
            - Client
                - 用户视图层
                - 套接字客户端
    
            - Server
                - 套接字服务端
                - 接口层
                - 数据层
                    - ORM
                    - MySQL
    
        2.搭建项目目录
            - Client: 客户端
                - conf:
                    - settings
                - core:
                    - src:总视图
                        - admin 管理员视图
                        - user 普通用户视图
                - lib:
                    common
    
                - socket_client
                    - tcp_client: 建立连接
    
                - upload_movies  可上传电影的存放目录
    
                - download_movies 下载电影的存放目录
    
                - start.py: 客户端启动文件
    
    
            - Server: 服务端
                - conf:
                    - settings
                - interface:
                    - admin_interface: 管理员接口
                    - user_interface: 普通用户接口
                    - common_interface: 公共接口
                        该接口存放管理员与普通用户公用的接口。
    
                - db:
                   - models: 存放 "数据表类" 也称之为“模型表”。
                        - User: 用户表
                            - u_id
                            - username
                            - password
                            - user_type: 用户类型
                            - is_vip: 是否是会员  0表示不是会员    1表示是会员
                            - register_time: 注册时间
    
                        - Movie: 电影表
                            - m_id: 电影id
                            - movie_name: 电影名字
                            - movie_size: 电影大小
                            - is_free: 0代表收费   1代表免费
                            - path: 电影存放目录
                            - upload_time: 电影上传时间
                            - u_id: 谁上传的--> 上传用户的ID
    
                            # 假设上传电影列表中有两个电影的名字一样,就能确保两个电影的数据一样么?
                            MD5: 摘要,MD5值是唯一的。
                                - 只要md5值一样,数据就一模一样。
    
                            - 比对两个电影是否一样:
                                - 打开两个电影,获取全部数据,通过MD5获取md5值。
                                    - 浪费大量资源
                                    - 效率很低
    
                                - 打开两个电影: 在电影数据的某些位置截取 小量 bytes数据(10)
    
                            - file_md5: 文件的md5值
    
                        - Notice: 公告表
                            - n_id
                            - title 公告标题
                            - content: 公告内容
                            - create_time: 发布时间
                            - u_id: 发布人ID
    
                        - DownloadRecord: 下载记录表
                            - d_id:
                            - m_id: 下载的电影
                            - u_id: 下载的用户ID
                            - download_time: 下载时间
    
                - lib:
                    common
    
                - socket_client
                    - tcp_client: 建立连接
    
                - upload_movies  可上传电影的存放目录
    
                - download_movies 下载电影的存放目录
    
                - start.py: 客户端启动文件
    
        3.tcp_server:
            - run():
                # 接收客户端的请求
                - 异步提交给working(conn, addr)
    
            - working(conn, addr):
                - 接收客户端发送的消息
    
                - 把addr添加到back_dic中,用来做存放session的key值
                    - dispatcher(back_dic, conn)
    
                - 发现异常:
                    通过addr清除session值
    
            - dispatcher(back_dic, conn):
                - 通过type调用对应的接口
                    - func_dic: 存放所有的接口
    
                    if type == '功能名字':
                        func_dic.get('功能名字')(back_dic, conn)
    
        4.管理员功能
            - 注册
            - 登录
    
        5.cookies, session
            cookies: 是一个存放在浏览器中文本协议,用于存放用户数据。
    
            session: 是一个存放在服务端的 随机字符串,用来做登录认证。
                可以给用户数据做加密,并且将session值返回给客户端,保证数据安全。
    
        6.登录认证装饰器
            - 应该在服务端做登录认证的处理
                - 客户端的数据有可能会被串改,所以在服务端进行认证。
    
            -
    
    
        1.管理员功能
            - 上传电影
            - 删除电影
            - 发布公公告
    
        2.普通用户功能
            - 注册
            - 登录
            - 查看视频
            - 下载视频
                - 免费
                - 收费
                    - 草根用户
                        10块一部电影
    
                    - VIP用户,打骨折
                        5块一部电影
            - 充值会员
            - 查看下载记录
            - 查看公告
    
  • 相关阅读:
    Java运算符
    Java数据类型,常量与变量
    内存
    cmd编码
    DELL G7重置电脑操作步骤
    关于es6中...运算符的总结
    js数组与字符串相互转换
    JS中的continue,break,return的区别
    git提交步骤
    数据修改后点击确定没有保存 还是原来的数据
  • 原文地址:https://www.cnblogs.com/jinhongquan/p/11850063.html
Copyright © 2011-2022 走看看