Flask项目(2)

1.产品介绍

  • 目标:对产品有一个基本的认识

  • 产品名称:黑马头条

  • 对标竞品:今日头条

  • 客户端:

    • 1.用户端:android, ios, 移动web
    • 作用: 主要用于阅读文章
    • 2.自媒体端:移动web
    • 作用: 自媒体人编辑、发布文章
    • 3.管理后台:pc web
    • 作用:进行用户管理、文章审核及管理、评论管理
  • 备注:

    项目课程主要讲解的是用户端的后端代码逻辑,所以后面的技术方案都是围绕着用户端讲解。
    

2.原型图与UI图介绍

  • 目标:知道原型图和UI图的作用

  • 原型图:产品经理制作,是产品的原型设计,表达产品的功能组成。

  • 作用:

    1.准确表达产品需要的功能,和页面逻辑。
    2.后端拿到产品原型后就可以进行数据库设计,业务代码编写。
    3.前端拿到后就可以进行页面布局,页面跳转设计。
    
  • UI图:由UI人员设计,是产品最终的用户能够看到的产品样式效果。

  • 作用:

    1.决定最终产品的显示效果,可以说产品好不好看,就看UI设计的好不好。
    2.前端拿到原型图,只能进行布局,逻辑开发。最终呈现的效果需要结合UI图。
    3.比如颜色,尺寸,页面布局的百分比,字号。
    

3.后端技术架构分析

  • 目标:对后端的技术架构有基本的认识。

    1.首页展示
    2.机器人聊天
    3.自媒体发布文章
    4.管理后台审核文章
    

4.开发人员配置

  • 目标:对开发一个项目需要的人员配置有一个基本的认识

  • web项目组的基本配置:

    项目经理1人
    产品1人
    后台1-2人
    前端1-3人
    ui1人
    测试1人
    助理1人(一般项目组公用)
    
  • 备注:

    工作中有两个很重要的点:
    	1.听清楚问题,了解需求。
    	2.学会正确说不
    

5.gitlab和mock网站介绍

gitlab:
	网址:http://git.meiduo.site
	注册规范: gzjy14_名字拼音
	学校提供的gitlab工具,不要存放私人代码,会定期清理。
mock:
	http://mock.meiduo.site
	学校提供的管理接口文档工具。

备注:
	gitlab工具要重点学习,基本上每个公司都会有自己的gitlab网站,功能基本一样。
	接口管理,差异性比较大,了解其作用即可。

6.软件开发流程

后端:
	技术选型->数据库设计->业务代码编写->单元测试->部署测试服务器->给测试人员测试

黑马头条:
	flask + flask-restful + flask-sqlalchemy

7.数据库设计思路(功能的划分)

  • 1.阅读原型图,找出所有需要保存的数据

    手机号码,频道,我的频道,文章标题,文章图片列表。。。。。。
    
  • 2.根据找出的数据,设计表(表名字,把对应的数据添加到表)

    头条中的几个重点关注的表:
    user_basic 用户基本信息 --> user_profile 用户资料 (1对1关系,垂直分表)
    user_basic 用户基本信息 --> user_relation 用户关系 (自关联多对多)
    
    news_article_basic 文章基本信息 --> news_article_content 文章内容 (1对1关系,垂直分表)
    
  • 3.继续阅读原型图,考虑中间数据,继续完善表结构

  • 小结

    1.不要一开始就希望尽善尽美, 先出来一个差不多的表结构,然后在逐渐完善。甚至有可能需要重新设计
    2.数据库设计是需要靠经验积累,所以要多看原型,多练习设计。
    3.多练习后,设计表能力就会慢慢提升,这个不是一蹴而就的。
    4.大多时候,数据库设计的好不好,跟对业务的理解程度正相关。
    

8.创建表–主键选取

  • 1.用业务数据做为主键。

    比如: 手机号码
    缺点:
    	如果后期手机号码发生改变,所有依赖手机号的数据,都需要改变。
    
  • 2.使用非业务数据

    1.手动指定id, bigint类型(建议使用指定id)
    2.如果不指定主键id, mysql会自动生成一个不可见的row_id.
    
  • 小结

备注:
	一般会使用整形作为主键
	无符号tinyint 1字节 范围0到2^8-1
	无符号int 4字节 范围0到2^32-1
	无符号bigint 8字节 范围0到2^64-1
	所以一般会选用bigint做主键类型,便于后面业务增长。

9.创建表–状态数据

  • 很多表中,都会存在一个表示状态字段。

    比如在黑马头条中:
    	用户表user_basic.status: 表示用户是否可用
    	文章news_article_basic.status:表示草稿、待审核、审核通过、审核失败
    	评论表news_comment.status:表示0-待审核,1-审核通过,2-审核失败,3-已删
    
  • 状态类型选择

    一般选择tinyint类型,不同的值表示不同的状态。
    建议不要使用enum枚举类型。
    
  • tinyint和int比较

    tinyint虽然比int只是少了3个字节,但是在大数据的情况下,也是一笔不小的硬盘开销
    建议使用tinyint类型。
    
  • int(3) 和 int(6)存储大小是否一样?

    答案:是一样的,只是在查询的时候自动补0
    

10.创建表–字符串数据

  • 大多数据都是使用字符串类型,所以懂得合理使用字符串类型是非常重要的。

  • 主要介绍两种字符串类型

  • char

    不可变,查询效率高。可能浪费空间
    效率高的原因: 所以在底层值的位数都是一定的,两字符串的值相减,如果为0,就相等。
    
  • varchar

    可变,查询效率比char低,节省空间
    
  • 小结

    1.如果确定字符长度,需要查询效率快的,优先选用char
    2.如果不确定长度,选择varchar。后续再优化
    

11.创建表–json类型

  • 在mysql5.7.8版本后,才推出的数据类型。

  • sql

    create table test2( name json );
    insert into test2(name) value('{""}'); # 插入普通字符串报错
    insert into test2(name) value('{"age":1}'); # 插入json字符串成功
    
  • 黑马头条中的使用

    黑马头条中文章表中:news_article_basic.cover
    数据格式:
    	{"type":0, "images":[]}
    
    备注:
    	json的本质在也是大文本,我们最终cover选择了longtext,这样就需要我们自己去保证数据的正确性。
    
  • 小结

    1.json类型的出现,大大便利了我们广大程序员。
    2.在一个字段中,存储json数据,这样的场景越来越多。
    

12.字段的其他参数

not null: 不为空
default: 默认值
comment: 备注(养成好习惯,给每个表都加上备注)

13.索引(重点)

  • 索引分类

  • 1.普通索引index

  • 作用

    提高查询效率
    alter table user_basic add index password_index (password);
    alter table user_basic drop index password_index;
    
  • 2.唯一索引

  • 作用

    1.主键索引: 提高查询效率,并且数据唯一。
    2.唯一索引: 提高查询效率,并且数据唯一。
    
  • 3.外键索引

  • 作用

    1.保证数据的完整性。
    2.提高查询效率
    
  • 小结

    1.增加索引,提高查询效率,但是增删改会受到影响。
    2.会增加额外存储空间。
    3.一般只会给经常查询的字段加上索引。
    

14.数据库存储引擎

  • 虚拟机安装的是MariaDB数据库,MariaDB是mysql的社区版本, 使用/操作都是一样的.

  • InnoDB

    1.mysql的默认存储引擎
    2.支持事务
    3.支持外键的完整性约束.
    
  • MyISAM

    1.基于ISAM存储引擎.
    2.不支持事务
    3.速度更快.
    
  • MEMORY

    1.将表中的数据存储到内存中,为查询和引用其他表数据提供快速访问.
    
  • 黑马头条项目中的使用

    黑马头条会用到InnoDB和MyISAM数据库引擎
    
  • 小结

    1.如果不知道如何选择存储引擎, 直接使用InnoDB
    2.如果不确定是否需要使用MyISAM等数据库引擎,建议先直接使用InnoDB,后面如果有必要再进行更改
    

15.数据库设计-范式设计&反范式设计

  • 范式设计

    遵守范式设计的数据库,一定是冗余最少的设计,所以最开始设计的时候最好就遵守范式设计。
    <
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Vue、Python和Flask是一种常见的前后端分离项目的技术组合。 Vue是一种流行的前端框架,可用于构建单页面应用程序。它使用了MVVM(模型-视图-视图模型)的架构模式,具有响应式数据绑定和组件化开发等优点。通过Vue,我们可以快速构建交互式用户界面,并负责处理页面的视图层逻辑。 Python是一种易学易用且功能强大的编程语言,具有广泛的应用领域。在前后端分离项目中,Python通常用于处理后端的业务逻辑和数据操作。它可以通过Flask框架轻松构建RESTful API,并处理与前端之间的数据交互。 Flask是一个轻量级的Python Web框架,用于构建简单而灵活的Web应用程序。它提供了许多有用的功能,如路由、模板引擎、数据库集成等。通过Flask,我们可以轻松管理后端的路由和视图,以及与数据库的交互。 实现Vue、Python和Flask的前后端分离项目的基本流程如下: 1. 前端开发:使用Vue构建用户界面,处理用户的输入和交互,并向后端发送请求。前端开发人员将使用HTML、CSS和JavaScript等前端技术实现页面的布局和功能。 2. 后端开发:使用Python和Flask构建后端服务器,处理前端发送的请求并返回相应的数据。后端开发人员将编写服务器端的API和业务逻辑,与数据库进行交互,并返回处理后的数据给前端。 3. 数据交互:前端通过发送HTTP请求来与后端进行数据交互。后端接收到请求后,根据需要从数据库中获取数据或进行其他操作,并将结果作为JSON格式返回给前端。 4. 部署和测试:前后端分离项目可以将前端静态文件部署到CDN或Web服务器上,将后端部署到应用服务器上。在部署之前,需要进行一系列的测试,包括单元测试、集成测试和端到端测试等。 通过将Vue、Python和Flask相结合,可以实现前后端分离项目的高效开发和可扩展性。Vue提供了强大的前端能力,Python和Flask提供了灵活的后端逻辑和数据操作能力,使得开发人员可以分工合作,实现高效的项目开发。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值