netty
song_suo
程序员
展开
-
回调(callback)
之前看了网上很多讲回调的博客,说实话,很晕。 也许每个人都对回调有自己的理解。也许回调本来就是被赋予了多重的含义。就像中文中的多音字。每一个读法都有自己的意思。这里介绍一种对回调的理解。应该也是最简单的一种。 回调按照字面意思来理解,可以理解为回头再调用。有人将回调称为钩子(Hook),就是指在写方法的时候,写了一半,不知道该怎么写了(可能会有很多种写法),那就在这里放一个钩子,然后接着往下写。原创 2017-04-09 12:29:06 · 373 阅读 · 0 评论 -
netty学习笔记(1)_一些核心概念
netty是一个非阻塞,事件驱动的网络框架。netty实际上是使用多线程处理io事件,对于熟悉多线程编程的人来说,可能会想到netty需要进行代码同步。但是这样的方式不好,因为同步会影响程序的性能,netty的设计者保证了程序处理事件不会有同步。netty的EventLoopGroup包含一个或者多个EventLoop,而EventLoop就是一个Channel执行实际工作的线程。EventLoop原创 2017-04-09 16:17:25 · 314 阅读 · 0 评论 -
netty学习笔记(2)_tcp拆包/粘包问题
tcp是个流协议,所谓流,就是没有界限的一串数据。tcp底层并不了解上层业务的具体含义,它会根据tcp缓冲区的实际情况进行包的划分,所以在业务上认为,一个完整的包可能会被tcp拆分为多个包进行发送,也有可能把多个小的包封装成一个大的数据包发送。这就是所谓的tcp拆包/粘包问题。问题发生的原因有3个: 1,应用程序write写入的字节大小大于套接口发送缓冲区大小 2,进行MSS大小的tcp分段原创 2017-04-09 20:48:19 · 303 阅读 · 0 评论 -
netty学习笔记(3)_编解码技术
编解码技术,其实就是指java的序列化技术。序列化的目的无非是两个:网络传输和对象持久化。对于netty来说,重点在于网络传输。 java序列化仅仅是java编解码技术的一种,由于它的种种缺陷,衍生出了多种编解码技术和框架。比如 MessagePack Google Protobuf JBoss Marshalling 本文都会一一介绍在远程服务调用(RPC)时,很少直接使用Java序列化原创 2017-04-09 23:27:02 · 254 阅读 · 0 评论 -
netty学习笔记(4)_线程模型解析
我们知道,在网上大多数NIO的入门例子中,是用一个线程来处理selector轮询出的Key的。这样效率肯定是不高。 但是简单的对key加多线程的话,肯定会抛空指针异常。原因是多线程还没来得及处理Key,selector线程就开始了新一轮的select()。又得到了Key,这个key跟刚才的key是一样的。都是绑定了accept事件,那么还会去执行accept方法SocketChannel sock原创 2017-04-14 15:10:03 · 977 阅读 · 2 评论 -
netty学习笔记(5)_心跳机制
举个例子,在负载均衡中,用心跳机制收集的客户端信息,决定连哪一台机器去做运算。原创 2017-04-14 22:38:29 · 228 阅读 · 0 评论