- 浏览: 740707 次
- 性别:
- 来自: 杭州
文章分类
最新评论
-
lgh1992314:
a offset: 26b offset: 24c offse ...
java jvm字节占用空间分析 -
ls0609:
语音实现在线听书http://blog.csdn.net/ls ...
Android 语音输入API使用 -
wangli61289:
http://viralpatel-net-tutorials ...
Android 语音输入API使用 -
zxjlwt:
学习了素人派http://surenpi.com
velocity宏加载顺序 -
tt5753:
谢啦........
Lucene的IndexWriter初始化时的LockObtainFailedException的解决方法
import java.util.ArrayList; import java.util.List; import java.util.concurrent.Callable; import java.util.concurrent.ExecutionException; import java.util.concurrent.ExecutorService; import java.util.concurrent.Executors; import java.util.concurrent.Future; import org.apache.log4j.Logger; public class ConcurrentRuleSyncUtil { private static final int MAX_THREAD = 10; //最多启动的线程数 private static final ExecutorService exec = Executors.newFixedThreadPool(MAX_THREAD); private static final Logger logger = Logger.getLogger(ConcurrentRuleSyncUtil.class); /** * 并发来主动通知所有应用来更新规则 最多启动 * * @param strUrl * 需要通知的应用ip列表 * @return */ public static List<String> activeAppList(List<String> strUrl, String queryString) { if (strUrl == null || strUrl.size() == 0) { return null; } List<Callable<List<String>>> runThreads = GeneralThreadInfo(strUrl,queryString); List<String> resList = new ArrayList<String>(); try { List<Future<List<String>>> fetures = exec.invokeAll(runThreads); for(Future<List<String>> feture: fetures){ List<String> tmp = null; try { tmp = feture.get(); } catch (ExecutionException e) { logger.error("ConcurrentRuleSyncUtil thread activeAppList get error:" + e.getMessage(), e); } if(tmp != null){ resList.addAll(tmp); } } } catch (InterruptedException e) { logger.error("ConcurrentRuleSyncUtil activeAppList get error:" + e.getMessage(), e); } return resList; } public static List<Callable<List<String>>> GeneralThreadInfo(List<String> strUrl, String queryString) { List<Callable<List<String>>> runThreads = new ArrayList<Callable<List<String>>>(); int size = strUrl.size() / MAX_THREAD + 1; int i = 0; int len = strUrl.size(); for(; i + size <= len; i += size){ runThreads.add(new ActiveSyncThread(strUrl.subList(i, i + size), queryString)); } if(i < len){ runThreads.add(new ActiveSyncThread(strUrl.subList(i,len), queryString)); } return runThreads; } static class ActiveSyncThread implements Callable<List<String>>{ private List<String> hostlistUrl; //分配到当前线程的host列表 private String queryString; //参数串 public ActiveSyncThread(List<String> strUrl, String queryString){ this.hostlistUrl = strUrl; this.queryString = queryString; } @Override public List<String> call() throws Exception { return getResponseText(hostlistUrl+queryString); } } /** * 根据绑定去查询绑定地址的url html,HttpUrlConnection调用方式 * * @param url * 查询的url * @throws IOException */ public static String getResponseText(String queryUrl) { return getResponseText(queryUrl, null, null); } /** * 根据绑定去查询绑定地址的url html,HttpUrlConnection调用方式 * * @param url * 查询的url * @param host * 需要绑定的host * @param ip * 对应host绑定的ip * @throws IOException */ public static String getResponseText(String queryUrl,String host,String ip) { InputStream is = null; BufferedReader br = null; StringBuffer res = new StringBuffer(); try { HttpURLConnection httpUrlConn = null; URL url = new URL(queryUrl); if(ip!=null){ String str[] = ip.split("\\."); byte[] b =new byte[str.length]; for(int i=0,len=str.length;i<len;i++){ b[i] = (byte)(Integer.parseInt(str[i],10)); } Proxy proxy = new Proxy(Proxy.Type.HTTP, new InetSocketAddress(InetAddress.getByAddress(b), 80)); httpUrlConn = (HttpURLConnection) url .openConnection(proxy); }else{ httpUrlConn = (HttpURLConnection) url .openConnection(); } httpUrlConn.setRequestMethod("GET"); httpUrlConn.setDoOutput(true); httpUrlConn.setConnectTimeout(DEFAULT_TIMEOUT); httpUrlConn.setReadTimeout(DEFAULT_TIMEOUT); httpUrlConn.setDefaultUseCaches(false); httpUrlConn.setUseCaches(false); is = httpUrlConn.getInputStream(); int responseCode = httpUrlConn.getResponseCode(); // 如果返回的结果是400以上,那么就说明出问题了 if (responseCode > 400) { logger.error("getResponseText for queryurl:" + queryUrl + " got responseCode :" + responseCode); return "getResponseText for queryurl:" + queryUrl + " got responseCode :" + responseCode; } // 需要自动识别页面的编码,通过从context-type中解析得到,默认为UTF-8 String encoding = "UTF-8"; String contextType = httpUrlConn.getContentType(); if (StringUtilsExt.isNotBlank(contextType)) { int pos = contextType.lastIndexOf("="); if (pos > -1) { encoding = contextType.substring(pos + 1); } } // System.out.println(encoding); br = new BufferedReader(new InputStreamReader(is, encoding)); String data = null; while ((data = br.readLine()) != null) { res.append(data + "\n"); } return res.toString(); } catch (IOException e) { logger.error(e.getMessage(), e); return "failed: " + e.getMessage(); } catch (Exception e) { logger.error(e.getMessage(), e); return "failed: " + e.getMessage(); } finally { if (br != null) { try { br.close(); } catch (IOException e) { logger.error(e.getMessage(), e); res.append(e.getMessage()); } } } } }
发表评论
-
对字符串进行验证之前先进行规范化
2013-09-17 23:18 13888对字符串进行验证之前先进行规范化 应用系统中经常对字 ... -
使用telnet连接到基于spring的应用上执行容器中的bean的任意方法
2013-08-08 09:17 1433使用telnet连接到基于spring的应用上执行容器中 ... -
jdk7和8的一些新特性介绍
2013-07-06 16:07 10071更多ppt内容请查看:htt ... -
java对于接口和抽象类的代理实现,不需要有具体实现类
2013-06-12 09:50 2907原文链接:http://www.javaarch.net/j ... -
Java EE 7中对WebSocket 1.0的支持
2013-06-05 09:27 3799原文链接:http://www.javaarch.n ... -
Java Web使用swfobject调用flex图表
2013-05-28 19:05 1080Java Web使用swfobject调用 ... -
spring使用PropertyPlaceholderConfigurer扩展来满足不同环境的参数配置
2013-05-21 15:57 3289spring使用PropertyPlaceholderCon ... -
java国际化
2013-05-20 20:57 4438java国际化 本文来自:http://www.j ... -
RSS feeds with Java
2013-05-20 20:52 1184RSS feeds with Java 原文来自:htt ... -
使用ibatis将数据库从oracle迁移到mysql的几个修改点
2013-04-29 10:40 1635我们项目在公司的大战略下需要从oracle ... -
线上机器jvm dump分析脚本
2013-04-19 10:48 2863#!/bin/sh DUMP_PIDS=`p ... -
eclipse远程部署,静态文件实时同步插件
2013-04-06 20:18 5419eclipse 远程文件实时同步,eclipse远程 ... -
java价格处理的一个问题
2013-03-26 21:21 1795我们经常会处理一些价格,比如从运营上传的文件中将某 ... -
java 服务降级开关设计思路
2013-03-23 16:35 3720java 服务屏蔽开关系统,可以手工降级服务,关闭服 ... -
poi解析excel内存溢出
2013-03-20 22:21 6346真是悲剧啊,一个破内部使用系统20多个人使用的后 ... -
简单web安全框架
2013-03-16 11:56 1500web安全框架,主要用servlet filter方 ... -
基于servlet的简单的页面缓存框架
2013-03-11 19:27 1177基于servlet的页面级缓存框架的基本用法: 代码参考: ... -
Eclipse使用过程中出现java.lang.NoClassDefFoundError的解决方案
2013-02-01 17:22 1474如果jdk,classpath设置正确,突然在eclipse ... -
jetty对于包的加载顺序的处理
2013-01-28 22:58 40651.问题 今天在本地和测试环境用jet ... -
hsqldb源码分析系列6之事务处理
2013-01-20 15:20 1677在session的 public Result ...
相关推荐
Java-多线程异步请求统一响应结果 多线程异步请求是指在多个线程同时发起请求,并且在请求过程中不阻塞主线程的执行。这样可以提高程序的并发能力和响应速度。 需要注意的是,在实际的异步请求中,可能需要使用...
主要介绍了java解决并发数据重复问题 ,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
主要介绍了你会用Java代码模拟高并发吗,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
当用户发送第一次请求的时候,验证用户登录,创建一个该qq号和服务器端保持通讯连接得线程,启动该通讯线程,通讯完毕,关闭Scoket。 QQ客户端登录界面,中部有三个JPanel,有一个叫选项卡窗口管理。还可以更新...
高并发服务器:高并发服务器是指能够同时处理大量并发请求的服务器。在物联网应用中,服务器需要能够同时接收和处理来自多个设备的数据,因此需要具备高并发处理能力。 数据库:数据库是用于存储和管理数据的系统。...
当用户发送第一次请求的时候,验证用户登录,创建一个该qq号和服务器端保持通讯连接得线程,启动该通讯线程,通讯完毕,关闭Scoket。 QQ客户端登录界面,中部有三个JPanel,有一个叫选项卡窗口管理。还可以更新...
当用户发送第一次请求的时候,验证用户登录,创建一个该qq号和服务器端保持通讯连接得线程,启动该通讯线程,通讯完毕,关闭Scoket。 QQ客户端登录界面,中部有三个JPanel,有一个叫选项卡窗口管理。还可以更新...
当用户发送第一次请求的时候,验证用户登录,创建一个该qq号和服务器端保持通讯连接得线程,启动该通讯线程,通讯完毕,关闭Scoket。 QQ客户端登录界面,中部有三个JPanel,有一个叫选项卡窗口管理。还可以更新...
当用户发送第一次请求的时候,验证用户登录,创建一个该qq号和服务器端保持通讯连接得线程,启动该通讯线程,通讯完毕,关闭Scoket。 QQ客户端登录界面,中部有三个JPanel,有一个叫选项卡窗口管理。还可以更新...
当用户发送第一次请求的时候,验证用户登录,创建一个该qq号和服务器端保持通讯连接得线程,启动该通讯线程,通讯完毕,关闭Scoket。 QQ客户端登录界面,中部有三个JPanel,有一个叫选项卡窗口管理。还可以更新...
Blister是一个用于操作苹果二进制PList文件格式的Java开源类库(可用于发送数据给iOS应用程序)。 重复文件检查工具 FindDup.tar FindDup 是一个简单易用的工具,用来检查计算机上重复的文件。 OpenID的Java客户端...
Blister是一个用于操作苹果二进制PList文件格式的Java开源类库(可用于发送数据给iOS应用程序)。 重复文件检查工具 FindDup.tar FindDup 是一个简单易用的工具,用来检查计算机上重复的文件。 OpenID的Java客户端...
Blister是一个用于操作苹果二进制PList文件格式的Java开源类库(可用于发送数据给iOS应用程序)。 重复文件检查工具 FindDup.tar FindDup 是一个简单易用的工具,用来检查计算机上重复的文件。 OpenID的Java客户端...
Blister是一个用于操作苹果二进制PList文件格式的Java开源类库(可用于发送数据给iOS应用程序)。 重复文件检查工具 FindDup.tar FindDup 是一个简单易用的工具,用来检查计算机上重复的文件。 OpenID的Java客户端...
Blister是一个用于操作苹果二进制PList文件格式的Java开源类库(可用于发送数据给iOS应用程序)。 重复文件检查工具 FindDup.tar FindDup 是一个简单易用的工具,用来检查计算机上重复的文件。 OpenID的Java客户端...
Blister是一个用于操作苹果二进制PList文件格式的Java开源类库(可用于发送数据给iOS应用程序)。 重复文件检查工具 FindDup.tar FindDup 是一个简单易用的工具,用来检查计算机上重复的文件。 OpenID的Java客户端...
Blister是一个用于操作苹果二进制PList文件格式的Java开源类库(可用于发送数据给iOS应用程序)。 重复文件检查工具 FindDup.tar FindDup 是一个简单易用的工具,用来检查计算机上重复的文件。 OpenID的Java客户端...
Blister是一个用于操作苹果二进制PList文件格式的Java开源类库(可用于发送数据给iOS应用程序)。 重复文件检查工具 FindDup.tar FindDup 是一个简单易用的工具,用来检查计算机上重复的文件。 OpenID的Java客户端...
Java编写的山寨QQ,多人聊天+用户在线 21个目标文件 摘要:JAVA源码,媒体网络,山寨QQ,Java聊天程序 Java编写的山寨QQ,多人聊天+用户在线,程序分服务端和客户端,典型C/S结构, 当用户发送第一次请求的时候,验证...
Blister是一个用于操作苹果二进制PList文件格式的Java开源类库(可用于发送数据给iOS应用程序)。 重复文件检查工具 FindDup.tar FindDup 是一个简单易用的工具,用来检查计算机上重复的文件。 OpenID的Java客户端...