在学习网络框架Netty之前,先补充了一下自己对Java 几种IO模型的学习和理解。分别是 BIO、NIO、AIO三种IO模型。 ...
分类:
编程语言 时间:
2020-03-30 09:44:32
阅读次数:
106
【场景】客户端大量连接,如果采用多线程方式的话,线程上下文切换导致性能不佳。因此采用io多路复用。 一、上下文切换 对于单核CPU来说(对于多核CPU,此处就理解为一个核),CPU在一个时刻只能运行一个线程,当在运行一个线程的过程中转去运行另外一个线程,这个叫做线程上下文切换(对于进程也是类似)。 ...
分类:
其他好文 时间:
2020-03-28 16:16:39
阅读次数:
71
一、redis 和 memcached 有啥区别? 1. redis 支持复杂的数据结构 redis 相比 memcached 来说,拥有更多的数据结构,能支持更丰富的数据操作。如果需要缓存能够支持更复杂的结构和操作, redis 会是不错的选择。 2. redis 原生支持集群模式 在 redis ...
分类:
编程语言 时间:
2020-03-25 21:40:01
阅读次数:
77
缘起我在看Spring的源码时,发现了一个隐藏的问题,就是父类方法(Method)在子类实例上的反射(Reflect)调用。初次看到,感觉有些奇特,因为父类方法可能是抽象的或私有的,但我没有去怀疑什么,这可是Spring的源码,肯定不会有错。不过我去做了测试,发现确实是正确的,那一瞬间竟然给我了一丝 ...
分类:
编程语言 时间:
2020-03-23 09:43:08
阅读次数:
65
前文提到网络IO可以使用多路复用技术,而文件IO无法使用多路复用,但是文件IO可以通过减少底层数据拷贝的次数来提升性能,而这个减少底层数据拷贝次数的技术,就叫做ZeroCopy。 操作系统层面的ZeroCopy 这一节,从《Zero Copy I: User-Mode Perspective》而来, ...
分类:
其他好文 时间:
2020-03-22 15:52:27
阅读次数:
84
1.在程序中一般有5中IO model 1.blocking IO 阻塞 IO 2.nonbiocking IO 非阻塞IO 3.IO multiplexing IO多路复用 4.signal driven IO 信号驱动IO(基本上不用) 5.asynchronous 异步IO 2.在进行IO操作 ...
分类:
其他好文 时间:
2020-03-21 18:24:21
阅读次数:
72
https://blog.csdn.net/jethai/article/details/52345302 应用层的负载均衡 master/worker结构:一个master进程,生成一个或多个worker子进程 nginx请求的连接方式epoll 是Linux下多路复用IO接口select/pol ...
分类:
Web程序 时间:
2020-03-16 21:56:10
阅读次数:
74
''' =>IO阻塞 :就是普通的sk.accept接收不到数据就一直等待 =>IO非阻塞 sk.setblocking(False) #设置服务器的accept, recv均为非阻塞 => IO多路复用 比如socketserver,多个客户端连接,单线程下实现并发效果,就叫多路复用。 通过一个s ...
分类:
其他好文 时间:
2020-03-16 15:15:34
阅读次数:
55
一、selectors模块简介 它的功能与linux的epoll,还是select模块,poll等类似;实现高效的I/O multiplexing, 常用于非阻塞的socket的编程中; 相当于封装好的select和epoll,适用于不同的平台,如果支持epoll的平台自动选择epoll,否则会找s ...
分类:
编程语言 时间:
2020-03-15 11:52:50
阅读次数:
70
1.地址分类及私有地址、特殊地址 2.HTTP协议: 1.Http2.0采用二进制文本而非文本格式 2.Http2.0是完全多路复用的,非有序阻塞的,只需要一个连接即可实现并行 3.使用报头压缩,降低了开销 4.Http2.0让服务器可以将响应主动推送到客户端的缓存中。server push 3.网 ...
分类:
其他好文 时间:
2020-03-14 22:03:32
阅读次数:
89