Netty 源碼全解與架構思維
黃俊
買這商品的人也買了...
-
$551Netty4 核心原理與手寫 RPC 框架實戰
-
$658PostgreSQL 修煉之道:從小工到專家, 2/e
-
$680$537 -
$611Netty 原理剖析與實戰
-
$774$735 -
$880$695 -
$1,200$948 -
$580$458 -
$551投行實戰 — 大宗商品期貨和期權投資策略與案例
-
$594$564 -
$774$735 -
$680$537 -
$479$455 -
$509Elasticsearch 數據搜索與分析實戰
-
$779$740 -
$680$537 -
$680$537 -
$680$510 -
$720$562 -
$352二進制安全基礎
-
$1,280$1,011 -
$1,200$948 -
$880$695 -
$800$600 -
$850$638
相關主題
商品描述
Netty是目前市面上使用率較高的網絡編程庫。它的架構設計非常明確且層次分明,源碼較為易懂,其中包裝了Java NIO(New IO,新IO)的三大組件:Selector、Channel、ByteBuffer,提供了簡單易用高效的網絡通信庫,其中還實現了自己的內存池管理。Netty的設計基於Jemalloc內存管理庫,同時也實現了很多開封即用的應用層協議編碼與解碼器。本書通過常用的TCP協議完整詮釋了Netty的架構設計與思想,省略了Java語言層面的一些基礎知識,例如變量、面向對象、泛型等Java SE的基礎。 本書適用於以下讀者:希望進入互聯網公司工作的讀者、研究Netty底層知識的讀者、在工作中遇見瓶頸,希望通過學習Netty提升底層知識的讀者、從事開發高並發支撐中間件的讀者、從事互聯網高並發業務支撐的讀者、對多線程編程感興趣的讀者、希望通過Netty源碼找到調優點的讀者。
目錄大綱
第1篇 Netty世界漫游與Java網絡編程回顧
第1章Java網絡編程
1.1Socket 介紹
1.2Socket 編程
1.2.1Java客戶端編程
1.2.2Java服務端編程
1.2.3C語言服務端編程
1.3BIO 編程
1.4NIO 編程
1.4.1NIO模型原理
1.4.2Buffer 原理
1.4.3Channel 原理
1.4.4Selector 原理
1.5AIO 編程 38
1.5.1JavaAIO 描述
1.5.2JavaAIO 實例
1.5.3AsynchronousServerSocketChannel.open()原理
1.5.4Asynchronous ServerSocketChannel.bind原理 52
1.5.5ServerSocketChannel.accept(null, new
AcceptHandler0)原理
1.5.6socketChannel.read(byteBuffer, byteBuffer,new ReadHandler。)原理
1.5.7Linux服務端網絡編程
1.5.8Linux客戶端網絡編程
1.5.9Java AIO 涉及的 Native JNI 實現
第2章 mmap網絡編程與sendfile原理
2.1transferTo 方 法
2.1.1transferTo 方法定義
2.1.2transferTo方法實現原理
2.1.3transferToDirectly 方法
2.1.4transferToTrustedChannel 方法
2.1.5transferToArbitraryChannel 方法
2.2JVM層面零復制原理
2.2.1transferToO 方法
2.2.2mapO 方法
2.3sendfile方法
第3章Linux epoll實現原理
3.1三大函數原型
3.2epoll event 與 epoll data 對象
3.3邊緣觸發與水平觸發
3.4使用示例
3.5三大函數內核原理
第4章Netty架構與源碼組成
4.1Netty 是什麽
4.2Netty架構組成
4.3Netty三大基礎模塊
4.3.1事件循環模塊
4.3.2內存池模塊
4.3.3通道處理器模塊
4.4Netty源碼組成
第2篇 事件驅動層
第 5 章 JDK Executor 原理
5.1Executor 接口
5.2ExecutorService 接 口
5.3AbstractExecutorService 抽象類
5.4ScheduledExecutorService 接口
第 6 章 EventExecutor 與 EventExecutorGroup原理
6.1EventExecutorGroup 類
6.2EventExecutor 接口
6.3AbstractEventExecutorGroup 方法
6.4MultithreadEventExecutorGroup類
6.4.1核心變量與構造器
6.4.2EventExecutorChooserFactory與DefaultEventExecutorChooserFactory
6.4.3ThreadPerT askExecutor 類
6.4.4DefaultThreadFactory 類
6.4.5F astThreadLocalThread 類
6.4.6FastThreadLocal 類
6.4.7shutdownGracefully 方法
6.4.8awaitT ermination 方法
6.5DefaultEventExecutorGroup 類
6.6AbstractEventExecutor 類
6.7AbstractScheduledEventExecutor方法
6.8SingleThreadEventExecutor 類
6.8.1核心變量與構造器
6.8.2execute核心方法實現
6.8.3addTask 核心方法
6.8.4startThread 核心方法
6.8.5confirmShutdown 核心方法
6.8.6nmAllTasks 核心 方法
6.8.7runShutdownHooks 核心方法
6.8.8awaitTerminatkm 核心方法
6.8.9takeTask 核心方法
6.8.10shutdownGracefully 核心方法
6.9 DefaultEventExecutor
第 7 章 EventLoop 與 EventLoopGroup原理
7.1EventLoopGroup 接口與 EventLoop接口
7.1.1EventLoopGroup 接口
7.1.2EventLoop 接口
7.2MultithreadEventLoopGroup 原理
7.3DefaultEventLoopGroup 原理
7.4NioEventLoopGroup 類
7.5ThreadPerChannelEventLoopGroup原理
7.5.1核心變量與構造器
7.5.2newChild 核心方法
7.5.3next 核心方法
7.5.4shutdownGracefully 核心方法
7.5.5awaitT ermination 核心方法
7.5.6register 核心方法
7.5.7nextChild 核心方法
7.6OioEventLoopGroup 類
7.7SingleThreadEventLoop 原理
7.7.1核心變量與構造器
7.7.2next 核心方法
7.7.3executeAfterEventLoopIteration 核心方法
7.7.4afterRunningAllT asks 核心方法
7.7.5register 核心方法
7.7.6hasTasks 核心方法
7.7.7pendingTasks 核心方法
7.8NioEventLoop
7.8.1核心變量與構造器
7.8.2run 核心方法
7.8.3select 核心方法
7.8.4rebuildSelector核心方法
7.8.5processSelectedKeys 核心方法
7.8.6processSelectedKey 核心頻道方法
7.8.7processSelectedKey 核心任務方法
7.9ThreadPerChannelEventLoop 類
第8章 Future與Promise原理
8.1Future接口
8.2GenericFutureListener與FutureListener接口
821 GenericFutureListener 接口
8.2.2FutureListener 接口
8.3AbstractFuture 接口
8.4ChannelGroupFuture接口
8.5GenericProgressiveFutureListener監聽器
8.6ChannelFuture接口
8.7Promise接口
8.8DefaultPromise 接口
8.8.1核心變量與構造器
8.8.2await 核心方法
8.8.3awaitUninterruptibly 核心方法
8.8.4cancel 核心方法
8.8.5sync 核心方法
8.8.6syncUninterruptibly 核心方法
8.8.7setSuccess 核心方法
8.8.8setFailure 核心方法
8.8.9trySuccess 核心方法
8.8.10tryFailure 核,山方法
8.8.11addListener 核心方法
8.8.12notifyListeners 核心方法
8.8.13notifyListenersNow 核心方法
8.8.14notifyListenersO 核心方法
8.8.15notifyProgressiveListeners 核心方法
8.8.16progressiveListeners 核心方法
8.8.17notify ProgressiveListener 核心方法
8.9ChannelPromise 接口
8.9.1DefaultChannelPromise類
8.9.2DefaultChannelGroupFuture 類
第3篇內存管理層
第9章 ByteBuf與衍生類原理
9.1ByteBuf原理
9.1.1構造器與核心變量
9.1.2ReferenceCounted 接口
9.2AbstractByteBuf 原理
921核心變量與構造器
9.2.2writeByte 核心方法
9.2.3writeBytes 核心方法
9.2.4readByte核心方法
9.2.5readBytes 核心方法
9.2.6writeZero 核心方法
9.2.7discardReadBytes 核心方法
9.3AbstractReferenceCountedByteBuf類
9.4UnpooledHeapByteBuf類
9.4.1核心變量與構造器
942getByte 核心方法
943getBytes 核心方法
9.4.4setByte 核心方法
9.4.5setBytes 核心方法
9.4.6setShort 核心方法
9.4.7capacity 核心方法
9.4.8nioBuffer 核心方法
9.5UnpooledUnsafeHeapByteBuf類
9.6UnpooledDirectByteBuf 原理
9.6.1核心變量與構造器
9.6.2setByte 核心方法
9.6.3setBytes 核心方法
9.6.4getByte 核心'方法
9.6.5getBytes 核心方法
9.6.6capacity 核心方法
9.6.7freeDirect 核心方法
9.7UnpooledUnsafeDirectByteBuf 方法
9.8UnpooledUnsafeNoCleanerDirectByteBuf類
9.9PooledByteBuf原理
9.9.1init 核心方法
9.9.2initUnpooled核心方法
9.9.3 reuse核心方法
9.9.4capacity 核方法
9.9.5deallocate 核心方法
996 recycle 核心方法
第10章 Netty對象池原理
10.1Recycler 原理
10.1.1核心構造器與變量
10.1.2Handle 核心接口
10.1.3Stack 核心類
10.1.4WeakOrderQueue 核心類
10.2PooledHeapByteBuf 原理
10.3PooledUnsafeHeapByteBuf類
10.4PooledDirectByteBuf 類
10.5CompositeByteBuf 原理
10.5.1核心變量與構造器
10.5.2addComponents 核心方法
10.5.3addComponent 核心方法
10.5.4removeComponent 核心方法
10.5.5removeComponents 核心方法
10.5.6capacity 核心方法
10.5.7decompose 核心方法
10.5.8findComponent 核心 方法
10.5.9getByte 核心方法
10.5.10setByte 核心方法
10.6WrappedByteBuf 類
10.7SimpleLeakAwareByteBuf 類
10.8AdvancedLeakAwareByteBuf 類
10.9 WrappedCompositeByteBuf 類
10.10SimpleLeakAwareCompositeByteBuf類
10.11AdvancedLeakAwareCompositeByteBuf類
10.12ResourceLeak 接口
10.13ResourceLeakDetector 類
10.13.1核心變量與構造器
10.13.2newRecord 核方法
10.13.3open 核心方法
10.13.4reportLeak 核心方法
10.13.5reportXLeak 核心方法
第11章 Netty內存池原理
11.1ByteBufAllocator
11.2AbstractByteBufAllocator 類
11.2.1核心變量與構造器
11.2.2buffer 核心方法
11.2.3ioBuffer 核心方法
11.2.4compositeBuffer 核心方法
11.2.5toLeakAwareBuffer 核心方法
11.2.6calculateN ewCapacity 核心方法
11.3UnpooledByteBufAllocator 類
11.4PooledByteBu£A.llocator 類
11.4.1核心變量與構造器
11.4.2newHeapBuffer 核心方法
11.43 newDirectBuffer 核心方法
11.4.4PoolThreadLocalCache 核心內部類
11.5PoolThreadCache 類
11.5.1核心變量和構造器
11.5.2createSubPageCaches 核心方法
11.5.3createNormalCaches 核心方法
11.5.4MemoryRegionCache 核心內部類
11.5.5SubPageMemoryRegionCache 核心內部類
11.5.6NormalMemoryRegionCache 核心內部類
11.5.7allocateTiny 核心方法
11.5.8cacheForSmall 核心方法
11.5.9cacheForNormal 核心方法
11.5.10allocate 核心方法
11.5.11trim 核心方法
11.5.12帳核心方法
11.6PoolArena 類
11.6.1核心變量與構造器
11.6.2HeapArena 核心內部類
11.6.3DirectArena 核心內部類
11.6.4allocate 核心方法
11.6.5normalizeCapacity 核心方法
11.6.6allocateNormal 核心方法
11.6.7allocateHuge 核心方法
11.6.8findSubpagePoolHead 核心方法
11.6.9free 核心方法
11.6.10freeChunk 核心方法
11.7PoolChunkList 類
11.8PoolSubpage 類
11.9PoolChunk 原理
11.9.1核心變量與構造器
11.9.2allocate 核心方法
11.9.3allocateRun 核心方法
11.9.4allocateNode 核心方法
11.9.5updateParentsAlloc 核心方法
11.9.6allocateSubpage 核心方法
11.9.7Me核心方法
11.9.8updateParentsFree 核心方法
11.9.9initBuf 核心方法
11.9.10initBufWithSubpage 核心方法
第4篇通道管理層
第 12 章 Netty Channel 層原理
12.1ChannelOutboundlnvoker 接口
12.2Channellnboundinvoker 接口
12.3Channel 通道接口
12.4ServerChannel 服務端
12.5ChannelMetadata 類
12.6ChannelOutboundBuffer 通道輸出緩沖區
12.6.1核心變量與構造器
12.6.2Entry核心內部類
12.6.3addMessage 核心方法
12.6.4addFlush 核心方法
12.6.5current 核心方法
12.6.6progress 核心方法
12.6.7remove 核心方法
12.6.8removeBytes 核心方法
12.6.9nioBufifers 核心方法
12.6.10Writable可寫標志位原理
12.6.11close 核心方法
12.6.12bytesBeforeUnwritable 核心方法
12.6.13bytesBeforeWritable 核心方法
12.7RecvByteBu£A.llocator 接收緩沖區分配器
12.7.1RecvByteBufA.llocator 接口
12.7.2MaxMessagesRecvByteBufAllocator接口
12.7.3DefaultMaxMessagesRecvByteBufAllocator類
12.7.4AdaptiveRecvByteBufAllocator 分配器
12.7.5FixedRecvByteBufAllocator 分配器
12.8Abstractchannel 類
12.8.1核心變量與構造器
12.8.2實現方法原理
12.8.3AbstractUnsafe 核心內部類
12.8.4核心變量與構造器
12.8.5recvBufMlocHandle 核心方法
12.8.6localAddress 與 remoteAddress 核心方法
12.8.7register 核心方法
12.8.8registerO 核心方法
12.8.9beginRead 核心方法
12.8.10bind 核心方法
12.8.11disconnect 核心方法
12.8.12close 核心方法
12.8.13closeForcibly 核心方法
12.8.14deregister 核心方法
12.8.15write 核心方法
12.8.16flush 核心方法
12.8.17CloseFuture 核心內部類
12.9AbstractServerChannel 類
12.10LocalChannel 類
12.10.1核心變量與構造器
12.10.2doRegister 核心方法
12.10.3doBind 核心方法
12.10.4doDiscoimect核心方法
12.10.5doBeginRead核心方法
12.10.6doWrite 核心方法
12.10.7LocalUnsafb 核心內部類
12.11LocalServerChannel 類
12.12AbstractOioChannel 類
12.13AbstractOioByteChannel 類
12.14OioByteStreamChannel 類
12.15OioSocketChannel 類
12.16AbstractOioMessageChannel 原理
12.17OioServerSocketChannel 類
12.18AbstractNioChannel NIO 模板類
12.18.1核心變量與構造器
12.18.2doRegister 核心方法
12.18.3doDeregister 核心方法
12.18.4doBeginRead核心方法
12.18.5newDirectBuffer核心方法
12.18.6doClose核心方法
12.18.7AbstractNioUnsafe 核心內部類
12.19AbstractNioByteChannel NIO 客戶端模板類
12.19.1核心變量與構造器
12.19.2doWrite 核心方法
12.19.3filterOutboundMessage 核心方法
12.19.4NioByteUnsafe 核心內部類
12.20NioSocketChannel NIO TCP 客戶端實現類
12.20.1核心變量與構造器
12.20.2isActive 核心方法
12.20.3shutdowninput 核心方法
12.20.4shutdownOutput 核心方法
12.20.5shutdown 核心方法
12.20.6doBind 核心方法
12.20.7doConnect核心方法
12.20.8doClose 核心方法
12.20.9doReadBytes 核心方法
12.20.10doWriteBytes 核心方法
12.20.11doWriteFileRegion 核心方法
12.20.12doWrite 核心方法
12.20.13NioSocketChannelUnsafe 核心內部類
12.21AbstractNioMessageChannel NIO 服務端模板類原理
12.22NioServerSocketChannel NIO TCP 服務端實現類原理
第13章Netty通道流水線與通道處理器原理
13.1ChannelPipeline 接口
13.2ChannelHandlerContext 接口
13.3ChannelHandler 接口
13.4ChannellnboundHandler 接口
13.5ChannelOutboundHandler 接
13.6AbstractChannelHandlerContext模板類
13.6.1核心變量與構造器
13.6.2fireChannelRegistered 核心方法
13.6.3fireChannelUnregistered 核心方法
13.6.4fireChannelActive 核心方法
13.6.5invokeChannellnactive 核心方法
13.6.6fireExceptionCaught 核心方法
13.6.7fireUserEventTriggered 核心方法
13.6.8fireChannelRead核心方法
13.6.9fireChannelReadComplete 核心方法
13.6.10fireChannelWritabilityChanged 核心方法
13.6.11bind 核心方法
13.6.12connect 核心方法
13.6.13disconnect 核心方法
13.6.14close 核心方法
13.6.15deregister 核心方法
13.6.16read 核心方法
13.6.17write 核心方法
13.6.18flush 核心方法
13.6.19writeAndFlush 核心方法
13.6.20AbstractWriteTask 核心內部類
13.6.21WriteTask 核心內部類
13.6.22WriteAndFlushTask 核心內部類
13.7ChannelHandlerAdapter 抽象類
13.8DefaultChannelPipeline 類
13.8.1核心變量與構造器
13.8.2newContext 核心方法
13.8.3addFirst 核心方法
13.8.4addLast 核心方法
13.8.5addBefbre 核心方法
13.8.6addAfter 核心方法
13.8.7remove 核心方法
13.8.8removeFirst 核心方法
13.8.9removeLast 核心方法
13.8.10replace核心方法
13.8.11destroy核心方法
13.8.12TailContext核心內部類
13.8.13HeadContext 核心內部類
13.8.14write 核心方法
13.8.15fireChannelRead 核心方法
13.9ChannellnboundHandlerAdapter抽象類
13.10SimpleChannellnboundHandler處理器類
13.11Channellnitializer 類
13.12ChannelOutboundHandlerAdapter抽象類
13.13ChannelDuplexHandler 處理器
13.14通道與通道處理器小結
第14章Netty解碼器與編碼器
14.1ByteT oMessageDecoder 解碼器
14.1.1核心變量與構造器
14.1.2channelRead 核心方法
14.1.3handlerRemoved 核心方法
14.1.4channelReadComplete 核心方法
14.1.5channellnactive 核心方法
14.1.6userEventT riggered 核心方法
14.2MessageToByteEncoder 編碼器
14.3MessageToMessageDecoder 解碼器
14.4MessageToMessageEncoder 編碼器
14.5ByteToMessageCodec 雙端編碼器原理
14.6MessageToMessageCodec 雙端編碼器原理
14.7編碼器小結
14.8HttpObjectDecoder 解碼器和HttpRequestDecoder 解碼器
14.9HttpObjectEncoder 編碼器和HttpContentEncoder 編碼器
14.10MessageAggregator 消息對象聚合器
14.11HttpObj ectAggregator 聚合器
14.12TCP粘包原理
14.13DelimiterBasedFrameDecoder解碼器
14.14FixedLengthFrameDecoder 類
14.15LengthFieldBasedFrameDecoder解碼器
14.16LineBasedFrameDecoder 解碼器
14.17ReplayingDecoder 解碼器