自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(7)
  • 收藏
  • 关注

原创 Netty 核心组件

1.ServerBootstrap Bootstrap ServerBootstrap 和 Bootstrap 是Netty服务端和客户端的启动配置类,用来配置服务端和客户端的各种参数。 2.Channel Netty中的channel用来执行I/O操作,可以获得网络的连接状态和网络配置等参数。Channel提供一步的网络I/O操作,future模式,在i/o操作完后回调结果。 Channel异步调用模式返回一个channelFuture实例,通过注册注册监听器到channelFuture上,完成操作时,回

2020-05-24 11:39:02 204

原创 Netty的异步调用机制

Netty在进行连接绑定端口时,返回一个Future实现类Channel实现类 ChannelFuture ChannelFuture addListener(GenericFutureListener<? extends Future<? super Void>> listener); 添加一个监听器 只是一个观察者模式 监听器完成事件后会回调返回结果给Future channelFuture.addListener(new ChannelFutureListener() {

2020-05-23 11:27:24 517 1

原创 NIO-----taskqueue,Schedulequeue

1.普通任务 普通任务课已通过绑定的channel,向所绑定的NioEventLoop中的taskqueue中添加任务,自己实现Runnable接口。 这里注意所有的任务都是在一个队列中,处于一个线程,所以是顺序执行,是阻塞的。 2.定时任务 定时任务也可已通过channel向ScheduleQueue里添加,是阻塞的 3.用户自定义的非IO任务 可以再绑定Handler是拿到channel向taskQueue和ScheduleQueue中添加 ...

2020-05-22 13:42:03 296

转载 Netty模型

1.传统的io模型 采用了阻塞io模型 每个请求都会对应一个线程去处理,而在每个线程中当没有数据时,会在read处阻塞,等待数据,造成线程浪费,当请求数增多时,需要创建的线程局增多,造成系统资源浪费。 2.Reactor模型 我现在所学的有nginx,redis都是应用了Reactor模型 采用阻塞对象ServiceHandler,当有线程发出请求时,SH会让请求进入队列,分发给处理线程,在这里SH单独处在一个线程中,在没有请求时进行监听事件,有请求,操作系统通知SH进行处理分发。 和redis多路IO复用

2020-05-21 14:31:38 251

转载 为什么Redis更快捏

1.Redis操作的是内存,而不是磁盘,读取写入更快。 2.Redis的事件派发器的消费单线程队列的,避免不必要的上下文切换。 3.采用IO多路复用epoll模型,非阻塞 Reactor模型 ,6.0改成多线程io了。

2020-05-20 14:30:04 181

原创 Nio---transferto

Bio进行文件传输的时候要进行4次状态转换 要进行4次拷贝借鉴了网上的图 Dma 拷贝从磁盘上将数据考到内存中内核空间,DMA是指外部设备不通过CPU而直接与系统内存交换数据的接口技术。在经过CPU拷贝拷贝到用户空间,再次经过CPU拷贝 拷贝到 通信端的buffer中,在进行DMA拷贝 考到磁盘上 mmap优化 通过内存映射,将文件映射到内核缓冲区,用户空间可以共享内核空间的数据 同样借鉴了网图 可见 状态还是四次转变,但是拷贝次数变成了三次,因为用户空间和内核空间共享数据,所以只需要一次CPU拷贝间数据

2020-05-20 14:12:57 458 1

原创 NIO源码之Selector.open()

今天在练习用nio写一个聊天室时,突然想到了一个问题,我们在客户端和服务端都使用Selector,那这个Selector是否是同一个呢,它是怎么创建的呢,所以我自己看了看源码。 Selector类里有静态方法 public static Selector open() throws IOException { return SelectorProvider.provider().openSelector(); } 它是应用了 SelectorProvider类的provider()方法 SelectorPr

2020-05-19 17:18:20 573

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

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