专栏名称: java一日一条
主要是讲解编程语言java,并且每天都推送一条关于java编程语言的信息
目录
相关文章推荐
芋道源码  ·  30K ... ·  11 小时前  
芋道源码  ·  Guava黑魔法:在日志脱敏场景下的奇遇 ·  11 小时前  
芋道源码  ·  Spring Cloud Gateway ... ·  昨天  
Java编程精选  ·  Controller层代码这么写,简洁又优雅! ·  3 天前  
51好读  ›  专栏  ›  java一日一条

大话程序猿眼里的高并发(上)

java一日一条  · 公众号  · Java  · 2017-12-26 09:28

正文

请到「今天看啥」查看全文


这里主要讲述的是在并发请求下的数据逻辑处理的接口,如何保证数据的一致性和完整性,这里的并发可能是大量用户发起的,也可能攻击者通过并发工具发起的并发请求


如例子:通过表设计防止并发导致数据错乱

  • 需求点
    【签到功能】 一天一个用户只能签到一次,
    签到成功后用户获取到一个积分

  • 已知表
    用户表,包含积分字段
    高并发意淫分析(属于开发前的猜测):
    在高并发的情况下,会导致,一个用户签到记录会有多条,或者用户签到后不止加一积分。

  • 我的设计
    首先根据需求我会添加一张签到记录表,重点来了,这张表需要把用户唯一标识字段(ID,Token)和签到日期字段添加为唯一约束,或者唯一索引,这样就可以防止并发的时候插入重复用户的签到记录。然后再程序代码逻辑里,先执行签到数据的添加(这里可以防止并发,添加成功后再进行积分的添加,这样就可以防止重复的添加积分了。最后我还是建议所有的数据操作都写在一个sql事务里面, 这样在添加失败,或者编辑用户积分失败的时候可以回滚数据。







请到「今天看啥」查看全文