业务题第三天

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中去,比如问题和评论。

  • 9
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值