07 2019 档案
摘要:10.4 创建表的完整语法 注意: 1、在同一张表中,字段名不能重复 2、宽度和约束条件可选,字段名和类型是必须的 3、最后一个字段后不加逗号 10.5 基本数据类型 10.51 整型类型 1、作用:id号,各种号码,年龄,等级 2、分类:tinyint int bigint 3、默认整型都是有符号
阅读全文
摘要:第十章 数据库 10.1 数据库介绍 1、数据库相关概念 数据库服务器:本质就是一个台计算机,该计算机之上安装有数据库管理软件的服务端 数据库管理系统RDBMS:本质就是一个C/S架构的套接字软件 库(文件夹)| 表(文件) 记录:抽取一个事物所有典型的特征/数据 2、数据库管理系统/软件分类: 关
阅读全文
摘要:9.16 非阻塞IO模型 cpu占用率过高 服务端: 客户端; 9.17 I/O多路复用 服务端: from socket import * import select s = socket() s.bind(('127.0.0.1',8080)) s.listen(5) s.setblocking
阅读全文
摘要:9.14 线程Event connect线程执行到event.wait()时开始等待,直到check线程执行event.set()后立即继续线程connect connect线程执行到event.wait(1)时开始等待1秒,count计数+1,如果到check线程执行event.set()前已经4
阅读全文
摘要:9.11 进程池与线程池 池子使用来限制并发的任务数目,限制我们的计算机在一个自己可承受的范围内去并发地执行任务 池子内什么时候装进程:并发的任务属于计算密集型 池子内什么时候装线程:并发的任务属于IO密集型 进程池: 线程池: 9.112 基于多线程实现并发的套接字通信(使用线程池) 服务端: f
阅读全文
摘要:9.94 守护线程与守护进程的区别 9.95 线程互斥锁 9.96 死锁现象与递归锁 mutexA=mutexB=RLock() 一个线程拿到锁,counter加1,该线程内又碰到加锁的情况,则counter继续加1,这期间所有其他线程都只能等待,等待该线程释放所有锁,即counter递减到0为止
阅读全文
摘要:9.9 线程理论 1、什么是线程 线程指的是一条流水线的工作过程 进程根本就不是一个执行单位,进程其实是一个资源单位,一个进程内自带一个线程,线程才是执行单位 2、进程VS线程 同一进程内的线程们共享该进程内资源,不同进程内的线程资源肯定是隔离的 创建线程的开销比创建进程要小的多 同一进程内的线程们
阅读全文
摘要:9.8 生产者消费者模型 该模型中包含两类重要的角色: 1、生产者:将负责造数据的任务比喻为生产者 2、消费者:接收生产者造出的数据来做进一步的处理的被比喻成消费者 实现生产者消费者模型三要素:1、生产者 2、消费者 3、队列 什么时候用该模型: 程序中出现明显的两类任何,一类任务是负责生产,另外一
阅读全文
摘要:9.5 守护进程 主进程创建守护进程 其一:守护进程会在主进程代码执行结束后就立即终止 其二:守护进程内无法再开启子进程,否则抛出异常:AssertionError: daemonic processes are not allowed to have children 注意:进程之间是互相独立的,
阅读全文
摘要:第九章并发编程 同一个程序执行多次是多个进程 9.1 开启子进程的两种方式 服务端目标: 1、不间断地提供服务 2、服务端要支持高并发+高性能 一个进程在运行过程中开启了子进程(如nginx开启多进程,os.fork,subprocess.Popen等) 父进程发起请求,操作系统创建子进程 方式一:
阅读全文
摘要:8.5 基于UDP协议的套接字通信 UDP协议:数据报协议 特点:无连接,一发对应一收,先启动哪一端都不会报错 优点:发送效率高,但有效传输的数据量最多为500bytes 缺点:不可靠:发送数据,无需确认,容易丢包 udp服务端 udp客户端 8.6 客户端与服务端操作( 基于UDP ) 服务端:
阅读全文
摘要:8.4 粘包问题 粘包问题发生的原因: 1.发送端需要等缓冲区满才发送出去,造成粘包(发送数据时间间隔很短,数据了很小,会合到一起,产生粘包),这样接收端,就难于分辨出来了,必须提供科学的拆包机制。 即面向流的通信是无消息保护边界的。 2.接收方不及时接收缓冲区的包,造成多个包接收(客户端发送了一段
阅读全文
摘要:实现gevent模块 服务端: from socket import * import time s = socket() s.bind(('127.0.0.1',8080)) s.listen(5) s.setblocking(False) r_list=[] w_list=[] while Tr
阅读全文
摘要:第八章网络编程 8.1 基于TCP协议的套接字通信 服务端套接字函数 客户端套接字函数 公共用途的套接字函数 面向锁的套接字方法 面向文件的套接字的函数 8.2 客户端与服务端操作( 基于TCP ) tcp是基于链接的,必须先启动服务端,然后再启动客户端去链接服务端 socket是位于应用层与传输层
阅读全文
摘要:7.15 异常处理 1、什么是异常 异常是错误发生的信号,程序一旦出错,如果程序中还没有相应的处理机制,那么该错误就会产生一个异常抛出来,程序的运行也随之终止 2、一个异常分为三部分: 异常的追踪信息 异常的类型 异常的值 3、异常的分类: 语法异常,逻辑上的异常 语法: 7.151 try....
阅读全文
摘要:7.13 元类 元类:类的类就是元类,我们用class定义的类来产生我们自己的对象的,内置元类type是用来专门产生class定义的类 7.131 用内置的元类type,来实例化得到我们的类 7.132 __call__方法 在调用对象时自动触发__call__的执行 7.133 自定义元类来控制类
阅读全文
摘要:7.10 反射 下述四个函数是专门用来操作类与对象属性的。通过字符串来操作类与对象的属性,这种操作称为反射 hasattr: getattr: setattr: delattr: 反射的应用: 7.11__str__方法 7.12 __del__方法
阅读全文
摘要:7.6 多态性 1 什么是多态性 多态指的是同一种事物多种形态,在程序中用继承可以表现出多态。多态性:可以在不用考虑对象具体类型的前提下而直接使用对象下的方法 2、为什要用多态 用基类创建一套统一的规则,强制子类去遵循(使用抽象类实现),可以在不考虑对象具体的类的情况下直接参考基类的标准使用对象 i
阅读全文
摘要:7.4 组合 解决类与类之间代码冗余问题有两种解决方案: 1、继承:描述的是类与类之间,什么是什么的关系 2、组合:描述的是类与类之间的关系,是一种什么有什么的关系 一个类产生的对象,该对象拥有一个属性,这个属性的值是来自于另外一个类的对象 class Date: def __init__(self
阅读全文
摘要:7.2 继承与派生 7.21继承 1、什么是继承? 继承是一种新建类的的方式,在python中支持一个子类继承多个父类。新建的类称为子类或者派生类,父类又可以称为基类或者超类,子类会”遗传“父类的属性。 2、为什么要用继承 减少代码冗余 3、继承是类与类之间的关系,寻找这种关系需要先抽象再继承 7.
阅读全文
摘要:Django版log日志: settings.py: # 日志配置 BASE_LOG_DIR = os.path.join(BASE_DIR, "log") LOGGING = { 'version': 1, # 禁用已经存在的logger实例 'disable_existing_loggers':
阅读全文

浙公网安备 33010602011771号