计算机中常见的重复是什么,重复请求

重复请求是指在万维网中,浏览器或万维网客户向服务器发送一个请求,如果在短时间得不到回应,就会再一次发送请求或者浏览器或万维网客户短时间发送多次请求。重复请求是应用程序中一个常见的问题,重复请求发生的原因有多种多样,如网络较差,服务器端忙等。

中文名

重复请求

外文名

Repeat Request

1

简介2

原因

3

例子

4

计算机,互联网

重复请求简介

编辑

语音

重复请求是指在万维网中,浏览器或万维网客户向服务器发送一个请求,如果在短时间得不到回应,就会再一次发送请求或者浏览器或万维网客户短时间发送多次请求。重复请求是应用程序中一个常见的问题,重复请求是应用程序中一个常见的问题,重复请求发生的原因有多种多样,如网络较差,服务器端忙等。

重复请求原因

编辑

语音

发生重复请求的原因如下:

1)在应用层中,HTTP协议定义了浏览器怎样向万维网服务器请求万维网文档,以及服务器怎样把文档传送给浏览器。从层次的角度看,HTTP是面向事务应用层协议,它是万维网上能够可靠地交换文件(包括文本、声音、图像等各种多媒体文件)的重要基础。[1]

HTPP协议是无状态,同一个客户第二次访问同一个页面时,服务器反应与第一次请求相同,这也是重复请求发生的重要原因之一,尽管较新的HTTP协议使用了持续链接,这个问题没有完全解决。

2)服务器端很忙,当一个服务器有很多客户都发送请求时,服务器就会很忙,为了等到响应,就需要不断重复请求。例如很多学生都在同一时间都在登录成绩查询系统,就需要不断重复请求。

3)当网络性能很差时,我们为了能更快得到响应,需要重复请求。

重复请求例子

编辑

语音

例如有一个java webservice实现的生成订单接口,遇到了重复下单的问题,客户端2次请求相差时间间隔小,几乎是同时到达,导致了重复下单的问题。webservice调用的客户端我们干预不了,而且用户较多,所以只能考虑在服务端做处理。下面是怎么解决重复请求。做法就是把这个方法里的那段代码加个同步块,同时把该数据的某一唯一性字段(如订单号)放入内存中,执行完之后从内存中移除,每次到这个代码段时先判断内存中有没有这个订单号,有的话就不执行,没有就执行下面的操作,代码如下。

if(ConRunningMap.containsItem(this.fillOrder.trim())) {//判断内存中是否有这个订单号

return null;

} else {

ConRunningMap.addItem(this.fillOrder.trim());//订单号放到内存中

执行代码……

最后把订单号从内存中移除

ConRunningMap.removeItem(this.fillOrder.trim());

}

ConRunningMap 类:

public class ConRunningMap {

private static Map runningMap ;

public static Map powerInvoiceMap ;

public static Map getPowerInvoiceMap() {

return powerInvoiceMap;

}

public static voidsetPowerInvoiceMap(Map powerInvoiceMap) {

ConRunningMap.powerInvoiceMap =powerInvoiceMap;

}

public static synchronized void addItem(Stringitem) {

if(!item.equals("")){

runningMap.put(item,"");

}

}

public static synchronized void removeItem(String item) {

if(!item.equals("")){

runningMap.remove(item);

}

}

public static synchronized booleancontainsItem(String item) {

if(!item.equals("")&&runningMap.containsKey(item)){

return true;

}

return false;

}

public static void init() {

runningMap = new HashMap();

powerInvoiceMap = CPower.invoiceCodeMap();

}

}

参考资料

1.

谢希仁.计算机网络.北京:电子工业出版社,2012

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值