wangking 写道
为了保证数据的完整性以及正确性,我们总得挖空心思的找寻一些解决方案。保证数据的正确性,控制同步问题,有2中,一种乐观锁,一种悲观锁。这次项目中我采用的是乐观锁,就口水活,记下来!
一般用乐观锁进行同步控制的时候,都喜欢在表上建立一个版本监控的字段,姑且叫“version”吧。
如表User:
User username user_id balance version
wangking 1 100 1
比如balance字段引起的变化由多处控制,如充值的时候,交易的时候,都会对balance造成影响。所以我们要对user表进行乐观锁控制,以防止数据的不正确。
事例一(充值):
//充值卡
User user = get(1);
Card card = get(2);
int userFinalMoney = user.balance + card.money;
user.setBalance(userFinalMoney);
User user2 = get(1);
if(user.version == user2.version){
updateByTrans(user,card); //version++,卡过期,账号充值
}else{
//提示系统繁忙,请稍后再试!
}
事例二(交易):
//卖家发布任务的时候,[钱]和[发布点]已经扣除到【交易任务】上
//【交易任务】的状态修改
//买家 增加 [钱]和[发布点]
User user = get(1);
Task task = get(3);
int userFinalMoney = user.balance + task.money;
int userFinalPiontNum = user.pointNum + task.pointNum;
user.setBalance(userFinalMoney);
user.setPiontNum(userFinalPiontNum);
User user2 = get(1);
if(user.version == user2.version){ //当如果事例一(充值)处先执行了,那么version值++了,所以这里version值匹配不过来,就不会对数据造成影响!
updateByTrans(user,task); //version++,update user,task
}else{
//提示系统繁忙,请稍后再试!
}
是不是很简单吧,还不快来试试?
分享到:
相关推荐
基于Oracle数据库的分页显示中SQL复杂查询结果集总行与数据正确性控制.pdf
A、乐观锁常用于读取多于更新的场景 B、一个事务对数据加了共享锁后,其他事务可以继续对该数据添加共享锁 C、更新数据时,先获取共享锁,再将共享锁升级为排他锁,可以避免死锁 D、锁既可以用于表级别,也可以用于...
计算机组成原理第五版白中英课后习题答案(正确率全网最高!!!)
谈谈提高输入数据正确性的方法
软件开发项目的成功需要早期客观地确定项目的正确性或不正确性,并确定最有效的项目管理解决方案。... 在此基础上,基于设计阶段的属性数据,提出了一种定量判断技术,用于对项目的正确性和不正确性进行早期判断。
MD5小工具,用来验证传输过程中的数据正确性
嵌套事务作为扩展事务模型的一种,应用较为广泛,对嵌套事务正确性进行了描述,并给出了一个嵌套事务模型的并发控制锁的协议。
引言 任何数据质量方案都具有人员、流程和...一个战略性和系统性的方法能帮助您正确研究您的数据质量项目,业务部门与 IT 部门的相关人员将各自具有明确角色和责任,配备正确的技术和工具,以应对数据质量控制的挑战。
简单阐述了Floyd的正确性!
P105:3-07,为该数据添加CRC码,并验证他的正确性,改动CRC码最后一位,验证他的正确性。
校验shp数据属性中身份证号的正确性
1、准确性:数据不正确或描述对象过期 2、合规性:数据是否以非标准格式存储 3、完备性:数据不存在 4、及时性:关键数据是否能够及时传递到目标位置 5、一致性:数据冲突 6、重复性:记录了重复数据
WPS表格检测输入数据的正确性.docx
开发者在设计阶段要考虑许多因素——如何正规化数据、如何创建易于...但无疑地,开发者最重要的一个目标就是保证数据的准确性。本文讨论了如何通过“引用完整性”来防止数据库产生不正确的数据,以及如何防止丢失数据。
然而必须保证所制定策略的正确性,才能防止对系统资源的非法访问,因此必须研制出一种有效的方法来验证策略的正确性。基于模型检测技术提出了一种访问控制策略的覆盖性与完整性验证方法。主要思想是将覆盖性与完整性...
该资料是:基于STM32单片机电子密码锁控制电路设计资料(BOM表、电路图、程序源代码)。包括以下内容: 1、电子密码锁控制电路的电路原理图源文件和PCB图源文件,用Altium Designer软件绘制。 2、Word格式的BOM表...
3.server端校验udp包的正确性(避免其他人发送的错误包被解析) 4.server端将收到的udp包进行合并 5.server端合并后正确的生成一张图片。 6.使用说明具体可以查询解压后的《使用说明.txt》 7.如果遇到什么问题。 可以...
基于SPARTAN-6系列芯片以及ISE设计工具对机器人控制电路进行了设计和仿真源码(验证了电路的正确性和可靠性。同时机器人使用了温湿度传感器、人体感应传感器、超声波传感器、震动传感器、有毒气体传感器等可对灾区的...
利用WPS表格检测输入数据的正确性技巧.docx