2019年11月5日
摘要: 一 协程 1. 协程: 单线程下的并发,又称微线程,纤程.协程是一种用户态的轻量级线程,即协程是由用户程序自己控制调度的. 并发真正的核心: 切换并且保持状态. 开启协程并发的执行,自己的程序把控着CPU在多个任务之间来回切换 + 保持状态. 对比操作系统控制线程的切换,用户在单线程内控制协程的切换 阅读全文
posted @ 2019-11-05 22:58 Lav3nder 阅读(108) 评论(0) 推荐(0) 编辑
摘要: 一 线程queue 多线程抢占资源,只能让其串行. 1. 互斥锁 2. 队列 二 事件event 开启两个线程,一个线程运行到中间的某个阶段,触发另一个线程执行.两个线程增加了耦合性. 阅读全文
posted @ 2019-11-05 22:54 Lav3nder 阅读(133) 评论(0) 推荐(0) 编辑
摘要: 一 阻塞,非阻塞,同步,异步 执行的角度: 阻塞: 程序运行时,遇到IO程序挂起,CPU被切走. 非阻塞: 程序没有遇到IO或程序遇到IO通过某种手段让cpu强行运行程序. 提交任务的角度: 同步: 提交一个任务,自任务开始运行直到此任务结束(可能有IO),返回一个返回值之后,再提交下一个任务. 异 阅读全文
posted @ 2019-11-05 22:51 Lav3nder 阅读(251) 评论(0) 推荐(0) 编辑
摘要: 线程池: 一个容器,这个容器限制住你开启线程的数量 以时间换空间 阅读全文
posted @ 2019-11-05 22:49 Lav3nder 阅读(109) 评论(0) 推荐(0) 编辑
摘要: 一 验证计算密集型 / IO密集型的效率 IO密集型: IO密集型: 单个进程的多线程的并发效率高. 计算密集型: 计算密集型: 多进程的并发并行效率高. 二 多线程实现socket通信 服务器端: 在计算机允许范围内,开启的线程进程数量越多越好 阅读全文
posted @ 2019-11-05 22:47 Lav3nder 阅读(410) 评论(0) 推荐(0) 编辑
摘要: 一 守护线程 守护线程 等待非守护子线程以及主线程结束之后,结束. 二 互斥锁 三 死锁现象与递归锁 1.死锁: 两个或两个以上的进程或线程在执行过程中,因为争夺资源而造成的一种互相等待的现象,若无外力作用,它们都将无法推进下去.此时称系统处于死锁状态或系统产生了死锁,这些永远在互相等待的进程称为死 阅读全文
posted @ 2019-11-05 22:46 Lav3nder 阅读(153) 评论(0) 推荐(0) 编辑
摘要: 一 什么是线程 线程是执行程序的最小单位,就像一条流水线工作的过程. 开启一个进程: 在内存中开启一个进程空间,然后将主进程的所有的资源数据复制一份,然后调用线程去执行代码 进程是资源单位,线程是执行单位 二 线程 VS 进程 1. 开启进程的开销非常大,比开启线程的开销大很多 2. 开启线程的速度 阅读全文
posted @ 2019-11-05 22:43 Lav3nder 阅读(207) 评论(0) 推荐(0) 编辑
摘要: 一 进程创建的两种方式 二 进程pid 三 验证进程之间的空间隔离 主进程和子进程之间是隔离的 四 进程对象join方法 join让主进程等待子进程结束之后,在执行主进程. 五 进程对象其他属性 阅读全文
posted @ 2019-11-05 22:37 Lav3nder 阅读(165) 评论(0) 推荐(0) 编辑
摘要: 一 进程 1. 程序: 一堆静态的代码文件 2. 进程: 一个正在运行的程序 (由操作系统操控调用交于CPU运行) 3. 串行: 所有的任务一个一个的完成 4. 并行: 多个CPU执行多个任务,真正的同时进行 5. 并发: 一个CPU完成多个任务,看起来像是同时进行 6. 阻塞: CPU遇到I/O就 阅读全文
posted @ 2019-11-05 22:33 Lav3nder 阅读(138) 评论(0) 推荐(0) 编辑
摘要: socketserver服务端 阅读全文
posted @ 2019-11-05 22:21 Lav3nder 阅读(117) 评论(0) 推荐(0) 编辑
摘要: 一 两种发生粘包的情况: 1. 接收方没有及时接受缓存区的包,造成多个包接收(客户端发送了一段数据,服务端只收了一小部分,服务端下次再收的时候还是从缓冲区拿上次遗留的数据,产生粘包) 2. 发送端需要等缓冲区满才发送出去,造成粘包 (发送数据时间间隔很短,数据也很小,会合到一起,造成粘包) 二 粘包 阅读全文
posted @ 2019-11-05 22:20 Lav3nder 阅读(122) 评论(0) 推荐(0) 编辑
摘要: 一 socket (套接字) 1. socket处于应用层与传输层之间,提供了一些简单的接口,避免与操作系统之间的对接,省去了相当繁琐复杂的操作. 2. socket在python中属于一个模块,通过调用模块中已经实现的方法建立两个进程之间的连接和通信。 1.1 基于TCP协议的socket通信 服 阅读全文
posted @ 2019-11-05 22:17 Lav3nder 阅读(549) 评论(0) 推荐(0) 编辑
摘要: 物理层 / 数据链路层 / 网络层 / 传输层 / 应用层(表示层/会话层) 一 物理层 物理层指的就是网线,光纤, 双绞线等物理传输介质 物理层发送的是数据(比特流) 二 数据链路层 数据链路层对数据进行分组 以太网协议:对数据进行合理的分组 一组数据构成一个数据报,又叫一帧 每一个数据报分为: 阅读全文
posted @ 2019-11-05 22:15 Lav3nder 阅读(122) 评论(0) 推荐(0) 编辑
摘要: C: client 客户端 B: browse 浏览器 S: server 服务器端 C/S架构: 基于客户端与服务端之间的通信 优点: 个性化设置, 响应速度快 缺点: 开发成本和维护成本高, 占用空间, 用户固定 B/S架构: 基于浏览器与服务器之间的通信 优点: 开发维护成本低,占用空间相对低 阅读全文
posted @ 2019-11-05 22:12 Lav3nder 阅读(174) 评论(0) 推荐(0) 编辑
摘要: 一 错误分类 1. 语法错误 2. 逻辑错误 二 异常处理 1. 什么是异常 异常之后代码就不执行了 2. 如何处理异常 1. if 判断式 2. try 语法: 3. 提高用户的体验性,增强代码的健壮性和容错性 4. 多分支 5. 万能异常: Exception 如果不关心错误信息,只是想要排除错 阅读全文
posted @ 2019-11-05 22:11 Lav3nder 阅读(85) 评论(0) 推荐(0) 编辑
摘要: 1. \__len__ 2. \__hash__ 3. \_\_str\_\_ (优先级高于\_\_repr_\_) 4. \__repr__ 用法和\__str__类似,返回值是什么样就返回什么样(原形毕露) 5. \__eq__ 6. \__call__ 7. \__del__ 析构方法,当对象 阅读全文
posted @ 2019-11-05 22:09 Lav3nder 阅读(101) 评论(0) 推荐(0) 编辑
摘要: python面向对象中的反射:通过 字符串 的形式操作对象相关的属性。 一 四种反射: 1. 对对象的反射 2. 对类的反射 3. 当前模块的反射 4. 其他模块的反射 二 判断函数和方法 1. 通过打印函数名的方式区别 2. 可以借助模块判断 3. 函数都是显性传参,方法都是隐性传参. 阅读全文
posted @ 2019-11-05 22:06 Lav3nder 阅读(145) 评论(0) 推荐(0) 编辑
摘要: 一 私有成员公有成员 公有成员: 在任何地方都能访问 私有成员: 只有在类的内部才能访问 类从加载时,只要遇到类中的私有成员,都会在私有成员前面加上_类名 二 实例方法 实例方法就是类的实例能够使用的方法 三 类方法 类方法使用装饰器 @classmethod 类方法: 一般就是通过类名去调用的方法 阅读全文
posted @ 2019-11-05 22:04 Lav3nder 阅读(331) 评论(0) 推荐(0) 编辑
摘要: 一 面向对象的三大特性: 继承 . 封装 . 多态(鸭子类型) 二 类的约束: 第一种方式: 第二种方式: 阅读全文
posted @ 2019-11-05 21:59 Lav3nder 阅读(160) 评论(0) 推荐(0) 编辑
摘要: 一 依赖关系 (主从之分) 将一个类的名字或者对象传入另一个类的方法中 二 组合关系 将一个类的对象封装到另一个类的对象的属性中 依赖与组合让类与类产生关系, 增强耦合性. 三 继承关系 继承者: 子类,派生类 被继承者: 父类, 基类, 超类 继承的优点: 1. 增加了类的耦合性(耦合性不宜多,宜 阅读全文
posted @ 2019-11-05 21:57 Lav3nder 阅读(296) 评论(0) 推荐(0) 编辑