参考资料:《Java并发编程的艺术》 用于快速回忆,详情请看书籍原文 1. 一些概念 1.1 上下文切换 定义:任务从保存到再加载的过程 减少上下文切换 无锁并发编程:将临界资源划分给不同线程各自访问 CAS算法 最少线程原则:不创建无用的线程 协程:在单线程里面实现多任务调度(IO多路复用) 1. ...
分类:
编程语言 时间:
2020-02-13 22:46:11
阅读次数:
100
一.IO多路复用 前面用协程实现IO阻塞自动切换,‘如何去实现事件驱动的情况下IO的自动阻塞的的切换,这个学名叫IO多路复用。 比如socketsew64hmay'y'yver,多个客户端连接,单线程下实现并发效果,这就叫多路复用. 同步io和异步IO,阻塞IO和非阻塞IO的区别? 二.IO模型的前 ...
分类:
其他好文 时间:
2020-02-12 13:03:22
阅读次数:
69
每周完成一个 ARTS:Algorithm 来源 LeetCode 11. Container With Most WaterReview 阅读了关于 Go 语言的一篇文章Tip 总结 Unix 套接字编程的知识Share 分享 一个分类详细的 Unix / Linux 命令网站一 Algorith... ...
分类:
其他好文 时间:
2020-02-08 19:43:41
阅读次数:
139
原文:redis单线程如何支持高并发 redis支持高并发的原因: redis是基于内存的,内存读写很快 redis的是单线程的,省去了很多多线程上下文切换的时间 redis虽然是单线程,但采用了IO多路复用技术,非阻塞IO,即多个网络连接复用一个线程,保证多连接的同时增加系统的吞吐量 redis的... ...
分类:
编程语言 时间:
2020-02-08 15:49:36
阅读次数:
78
原文:Redis线程模型 Redis基于Reactor模式开发了自己的网络事件处理器。被称为文件事件处理器,由于这个处理器是单线程的所以决定了redis是单线程的。 Redis线程模型的组成: 多个socket IO多路复用程序 scocket队列 文件事件分配器 事件处理器(连接应答处理器,命令请... ...
分类:
编程语言 时间:
2020-02-08 15:40:02
阅读次数:
86
Redis基于Reactor模式开发了自己的网络事件处理器。被称为文件事件处理器,由于这个处理器是单线程的所以决定了redis是单线程的。 Redis线程模型的组成: 多个socket IO多路复用程序 scocket队列 文件事件分配器 事件处理器(连接应答处理器,命令请求处理器,命令回复处理器) ...
分类:
编程语言 时间:
2020-02-08 15:21:43
阅读次数:
66
redis支持高并发的原因: redis是基于内存的,内存读写很快 redis的是单线程的,省去了很多多线程上下文切换的时间 redis虽然是单线程,但采用了IO多路复用技术,非阻塞IO,即多个网络连接复用一个线程,保证多连接的同时增加系统的吞吐量 redis的数据结构,采用hash,读取速度比较快 ...
分类:
编程语言 时间:
2020-02-08 13:28:35
阅读次数:
70
华清直播:http://www.makeru.com.cn/live/5413_1937.html 深度理解select、poll和epoll Linux IO模式及 select、poll、epoll详解 ...
分类:
其他好文 时间:
2020-01-28 14:16:32
阅读次数:
66
const和指针const int * a // a是一个指针,指向一个const int类型的内存, a本身可以修改指向别的变量,但是a所指向的内存中的数据不能修改。int const * a // 和第一种相同int * const a // const修饰的是a, a是一个int *型的变量。... ...
分类:
其他好文 时间:
2020-01-23 18:19:56
阅读次数:
109
总结: 1. socket默认是否是阻塞的?阻塞体现在哪里? 2. 如何让socket编程非阻塞? client.setblocking(False) #非阻塞 3. IO多路复用作用? 检测多个socket是否发生变化。 操作系统检测socket是否发生变化,有三种模式: select:最多102 ...
分类:
编程语言 时间:
2020-01-22 16:27:17
阅读次数:
73