今天公司CTO跟隔壁部门开技术会,旁听了一下。所讲的内容感觉好高大上啊!简单记录一下
场景是这样的:
if(check(id)===true)
{
}else{
set(id);
}
什么意思呢? 就是首先去查数据库这个id存不存在,不存在的话就去设置一下。
当时CTO就指着这段代码问你们看有没有什么问题?
虽然我java不怎么懂,但从逻辑上没啥问题啊,这么简单的逻辑怎么有问题呢?!!
然后CTO 说:如果用户在做相关请求的时候用户因为什么原因刷新了一下页面,就造成了俩个一样的请求,俩个请求一前一后进入上面那个if else 语句就会出现问题。
这是单机的情况,如果是多机(开了多个做负载均衡),那么更容易出错。
解决方法是在数据库加锁。
简直是大开眼界啊,之前写代码根本不会想到这样的问题,CTO@闪银奇异,果然牛逼!