随笔分类 -  Netty

netty技术笔记
摘要:Netty能干什么? Http服务器 使用Netty可以编写一个 Http服务器, 就像tomcat那样,能接受用户发送的http请求, , 只不过没有实现Servelt规范, 但是它也能解析携带的参数, 对请求的路径进行路由导航, 从而实现将不同的请求导向不同的handler进行处理 对socke 阅读全文
posted @ 2019-12-09 15:04 赐我白日梦 阅读(1437) 评论(3) 推荐(2) 编辑
摘要:javadoc笔记点 观察者的核心思想就是,在适当的时机回调观察者的指定动作函数 我们知道,在使用netty创建channel时,一般都是把这个channel设置成非阻塞的模式,这意味着什么呢? 意味着所有io操作一经调用,即刻返回 这让netty对io的吞吐量有了飞跃性的提升,但是异步编程相对于传 阅读全文
posted @ 2019-07-25 19:17 赐我白日梦 阅读(1406) 评论(0) 推荐(1) 编辑
摘要:装饰者的应用 所谓装饰者,说白了,目的就是对现有的对象进行增强, 装饰者设计模式最大的优点就是,它在扩展类原有功能的基础上还避免的类爆炸的情况 Netty中的装饰者模式的应用 是netty中重要的数据容器类,我们看它是如何设计的,如下图 我们可以看到, 的直接实现类有五个,忽略 这个类,其实直接实现 阅读全文
posted @ 2019-07-25 08:42 赐我白日梦 阅读(837) 评论(0) 推荐(1) 编辑
摘要:适用场景: 对于一个请求来说,如果有个对象都有机会处理它,而且不明确到底是哪个对象会处理请求时,我们可以考虑使用责任链模式实现它,让请求从链的头部往后移动,直到链上的一个节点成功处理了它为止 优点: 发送者不需要知道自己发送的这个请求到底会被哪个对象处理掉,实现了发送者和接受者的解耦 简化了发送者对 阅读全文
posted @ 2019-07-24 22:26 赐我白日梦 阅读(3971) 评论(0) 推荐(0) 编辑
摘要:不同的容器,因为使用了不同的数据结构,就注定了他们的遍历方法是不尽相同的,迭代器模式以接口+实现的方式, 实现了为不同的聚合对象容器提供了相同的顺序访问方法,而忽略其底层数据结构 ,这也成为外部迭代(借助第三方的迭代器器完成的迭代) java内置的迭代器 如上图是java内置的迭代器的接口图,jav 阅读全文
posted @ 2019-07-24 20:57 赐我白日梦 阅读(434) 评论(0) 推荐(0) 编辑
摘要:策略者模式的特点 在设计类的继承体系时,我们会刻意的把公共的部分都提取到基类中 比如先设计Person类,把人类都具有的行为放到这个Person,特有的行为设计成抽象方法,让子类具体去实现, 这样后续无论我们再去构造学生,还是构造老师,大家都继承Person,就达到了代码复用的目的 但是这样问题就来 阅读全文
posted @ 2019-07-24 14:42 赐我白日梦 阅读(1162) 评论(0) 推荐(1) 编辑
摘要:公众号首发、欢迎关注 编码器的执行时机 首先, 我们想通过服务端,往客户端发送数据, 通常我们会调用**ctx.writeAndFlush(数据)**的方式, 入参位置的数据可能是基本数据类型,也可能对象 其次,编码器同样属于handler,只不过他是特化的专门用于编码作用的handler, 在我们 阅读全文
posted @ 2019-07-22 21:11 赐我白日梦 阅读(12577) 评论(5) 推荐(2) 编辑
摘要:任何数据类型想在网络中进行传输,都得经过编解码转换成字节流 在netty中,服务端和客户端进行通信的其实是下面这样的 程序 编码 网络 网络 解码 程序 对应服务端: 入站数据, 经过解码器解码后给后续的handler使用 出站数据, 经过编码器编码成字节流给在网络上传播 在netty中的编码器其实 阅读全文
posted @ 2019-07-22 12:32 赐我白日梦 阅读(3679) 评论(0) 推荐(2) 编辑
摘要:首先我们知道,在NIO网络编程模型中,IO操作直接和channel相关,比如客户端的请求连接,或者向服务端发送数据, 服务端都要从客户端的channel获取这个数据 那么channelPipeline是什么? 其实,这个channelPepiline是Netty增加给原生的channel的组件,在 阅读全文
posted @ 2019-07-20 11:31 赐我白日梦 阅读(3938) 评论(4) 推荐(1) 编辑
摘要:什么是新连接接入?以及新连接接入前,Netty处于什么状态 netty的服务端 初始化,注册在BossGroup中的一条 中,并且给 中维护的jdk原生的 绑定好了端口后, EventLoop启动,开始轮询工作... 这时候 EventLoop 它在轮询什么? 其实它在轮询监听当初NioServer 阅读全文
posted @ 2019-07-18 22:22 赐我白日梦 阅读(5914) 评论(0) 推荐(2) 编辑
摘要:回顾 全文围绕下图,Netty-Channel的简化版架构体系图展开,从顶层Channel接口开始入手,往下递进,闲言少叙,直接开撸 概述: 从图中可以看到,从顶级接口Channel开始,在接口中定义了一套方法当作规范,紧接着的是来两个抽象的接口实现类,在这个抽象类中对接口中的方法,进行了部分实现, 阅读全文
posted @ 2019-07-17 22:14 赐我白日梦 阅读(16660) 评论(0) 推荐(3) 编辑
摘要:NioEventLoop的 启动时机 是在服务端的NioServerSocketChannel中的ServerSocketChannel初始化完成,且注册在NioEventLoop后执行的, 下一步就是去绑定端口,但是在绑定端口前,需要完成NioEventLoop的启动工作, 因为程序运行到这个阶段 阅读全文
posted @ 2019-07-16 18:47 赐我白日梦 阅读(4144) 评论(0) 推荐(0) 编辑
摘要:公众号首发、欢迎关注 本文是我对Netty的NioEventLoopGroup及NioEventLoop初始化工作的源码阅读笔记, 如下图,是Netty的Reactor线程模型图,本文描述NioEventLoopGroup等价于我在图中标红的MainReactor组件,全篇围绕它的初始化展开,难免地 阅读全文
posted @ 2019-07-15 23:10 赐我白日梦 阅读(10893) 评论(0) 推荐(1) 编辑
摘要:WebSocket 传统的浏览器和服务器之间的交互模式是基于请求/响应的模式,虽然可以使用js发送定时任务让浏览器在服务器中拉取但是弊端很明显,首先就是不能避免的延迟,其次就是频繁的请求,让服务器的压力骤然提升 WebSocket是H5新增的协议,用于构建浏览器和服务器之间的不受限的长连接的通信模式 阅读全文
posted @ 2019-07-14 16:31 赐我白日梦 阅读(4373) 评论(1) 推荐(4) 编辑