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

安全证四川省建设厅官方网站网络运营管理是做什么的

安全证四川省建设厅官方网站,网络运营管理是做什么的,wordpress开发文档,关于asp_sql网站开发的书籍1、概念 在讲解乐观锁之前#xff0c;我们还是先来分析下问题: 业务并发现象带来的问题:秒杀 假如有100个商品或者票在出售#xff0c;为了能保证每个商品或者票只能被一个人购买#xff0c;如何保证不会出现超买或者重复卖 对于这一类问题#xff0c;其实有很多的解决方…1、概念 在讲解乐观锁之前我们还是先来分析下问题: 业务并发现象带来的问题:秒杀 假如有100个商品或者票在出售为了能保证每个商品或者票只能被一个人购买如何保证不会出现超买或者重复卖 对于这一类问题其实有很多的解决方案可以使用 第一个最先想到的就是锁锁在一台服务器中是可以解决的但是如果在多台服务器下锁就没有办法控制比如12306有两台服务器在进行卖票在两台服务器上都添加锁的话那也有可能会导致在同一时刻有两个线程在进行卖票还是会出现并发问题 我们接下来介绍的这种方式是针对于小型企业的解决方案因为数据库本身的性能就是个瓶颈如果对其并发量超过2000以上的就需要考虑其他的解决方案了。 简单来说乐观锁主要解决的问题是当要更新一条记录的时候希望这条记录没有被别人更新。 2、实现思路 乐观锁的实现方式: 数据库表中添加version列比如默认值给1 第一个线程要修改数据之前取出记录时获取当前数据库中的version1 第二个线程要修改数据之前取出记录时获取当前数据库中的version1 第一个线程执行更新时set version newVersion where version oldVersion newVersion version1 [2] oldVersion version [1] 第二个线程执行更新时set version newVersion where version oldVersion newVersion version1 [2] oldVersion version [1] 假如这两个线程都来更新数据第一个和第二个线程都可能先执行 假如第一个线程先执行更新会把version改为2 第二个线程再更新的时候set version 2 where version 1,此时数据库表的数据version已经为2所以第二个线程会修改失败 假如第二个线程先执行更新会把version改为2 第一个线程再更新的时候set version 2 where version 1,此时数据库表的数据version已经为2所以第一个线程会修改失败 不管谁先执行都会确保只能有一个线程更新数据这就是MybatisPlus提供的乐观锁的实现原理分析。 上面所说的步骤具体该如何实现呢? 3、实现步骤 分析完步骤后具体的实现步骤如下: 步骤1:数据库表添加列 列名可以任意比如使用version,给列设置默认值为1 步骤2:在模型类中添加对应的属性 根据添加的字段列名在模型类中添加对应的属性值 Data //TableName(tbl_user) 可以不写是因为配置了全局配置 public class User {TableId(type IdType.ASSIGN_UUID)private String id;private String name;TableField(valuepwd,selectfalse)private String password;private Integer age;private String tel;TableField(existfalse)private Integer online;private Integer deleted;Versionprivate Integer version; } 步骤3:添加乐观锁的拦截器 Configuration public class MpConfig {Beanpublic MybatisPlusInterceptor mpInterceptor() {//1.定义MybatisPlus拦截器MybatisPlusInterceptor mpInterceptor new MybatisPlusInterceptor();//2.添加乐观锁拦截器mpInterceptor.addInnerInterceptor(new OptimisticLockerInnerInterceptor());return mpInterceptor;} } 步骤4:执行更新操作 添加version数据 SpringBootTest class Mybatisplus03DqlApplicationTests { ​Autowiredprivate UserDao userDao;Testvoid testUpdate(){User user new User();user.setId(3L);user.setName(Jock666);user.setVersion(1);userDao.updateById(user);} } 你会发现我们传递的是1MybatisPlus会将1进行加1然后更新回到数据库表中。 所以要想实现乐观锁首先第一步应该是拿到表中的version然后拿version当条件在将version加1更新回到数据库表中所以我们在查询的时候需要对其进行查询 SpringBootTest class Mybatisplus03DqlApplicationTests { ​Autowiredprivate UserDao userDao;Testvoid testUpdate(){//1.先通过要修改的数据id将当前数据查询出来User user userDao.selectById(3L);//2.将要修改的属性逐一设置进去user.setName(Jock888);userDao.updateById(user);} } 大概分析完乐观锁的实现步骤以后我们来模拟一种加锁的情况看看能不能实现多个人修改同一个数据的时候只能有一个人修改成功。 SpringBootTest class Mybatisplus03DqlApplicationTests { ​Autowiredprivate UserDao userDao;Testvoid testUpdate(){//1.先通过要修改的数据id将当前数据查询出来User user userDao.selectById(3L);     //version3User user2 userDao.selectById(3L);    //version3user2.setName(Jock aaa);userDao.updateById(user2);              //version4user.setName(Jock bbb);userDao.updateById(user);               //verion3?条件还成立吗} } 运行程序分析结果 乐观锁就已经实现完成了如果对于上面的这些步骤记不住咋办呢? 参考官方文档来实现:乐观锁插件 | MyBatis-Plus
http://www.w-s-a.com/news/353030/

相关文章:

  • 开封网站建设培训郑州高端网站建设哪家好
  • 东莞哪家做网站很有名的公司即墨专业医院网站制作公司
  • 做面食网站china cd wordpress
  • 门户网站 营销优秀建筑模型案例作品
  • 训做网站的心得体会范文中山市 有限公司网站建设
  • 服装电子商务网站建设过程与实现两学一做学习教育网站
  • 住房和城建设网站怎么用源码建站
  • 监理工程师证查询网站百度关键词优化软件网站
  • 关于建筑建设的网站asp网站建设报告书
  • 服务二级公司网站建设平台销售模式有哪些
  • 南昌县建设局网站微信分销小程序开发
  • 网站设计师需要什么知识与技能wordpress个性
  • 做茶叶网站的目的和规划有什么做照片书的网站
  • 开福区城乡建设局门户网站关键词挖掘查询工具爱站网
  • 网站建设全国排名沈阳seo按天计费
  • 成都公司网站设计无锡seo网站推广费用
  • 建网站平台要多少钱购物网站界面设计策划
  • 学完js了可以做哪些网站长沙建站官网
  • 怎么样做问卷网站多少钱英语
  • 房产网站建设方案建筑公司是干什么的
  • wordpress建的大型网站柳州市网站建设
  • 石家庄做网站的公司有哪些微信自媒体网站建设
  • 池州哪里有做网站注册公司有哪些风险
  • 做古代风格头像的网站对网站政务建设的建议
  • 网站搜索栏怎么做设计个网站要多少钱
  • 阿里巴巴网站建设目标wamp wordpress
  • 自己做的网站怎么挂网上金蝶erp
  • 网站的页面由什么组成淘宝网网站建设的需求分析
  • 软文网站推广法dede5.7内核qq个性门户网站源码
  • 个人备案网站名称校园网站建设特色