netty
老猿说说
Java老猿
展开
-
netty为啥可靠
NIO闲聊自从JAVA1.4推出NIO起,JAVA网络编程进入了一个全新的时代,传统网络IO(OIO)是傻等式的,一旦IO操作发起,那么用户线程就陷入很傻很天真的等待中,直到IO操作结束或者发生了断连,而NIO则要聪明许多是事件触发式的,只有当前有IO事件发生了,才会通知用户线程执行IO操作,当前操作结束之后不会阻塞等待可以执行其他的业务操作等待下一次事件,就好比上银行取钱,一种方式排队傻转载 2017-12-30 16:25:26 · 565 阅读 · 0 评论 -
netty-select
NioEventLoop.run()@Override protected void run() { for (;;) { try { switch (selectStrategy.calculateStrategy(selectNowSupplier, hasTasks())) { ...原创 2020-10-12 14:14:05 · 125 阅读 · 0 评论 -
netty-IdleStateHandler
IdleStateHandlerpublic class IdleStateHandler extends ChannelDuplexHandler { // Not create a new ChannelFutureListener per write operation to reduce GC pressure. private final ChannelFutureL...原创 2020-10-12 14:17:43 · 127 阅读 · 0 评论 -
netty-MultiParser
public HttpPostMultipartRequestDecoder(HttpDataFactory factory, HttpRequest request, Charset charset) { this.request = checkNotNull(request, "request"); this.charset = checkNotNull(ch...原创 2020-10-12 14:20:13 · 180 阅读 · 0 评论 -
netty-SimpleChannelInboundHandler
@Override public void channelRead(ChannelHandlerContext ctx, Object msg) throws Exception { boolean release = true; try { if (acceptInboundMessage(msg)) { ...原创 2020-10-12 14:13:45 · 185 阅读 · 0 评论 -
netty-HeadContext&&TailContext
TailContext // A special catch-all handler that handles both bytes and messages. final class TailContext extends AbstractChannelHandlerContext implements ChannelInboundHandler { TailCont...原创 2020-10-12 14:19:38 · 242 阅读 · 0 评论 -
netty-write
write @Override public final void write(Object msg, ChannelPromise promise) { assertEventLoop(); ChannelOutboundBuffer outboundBuffer = this.outboundBuffer; ...原创 2020-10-12 14:14:31 · 67 阅读 · 0 评论 -
netty-AdaptiveRecvByteBufAllocator
512以下是16的倍数 2的9次以上每次*2 一共2的18次 最大262144=256k static final int DEFAULT_MINIMUM = 64; static final int DEFAULT_INITIAL = 1024; static final int DEFAULT_MAXIMUM = 65536; private static...原创 2020-10-12 14:13:54 · 163 阅读 · 0 评论 -
netty-自定义HttpPostMultipartRequestExDecoder
HttpPostMultipartRequestExDecoder.getFileUpload if(size == 0 && requestContentLength > CustomDiskFileUpload.DISK_FILE_THRESHOLD) { LOGGER.info("request content length:{}, ...原创 2020-10-12 14:21:20 · 168 阅读 · 0 评论 -
netty- runAllTasks
runAllTasks() /** * Poll all tasks from the task queue and run them via {@link Runnable#run()} method. This method stops running * the tasks in the task queue and returns if it ran longer ...原创 2020-10-12 14:19:29 · 209 阅读 · 0 评论 -
netty-shutdownGracefully
MultithreadEventExecutorGroupshutdownGracefully()DEFAULT_SHUTDOWN_QUIET_PERIOD = 2LDEFAULT_SHUTDOWN_TIMEOUT = 15L @Override public Future<?> shutdownGracefully(long quietPeriod, long ...原创 2020-10-12 14:12:42 · 165 阅读 · 0 评论 -
netty-AbstractChannel
protected AbstractChannel(Channel parent) { this.parent = parent; id = newId(); unsafe = newUnsafe(); pipeline = newChannelPipeline(); } @Override publ...原创 2020-10-12 14:12:53 · 86 阅读 · 0 评论 -
netty(转)
1. 连接篇1.1 Netty NativeNetty Native用C++编写JNI调用的Socket Transport,是由Twitter将Tomcat Native的移植过来,现在还时不时和汤姆家同步一下代码。经测试,的确比JDK NIO更省CPU。也许有人问,JDK的NIO也用EPOLL啊,大家有什么不同? Norman Maurer这么说的: Net...转载 2018-11-21 17:27:58 · 245 阅读 · 0 评论 -
netty-read
AbstractNioByteChannel.read()@Override public final void read() { final ChannelConfig config = config(); final ChannelPipeline pipeline = pipeline(); final...原创 2020-10-12 14:12:29 · 100 阅读 · 0 评论 -
netty-flush
DefaultChannelPipeline.flush()调用unsafe@Overridepublic void flush(ChannelHandlerContext ctx) throws Exception { unsafe.flush(); }AbstractChannel.flush()调用outboundbuffer.addFlush 然后flush0,...原创 2020-10-12 14:17:52 · 124 阅读 · 0 评论 -
netty-ChunkWriter
AbstractChannelHandlerContext.writeAndFlush @Override public ChannelFuture writeAndFlush(Object msg, ChannelPromise promise) { if (msg == null) { throw new NullPointerExcepti...原创 2020-10-12 14:13:37 · 134 阅读 · 0 评论 -
netty-FileRegion.write
NioSocketChannel.doWrite(ChannelOutboundBuffer in) } else if (msg instanceof FileRegion) { FileRegion region = (FileRegion) msg; boolean done = region.transferred() >= region.count()...原创 2020-10-12 14:19:55 · 145 阅读 · 0 评论 -
netty-ChunkedStream
ChunkedStream @Override public boolean isEndOfInput() throws Exception { if (closed) { return true; } int b = in.read(); if (b < 0) { r...原创 2020-10-12 14:13:29 · 177 阅读 · 0 评论 -
netty-HttpObjectDecoder
HttpObjectDecoderskipControlCharacters()-> State.READ_INITIAL->lineParser.parse(buffer)->READ_HEADER @Override protected void decode(ChannelHandlerContext ctx, ByteBuf buffer, List&lt...原创 2020-10-12 14:13:02 · 172 阅读 · 0 评论 -
netty-recyle
Recycler初始化maxCapacityPerThread=32768maxSharedCapacityFactor=2maxDelayedQueuesPerThread=6ratioMask=7 protected Recycler() { this(DEFAULT_MAX_CAPACITY_PER_THREAD);//32768 } p...原创 2020-10-12 14:21:35 · 80 阅读 · 0 评论