随笔分类 - 网络编程、并发编程
GIL,IO模型,BIO,NIO,IO多路复用,AIO
摘要:[TOC] GIL 只针对cpython解释器,只适用于cpython解释器,(pypy:没有gil锁)python出的时候,是单核cup,开启线程,垃圾回收,让其他线程停掉,只走垃圾回收线程,不会有并发问题 同一时刻,实际上只有一条线程在执行,有一把全局锁,只要线程执行,必须获得这把锁,才能执行
阅读全文
HTTP0.9、HTTP1.0、HTTP1.1、HTTP2的区别
摘要:[TOC] HTTP0.9(1991) 该版本极其简单,只有一个命令 GET GET /index.html 上面命令表示,TCP 连接(connection)建立后,客户端向服务器请求(request)网页index.html。 协议规定, 服务器只能回应 HTML 格式的字符串 ,不能回应别的格
阅读全文
HTTP协议介绍
摘要:[TOC] HTTP协议介绍 超文本传输协议 规定了浏览器与服务器之间数据传输的格式 1、四大特性: 1 基于请求响应 (一次请求对应一次响应) 2 基于TCP/IP 作用于 应用层 之上的协议 3 无状态保存 (不保留客户端的状态,cookie,session,token) 4 无链接,发送一次请
阅读全文
线程池
摘要:线程池 为什么要用线程池 线程池是 预先创建线程的一种技术 。线程池在还没有任务到来之前,创建一定数量的线程,放入空闲队列中。这些线程都是处于睡眠状态,即均为启动,不消耗CPU,而只是占用较小的内存空间 系统启动一个新线程的成本是比较高的,因为它涉及与操作系统的交互。在这种情形下,使用线程池可以很好
阅读全文
协程
摘要:[TOC] 一 什么是协程? 进程:资源单位 线程:执行单位 协程:单线程下实现并 在IO密集型的情况下,使用协程能提高最高效率 注意:协程不是任何单位,只是程序员YY出来的东西 手动实现 “遇到IO切换 + 保存状态“ 去欺骗操作系统,让操作系统误以为没有IO操作,将CPU的执行权限给
阅读全文
GIL全局解释锁
摘要:[TOC] 一 介绍 官方定义: 在Cpython解释器中,同一个进程下开启的多线程,同一时刻只能有一个线程执行,无法利用多核优势 GIL 的功能是:在 CPython 解释器中执行的每一个 Python 线程,都会先锁住自己,以阻止别的线程执行。 首先需要明确的一点是 并不是Python的特性,它
阅读全文
线程
摘要:[TOC] 一、什么是线程 进程只是用来把资源集中到一起(进程只是一个资源单位,或者说资源集合) 而线程才是cpu上的执行单位 多线程(即多个控制线程)的概念是,在一个进程中存在多个控制线程,多个控制线程共享该进程的地址空间 二、为什么要用多线程 线程的创建开销小 进程之间是竞争关系,线程之间是协作
阅读全文
进程
摘要:[TOC] 一 介绍 1、什么是进程? 进程是一个资源单位 2、进程与程序: 程序:一对代码文件 进程: 执行代码的过程,称之为进程 二 创建,启动和管理进程 Process 类是 multiprocessing 模块的子进程类,用于创建、启动和管理子进程。 Process 和线程模块 treadi
阅读全文
并发编程概念
摘要:[TOC] 1、操作系统发展史 研究并发编程其实就是研究操作系统的底层原理,所以我们需要从操作系统的发展史开始学起 手工操作—— 穿孔卡片 1946年第一台计算机诞生 –20世纪50年代中期,计算机工作还在采用手工操作方式。此时还没有操作系统的概念。 程序员将对应于程序和数据的已穿孔的纸带(或卡片)
阅读全文
Socket
摘要:Socket socket概念 Socket是应用层与TCP/IP协议族通信的中间软件抽象层,它是一组接口。在设计模式中,Socket其实就是一个门面模式,它把复杂的TCP/IP协议族隐藏在Socket接口后面,对用户来说,一组简单的接口就是全部,让Socket去组织数据,以符合指定的协议。 服务端
阅读全文
TCP/UDP
摘要:[TOC] TCP协议 当应用程序想通过TCP协议实现远程通信时,彼此之间必须先先建立双向通信通道,基于该双向通道实现数据的远程交互,该双向通道直到任意一方主动断开才会失效 三次握手 建立双向通道的过程称之为三次握手,建立通道的发起者可以是客户端也可以是服务端,下面我们就以客户端先主动发起为例 客户
阅读全文
网络编程基础
摘要:[TOC] 一、软件开发的架构 我们了解的涉及到两个程序之间通讯的应用大致可以分为两种: 第一种是应用类:qq、微信、网盘、优酷这一类是属于需要安装的桌面应用 第二种是web类:比如百度、知乎、博客园等使用浏览器访问就可以直接使用的应用 这些应用的本质其实都是两个程序之间的通讯。而这两个分类又对应了
阅读全文
gevent.queue
摘要:[TOC] Gevent gevent基础之阻塞,非阻塞 1.gevent中一个很大的改进就是将阻塞IO改为非阻塞IO; 阻塞调用是指调用结果返回之前,当前线程会被挂起。函数只有在得到结果之后才会返回 非阻塞指在不能立刻得到结果之前,该函数不会阻塞当前线程,而会立刻返回 同步,异步概念 1.同步就是
阅读全文