08 2019 档案

摘要:day38 线程queue 多线程抢占资源 只能让其串行——用到互斥锁 线程queue 队列——先进先出(FIFO) 堆栈——先进后出(LIFO) 优先级队列——自己设置优先级 事件event 开启两个线程,一个线程运行到中间的某个阶段,触发另个线程执行,两个线程增加了耦合性 版本一 版本二——事件 阅读全文
posted @ 2019-08-29 21:49 SupSnake 阅读(170) 评论(0) 推荐(0)
摘要:day37 阻塞、非阻塞、同步、异步 进程运行的三个状态:运行、就绪、阻塞 执行的角度 阻塞:程序运行时,遇到了IO,程序挂起,CPU被切走 非阻塞:程序没有遇到IO,程序遇到IO但是我通过某种手段,让CPU强行运行我的程序 提交任务的角度 同步:提交一个任务,自任务开始运行直到此任务结束(可能有I 阅读全文
posted @ 2019-08-29 21:45 SupSnake 阅读(128) 评论(0) 推荐(0)
摘要:day36 死锁现象与递归锁 死锁现象 是指两个或两个以上的进程或线程在执行过程中,因争夺资源而造成的一种互相等待的现象,若无外力作用,它们都将无法推进下去。此时称系统处于死锁状态或系统产生了死锁,这些永远在互相等待的进程称为死锁进程,如下就是死锁 递归锁 递归锁可以解决死锁现象,业务需要多个锁时, 阅读全文
posted @ 2019-08-29 21:42 SupSnake 阅读(149) 评论(0) 推荐(0)
摘要:day35 进程:生产者消费者模型 编程思想,模型,设计模式,理论等等,都是交给你一种编程的方法,以后你遇到类似的情况,套用即可 生产者消费者模型的三要素 生产者:产生数据的 消费者:接收数据做进一步处理的 容器:盆(队列) 队列容器起到什么作用? 起到缓冲的作用,平衡生产力与消费力,解耦 线程的理 阅读全文
posted @ 2019-08-29 21:36 SupSnake 阅读(106) 评论(0) 推荐(0)
摘要:day34 僵尸进程和孤儿进程 基于unix环境(linux,macOS) 主进程需要等待子进程结束之后,主进程才结束 主进程时刻监测子进程的运行状态,当子进程结束之后,一段时间之内,将子进程进行回收 为什么主进程不在子进程结束后马上对其回收呢? 主进程与子进程是异步关系,主进程无法马上捕获进程什么 阅读全文
posted @ 2019-08-29 21:33 SupSnake 阅读(122) 评论(0) 推荐(0)
摘要:day33 进程创建的两种方式 在windows环境下,开启进程必须在______name______ == "______main______"下面 p.start(): 只是向操作系统发出一个开辟子进程的信号,然后就执行下一行了。 这个信号操作系统接收到之后,会从内存中开辟一个子进程空间,然后再 阅读全文
posted @ 2019-08-20 21:52 SupSnake 阅读(78) 评论(0) 推荐(0)
摘要:day32 进程的基础 程序 一堆静态的代码文件 进程 一个正在运行的程序进程。抽象的概念 被谁运行? 由操作系统操控调用交于CPU运行 ​ 操作系统 管理控制协调计算机中硬件与软件的关系 操作系统的作用? 如果没有操作系统:你们在开发软件 第一层:对硬件(CPU,内存,磁盘等等)协调,调用 第二层 阅读全文
posted @ 2019-08-20 21:50 SupSnake 阅读(102) 评论(0) 推荐(0)
摘要:day31 recv工作原理 高大上版解决粘包方式(自定制报头) 我们要制作固定的报头 你现在有两段不固定长度的bytes类型,我们要固定的报头,所以 你获取不固定报头的长度 利用struct模块将不固定的长度转化成固定的字节数4个字节 先发4个字节,再发报头数据,再发总数据 server clie 阅读全文
posted @ 2019-08-20 21:48 SupSnake 阅读(161) 评论(0) 推荐(0)
摘要:day30 基于TCP协议的socket循环通信 server client 基于TCP协议的socket 链接+循环 通信 代码功能:服务器不会断开,客户端可以断开(且不能输入空字符串) server clicent 基于TCP协议的socket通信:实例:远程执行命令 bates:网络传输,文件 阅读全文
posted @ 2019-08-20 21:44 SupSnake 阅读(108) 评论(0) 推荐(0)
摘要:day29 socket套接字 socket是处于应用层与传输层之间的抽象层,他是一组操作起来非常简单的接口(接受数据)此接口接受数据之后,交由操作系统. 为什么存在socket抽象层? 如果直接与操作系统数据交互非常麻烦,繁琐,socket对这些繁琐的操作高度的封装,简化. socket在pyth 阅读全文
posted @ 2019-08-20 21:39 SupSnake 阅读(106) 评论(0) 推荐(0)
摘要:day28 C/S B/S架构 C:client 客户端 B:browse浏览器 S:server 服务端 C/S C/S架构:基于客户端与服务端之间的通信 ​ QQ、游戏、皮皮虾 ​ 优点:个性化设置,响应速度快 ​ 缺点:开发成本,维护成本高,占用空间,用户固定 B/S B/S架构:基于浏览器与 阅读全文
posted @ 2019-08-19 22:02 SupSnake 阅读(273) 评论(0) 推荐(0)
摘要:day27 面向对象的总结 异常处理 错误的分类 语法错误 逻辑错误 什么是异常? 代码发生异常错误之后,你的程序就中断了 异常处理? 当代码出现异常时,我通过某种方式不让你的程序中断,合理的“跳”过去,异常处理 为什么要有异常处理? 用户体验良好 使你的代码更有健壮性,容错性 异常处理的两种方式 阅读全文
posted @ 2019-08-19 21:55 SupSnake 阅读(104) 评论(0) 推荐(0)
摘要:day26 type元类与object联系 type 获取对象从属于的类 python 中一切皆对象, 类在某种意义上也是一个对象,python中自己定义的类,以及大部分内置类,都是由type元类(构建类)实例化得来的. type 与 object 的关系. object类是type类的一个实例 o 阅读全文
posted @ 2019-08-19 21:53 SupSnake 阅读(373) 评论(0) 推荐(0)
摘要:day25 类的私有成员 当你遇到重要的数据,功能(只允许本类使用的一些方法,数据)设置成私有成员 python所有的私有成员都是纸老虎,形同虚设 类从加载时,只要遇到类中的私有成员,都会在私有成员前面加上( _类名 ) 私有类的静态属性 类的内部可以访问 类的外部不能访问 类的子类不能访问 私有类 阅读全文
posted @ 2019-08-19 21:51 SupSnake 阅读(133) 评论(0) 推荐(0)
摘要:day24 面向对象的三大特性 继承、封装、多态 封装:把一堆东西(代码,数据)放到一个地方(空间),并且可以使用 多态:一个事物可以呈现多种形态 水:固态、液态、气态 python默认支持多态,比如变量可以是不同类型,函数的参数也可以传多种类型 鸭子类型 python崇尚鸭子类型(编程思路)看起来 阅读全文
posted @ 2019-08-19 21:50 SupSnake 阅读(147) 评论(0) 推荐(0)
摘要:day23 初识继承 字面意思:儿子可以完全使用父亲的所有内容 专业角度:如果B类继承A类, B类就称为子类、派生类 A类就称为父类、基类、超类 面向对象三大特性:继承、封装、多态 继承:单继承、多继承 继承的优点 减少了重复代码 增加了类的耦合性(耦合性不宜多,宜精) 使得代码更加规范化,合理化 阅读全文
posted @ 2019-08-19 21:45 SupSnake 阅读(131) 评论(0) 推荐(0)
摘要:day22 从空间角度研究类 何处添加对象属性 在类的______init______可以添加 在类的方法中也可以添加 在类的外部也可以添加 何处添加类的属性 类的内部 类的外部 对象空间与类空间的关系 对象空间与类空间有相同的名字,对象肯定先从对象空间查找 查找顺序: 对象. 名字:对象空间 类对 阅读全文
posted @ 2019-08-05 19:52 SupSnake 阅读(126) 评论(0) 推荐(0)
摘要:day21 面向对象的初识 面向对象第一个优点: 对相似功能的函数,同一个业务下的函数进行归类,分类. 想要学习面向对象必须站在一个上帝的角度去分析考虑问题. 类: 具有相同属性和功能的一类事物. 对象:某个类的具体体现. 汽车: 汽车类, 楼下停着一个车牌号为9nb11的奥迪对象. 猫科类: 类. 阅读全文
posted @ 2019-08-05 19:51 SupSnake 阅读(227) 评论(0) 推荐(0)
摘要:day20 为什么要有规范化目录 1. 可读性高: 不熟悉这个项目的代码的人,一眼就能看懂目录结构,知道程序启动脚本是哪个,测试目录在哪儿,配置文件在哪儿等等。从而非常快速的了解这个项目。 2. 可维护性高: 定义好组织规则后,维护者就能很明确地知道,新增的哪个文件和代码应该放在什么目录之下。这个好 阅读全文
posted @ 2019-08-01 20:04 SupSnake 阅读(99) 评论(0) 推荐(0)
摘要:day19 包 文件夹下具有______init______.py文件就是一个包 方法 import 包.包.包 from 包.包.包 import 模块 需要在______init______.py做操作 路径 绝对路径导入:从最外层的包开始导入 相对路径导入:从当前(.)开始导入或者父集(..) 阅读全文
posted @ 2019-08-01 19:54 SupSnake 阅读(84) 评论(0) 推荐(0)
摘要:day16 自定义模块 自定义一个模块 import :导入(拿工具箱) 导入发生的事情 在当前的名称空间中开辟一个新的空间 将模块中所有的代码执行 通过(模块名.)进行查找(函数)工具 import test as t:使用别名能够使文件名更短 from 模块名 import 函数名或者变量名 i 阅读全文
posted @ 2019-08-01 19:53 SupSnake 阅读(121) 评论(0) 推荐(0)
摘要:day17 序列化 json 两组4个方法: 1、dumps(序列化) —— loads(反序列) dumps(list):将对象转换成字符串 loads(str):将字符串转换成对象 list——str——list tuple——str——list(直接变成列表,两个结果都是列表[]括起来) di 阅读全文
posted @ 2019-08-01 19:53 SupSnake 阅读(125) 评论(0) 推荐(0)
摘要:day18 re模块——正则表达式 匹配方法 findall():从字符串中全部查找内容,返回一个列表 \w:查找数字、字母(中文)、下划线 \W:查找非数字、字母(中文)、下划线 \s:查找任意空格、换行符、制表符 \S:查找非任意空格、换行符、制表符 \d:查找数字 \D:查找非数字 \A或^: 阅读全文
posted @ 2019-08-01 19:53 SupSnake 阅读(108) 评论(0) 推荐(0)
摘要:day15 装饰器的进阶 有参装饰器 @auth(chose) 相等于以下两行代码的解构 wrapper = auth(chose) foo = wrapper(foo) 多个装饰器装饰一个函数 被装饰的函数正上方多个装饰器,先执行离被装饰函数最近的装饰器 阅读全文
posted @ 2019-08-01 19:52 SupSnake 阅读(99) 评论(0) 推荐(0)
摘要:day13 内置函数2 重要的 abs():求绝对值——返回的都是正数 enumerate('可迭代对象','序号的起始值'):枚举,默认的起始值是0 max('可迭代对象',key = abs):求最大值,比的是当前编码集的值 min('可迭代对象',key = abs):取最小值 sum([1, 阅读全文
posted @ 2019-08-01 19:51 SupSnake 阅读(91) 评论(0) 推荐(0)
摘要:day14 装饰器 装饰器本质就是闭包 开放封闭原则: 扩展是开放的(增加新功能),对源码是封闭的(修改已经实现的功能) 装饰器:用来装饰的工具 作用:在不改变源代码及调用方式的基础下额外增加新的功能 应用(面试的时候): 登录认证、日志 ​ 增加一些功能 ​ 校验用户登录的时候 ​ 面向对象 语法 阅读全文
posted @ 2019-08-01 19:51 SupSnake 阅读(101) 评论(0) 推荐(0)
摘要:day12 生成器 迭代器:python中内置的一种节省空间的工具 生成器的本质就是一个迭代器 迭代器和生成器的区别:一个是pyhton自带的,一个是程序员自己写的 写一个生成器 基于函数 在函数中将return改写成yield就是一个生成器 函数名()就是产生一个生成器 return 可以写多个, 阅读全文
posted @ 2019-08-01 19:49 SupSnake 阅读(199) 评论(0) 推荐(0)