面试题第3天

本文介绍了项目中参数校验的验证规则,包括空值、数值范围、字符串长度等,以及问答系统的数据库设计,为何选择使用MongoDB而非MySQL,强调了MongoDB在处理大规模评论数据的优势。
摘要由CSDN通过智能技术生成

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 详细说一下你们的问答系统用到了几张表,表中的主要字段有哪些,表关系是什么

我们的问答系统主要用到了两张表,分别是问题表,问题的回答或评论表
    其中问题表中的字段主要有,id主键、问题标题,问题内容、所属课程、所属章节、所属课节、提问用户id、最新回答id、回答数量等等
    回答或评论表中字段主要有、主键id、问题id、上级回答id、回答者id、回复目标用户id、回复目标回复id等等

问题表和回答或评论表之间的关系是一对多关系,一个问题可以有多个回答或评论,而一个回答或评论只能对应一个问题。

当上级回答id为空时,代表这个是一个问题的回答,当上级回答id不为空时,代表这是一个对问题回答的评论。


3-3 你们为什么用Mongo, 而不用MySQL存储问题和评论

我们之所以用Mongo,而不用MySQL主要是因为以下原因:

评论数据量比较大,而且其数据价值相对较低。

MongoDB能够支持海量数据,并且在处理大规模数据时速度要比MySQL快,能够更好地应对评论数据的存储和查询需求。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值