努力奔跑中的coder

源代码的github地址:https://github.com/louyuting

[netty源码分析]--服务端启动的工作流程分析

服务端1.首先是实例化boss线程池和worker线程池实例化的就是 NioEventLoopGroup;这里我假设boss线程池初始化为1个线程,worker线程初始化为 2*CPU个数的线程数。说一下主要做了什么工作:(1)指定了线程池中线程数、线程池的执行器是ThreadPerTaskExe...

2017-03-17 12:21:32

阅读数:1403

评论数:2

[netty源码分析]--ChannelPipeline源码分析(一)

在前面我们已经分析过了netty的线程模型,了解了当线程池启动之后就会处于一种事件循环的状态,不断调用select() 函数,查询已注册的channel中的就绪事件。 下面我们就来研究一下当IO事件被获取之后是怎么在ChannelPipeline中的handler传递运行的。1. Channel和...

2017-03-15 23:57:21

阅读数:1036

评论数:0

[netty源码分析]--EventLoopGroup与EventLoop 分析netty的线程模型

netty核心类源码解析:分析netty的运行机制 EventLoopGroup与EventLoop解析:分析netty的线程模型 这一篇博文主要是从源码层次分析netty的线程模型。netty之所以是高性能NIO框架,其中主要贡献之一就是netty的线程模型的高性能,我们都...

2017-03-14 16:40:24

阅读数:5134

评论数:4

[netty]--Reactor线程模型以及在netty中的应用

说道netty的线程模型,我们第一反应就是经典的Reactor线程模型,下面我们就来一起探讨一下三种经典的Reactor线程模型: 这里我们需要理解的一点是Reactor线程模型是基于同步非阻塞IO实现的。对于异步非阻塞IO的实现是Proactor模型。 本文主要包括 (...

2017-02-19 17:16:46

阅读数:4741

评论数:1

[netty]--最通用TCP黏包解决方案:LengthFieldBasedFrameDecoder和LengthFieldPrepender

前面已经说过: TCP以流的方式进行数据传输,上层应用协议为了对消息进行区分,往往采用如下4种方式。 (1)消息长度固定:累计读取到固定长度为LENGTH之后就认为读取到了一个完整的消息。然后将计数器复位,重新开始读下一个数据报文。 (2)回车换行符作为消息结束符:在...

2017-02-19 15:02:11

阅读数:15092

评论数:0

[netty核心类]--ChannelPipeline和ChannelHandler源码分析

本文主要包括: (1)ChannelPipeline的功能说明和源码分析; (2)ChannelHandler的功能说明和源码分析; 在netty中的ChannelPipeline和ChannelHandler的机制就很类似于J2EE中的Servlet和Filter过滤器,这类拦截器就...

2017-02-19 13:27:06

阅读数:990

评论数:0

[netty核心类]--Channel和Unsafe类

主要内容: (1)Channel 功能说明 (2)Unsafe 功能说明 (3)Channel的主要实现子类源码分析 (4)Unsafe主要实现子类源码分析 1.Channel功能说明channel是netty网络IO操作抽象出来的一个接口,主要功能有:网络IO的读写,客户...

2017-02-18 00:59:50

阅读数:2164

评论数:1

[netty]-消息编解码之google的Protobuf编解码

前面介绍了通过Java原生的序列化来实现编解码在网络传输,也说到了其诸多缺点,下面介绍另外一种业界现在非常流行的编解码方式:Protobuf。 、

2017-02-01 13:54:44

阅读数:605

评论数:0

[netty]-消息编解码之Java原生序列化

消息对象在网络上传输时,我们往往要对消息进行编解码。现在编解码技术非常多,包括Java原生的序列化、Google的protoBuf、hessian等等。这一篇博客我们主要介绍Java的原生序列化编解码以及其优缺点。 基于Java提供的对象输入/输出流 ObjectInputStream和Objec...

2017-02-01 13:23:31

阅读数:1421

评论数:0

[netty]--分隔符解码器DelimiterBasedFrameDecoder和定长解码器FixedLengthFrameDecoder

TCP以流的方式进行数据传输,上层应用协议为了对消息进行区分,往往采用如下4种方式。 (1)消息长度固定:累计读取到固定长度为LENGTH之后就认为读取到了一个完整的消息。然后将计数器复位,重新开始读下一个数据报文。(2)回车换行符作为消息结束符:在文本协议中应用比较广泛。(3)将特殊的分隔符作...

2017-01-31 17:51:07

阅读数:4444

评论数:1

基于netty的时间服务器demo

最近在在《netty权威指南》,这本书里面的netty的入门程序就是一个基于netty的时间服务器,下面我先给出这个时间服务器的实例,然后对逻辑做一定的说明,这个例子比较简单,只是后面的很多内容是基于这个案例来说明和加深的。服务端TimeServer 启动服务器类package netty.qua...

2017-01-31 12:43:44

阅读数:1757

评论数:1

netty中TCP的黏包/拆包解决之道

这篇博客的主要内容是: 1. TCP黏包/拆包的基础知识 2.没考虑TCP黏包/拆包 导致的异常案例 3.netty中解决TCP黏包/拆包的方法 1.TCP黏包/拆包的原理TCP 是一个“流”协议,所谓流就是没有界限的一串数据。TCP并不了解上层业务数据的具体定义,它只会根据TC...

2017-01-31 12:03:32

阅读数:4794

评论数:0

netty的编解码器介绍

本blog主要介绍: 1. Codec 编解码器 2. Decoder 解码器 3. Encoder 编码器netty提供了强大的编解码器框架,使得我们编写自定义的编解码器很容易,也容易封装个重用。在网络应用中需要实现某种编解码器,将原始字节数据与自定义的消息对象进行互相转换。网络中都是以字...

2017-01-16 19:10:13

阅读数:6831

评论数:0

netty中的ChannelHandler

本文主要介绍以下几个相关类: • ChannelPipeline • ChannelHandlerContext • ChannelHandler • Inbound vs outbound(入站和出站)接受客户端的连接和创建连接只是应用程序中的一步,更加重要的还是处理传入...

2017-01-16 16:38:21

阅读数:7286

评论数:0

[小项目]-netty实现聊天功能

Netty是一个Java的NIO客户端服务端框架可以快速的开发网络应用程序,比如客户端和服务端的协议,大大简化了网络程序的开发过程。我们知道Netty的整体架构主要由3部分组成:缓冲(buffer)、通道(channel)、事件模型(event model)。所有的高级也行都构建于这三个组件之上。...

2017-01-12 19:14:08

阅读数:6356

评论数:0

netty的引导程序ServerBootStrap

BootStrap在netty的应用程序中负责引导服务器和客户端。netty包含了两种不同类型的引导: 1. 使用服务器的ServerBootStrap,用于接受客户端的连接以及为已接受的连接创建子通道。 2. 用于客户端的BootStrap,不接受新的连接,并且是在父通道类完成一些操作。Se...

2016-12-19 14:36:07

阅读数:8586

评论数:1

[netty核心类]--缓冲区ByteBuf

本文主要包括以下内容: 1)ByteBuf的三种类型:heapBuffer(堆缓冲区)、directBuffer(直接缓冲区)以及Composite Buffer(复合缓冲区)。 2)ByteBuf的工作原理。 3)ByteBuf与JDK中ByteBuffer的区别以及对...

2016-12-16 14:24:48

阅读数:22487

评论数:0

[netty]--核心源码类

Netty的10个核心类,清楚了解他们的结构对使用Netty很有用。可能有一些不会再工作中用到,但是也有一些很常用也很核心,你会遇到。 1. Bootstrap or ServerBootstrap 2. EventLoop 3. EventLoopGroup 4. ChannelPipe...

2016-12-10 00:23:41

阅读数:563

评论数:0

提示
确定要删除当前文章?
取消 删除
关闭
关闭