`
cesymm
  • 浏览: 29970 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论
文章列表

NIO BIO

先来个例子理解一下概念,以银行取款为例:     同步 : 自己亲自出马持银行卡到银行取钱(使用同步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 ...

socket 编程

java.net.SocketException: Connection reset 1,如果一端的Socket被关闭(或主动关闭,或因为异常退出而 引起的关闭),另一端仍发送数据,发送的第一个数据包引发该异常(Connect reset by peer)。 2,一端退出,但退出时并未关闭该连接,另一端如果在从连接中读数据则抛出该异常(Connection reset)。简单的说就是在连接断开后的读和写操作引起的。
IoHandlerAdapter方法中,程序抛出Exception 会调用exceptionCaught 但不会关闭session.close(); 如果程序因网络断开,会调用exceptionCaught方法后再调用session.close()方法
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. ...
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选择器,选择要消费 ...
Global site tag (gtag.js) - Google Analytics