Netty学习笔记

来源:互联网 发布:centos 网络流量监控 编辑:程序博客网 时间:2024/05/16 10:55

这只是自己学习Netty 记录的一些笔记和要点,不是什么正式的文件,写在网上,是怕以后忘了不好找,大家可以忽略了。

1. Unix 五种I/O模型, 阻塞I/O  非阻塞I/O  I/O复用模型(se;ect/epoll)  信号驱动I/O模型 异步I/O 

2.Netty 对selector的SelectionKey进行了优化,默认不开启,如果开启的话,可以利用反射将原有JAVA的SelectionKey替换

3.空轮询在jdk1.7 (含)以前会导致epoll死循环bug 为了解决该问题,对空轮询的发生次数做了计数,如果联系多次发生空轮询,则重新创建一个selector,并销毁旧的selector

4.Netty中可以设置I/O任务,与非I/O任务(TASK)的执行比例,如果发现非I/O任务占用了过多的时间,可以中断非I/O任务的执行,以防止非I/O任务占用太多CPU时间

5.ChannelFuture超时并不代表I/O超时,如果channelFuture超时后,没有关闭资源,I/O连接依然有可能成功,会导致严重的问题

6. Google 的Protobuf 序列化工具支持JAVA C++ python

7.JiBx 一种高效的java 和  XML 转换工具

8.reactor 的三种模型, 单线程模型, 多线程模型(一个线程负责accept 多个线程(组成池)负责I/O), 主从多线程模型

9.目前实现线程的方法主要有三种:

        a.内核线程,这种线程有内核来完成线程切换,内核通过线程调度器对线程进行调度,并负责将线程任务映射到不同的处理器上。

        b.用户线程实现, 用户线程是指完全建立在用户空间线程库上的线程,用户线程的创建、启动、运行、销毁、切换完全在用户态中完成,不需要内核的帮助,执行性能更高

        c. 混合实现,将内核线程和用户线程混合在一起使用的方式.

       SUN JDK在windows 和 Linux 操作系统上采用了内核线程的实现方式

10. 原子类底层是通过CAS来实现的



0 0
原创粉丝点击