day03面试题

本文讲述了项目中参数校验的实现方式,利用注解进行数据验证,以及问答系统中使用了两张表(Question和Answer)的设计,强调了MongoDB在存储问题和评论上的优势,如高效分片和并发处理,尽管MySQL在重要性上稍逊一筹。
摘要由CSDN通过智能技术生成

 你们的项目是如何进行参数校验的 
在我们的项目中,我们团队使用的是validation技术实现的,它是通过使用注解来完成对传入数据的校验的.注解主要标注在接收前端传输数据的对象的属性上边.当前端传入的数据不符合校验规则时,系统会抛出异常,我们自己编写的全局异常处理器会捕获异常,捕获到异常以后会将异常信息传递给前端.我们常用的注解有下面这些:

@Null 可以标注在任意类型元素上,被标注的元素必须为null

@NotEmpty 可以标注 在字符串,集合,数组,map上,被标注的元素必须不能为 null ,也不能是空串

@Range 标注在字符串和数值的大小必须在指定的范围内,对于null无效

@Digits(integer(数值的位数) =3 , fraction(小数的位数)=2)

@size(min=,max=) 可以标注在字符串,数组,集合,map用于控制长度


3-2 详细说一下你们的问答系统用到了几张表,表中的主要字段有哪些,表关系是什么
在我们项目中,问答字段用到了两张表,分别是Question和Answer的数据库.

Question就是问题表,存放的都是一些问题信息.主要字段有answer_times(问题下的回复数量),anonymity(是否匿名),hidden(是否隐藏),status(是否已被查看),latest_answer_id(最后一个回答者id),user_id(提问学员id)

Answer存放的是回复问题和回复评论所存放的数据,两个共用一张表.主要字段有question_id(所属问题id),answer_id(回复的上级id),user_id(回答者id),target_user_id(回复的目标用户id)anonymity(是否匿名),hidden(是否隐藏),reply_times(评论数量)

标间关系是一对多,Question中一个数据,对应着多个interaction_reply表中的数据


3-3 你们为什么用Mongo, 而不用MySQL存储问题和评论
我们使用Mongo而不使用MySQL存储问题和评论的原因有一下几点

1.MongoDB支持高效的分片和复制机制,适用于大规模数据的存储和查询.Mongo中可以存储大量的数据,并发访问能力也非常高,比如读写分离和分片技术等技术提高Mongo的并发访问能力.MySQL只能是两千万同时访问量.问题和评论的数据量就较大.

2.相比于MySQL,Mongo的存储存在着一定的风险,但是问题和评论在项目中,不是特备重要的数据,所以即使存在数据丢失也完全没有问题.基本不会造成影响.

因为以上原因,我们一般情况下使用Mongo,而不使用MySQL

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值