06 2019 档案
摘要:主要功能 : 【1】 接收客户端(浏览器)请求 【2】 解析客户端发送的请求 【3】 根据请求组织数据内容 【4】 将数据内容形参http响应格式返回给浏览器 升级点 : 【1】 采用IO并发,可以满足多个客户端同时发起请求情况 【2】 做基本的请求解析,根据具体请求返回具体内容,同时满足客户端简单
阅读全文
摘要:基础概念 1.定义:纤程,微线程。是为非抢占式多任务产生子程序的计算机组件。协程允许不同入口点在不同位置暂停或开始,简单来说,协程就是可以暂停执行的函数。 2.协程原理 : 记录一个函数的上下文栈帧,协程调度切换时会将记录的上下文保存,在切换回来时进行调取,恢复原有的执行内容,以便从上一次执行位置继
阅读全文
摘要:IO 分类 IO分类:阻塞IO ,非阻塞IO,IO多路复用,异步IO等 阻塞IO 1.定义:在执行IO操作时如果执行条件不满足则阻塞。阻塞IO是IO的默认形态。 2.效率:阻塞IO是效率很低的一种IO。但是由于逻辑简单所以是默认IO行为。 3.阻塞情况: 因为某种执行条件没有满足造成的函数阻塞e.g
阅读全文
摘要:基于fork和Process的多进程网络并发模型 实现步骤: 创建监听套接字 等待接收客户端请求 客户端连接创建新的进程处理客户端请求 原进程继续等待其他客户端连接 如果客户端退出,则销毁对应的进程 1 """ 2 fork_server 基于fork搭建基础网络并发模型 3 重点代码 4 5 思路
阅读全文
摘要:常见模型分类 1.循环服务器模型 :循环接收客户端请求,处理请求。同一时刻只能处理一个请求,处理完毕后再处理下一个。 优点:实现简单,占用资源少 缺点:无法同时处理多个客户端请求 适用情况:处理的任务可以很快完成,客户端无需长期占用服务端程序。udp比tcp更适合循环。 2.IO并发模型:利用IO多
阅读全文
摘要:进程线程的区别联系 区别联系 使用场景 任务场景:如果是相对独立的任务模块,可能使用多进程,如果是多个分支共同形成一个整体任务可能用多线程 项目结构:多种编程语言实现不同任务模块,可能是多进程,或者前后端分离应该各自为一个进程。 难以程度:通信难度,数据处理的复杂度来判断用进程间通信还是同步互斥方法
阅读全文
摘要:Python线路的GIL问题(全局解释器锁) 什么是GIL :由于python解释器设计中加入了解释器锁,导致python解释器同一时刻只能解释执行一个线程,大大降低了线程的执行效率。 导致后果: 因为遇到阻塞时线程会主动让出解释器,去解释其他线程。所以python多线程在执行多阻塞高延迟IO时可以
阅读全文
摘要:同步互斥 线程间通信方法 1.通信方法:线程间使用全局变量进行通信 2.共享资源争夺 共享资源:多个进程或者线程都可以操作的资源称为共享资源。对共享资源的操作代码段称为临界区。 影响 : 对共享资源的无序操作可能会带来数据的混乱,或者操作错误。此时往往需要同步互斥机制协调操作顺序。 3.同步互斥机制
阅读全文
摘要:自定义线程类 1.创建步骤【1】 继承Thread类【2】 重写__init__方法添加自己的属性,使用super加载父类属性【3】 重写run方法 2.使用方法【1】 实例化对象【2】 调用start自动执行run方法【3】 调用join回收线程 1 from threading import T
阅读全文
摘要:线程对象属性 t.name 线程名称 t.setName() 设置线程名称 t.getName() 获取线程名称 t.is_alive() 查看线程是否在生命周期 t.daemon 设置主线程和分支线程的退出关系 t.setDaemon() 设置daemon属性值 t.isDaemon() 查看da
阅读全文
摘要:线程编程(Thread) 线程基本概念 1.什么是线程【1】 线程被称为轻量级的进程【2】 线程也可以使用计算机多核资源,是多任务编程方式【3】 线程是系统分配内核的最小单元【4】 线程可以理解为进程的分支任务 2.线程特征【1】 一个进程中可以包含多个线程【2】 线程也是一个运行行为,消耗计算机资
阅读全文
摘要:进程间通信(IPC) 1.必要性: 进程间空间独立,资源不共享,此时在需要进程间数据传输时就需要特定的手段进行数据通信。 2.常用进程间通信方法:管道通信、消息队列、共享内存、信号量 管道通信(Pipe) 1.通信原理:在内存中开辟管道空间,生成管道操作对象,多个进程使用同一个管道对象进行读写即可实
阅读全文
摘要:进程池实现 1.必要性【1】 进程的创建和销毁过程消耗的资源较多【2】 当任务量众多,每个任务在很短时间内完成时,需要频繁的创建和销毁进程。此时对计算机压力较大【3】 进程池技术很好的解决了以上问题。 2.原理 创建一定数量的进程来处理事件,事件处理完进 程不退出而是继续处理其他事件,直到所有事件全
阅读全文
摘要:multiprocessing 模块创建进程 进程创建方法 1.流程特点【1】 将需要子进程执行的事件封装为函数【2】 通过模块的Process类创建进程对象,关联函数【3】 可以通过进程对象设置进程信息及属性【4】 通过进程对象调用start启动进程【5】 通过进程对象调用join回收进程 2.基
阅读全文
摘要:基于fork的多进程编程 fork使用 pid = os.fork()功能: 创建新的进程返回值:整数,如果创建进程失败返回一个负数,如果成功则在原有进程中返回新进程的PID,在新进程中返回0 注意: 子进程会复制父进程全部内存空间,从fork下一句开始执行。 父子进程各自独立运行,运行顺序不一定。
阅读全文
摘要:多任务编程 1.意义: 充分利用计算机多核资源,提高程序的运行效率。 2.实现方案 :多进程 , 多线程 3.并行与并发 并发 : 同时处理多个任务,内核在任务间不断的切换达到好像多个任务被同时执行的效果,实际每个时刻只有一个任务占有内核。 并行 : 多个任务利用计算机多核资源在同时执行,此时多个任
阅读全文
摘要:struct模块的使用 1.原理: 将一组简单数据进行打包,转换为bytes格式发送。或者将一组bytes格式数据,进行解析。 2.接口使用 Struct(fmt) 功能: 生成结构化对象 参数:fmt 定制的数据结构 st.pack(v1,v2,v3....) 功能: 将一组数据按照指定格式打包转
阅读全文
摘要:HTTP协议 (超文本传输协议) 1.用途 : 网页获取,数据的传输 2.特点: 应用层协议,传输层使用tcp传输 简单,灵活,很多语言都有HTTP专门接口 无状态,协议不记录传输内容 http1.1 支持持久连接,丰富了请求类型 3.网页请求过程 HTTP请求(request) 1.请求行 : 具
阅读全文
摘要:广播定义 : 一端发送多点接收 广播地址 : 每个网络的最大地址为发送广播的地址,向该地址发送,则网段内所有主机都能接收。 """ 创建udp套接字 设置套接字可以接收广播 选择接收端口 """ from socket import * s=socket(AF_INET,SOCK_DGRAM) #让
阅读全文
摘要:tcp套接字和udp套接字编程区别 1.流式套接字是以字节流方式传输数据,数据报套接字以数据报形式传输 2.tcp套接字会有粘包,udp套接字有消息边界不会粘包 3.tcp套接字保证消息的完整性,udp套接字则不能 4.tcp套接字依赖listen accept建立连接才能收发消息,udp套接字则不
阅读全文
摘要:socket套接字属性 【1】 sockfd.type 套接字类型 【2】 sockfd.family 套接字地址类型 【3】 sockfd.getsockname() 获取套接字绑定地址 【4】 sockfd.fileno() 获取套接字的文件描述符 【5】 sockfd.getpeername(
阅读全文
摘要:套接字介绍 1.套接字 : 实现网络编程进行数据传输的一种技术手段 2.Python实现套接字编程:import socket 3.套接字分类 流式套接字(SOCK_STREAM): 以字节流方式传输数据,实现tcp网络传输方案。(面向连接--tcp协议--可靠的--流式套接字) 数据报套接字(SO
阅读全文
摘要:套接字介绍 1.套接字 : 实现网络编程进行数据传输的一种技术手段 2.Python实现套接字编程:import socket 3.套接字分类 流式套接字(SOCK_STREAM): 以字节流方式传输数据,实现tcp网络传输方案。(面向连接--tcp协议--可靠的--流式套接字) 数据报套接字(SO
阅读全文
摘要:网络编程基础 计算机网络功能主要包括实现资源共享,实现数据信息的快速传递。 OSI七层模型 制定组织: ISO(国际标准化组织) 作用:使网络通信工作流程标准化 应用层 : 提供用户服务,具体功能有应用程序实现 表示层 : 数据的压缩优化加密 会话层 : 建立用户级的连接,选择适当的传输服务 传输层
阅读全文
摘要:IO 1.定义:在内存中存在数据交换的操作认为是IO操作,比如和终端交互 ,和磁盘交互,和网络交互等 2.程序分类: IO密集型程序:在程序执行中有大量IO操作,而cpu运算较少。消耗cpu较少,耗时长。 计算密集型程序:程序运行中计算较多,IO操作相对较少。cpu消耗多,执行速度快,几乎没有阻塞。
阅读全文
摘要:排序和查找 排序(Sort)是将无序的记录序列(或称文件)调整成有序的序列。 常见排序方法: 冒泡排序 冒泡排序是一种简单的排序算法。它重复地走访过要排序的数列,一次比较两个元素,如果他们的顺序错误就把他们交换过来。走访数列的工作是重复地进行直到没有再需要交换,也就是说该数列已经排序完成。 1 #
阅读全文
摘要:基础概念 1.定义:树(Tree)是n(n≥0)个节点的有限集合T,它满足两个条件:有且仅有一个特定的称为根(Root)的节点;其余的节点可以分为m(m≥0)个互不相交的有限集合T1、T2、……、Tm,其中每一个集合又是一棵树,并称为其根的子树(Subtree)。 2.基本概念 一个节点的子树的个数
阅读全文
摘要:队列 1.定义:队列是限制在两端进行插入操作和删除操作的线性表,允许进行存入操作的一端称为“队尾”,允许进行删除操作的一端称为“队头”。 2.特点: 队列只能在队头和队尾进行数据操作 栈模型具有先进先出或者叫做后进后出的规律 3.队列的代码实现 队列的操作有入队,出队,判断队列的空满等操作。 1 "
阅读全文
摘要:栈 1.定义:栈是限制在一端进行插入操作和删除操作的线性表(俗称堆栈),允许进行操作的一端称为“栈顶”,另一固定端称为“栈底”,当栈中没有元素时称为“空栈”。 2.特点: 栈只能在一端进行数据操作 栈模型具有后进先出或者叫做后进先出的规律 3.栈的代码实现 栈的操作有入栈(压栈),出栈(弹栈),判断
阅读全文
摘要:索引目录 一、Python基础知识 1.Python简介 2.Python基本数据运算 3.Python语句 4.Python容器类型的通用操作 5.Python容器类型 ‘srt字符串’ 6.Python容器类型 [list列表] 7.Python列表切片以及浅拷贝和深拷贝的区别 8.Python
阅读全文
摘要:定义 线性表的定义是描述其逻辑结构,而通常会在线性表上进行的查找、插入、删除等操作。 线性表作为一种基本的数据结构类型,在计算机存储器中的映象(或表示)一般有两种形式,一种是顺序映象,一种是链式映象。 线性表的顺序存储 1.定义:若将线性表L=(a0,a1, ……,an-1)中的各元素依次存储于计算
阅读全文
摘要:数据结构基本概念 数据结构: 程序 = 数据结构 + 算法 1.数据:即信息的载体,是能够输入到计算机中并且能被计算机识别、存储和处理的符号总称。 2.数据元素:是数据的基本单位,又称之为记录(Record)。一般,数据元素由若干基本项(或称字段、域、属性)组成。 3.数据结构:指的是数据元素及数据
阅读全文