实现gevent模块 服务端: from socket import * import time s = socket() s.bind(('127.0.0.1',8080)) s.listen(5) s.setblocking(False) r_list=[] w_list=[] while Tr ...
分类:
编程语言 时间:
2019-07-14 18:03:09
阅读次数:
105
1.Netty 是什么? Netty 是一款基于 NIO(Nonblocking I/O,非阻塞IO)开发的网络通信框架,对比于 BIO(Blocking I/O,阻塞IO),他的并发性能得到了很大提高。难能可贵的是,在保证快速和易用性的同时,并没有丧失可维护性和性能等优势。 2.Netty 的特点 ...
分类:
Web程序 时间:
2019-06-23 20:57:17
阅读次数:
115
[TOC] 第一章 计算机基础 1. 计算机概览 1.1 计算机硬件 计算机的主要组成部分时主板、CPU、硬盘、内存及一些外设设备组成。 1.2 常见的操作系统 ? 操作系统(OS),是最接近物理硬件的系统软件。主要用来协调、控制、分配计算机硬件资源,使计算机各组件可以发挥最优性能。 windows ...
分类:
编程语言 时间:
2019-06-06 22:50:46
阅读次数:
132
IO模型Redis是单线程的,为什么支持高并发?node.js,nginx也是单线程的。除了Redis数据是存在内存里面的,所有操作都是内存级别的,还有其它原因导致它有如此高的性能?多路复用(事件轮训)多路复用是一种IO模型,那系统中还有哪些IO模式?一起来看看吧常见的IO模型同步阻塞IO(BlockingIO)传统IO模型,请求server,如果server没有返回,client会一直等待,直到
分类:
其他好文 时间:
2019-05-28 18:42:03
阅读次数:
139
ET模式下每次write或read需要循环write或read直到返回EAGAIN错误。以读操作为例,这是因为ET模式只在socket描述符状态发生变化时才触发事件,如果不一次把socket内核缓冲区的数据读完,会导致socket内核缓冲区中即使还有一部分数据,该socket的可读事件也不会被触发根 ...
分类:
其他好文 时间:
2019-05-19 12:28:08
阅读次数:
369
Redis的高并发和快速原因 1.redis是基于内存的,内存的读写速度非常快; 2.redis是单线程的,省去了很多上下文切换线程的时间; 3.redis使用多路复用技术,可以处理并发的连接。非阻塞IO 内部实现采用epoll,采用了epoll+自己实现的简单的事件框架。epoll中的读、写、关闭 ...
分类:
编程语言 时间:
2019-05-13 12:43:57
阅读次数:
97
Spring Cloud Gateway入坑记 前提 最近在做老系统的重构,重构完成后新系统中需要引入一个网关服务,作为新系统和老系统接口的适配和代理。之前,很多网关应用使用的是 基于 版本实现的那套方案,但是鉴于 已经停止迭代,它使用的是比较传统的阻塞(B)IO + 多线程的实现方案,其实性能不太 ...
分类:
编程语言 时间:
2019-05-04 11:34:00
阅读次数:
195
Node.js 异步编程的直接体现就是回调。 异步编程依托于回调来实现,但不能说使用了回调后程序就异步化了。 回调函数在完成任务后就会被调用,Node 使用了大量的回调函数,Node 所有 API 都支持回调函数。 例如,我们可以一边读取文件,一边执行其他命令,在文件读取完成后,我们将文件内容作为回 ...
分类:
Web程序 时间:
2019-05-03 22:24:08
阅读次数:
196
SpringFramework5.0又新增加了一个功能Webflux(响应式编程),是一个典型非阻塞异步的框架。我们知道servlet3.0实现异步(AsyncContext),servlet3.1又提出了非阻塞IO。对此我一直有两点疑惑:1.tomcat8底层已经默认使用NIO了,不是已经是IO非 ...
分类:
其他好文 时间:
2019-04-27 21:22:12
阅读次数:
196
网络编程里常听到阻塞IO、非阻塞IO、同步IO、异步IO等概念,总听别人装13不如自己下来钻研一下。不过,搞清楚这些概念之前,还得先回顾一些基础的概念。 1 基础知识回顾 注意:咱们下面说的都是Linux环境下,跟Windows不一样哈~~~ 1.1 用户空间和内核空间 现在操作系统都采用虚拟寻址, ...
分类:
其他好文 时间:
2019-04-19 01:22:46
阅读次数:
136