- 浏览: 29970 次
- 性别:
- 来自: 上海
最新评论
-
cesymm:
问题终于解决了。把BK1与BK2的数据库持久配置文件指向不同的 ...
ActiveMq集群 DynamicDiscovery集群 出现的问题,欢迎讨论 -
cesymm:
终于知道什么问题了,是数据库不支持锁。我用的是h2数据库,不支 ...
ActiveMq集群 JDBCMaster Slave 出现的问题,欢迎讨论
文章列表
NIO BIO
- 博客分类:
- BIO NIO 简单解说
先来个例子理解一下概念,以银行取款为例:
同步 : 自己亲自出马持银行卡到银行取钱(使用同步IO时,Java自己处理IO读写)。
异步 : 委托一小弟拿银行卡到银行取钱,然后给你(使用异步IO时,Java将IO读写委托给OS处理,需要将数据缓冲区地址和大小传给OS(银行卡和密码),OS需要支持异步IO操作API)。
阻塞 : ATM排队取款,你只能等待(使用阻塞IO时,Java调用会一直阻塞到读写完成才返回)。
非阻塞 : 柜台取款,取个号,然后坐在椅子上做其它事,等号广播会通知你办理,没到号你就不能去,你可以不断问大堂经理排到了没有,大堂经理如果说还没到 ...
做项目时,遇到这样一种需求。
比如每秒钟的并发记录为5000笔,大量的客户端每秒钟读取这5000笔,同时有一个线程后台每隔一秒,更新此记录。
很容易的想到先把这些记录加入到集合list中,然后其它客户端遍历集合list.
但会出现ConcurrentModificationException错误。
解决方式,如下几种。
1.如果在遍历时,加锁,这将严重影响并发性能。客户端或数据量越大,性能下降越厉害
2.ReadWriteLock读写分离锁,但也存在读写不能并发情况,只能读,与读并发。
3.采用CopyOnWriteArrayList,但由于每次的add时Arrays.copyof() ...
CountDownLatch
private CountDownLatch latch = new CountDownLatch(1);
/**
* 连接zookeeper
*/
public void connectZookeeper() throws Exception {
zk = new ZooKeeper(hosts, SESSION_TIMEOUT, new Watcher() {
public void process(WatchedEvent event) {
...
我们在开发时,测的好好的,然后上测试,上生产环境,当数据量一大时,或并发大时,就会造成各种各样的问题。
如业务逻辑上的问题,造成这种原因是前期没有沟通好,或细节没有考虑那么全面,没考虑到这种情况的存在。
当然也包括技术上的问题,如内存泄露,程序假死,CPU过高等,造成这种原因是没有测试好。
解决这样的问题,一些实用命令,操作,工具如下。
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
jmap -histo pid
查看堆内存(histogram)中的对象数量,大小
num #instances #bytes c ...
1.PooledConnectionFactory中有段代码
(1) this.connectionsPool.setMaxIdle(1);
保证connectionPool只反回同一个连接
(2)
try {
connection = connectionsPool.borrowObject(key);
} catch (Exception e) {
throw JMSExceptionSupport.create("Error while attempting to retrieve a connec ...
解决代码示意:
if(lock.tryLock()){
System.out.println(Thread.currentThread()+"建立socket连接:");
Thread.sleep(10000);
lock.unlock();
}else{
System.out.println("已在建立socket连接,忽略此次请求..");
}
System.out.println("wo ca ...
java.net.SocketException: Connection reset
1,如果一端的Socket被关闭(或主动关闭,或因为异常退出而 引起的关闭),另一端仍发送数据,发送的第一个数据包引发该异常(Connect reset by peer)。
2,一端退出,但退出时并未关闭该连接,另一端如果在从连接中读数据则抛出该异常(Connection reset)。简单的说就是在连接断开后的读和写操作引起的。
IoHandlerAdapter方法中,程序抛出Exception 会调用exceptionCaught
但不会关闭session.close();
如果程序因网络断开,会调用exceptionCaught方法后再调用session.close()方法
Mina中iosession使用,个人理解
- 博客分类:
- mina
1.
IOsession而IoSession就代表了一个与服务器的连接
IoSession的close也就意味着底层SocketChannel的关闭,也就意味这个与服务连接的关闭
2.
.session关闭后
session = future.getSession();
session.write("....");
消息就会发不出去了。
3.如果你要发送的消息是有顺序的,session相对来说就不安全。
如果没有顺序那就是安全的,
如果有顺序且要安全,
重新封装session一下,如方法上加上synchronized,lock....
或者
WriteFutur ...
cxf 根据ip 探测服务
- 博客分类:
- cxf
使用cxf自带的API获取多播获取服务时,获取不到。
换成google的可以通过多播发现服务
// Uncomment the following to override the IP this server will announce itself at
// if proxy mode is enabled. This IP is only used if server.enableProxyMode() is called.
// WsDiscoveryConstants.proxyAddress = InetAddress.getByName(& ...
具有集成cxf的web应用在tomcat运行非常好,但在jboss下启动报错:
报错如下:
at java.lang.Thread.run(Thread.java:662) [rt.jar:1.6.0_43]
Caused by: java.lang.RuntimeException: Cannot publish wsdl to: D:\Program Files\jboss-as-7.1.1.Final\standalone\data\wsdl\paycore-web.war\WithdrawCashServiceFacadeImplService.wsdl
at org.jboss. ...
造成java多线程死锁的代码
- 博客分类:
- java 多线程 死锁
private Object ob1 = new Object();
private Object ob2 = new Object();
public void call1(){
synchronized(ob1){
synchronized(obj2){
doing.....
}
}
}
public void call2(){
synchronized(obj2){
synchronized(obj1){
doing...
}
}
}
我的报错信息如下:
no longer able to keep the exclusive lock so giving up being a master | org.apache.activemq.broker.LockableServiceSupport | ActiveMQ Cleanup Timer
2013-08-22 15:34:33,260 | INFO | Apache ActiveMQ 5.8.0 (bk11, ID:localhost.localdomain-60638-1377156843275-0:1) is shutting down | org.apache ...
我的activeMq配置如下:
<plugins>
<!-- Configure authentication; Username, passwords and groups -->
<simpleAuthenticationPlugin>
<users>
<authenticationUser username="admin" password="admin" groups="use ...
Msater-Slave+Broker Cluster的模式。
我的思路时
BK1,BK2一组
BK3,BK4一组,
BK5,BK6一组,
每一组都是基于数据库的mater,slave。
并且每个BK都是discovery,动态broker cluster
生产端的客户客端 failover(BK1,BK2)
消费端1可以 faileover(BK3,BK4)
消费端2可以 faileover(BK5,BK6)
消费端3可以 faileover(BK5,BK6)
消费端4可以 faileover(BK5,BK6)
其中具体业务解决方案为:通过 JMS select选择器,选择要消费 ...