参考书籍:httpClient4.1入门教程
测试环境:
server:apache-tomcat-7.0.30
client:HttpClient 4.2.1
测试结果:
1、HTTP1.1默认打开keep-Alive功能。客户端和服务器端均默认自动开启。
默认情况下:
a、单个连接request次数设置为200时仍然有效
b、超时时间设置20s时仍然有效。
2、setHeader("Keep-Alive", "5"); 超时时间通过此方式设置后未发现效果。
3、client段开启并发链接数在700左右时达到最大,提示无法开启新链接,可做为tomcat最大并发数的参考。
package jre.demo;
import java.io.IOException;
import org.apache.http.HttpEntity;
import org.apache.http.HttpResponse;
import org.apache.http.client.ClientProtocolException;
import org.apache.http.client.HttpClient;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.impl.client.DefaultHttpClient;
import org.apache.http.util.EntityUtils;
class TimePrinter extends Thread {
int pauseTime;
String name;
int count = 1000;
HttpClient mClient = new DefaultHttpClient();
HttpGet mHttpget = new HttpGet("http://10.100.157.172:8080/HelloTomcat/hello");
public TimePrinter(int x, String n) {
pauseTime = x;
name = n;
}
public void run() {
while (count > 0) {
try {
System.out.print("count is : " + count + "\n");
request();
count --;
Thread.sleep(pauseTime);
} catch (Exception e) {
System.out.println(e);
}
}
}
public void request() {
try {
HttpResponse response;
// mHttpget.setHeader("Keep-Alive", "5");
mHttpget.setHeader("Connection", "Keep-Alive");
response = mClient.execute(mHttpget);
HttpEntity entity = response.getEntity();
System.out.print(response.getStatusLine());
if (entity != null) {
System.out.print("content length is :" + entity.getContentLength() + "\n");
System.out.print("content is :" + EntityUtils.toString(entity) + "\n");
}
} catch (ClientProtocolException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} finally {
}
}
static public void main(String args[]) {
Thread t= new Thread(new Runnable(){
@Override
public void run() {
// TODO Auto-generated method stub
while (true) {
TimePrinter tp = new TimePrinter(100, "Guy");
tp.start();
}
}});
t.start();
//
// TimePrinter tp1 = new TimePrinter(100, "Fast Guy");
//
// tp1.start();
//
// TimePrinter tp2 = new TimePrinter(100, "Slow Guy");
//
// tp2.start();
//
// TimePrinter tp3 = new TimePrinter(100, "Slow Guy1");
//
// tp3.start();
//
// TimePrinter tp4 = new TimePrinter(100, "Slow Guy2");
//
// tp4.start();
//
// TimePrinter tp5 = new TimePrinter(100, "Slow Guy3");
//
// tp5.start();
}
}
分享到:
相关推荐
Nextjs-keep-alive 实现,vue中有这个专门的keep-alive插件,但是react没有,更别提nextjs了,这是现成的项目demo。 next9,10,11,12,13,14 及以上都可以用。直接使用或者移植到你的项目,非常方便。集成了发送...
1. **触发条件**:当TCP连接在一定时间内(默认为2小时)没有数据传输时,会自动触发Keep-Alive机制。 2. **探测报文**:TCP协议会发送一个特殊的Keep-Alive数据包给对方,这个数据包使用的是上一次发送的数据的...
在Vue.js框架中,`keep-alive`是一个非常实用的内置组件,它能够对组件状态进行缓存,防止在切换路由时进行重复的渲染,提高性能。然而,在使用`keep-alive`组件的`include`属性时,可能会出现一些缓存问题。`...
HTTP 协议 Keep-Alive 模式详解 Keep-Alive 模式是 HTTP 协议中的一种机制,它使客户端到服务器端的连接保持有效,从而避免了每个请求和应答都新建一个连接,并立即断开连接。下面是关于 Keep-Alive 模式的详细...
keep-alive用法:动态组件&vue-router keep-alive源码解析 keep-alive组件及其包裹组件的钩子 keep-alive组件及其包裹组件的渲染 二、keep-alive介绍与应用 2.1 keep-alive是什么 keep-alive是一个抽象组件:它...
总结来说,"springboot-keepalive设置测试"涉及到的关键知识点包括:Spring Boot的HTTP连接池配置,特别是与keepalive相关的`keep-alive-timeout`属性;使用Jodd HttpClient进行HTTP客户端测试,以及理解HTTP长连接...
在路由配置文件中,可以设置 keep-alive 属性为 true,這樣就可以缓存组件的状态,减少不必要的组件重渲染,提高应用程序的性能。 结论 在 Vue 中,Keep-Alive 是一个非常有用的机制,可以缓存组件的状态,减少...
`keep-alive`是Vue.js框架中的一个内置组件,用于实现组件的缓存功能,避免在切换组件时销毁和重新创建实例,从而提高性能并保持组件的状态。在使用`keep-alive`时,它会包裹动态组件,并在不活动时缓存组件实例。 ...
为了解决这个问题,Vue提供了一个名为`keep-alive`的组件,它可以缓存组件的状态,使得在页面切换后仍然能保留之前的滚动位置。下面我们将详细探讨两种使用`keep-alive`在Vue中实现页面保持滚动位置的方法。 首先,...
例如,`<keep-alive include="componentA, componentB">` 只会缓存名为`componentA`和`componentB`的组件。 2. `exclude`:与`include`相反,用于排除不需要缓存的组件。 3. `max`:限制可缓存的最大组件数量,当...
umi-plugin-keep-alive 中文说明 | 此 <KeepAlive> 功能基于 在线示例 umi 多 tabs 示例: 使用方法 安装 npm install umi-plugin-keep-alive --save # or yarn add umi-plugin-keep-alive 从 umi 中导出 KeepAlive...
如果需要频繁切换路由,这个时候就可以考虑用keep-alive了,来达到避免数据的重复请求的目的 keep-alive用来缓存组件,避免多次加载相应的组件,减少性能消耗。 简单一点来说就是从页面A链接到其他页面后回退到页面A...
这时,`<keep-alive>`组件就显得尤为重要。本文将详细介绍如何配合`router-view`使用`<keep-alive>`来缓存整个路由页面。 首先,`<keep-alive>`是一个抽象组件,它的主要作用是将被包含的组件保留在内存中,避免在...
将要缓存的组件使用 keep-alive 包裹住即可。 keep-alive优点的介绍: 1. 切换组件时,当前组件不会触发销毁的生命周期钩子。也就是说不会销毁了。 2. 切换回来时,也不会重新创建。(既然都没有被销毁,哪里来的...
本文将介绍如何通过使用Vue的内置组件keep-alive来实现进入详情页时记住滚动位置的方法。 首先,了解keep-alive组件的基本作用是必要的。keep-alive是Vue提供的一个抽象组件,它用来缓存不活动的组件实例,而不是...
在Vue.js应用中,`keep-alive`组件用于缓存组件状态,以便在导航到其他页面后仍能保留之前的状态,从而提高用户体验。然而,在处理多层级路由菜单时,可能会遇到`keep-alive`无法正确缓存的问题。这个问题通常发生在...
1.keep-alive 能在组件切换过程中将状态保留在内存中,防止重复渲染DOM。 包裹动态组件时,会缓存不活动的组件实例,而不是销毁它们。和 相似, 是一个抽象组件:它自身不会渲染一个 DOM 元素,也不会出现在父组件...
Vue.js 是一款流行的前端框架,它的`keep-alive`组件是一个非常实用的功能,用于缓存组件实例,防止在路由切换时销毁和重新创建组件,从而保持组件的状态。本文将深入探讨`keep-alive`组件的工作原理及其在实际开发...
这就是为什么使用`<keep-alive>`后,页面数据无法更新的问题所在。 为了解决这个问题,我们需要将数据获取的逻辑迁移到`activated`钩子中。因为`activated`在组件被缓存并重新激活时会触发,这确保了每次组件被显示...
1.keep-alive的作用以及好处 在做电商有关的项目中,当我们第一次进入列表页需要请求一下数据,当我从列表页进入详情页,详情页不缓存也需要请求下数据,然后返回列表页,这时候我们使用keep-alive来缓存组件,防止...