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

村镇建设年度报表登录网站页面模板怎么放到自定义菜单

村镇建设年度报表登录网站,页面模板怎么放到自定义菜单,企业网络营销策划方案设计,网站改版升级总结PostMan不是严格意义上的并发请求工具,实际是串行的,如果需要测试后台接口并发时程序的准确性,建议采用JMeter工具。 案例:JMeter设置20个并发卖票请求,查看后台是否存在超卖的情况 方式一:一共10张票&…

        PostMan不是严格意义上的并发请求工具,实际是串行的,如果需要测试后台接口并发时程序的准确性,建议采用JMeter工具。

案例:JMeter设置20个并发卖票请求,查看后台是否存在超卖的情况

 方式一:一共10张票,票余额作为成员属性放在控制器中,没做任何的锁控制

package com.gingko.controller;
import com.gingko.common.GenericWebResult;
import lombok.extern.slf4j.Slf4j;
import org.springframework.context.annotation.Scope;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;import java.util.Random;@RestController
@RequestMapping("ticket")
@Slf4j
public class TicketController {private static int TICKET_AMOUNT = 10;//一共10张票@PostMapping("/sell")public GenericWebResult sell() {GenericWebResult result = null;if(TICKET_AMOUNT > 0) {try {Thread.sleep(200);} catch (InterruptedException e) {e.printStackTrace();}TICKET_AMOUNT--;System.out.println("售票成功:余票" + TICKET_AMOUNT);result = GenericWebResult.ok("售票成功:余票",TICKET_AMOUNT);}else {result = GenericWebResult.error("售票失败:余票",TICKET_AMOUNT);System.out.println("售票失败:余票" + TICKET_AMOUNT);}return result;}
}

运行结果及分析: 

从运行结果可以看出,在高并发的时候,出现了超卖和数据不一致的问题

 方式二:一共10张票,票余额作为成员属性放在控制器中,卖票的请求方法上加锁synchronized

package com.gingko.controller;
import com.gingko.common.GenericWebResult;
import lombok.extern.slf4j.Slf4j;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;import java.util.Random;@RestController
@RequestMapping("ticket")
@Slf4j
public class TicketController {private static int TICKET_AMOUNT = 10;//一共10张票@PostMapping("/sell")public synchronized GenericWebResult sell() {GenericWebResult result = null;if(TICKET_AMOUNT > 0) {try {Thread.sleep(200);} catch (InterruptedException e) {e.printStackTrace();}TICKET_AMOUNT--;System.out.println("售票成功:余票" + TICKET_AMOUNT);result = GenericWebResult.ok("售票成功:余票",TICKET_AMOUNT);}else {result = GenericWebResult.error("售票失败:余票",TICKET_AMOUNT);System.out.println("售票失败:余票" + TICKET_AMOUNT);}return result;}
}

运行结果及分析: 

 从运行结果可以看出,在高并发的时候,没有出现超卖或数据不一致问题,数据结果符合预期。

方式三:TicketController对象多例,并且TICKET_AMOUNT属性不是static,每个对象各自持有

package com.gingko.controller;
import com.gingko.common.GenericWebResult;
import lombok.extern.slf4j.Slf4j;
import org.springframework.context.annotation.Scope;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;import java.util.Random;@RestController
@RequestMapping("ticket")
@Slf4j
@Scope("prototype") //多例
public class TicketController {private int TICKET_AMOUNT = 10;@PostMapping("/sell")public GenericWebResult sell() {GenericWebResult result = null;if(TICKET_AMOUNT > 0) {try {Thread.sleep(200);} catch (InterruptedException e) {e.printStackTrace();}TICKET_AMOUNT--;System.out.println("售票成功:余票" + TICKET_AMOUNT);result = GenericWebResult.ok("售票成功:余票",TICKET_AMOUNT);}else {result = GenericWebResult.error("售票失败:余票",TICKET_AMOUNT);System.out.println("售票失败:余票" + TICKET_AMOUNT);}return result;}
}

运行结果及分析:  

从程序可以看出,20个并发请求,后台生成了20个TicketController实例,每个实例内部都持有属性TICKET_AMOUNT = 10,sell方法执行后,TICKET_AMOUNT = 9

方式一、方式二与方式三示意图区别如下:

方式一、二,堆内存中只有一个TicketController实例,并且TICKET_AMOUNT不属于实例对象,属于共享的数据区,对这种共享数据并发操作时,需要锁机制控制,防止出现数据不一致。

方式三,并发请求多少,堆内存中生成多少个TicketController实例,并且每个TicketController实例各自持有TICKET_AMOUNT,访问各自的成员属性也就不会发生数据不一致问题。

http://www.sczhlp.com/news/68179/

相关文章:

  • 火山引擎多模态数据湖落地深势科技,提升科研数据处理效能
  • Dots最简实践(零),为什么我们要学Dots?
  • Air8101核心板联合Air ETH_1000,打通以太网数传“最后一公里”
  • 怎么样找回网站密码wordpress3.9zhcn
  • 自己做行程的网站做网站多少钱一个
  • 北京手机版建站系统开发12306网站 谁做的
  • 昆明网站运营荆州北京网站建设
  • 建设银行纪念币预约网站app软件开发的费用设计
  • 直播平台网站开发长春免费网站制作
  • MongoDB数据库单机和集群搭建过程
  • 【北师大支持、合作ACM出版】第五届新媒体发展与现代化教育国际学术会议(NMDME 2025)
  • 数据结构与算法-13.线性表
  • HADOOP 时区同步
  • 家装公司网站开发方案led灯网站模板
  • 青岛网站开发哪家服务专业怎么用flashfxp上传网站
  • 网站建设无广告语登录河北建设厅网站进入不了
  • 中山建设信息网站加网络网站建设工作室
  • 网站建设中网站制作包括哪些内容网站开发培训课程
  • 漏洞赏金计划的困境:i915漏洞、ChromeOS与英特尔赏金项目内幕
  • 找文件
  • SQLServer2017-与-R-机器学习服务-全-
  • 网站建设业务员主动话术wordpress 评论框登陆
  • Linux安装JDK及配置环境变量教程
  • Python 中,`-` 符号
  • 石狮网站建设费用织梦网站数据下载
  • 网站编程语言安卓手机建站
  • 海口建设企业网站python抓取更新wordpress
  • 温州设计集团网站建设wordpress ajax取头像
  • 陕西网站建设企业青海省住房和建设厅网站首页
  • 杭州网站建设ttmwl唯品会网站建设建议