3-1 你们的项目是如何进行参数校验的
我们可以使用Bean Validation框架来进行参数校验,它提供了一种在JavaBean上定义约束的方法,并且可以在运行时验证这些约束。
我们通常会使用javax.validation.constraints包中的注解来定义参数的约束,例如:
@AssertFalse可以为null,如果不为null的话必须为false
@AssertTrue可以为null,如果不为null的话必须为true
@DecimalMax设置不能超过最大值
@DecimalMin设置不能超过最小值
@Digits设置必须是数字且数字整数的位数和小数的位数必须在指定范围内
@Future日期必须在当前日期的未来
@Past日期必须在当前日期的过去
@Max最大不得超过此最大值
@Min最大不得小于此最小值
@NotNull不能为null,可以是空
@Null必须为null
@Pattern必须满足指定的正则表达式
@Size集合、数组、map等的size()值必须在指定范围内
@Length长度必须在指定范围内
@NotBlank字符串不能为null,字符串trim()后也不能等于“”
@NotEmpty不能为null,集合、数组、map等size()不能为0;字符串trim()后可以等于“”
@Range值必须在指定范围内
@URL必须是一个URL
使用这些注解,当请求参数校验失败时,用户将得到相应的错误信息
3-2 详细说一下你们的问答系统用到了几张表,表中的主要字段有哪些,表关系是什么
在我们互动问答中一共涉及到这些东西,问题,回复,回复的评论,回复评论的评论,这是个无限的叠楼的过程,
这种情况请下我们一般设计为两张表,(反正不可能是无限张表)分别是,问题表和,回答/评论表,
问题表中主要字段为:课程id,章节id,小节id,标题,描述,是否匿名 。
回答/评论表,首先是基本属性字段,回答内容字段,功能字段:是否匿名,点赞数量,评论数量,关联信息字段:用户id,问题id,还有评论的特殊属性字段:回答id,目标用户id,目标评论用户id,
这三张表的关系为:一个用户可以提多个问题,也可以回答多个问题,和对一个问题回答多次,一个问题可以有多个回答,一个回答也可以有多个回答及评论。
3-3 你们为什么用Mongo, 而不用MySQL存储问题和评论
使用MongoDB相对于MySQL可能有以下一些优势:
MongoDB 是一个面向文档的数据库,它采用了灵活的数据模型,不需要提前定义固定的表结构。这使得在存储问题和评论等动态数据时更加灵活和容易。
MongoDB 是一个分布式数据库,它支持水平扩展,能够轻松处理大量的数据和高并发访问。这使得它在需要处理大量问题和评论的应用场景下表现更出色。
MongoDB 使用B树索引,支持各种查询操作,包括复杂的多字段查询、分片查询等。这使得在对问题和评论进行查询和检索时具有高性能。
所以我们可以把一些,拥有海量数据,并且数据价值并不高的数据放入到MongoDB中去,比如问题和评论。