黑马程序员技术交流社区

标题: 这种情况下,当请求速度快到一定程度后,可否突破验证? [打印本页]

作者: 等风来!    时间: 2015-12-2 18:55
标题: 这种情况下,当请求速度快到一定程度后,可否突破验证?
打个比方,一个web程序中领取代金券的例子
首先数据库中:有一个字段代表是否领取过代金券
程序中:先读取数据库,判断该字段值,true则领取过,不允许再次领取,false则进行下一步领取,并再次发送sql设置标识字段为true

那么当连续2个请求快到一定程度(假设),也就是在领取方法中读取数据库判断还未完成之前第二个请求又进入该方法了,会否突破验证?
我觉得应该是不能的吧,始终应该会有一个先后的?
作者: hbcoding    时间: 2015-12-2 20:57
一般情况下,领取代金券之前要进行用户登录,一个用户很难在短时间内几乎同时发出两个请求。假设有另一种情况,就是同一个账户可以在不同地方登录,然后他们同时发送领取代金券的请求,就会出现楼主说的情况。所以应该将领取动作和将数据库里的值设置为true两个步骤设置为线程同步。
作者: 冰霜之卅    时间: 2015-12-2 21:26
不会吧。
数据库自身都有提交验证




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2