minaÖ®ÐÔÄÜȱÏݼ°bug,java¸ßÐÔÄÜÓÎÏ··þÎñÆ÷ºÎÔÚ?
Apache MINA (mina-2.0.0-M6Ô´ÂëΪÀý):
ÎÒÃÇʹÓÃmina nio tcp×î³£ÓõÄÑùÀýÈçÏÂ:
NioSocketAcceptor acceptor = new NioSocketAcceptor(/*NioProcessorPool's size*/);
DefaultIoFilterChainBuilder chain = acceptor.getFilterChain();
//chain.addLast("codec", new ProtocolCodecFilter(
//new TextLineCodecFactory()));
......
// Bind
acceptor.setHandler(/*our IoHandler*/);
acceptor.bind(new InetSocketAddress(port));
------------------------------------------------------------------------------------
Ê×ÏÈ´ÓNioSocketAcceptor(extends AbstractPollingIoAcceptor)¿ªÊ¼,
bind(SocketAddress)--->bindInternal--->startupAcceptor:Æô¶¯AbstractPollingIoAcceptor.Acceptor.runʹÓÃexecutor[Executor]µÄÏß³Ì,×¢²á[interestOps:SelectionKey.OP_ACCEPT],È»ºówakeup selector.
Ò»µ©ÓÐÁ¬½Ó½øÀ´¾Í¹¹½¨NioSocketSession--¶ÔÓ¦--channal,È»ºósession.getProcessor().add(session)½«µ±Ç°µÄchannal¼ÓÈëµ½NioProcessorµÄselectorÖÐÈ¥[interestOps:SelectionKey.OP_READ],ÕâÑùÿ¸öÁ¬½ÓÖÐÓÐÇëÇó¹ýÀ´¾ÍÓÉÏàÓ¦µÄNioProcessorÀ´´¦Àí.
ÕâÀïÓм¸µãҪ˵Ã÷µÄÊÇ:
1.Ò»¸öNioSocketAcceptor¶ÔÓ¦Á˶à¸öNioProcessor,±ÈÈçNioSocketAcceptor¾ÍʹÓÃÁËSimpleIoProcessorPool DEFAULT_SIZE = Runtime.getRuntime().availableProcessors() + 1.µ±È»Õâ¸ösizeÔÚnew NioSocketAcceptorµÄʱºò¿ÉÒÔÉ趨.
2.Ò»¸öNioSocketAcceptor¶ÔÓ¦Ò»¸öjava nio selector[OP_ACCEPT],Ò»¸öNioProcessorÒ²¶ÔÓ¦Ò»¸öjava nio selector[OP_READ].
3.Ò»¸öNioSocketAcceptor¶ÔÓ¦Ò»¸öÄÚ²¿µÄAbstractPollingIoAcceptor.Acceptor---thread.
4.Ò»¸öNioProcessorÒ²¶ÔÓ¦Ò»¸öÄÚ²¿µÄAbstractPollingIoProcessor.Processor---thread.
5.ÔÚnew NioSocket
Ïà¹ØÎĵµ£º
synchronized£º ͬ²½µÄ
synchronizedÔÚ²Ù×÷ÉÏÓÐÁ½ÖÖÓ°Ïì¶ÔÏóµÄÇé¿ö£º
1) ÔÚij¸ö¶ÔÏóʵÀýÄÚ£¬synchronized method(){}¿ÉÒÔ·ÀÖ¹¶à¸öÏß³Ìͬʱ·ÃÎÊÕâ¸ö¶ÔÏóµÄsynchronized·½·¨£¨Èç¹ûÒ»¸ö¶ÔÏóÓжà¸ösynchronized·½·¨£¬Ö»ÒªÒ»¸öÏ̷߳ÃÎÊÁËÆäÖеÄÒ»¸ösynchronized·½·¨£¬ÆäËüÏ̲߳»ÄÜͬʱ·ÃÎÊÕâ¸ö¶ÔÏóÖÐÈκÎÒ»¸ösynchronized·½·¨£ ......
(1)Õ»
package ChapterOne;
public class Stack {
//Õ»Êý×é
long stackArr[];
//Õ»µÄ´óС
int maxSize;
//Õ»µÄ¶¥²¿
int top;
//³õʼ»¯Ò»¸ö´óСΪsizeµÄÕ»
public Stack(int size){
maxSize = size;
stackArr = new long[size];
top = -1;
}
//³öÕ»²Ù×÷
public long pop(){
return sta ......
1.°Ë½øÖÆ×ªÒåÐòÁУº\ + 1µ½3λ5Êý×Ö£»·¶Î§'\000'~'\377'
\0£º¿Õ×Ö·û
2.UnicodeתÒå×Ö·û£º\u + ËĸöÊ®Áù½øÖÆÊý×Ö£»0~65535
\u0000£º¿Õ×Ö·û
3.ÌØÊâ×Ö·û£º¾Í3¸ö
\"£ºË«ÒýºÅ
\'£ºµ¥ÒýºÅ
&nbs ......
/*
* @(#)ObjectPoolManager.java 1.00 2005-5-1
*
* Copyright 2005 BeanSoft Studio. All rights reserved.
* PROPRIETARY/CONFIDENTIAL. Use is subject to license terms.
*/
package  ......
/Download by HTTP
//For other protocol, do it yourself
import java.net.*;
import java.io.*;
public class DonwLoa ......