代码一public static String getHtml(String pageURL ,String encoding)
throws UnsupportedEncodingException, IOException {
//
StringBuffer sb = new StringBuffer();
URL url = new URL(pageURL);
BufferedReader in = new BufferedReader(new InputStreamReader(url
.openStream(), encoding));
String line;
while ((line = in.readLine()) != null) {
sb.append(line);
}
in.close();
return sb.toString();
}代码一介绍:该方法通过传入正确的网址和编码,返回网址里的源代码。问题:今天服务器出了问题,就卡死在这里(看红色部分,我把那里单独提出来测试了,就是那里耗时间),抓取源代码用了15秒,以前都是1秒不到。
BufferedReader in = new BufferedReader(new InputStreamReader(url.openStream(), encoding));调查与测试:通过不懈努力,把代码改成了代码二,问题算是解决了一半。
关键在于这一句conn.setConnectTimeout(500);,我把500改成 5 * 1000,结果程序用了5秒的时间返回url源代码;我又把500改成10 * 1000,结果程序用了10秒的时间返回url源代码,怎么感觉像是迟加载??代码二public static String getHtml(String pageURL ,String encoding)
throws UnsupportedEncodingException, IOException {
//
StringBuffer sb = new StringBuffer();
URL url = new URL(pageURL);
URLConnection conn = url.openConnection();
conn.setConnectTimeout(500);
InputStream inStream = conn.getInputStream(); BufferedReader in = new BufferedReader(new InputStreamReader(inStream, "gb2312"));
String line;
while ((line = in.readLine()) != null) {
sb.append(line);
}
in.close();
return sb.toString();
}
还有最重要的一条线索:在我个人的电脑里代码一没有问题,问题是出在公司的服务器。代码都没有改过。今天突然就慢了。疑问:这种情况是为什么呢,程序也有懒惰性??我想第一段代码应该有更好的解决办法,比如flush之类的吧?可是我查过api并没有此类方法。无论如何都想知道原理,希望大神指点迷津
throws UnsupportedEncodingException, IOException {
//
StringBuffer sb = new StringBuffer();
URL url = new URL(pageURL);
BufferedReader in = new BufferedReader(new InputStreamReader(url
.openStream(), encoding));
String line;
while ((line = in.readLine()) != null) {
sb.append(line);
}
in.close();
return sb.toString();
}代码一介绍:该方法通过传入正确的网址和编码,返回网址里的源代码。问题:今天服务器出了问题,就卡死在这里(看红色部分,我把那里单独提出来测试了,就是那里耗时间),抓取源代码用了15秒,以前都是1秒不到。
BufferedReader in = new BufferedReader(new InputStreamReader(url.openStream(), encoding));调查与测试:通过不懈努力,把代码改成了代码二,问题算是解决了一半。
关键在于这一句conn.setConnectTimeout(500);,我把500改成 5 * 1000,结果程序用了5秒的时间返回url源代码;我又把500改成10 * 1000,结果程序用了10秒的时间返回url源代码,怎么感觉像是迟加载??代码二public static String getHtml(String pageURL ,String encoding)
throws UnsupportedEncodingException, IOException {
//
StringBuffer sb = new StringBuffer();
URL url = new URL(pageURL);
URLConnection conn = url.openConnection();
conn.setConnectTimeout(500);
InputStream inStream = conn.getInputStream(); BufferedReader in = new BufferedReader(new InputStreamReader(inStream, "gb2312"));
String line;
while ((line = in.readLine()) != null) {
sb.append(line);
}
in.close();
return sb.toString();
}
还有最重要的一条线索:在我个人的电脑里代码一没有问题,问题是出在公司的服务器。代码都没有改过。今天突然就慢了。疑问:这种情况是为什么呢,程序也有懒惰性??我想第一段代码应该有更好的解决办法,比如flush之类的吧?可是我查过api并没有此类方法。无论如何都想知道原理,希望大神指点迷津
解决方案 »
- java初学者问一个低级的问题
- 在线等 struts2传值问题
- jxl操作Excle时发生错误(莫名其妙的空指针异常)
- 有些网站那样延时转向是怎么实现的?
- 请帮我看看Tomcat5.0为何不能在eclipse3.0上启动,谢谢
- 100分求TOMCAT简单配置问题!!!!
- 新手探路:我现在该看EJB还是设计模式,还是进一步加深基础???
- 关于安装的问题!
- spring4 配置文件问题json 与 vm 普通action共存。
- springmvc+hibernate+Mysql项目跑一段时间老是出现连接关闭的问题
- 谁有没有删除hibernate一条记录的好点的方法。我对现有的方法受够了。
- spring+hibernate连接数据库问题
throws UnsupportedEncodingException, IOException {
//
StringBuffer sb = new StringBuffer();
URL url = new URL(pageURL);
URLConnection conn = url.openConnection();
InputStream inStream = conn.getInputStream(); //就是这一句有问题,服务器要执行很久
return sb.toString();
}
url的网址 随便什么网址,只要是正确的,效果都一样