精进 Quartz
精进 Quartz—Quartz大致介绍(一) 精进Quartz—Quartz简单入门Demo(二) 精进Quartz—Spring和Quartz集成详解(三) 精进Quartz—SSMM(Spring+SpringMVC+Mybatis+...
精进 Quartz—Quartz大致介绍(一) 精进Quartz—Quartz简单入门Demo(二) 精进Quartz—Spring和Quartz集成详解(三) 精进Quartz—SSMM(Spring+SpringMVC+Mybatis+...
1、本文实现如下功能 1、客户端与服务端基于单一长连接进行通信,客户端一条连接被多个线程使用。 2、实现私有协议 请求协议 : 协议头:4字节的请求序列号 2字节的请求类型 2字节数据包长度 数据部分: 服务调用:2字节请求服务名长度 若干...
本文继续就Netty处理网络事件相关内容进行展开,重点分析Netty是如何处理写事件的。程序入口还是在NioEventLoop的processSlectedKey(SelectionKey k, AbstractNioChannel ch)...
1、NioSocketChannel类图 2、NioSocketChannel read方法详解 从上文的NioEventLoop事件模型的时候提到,在处理Selector的事件的时候,io线程会触发读相关的操作,具体代码如下: 代码摘录自...
1、线程模型总结 Netty线程模型基于主从Reactor模型;Channel会绑定一个线程模型(EventLoopGroup),与该通道的读,写等事件都在一个EventLoopGroup中执行,避免了Handler执行的线程安全问题。 线...
1、本文实现如下功能 1、客户端与服务端基于单一长连接进行通信,客户端一条连接被多个线程使用。 2、实现私有协议 请求协议 : 协议头:4字节的请求序列号 2字节的请求类型 2字节数据包长度 数据部分: 服务调用:2字节请求服务名长度 若干...
非阻塞IO,存在一个特殊的问题,就是半包问题。Netty 为了屏蔽底层的半包问题,提供编码解码器。编码解码器在 Netty 里编织为一个个 Handler。本文重点分析一下消息解码器 ByteToMessageDecoder 的实现原理,该...
本文主要从如下方面展示: Netty bind源码分析 ChannelPipline链式请求源码分析 1、Netty ServerBootstrap bind源码跟踪 本文将重点分析Netty服务端绑定端口流程。 1.1 入口程序 1.2 ...
1、图说Netty线程模型 提到Netty的线程模型,我们不得不再重复提到主从Reactor线程模型,Netty线程模型基本上基于主从Reactor模型的实现方式,Netty线程模型将从如下两个图进行展开: Reactor 主从线程模型 N...
1、Reactor反应堆设计模式 1.1 单线程模型 单线程模型Reactor(此图来源与网络) 下面以java nio为基础,实现Reactor模型。 Nio服务端代码: package threadmode.r1; import jav...
1、Channel官方概述 先附上官方关于Channel的介绍。 /** * A nexus to a network socket or a component which is capable of I/O * operations s...
1、java.lang.ThreadLocal概况 ThreadLocal,本地线程变量,每个线程保留着一个共享变量的副本。其实我不太认可每个线程保存共享变量的一个副本这个说法,而是ThreadLocal是线程上下文环境的一种实现方式而已。...
在讲上篇Netty内存分配的时候,没有考虑本地线程的缓存,也就是Netty在分配内存时,首先尝试从线程本地缓存中去申请,如果申请失败,才从全局分配。本章就重点分析线程缓存相关的实现。首先我们将目光投向PooledByteBufAllocat...
Netty 内存分配优先从线程本地缓冲池中分配,然后才是从 PoolChunk 中分配。线程池缓存的不仅是使用的内存,比如分配的内存区域(PoolSubpage),PooledByteBuf 对象本身也被缓存,关于本地线程分配缓存,下文会有...
1、Netty 内存分配基础数据结构 Netty 预先申请一大块连续的内存(用 PoolArena 类表示),然后每一 PoolArena 包含一系列的 Chunk, 用 PoolChunk 表示,然后每一个 Chunk 包含一列的 Poo...