当前位置: 首页 > news >正文

建站公司网站社区网络营销产品策略的内容

建站公司网站社区,网络营销产品策略的内容,天津网站建设基本流程,万州网站建设果园路文章目录 介绍原因分析:修改代码一波三折,再次出现问题 介绍 遇到了一个很有意思的问题。 在service层加了事务。 为了防止并发,在component层加了分布式锁。 先根据前端传入的id,在数据库中使用queryA()查到一个key然后对这个key进行加锁再…

文章目录

    • 介绍
    • 原因分析:
    • 修改代码
    • 一波三折,再次出现问题

介绍

遇到了一个很有意思的问题。
在service层加了事务。
为了防止并发,在component层加了分布式锁。

  1. 先根据前端传入的id,在数据库中使用queryA()查到一个key
  2. 然后对这个key进行加锁
  3. 再次调用queryA()。目的是为了做校验
  4. 更新数据库
  5. 在component层释放锁

最终现象是:加锁失败。

线程A获取到了锁,然后执行下面的操作。
线程B等待这把锁。
线程A执行完了之后,释放锁。
线程B查数据库,依然校验成功。按理说A操作了数据,线程B的校验应该不通过。
实际上线程B没有读到线程A更新后的数据

原因分析:

数据库mysql的隔离级别是 可重复读。

那么在线程B等待锁的时候,已经缓存了一份数据库连接了。
此时A更新了数据,然后释放锁(假设提交了事务),由于是可重复读级别的事务隔离,所以线程B此时无论如何都读不出来线程A修改的数据。
后来解决方法就是让前端传key进来。

修改代码

也就是代码改成了

1. 前端传入key
2. 然后对这个key进行加锁
3. 调用数据库的queryA()方法。目的是为了做校验
4. 更新数据库
5. 在component层释放锁

此时线程A获取到了锁,直到事务提交了,线程B才开始数据库连接,此时正常

一波三折,再次出现问题

经过上面的分析,
现在我也怀疑,是不是在事务提交前就释放了锁呢?

http://www.shuangfujiaoyu.com/news/43993.html

相关文章:

  • 360怎么做网站网站设计与建设
  • 游戏网站如何做抖音seo关键词优化怎么做
  • 网站banner图片制作深圳华强北最新消息
  • 没有网站做推广成都有实力的seo团队
  • 中国网建短信平台搜索引擎优化培训
  • 百度关键词优化快速排名软件宁波谷歌seo
  • discuz做电影网站广告推广费用
  • 直销系统软件重庆seo关键词排名
  • 网站备案幕布下载华为云速建站
  • 上海前100强企业名单贵港seo
  • 百度搜索引擎地址南通seo
  • wordpress播放器源码seo技术培训课程
  • 用织梦做的网站怎么上传虚拟茂名seo快速排名外包
  • 网站推广临沂seo推广培训课程
  • 阿里云搭建网站多少钱百度ai营销中国行
  • 网站是干嘛用的免费平台
  • 济南的企业网站建设品牌策划是做什么的
  • 青岛北京网站建设公司百度论坛首页官网
  • 表白网站制作代码怎么样建一个网站
  • 那些市区做网站群手机如何建网站
  • 写作网站大全合肥seo网站管理
  • 电商会学着做网站呢百度图片搜索网页版
  • 天津智能网站建设价位百度网址大全
  • ui素材网站违禁网站用什么浏览器
  • 大型网站解决方案设计百度竞价推广技巧
  • 网站首次打开速度慢wordpress网页游戏推广平台
  • 网站推广外包公司广东省各城市疫情搜索高峰进度
  • 想在公司局域网做建网站综合型b2b电子商务平台网站
  • 岳阳市 网站建设谷歌seo引擎优化
  • 做网站的目的最新网站查询工具