3-1 你们的项目是如何进行参数校验的
我们项目中的参数校验是使用的Validation
空值:
@Null 可以标注在任意类型元素上,被标注的元素必须为null
@NotNull 可以标注在任意类型元素上,被标注的元素必须不能为null,但是可以为空串
@NotBlank 可以标注在字符串类型上,被标注的元素不能为null,也不能为空串
数值:
@Min(value) 被标注的元素必须是一个数字,其值必须大于等于指定的最小值,对于null无效
@Max(value) 被标注的元素必须是一个数字,其值必须小于等于指定的最大值,对于null无效
@Range(min=,max=) 被标注的字符串的大小必须在指定的范围内,对于null无效
长度:
@Size(min=,max) 可以标注在字符串、数组、集合、map上,用于控制数组等长度
@Length(min=,max=) 可以标注在字符串上,被标注的字符串的大小必须在指定的范围内
@Digits(integer = 3,fraction = 2) 验证数值的精度
@NotEmpty 可以标注在字符串、集合、数组、map类型上 被标注的元素值不为null,也不能为空集合或者空串
其他:
@AssertTrue 被标注的元素必须为true
@AssertFalse 被标注的元素必须为false
@Email 被标注的元素必须是电子邮箱地址
@URL 被注的元素必须是一个正确的网址
@Past 被标注的元素必须是一个过去的日期
@Future 被标注的元素必须是一个将来的日期
@Pattern(value) 被标注的元素必须符合指定的正则表达式
3-2 详细说一下你们的问答系统用到了几张表,表中的主要字段有哪些,表关系是什么
我们项目中的问答系统主要用到了两张表,分别是问题表,问题的回答或评论表
1、其中问题表中的字段主要有,id主键、问题标题,问题内容、所属课程、所属章节、所属课节、提问用户id、最新回答id、回答数量等等
2、回答或评论表中字段主要有、主键id、问题id、上级回答id、回答者id、回复目标用户id、回复目标回复id等等
3、其中当上级回答id为空时,代表这个是一个问题的回答,当上级回答id不为空时,代表这是一个对问题回答的评论
3-3 你们为什么用Mongo, 而不用MySQL存储问题和评论
1、是这样的,因为评论数据量比较大,并且他的数据价值相比较不是那么重要
2、Mongo能支持海量数据,速度要比MySQL快,所以采用Mongo