04 2018 档案
摘要:一、GIL:全局解释器锁 1 、GIL:全局解释器锁 GIL本质就是一把互斥锁,是夹在解释器身上的, 同一个进程内的所有线程都需要先抢到GIL锁,才能执行解释器代码 2、GIL的优缺点: 优点: 保证Cpython解释器内存管理的线程安全 缺点:同一进程内所有的线程同一时刻只能有一个执行,也就说Cp
阅读全文
摘要:一、进程队列补充-创建进程队列的另一个类JoinableQueue JoinableQueue同样通过multiprocessing使用。 创建队列的另外一个类: JoinableQueue([maxsize]):这就像是一个Queue对象,但队列允许项目的使用者通知生成者项目已经被成功处理。通知进
阅读全文
摘要:一、守护进程 二、互斥锁 互斥锁:强调:必须是lock.acquire()一次,然后 lock.release()释放一次,才能继续lock.acquire(),不能连续的lock.acquire() 互斥锁vs join的区别: 大前提: 二者的原理都是一样,都是将并发变成串行,从而保证有序 区别
阅读全文
摘要:一、进程 并发的本质: cpu切换进程+保存状态 一个程序执行了多次,就启动了多个进程 进程与进程之间的内存空间是隔离开的 二、在一个进程中开启子进程 新进程的创建都是由一个已经存在的进程执行了一个用于创建进程的系统调用而创建的: 1. 在UNIX中该系统调用是:fork,fork会创建一个与父进程
阅读全文
摘要:一、套接字UDP udp是无链接的,先启动哪一端都不会报错 UDP(user datagram protocol,用户数据报协议)是无连接的,面向消息的,提供高效率服务。不会使用块的合并优化算法,, 由于UDP支持的是一对多的模式,所以接收端的skbuff(套接字缓冲区)采用了链式结构来记录每一个到
阅读全文
摘要:一、套接字工作流程 一个生活中的场景。你要打电话给一个朋友,先拨号,朋友听到电话铃声后提起电话,这时你和你的朋友就建立起了连接,就可以讲话了。等交流结束,挂断电话结束此次交谈。 生活中的场景就解释了这工作原理。 先从服务器端说起。服务器端先初始化Socket,然后与端口绑定(bind),对端口进行监
阅读全文
摘要:服务端: 客户端 TCP 三次握手,四次分手。
阅读全文
摘要:一、 异常 1、什么是异常 异常是错误发生的信号,程序一旦出错,如果程序中还没有相应的处理机制 那么该错误就会产生一个异常抛出来,程序的运行也随之终止 2、一个异常分为三部分: 1、异常的追踪信息 2、异常的类型 3、异常的值 3、异常的分类: 1、语法异常: 这类异常应该在程序执行前就改正 pri
阅读全文
摘要:一、反射 下述四个函数是专门用来操作类与对象属性的,如何操作? 通过字符串来操作类与对象的属性,这种操作称为反射 class Foo: x=1 def __init__(self,y): self.y=y def __getattr__(self, item): print(' > from get
阅读全文
摘要:一、封装之property @property把一个函数伪装成一个数据类型 @伪装成数据的函数名.setter 控制该数据的修改,修改该数据时触发 @伪装成数据的函数名.delect 控制该数据的删除,删除该数据时触发 二、多态 1、 什么是多态 多态指的是同一种事物多种形态 2、为什要用多态 用基
阅读全文
摘要:一、组合 解决类与类之间代码冗余问题有两种解决方案:1、继承 2、组合 1、继承:描述的是类与类之间,什么是什么的关系 2、组合:描述的是类与类之间的关系,是一种什么有什么关系 一个类产生的对象,该对象拥有一个属性,这个属性的值是来自于另外一个类的对象 二、封装 1、什么是封装 装就是把一堆属性存起
阅读全文
摘要:一、继承 继承是一种新建类的方式,在python中支持一个子类继承多个父类 新建类称为子类或派生类 父类可以称之为基类或者超类 子类会遗传父类的属性 2. 为什么继承 减少代码冗余 3. 定义方式: 4. 继承,调用父类方法以及self 二、 派生 子类定义自己新的属性,如果与父类同名,以子类自己的
阅读全文
摘要:1.类的定义 在定义类的时候,类内的代码就已经执行了 在定义类时需要在类内定义一个叫__init__的函数,该函数在调用时才会执行 self是位置参数,用于在调用函数时接受传入的第一个参数,该参数为调用此方法的object本身 调用类时发生了哪些事: 1、首先会产生一个空对象stu12、会自动触发类
阅读全文
摘要:1、hashlib 1、什么叫hash:hash是一种算法,该算法接受传入的内容,经过运算得到一串hash值 2、hash值的特点是:2.1 只要传入的内容一样,得到的hash值必然一样 >要用明文传输密码文件完整性校验2.2 不能由hash值返解成内容 》把密码做成hash值,不应该在网络传输明文
阅读全文
摘要:1、XML模块 xml是实现不同语言或程序之间进行数据交换的协议,跟json差不多,但json使用起来更简单,不过,古时候,在json还没诞生的黑暗年代,大家只能选择用xml呀,至今很多传统公司如金融行业的很多系统的接口还主要是xml。 xml的格式,就是通过<>节点来区别数据结构的 xml协议在各
阅读全文
摘要:一、包 注意: 3、包的使用之from ... import ... 需要注意的是from后import导入的模块,必须是明确的一个不能带点,否则会有语法错误,如:from a import b.c是错误语法 1、在导入时带点的,点的左边的必须是一个包,这是导入包的特有语法 2、包内模块之间的直接导
阅读全文
摘要:1、序列化和反序列化 我们把对象(变量)从内存中变成可存储或传输的过程称之为序列化,在Python中叫pickling。 反过来,把变量内容从序列化的对象重新读到内存里称之为反序列化,即unpickling。 为什么要保持序列化? 1、持久化状态 2、跨平台数据交互 各种语言之间,实现数据相互转换
阅读全文
摘要:1、 列表生成器 若将 [ ] 换成 ( ),则为生成器表达式,结果是一个迭代器 2、 模块 模块就是一系列功能的集合体,一个.py文件就是一个模块 运行一个python文件,当首次执行到模块导入位置时: 先创造一个被导入模块的名称空间 执行该模块对应文件,将产生的名字放于该命名空间 在当前执行文件
阅读全文
摘要:昨天内容回顾: 1、迭代器 可迭代对象: 只要内置有__iter__方法的都是可迭代的对象 既有__iter__,又有__next__方法 调用__iter__方法==》得到内置的迭代器对象 调用__next__方法==》得到下一个值 for 循环机制 先调用对象的__iter__方法得到迭代器,再
阅读全文

浙公网安备 33010602011771号