zhizhesoft

  • 首页
Netty
Netty

Netty入门

一个完善的底层通信框架需要具备哪些功能? 网络协议 编解码支持 网络通信都是字节流,因此需要提供编解码的支持 各种通信协议支持 每个团队涉及的通信协议可能不同,因此框架需要尽可能的支持常见的协议 粘包和拆包问题 支持分隔符切分,固定长度等 连接管理 连接资源是有限的,所以要保持合理的连接数,通过心跳机制、检查空闲连接功能等来管理连接 IO模型 NIO模型,实现IO多路复用 零拷贝 发送文件时使用零拷贝减少拷贝次数,提升性能 内存管理 线程模型 Reactor模型,accept 线程与 reactor 线程(I/O线…

2022年5月20日 0条评论 20点热度 0人点赞 risingsun 阅读全文
Netty

IO模型

I/O是什么? I/O其实就是 input 和 output 的缩写,即输入/输出。 I/O 就是指内存与外部设备之间的交互(数据拷贝) 磁盘 I/O 指的是硬盘和内存之间的输入输出 读取本地文件的时候,要将磁盘的数据拷贝到内存中,修改本地文件的时候,需要把修改后的数据拷贝到磁盘中 网络 I/O 指的是网卡与内存之间的输入输出 当网络上的数据到来时,网卡需要将数据拷贝到内存中。当要发送数据给网络上的其他人时,需要将数据从内存拷贝到网卡里     Linux下实现的IO模型: Linux的内核将所有外部设备都看做一个…

2022年5月20日 0条评论 29点热度 0人点赞 risingsun 阅读全文
Netty

Netty Reactor模式

  Netty对三种IO模式的支持: BIO-> OIO (Deprecated)  NIO  AIO (Removed)  Common  Linux  macOS/BSD  ThreadPerChannelEventLoopGroup  NioEventLoopGroup  EpollEventLoopGroup    KQueueEventLoopGroup AioEventLoopGroup  ThreadPerChannelEventLoop  NioEventLoop  EpollEventLoo…

2022年5月20日 0条评论 19点热度 0人点赞 risingsun 阅读全文
Netty

Netty-FastThreadLocal

ThreadLocal: ThreadLocalMap中实际存储键值对的是Entry[]数组,Entry对象的Key为ThreadLocal对象,value为线程持有的本地变量。 Entry继承了WeakReference<ThreadLocal<?>>,所以Entry对象是其key即ThreadLocal对象的一个弱引用,这种设计是为了当ThreadLocal对象被置为null时,Entry对象会在第二次YoungGC被回收,线程本地变量value也会被回收。 不足: ①:然而Thread…

2022年5月18日 0条评论 27点热度 0人点赞 risingsun 阅读全文
Netty

Netty粘包&半包支持&Protobuf

  TCP粘包、半包、拆包 客户端发送数据包给服务端,因服务端一次读取到的字节数是不确定的,有好几种情况: 1、服务端分两次读取到了两个独立的数据包,没有粘包和拆包 2、服务端一次接收到了两个数据包,粘合在一起,被称为 TCP 粘包 3、服务端分两次读取到了两个数据包,第一次读取到了完整的包和另外一个包的部分内容,第二次读取到了另一个包的剩余内容,这被称为 TCP 拆包 4、服务端分两次读取到了两个数据包,第一次读取到了包的部分内容,第二次读取到了之前未读完的包剩余内容和另一个包,发生了拆包和粘包;第二次读取的剩余…

2022年5月18日 0条评论 17点热度 0人点赞 risingsun 阅读全文
Netty

Netty时间轮-HashedWheelTimer

时间轮 什么是时间轮? 简单来说,时间轮是一种高效利用线程资源进行批量化调度的一种调度模型。 通过把大批量的调度任务全部绑定到同一个调度器上,使用这一个调度器来进行所有任务的管理、触发、以及运行。 所以时间轮的模型能够高效管理各种延时任务、周期任务、通知任务。 时间轮是以时间作为刻度组成的一个环形队列,所以叫做时间轮。这个环形队列采用数组来实现HashedWheelBucket[],数组的每个元素称为槽,每个槽可以存放一个定时任务列表,叫HashedWheelBucket,它是一个双向链表,链表的每个节点表示一个定…

2022年5月18日 0条评论 17点热度 0人点赞 risingsun 阅读全文
Netty

几种I/O模型功能和性能对比

对比图 同步阻塞I/O服务端通信模型(一客户端一线程) 伪异步I/O服务端通信模型(M:N)     NIO服务端和客户端通信时序图      

2022年4月29日 0条评论 23点热度 0人点赞 risingsun 阅读全文
AOSP

关于学习netty的两个完整服务器客户端范例

https://github.com/wangyi793797714/IMServer https://github.com/wangyi793797714/IMClient   https://github.com/wangyi793797714/shopserver https://github.com/wangyi793797714/IMClient

2022年4月28日 0条评论 26点热度 0人点赞 risingsun 阅读全文
Netty

Java NIO 系列教程

http://www.iteye.com/magazines/132-Java-NIO

2022年4月24日 0条评论 20点热度 0人点赞 risingsun 阅读全文
Netty

netty 解析http请求 post

http://blog.csdn.net/neosmith/article/details/50383548

2022年4月24日 0条评论 17点热度 0人点赞 risingsun 阅读全文
12345…56
Search

COPYRIGHT © 2022 zhizhesoft. ALL RIGHTS RESERVED.