
netty
文章平均质量分 72
god_love_hlq_xff
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
Netty源码分析
先说结论,Netty 服务端启动和交互的逻辑的底层实现是借助于Java NIO ServerSocketChannel来实现,Java NIO ServerSocketChannel作为服务端的绑定端口、接受客户端的连接的样式代码如下: /* * 既然是服务器端,肯定需要一个ServerSocketChannel来监听新进来的TCP连接。 *...转载 2018-09-15 20:40:11 · 258 阅读 · 0 评论 -
Java NIO 的前生今世 之四 NIO Selector 详解
https://segmentfault.com/a/1190000006824196SelectorSelector 允许一个单一的线程来操作多个 Channel. 如果我们的应用程序中使用了多个 Channel, 那么使用 Selector 很方便的实现这样的目的, 但是因为在一个线程中使用了多个 Channel, 因此也会造成了每个 Channel 传输效率的降低.使用 Selec...转载 2018-10-10 23:00:46 · 132 阅读 · 0 评论 -
Netty(二) 从线程模型的角度看 Netty 为什么是高性能的?
前言在之前的 SpringBoot 整合长连接心跳机制 一文中认识了 Netty。但其实只是能用,为什么要用 Netty?它有哪些优势?这些其实都不清楚。本文就来从历史源头说道说道。传统 IO在 Netty 以及 NIO 出现之前,我们写 IO 应用其实用的都是用 java.io.* 下所提供的包。比如下面的伪代码:ServeSocket serverSocket =...转载 2018-09-27 22:30:46 · 184 阅读 · 0 评论 -
Netty中的异步调用
Netty中的异步调用如果大家观察仔细,会发现我们之前所写的代码都是串行执行的,这是什么意思?就是我们看到代码是什么顺序,最后程序就是按什么顺序执行的。但是Netty作为一个高性能网络框架,他的调用很多都是异步的,这样,就可以不等上一步做完,继续行进下一步,达到多任务并行的作用。实现概述Netty是怎么实现他的异步调用呢,大致总结了下由以下几个核心部分组成:异步执行(exec...转载 2018-09-27 22:20:32 · 3272 阅读 · 0 评论 -
Netty 源码分析之 二 事件流在ChannlePipeline中的流转
channelPipeline是一个接口,其实现类为DefaultChannelPipeline;通常像pipeline中添加channelHandler时最终都会调用以下方法:@Overridepublic ChannelPipeline addLast(String name, ChannelHandler handler) { return addLast(null, nam...原创 2018-09-21 22:06:21 · 448 阅读 · 0 评论 -
Netty 源码分析之 ChannelPipeline (二)
我们注意到, pipeline.addXXX 都有一个重载的方法, 例如 addLast, 它有一个重载的版本是:ChannelPipeline addLast(String name, ChannelHandler handler);第一个参数指定了所添加的 handler 的名字(更准确地说是 ChannelHandlerContext 的名字, 不过我们通常是以 handler 作...转载 2018-09-20 22:13:30 · 242 阅读 · 0 评论 -
netty开发入门代码
NettyServer 端 服务端public class NettyServer { public static void main(String[] args) throws Exception{ NettyServer.start(); } public static void start() throws Exception{ final NettyServerHand...原创 2018-09-14 23:31:11 · 307 阅读 · 0 评论 -
Netty 源码分析之ChannelPipeline 以4.0.15 final版
一:Channel 与 ChannelPipeline 每个Channel在初始化时都会在其父类构造器中顺带构建一个ChannelPipeline,unSafe对象;即每个channel都有一个与之关联的channelPipeline;而channelPipeline是channelHandler承载的事件流容器,底层是以DefaultChannelHandlerContext为...原创 2018-09-19 23:55:24 · 244 阅读 · 0 评论 -
Netty 源码分析之 三 EventLoop(二)
https://segmentfault.com/a/1190000015484187https://segmentfault.com/u/huamingfengqingyang/articlesNetty 的 IO 处理循环在 Netty 中, 一个 EventLoop 需要负责两个工作, 第一个是作为 IO 线程, 负责相应的 IO 操作; 第二个是作为任务线程, 执行 ta...转载 2018-09-24 21:38:46 · 196 阅读 · 0 评论 -
Netty 源码分析之 三 EventLoop (一)
Netty 的 IO 处理循环在 Netty 中, 一个 EventLoop 需要负责两个工作, 第一个是作为 IO 线程, 负责相应的 IO 操作; 第二个是作为任务线程, 执行 taskQueue 中的任务. 接下来我们先从 IO 操纵方面入手, 看一下 TCP 数据是如何从 Java NIO Socket 传递到我们的 handler 中的.Netty 是 Reactor 模型的一个...转载 2018-09-24 21:34:20 · 197 阅读 · 0 评论 -
Netty 源码分析之服务端
服务器端在分析客户端的代码时, 我们已经对 Bootstrap 启动 Netty 有了一个大致的认识, 那么接下来分析服务器端时, 就会相对简单一些了.首先还是来看一下服务器端的启动代码:public final class EchoServer { static final boolean SSL = System.getProperty("ssl") != null; ...转载 2018-09-18 23:49:01 · 172 阅读 · 0 评论 -
Netty 源码分析之 一 客户端代码分析
没有创新,或者拾人牙慧,知识本来就是这样搬运着传播的。客户端核心代码如下:public static void start(){ ClientChannelHandler channelHandler = new ClientChannelHandler(); EventLoopGroup bossGroup = new NioEventLoopGroup...原创 2018-09-18 22:53:47 · 796 阅读 · 0 评论 -
NIO的epoll空轮询bug
JDK NIO的BUG,例如臭名昭著的epoll bug,它会导致Selector空轮询,最终导致CPU 100%。官方声称在JDK1.6版本的update18修复了该问题,但是直到JDK1.7版本该问题仍旧存在,只不过该BUG发生概率降低了一些而已,它并没有被根本解决。该BUG以及与该BUG相关的问题单可以参见以下链接内容。https://bugs.java.com/bugdatabase/...转载 2018-11-05 23:05:49 · 1019 阅读 · 1 评论