目前在做一个app的java后端开发,有这样一个需求,某一个用户的某一种数据只能够在数据库表中出现唯一一条
有这个需求的话,很简单的实现就是不用考虑太多东西,直接写好逻辑:
如果数据库中已经存在那条数据了就把它删掉...相信这是大部分菜鸟程序员都会发生的事情,有自信的代码居然会出现bug,啊啊啊泪奔怪自己年轻,对吧),关于那条数据的模块都显示不出数据,我赶快看了一下日志发现数据库中报了错,大概的意思就是数据出现了3条,可是在dao层中仅获取一条...冷静下来想一想,应该是多条请求在同一时刻内发过来的,它们同时判断出数据库当中没有数据,然后同时插入了进去,噢,原来是这个样子,那么这个问题该如何解决呢?...直到后端返回数据的时候再设置为enable,等等
##### 3.服务器端自己解决
其实解决方案也差不多,大致就是加锁,问题出现的时候,我是直接在service层对应的方法上面直接加上synchronized,然后把重复的数据从数据库当中删掉...,具体是哪个线程在处理呢,所以就要以runningToken为key,runningTokenValue(runningToken与线程id拼接成的字符串)为值存进缓存当中,在aop的@After方法中remove