10 2018 档案

摘要:1.创建表 1.1通过Navicat for MySQL界面操作 (1)创建出来自己使用的库以后,双击库,然后右键选择新建表 (2)名:数据表中的字段名; 类型:类型有很多种。varchar表示的就是字符串,可变程度的,如果指定长度为20,实际只用了2个字节,则只占两个字节。 char固定长度字符, 阅读全文
posted @ 2018-10-31 21:26 _小溢 阅读(1090) 评论(0) 推荐(0)
摘要:1.mysql库的操作 (1)创建 点击Navicat中的查询,然后新建查询,然后输入下面语句,然后点击运行,之后再刷新一下,就可以看见创建出来了一个库db1。 此时在mysql安装目录下的data目录中就会多出来一个文件夹db1。 (2)删除 (3)使用(进入) 命令行操作时,进入库时使用 (4) 阅读全文
posted @ 2018-10-29 22:50 _小溢 阅读(164) 评论(0) 推荐(0)
摘要:关系型数据库Mysql 1.mysql官网网址:www.mysql.org 2.mysql数据库安装 傻瓜式安装下载地址 https://dev.mysql.com/downloads/installer/ 压缩包地址https://dev.mysql.com/downloads/file/?id= 阅读全文
posted @ 2018-10-28 22:33 _小溢 阅读(4436) 评论(0) 推荐(0)
摘要:1.非阻塞IO 2.阻塞IO 3.IO多路复用 3.1 IO多路复用中的select 服务端 3.2 linux上更好的IO多路复用epoll、selectors选择当前系统最优的IO多路复用机制 服务端 客户端 4.信号驱动IO 5.异步IO 6.五种IO模型的比较,个人觉得肯定还是异步IO好 阅读全文
posted @ 2018-10-28 21:01 _小溢 阅读(808) 评论(0) 推荐(0)
摘要:在python中多线程其实是被弱化了,因为由于GIL的原因,同一时间只有一个线程能访问CPU,即使你的CPU是多核的在python中因为多线程被弱化了,所以协程显的重要,能够在一个线程中提高CPU的利用率,一个线程中开启500个协程,4核CPU开启20个线程效率不错,4核CPU开启5个进程会比较不错 阅读全文
posted @ 2018-10-28 16:34 _小溢 阅读(674) 评论(0) 推荐(0)
摘要:# 分别使用urlopen和requests两个模块进行演示 # import requests # 需要安装的 # from urllib.request import urlopen # # url = 'http://www.baidu.com' # # # res1 = urlopen(url) # urlopen,获取到页面请求对象 # res2 = requests.get(url)... 阅读全文
posted @ 2018-10-28 16:30 _小溢 阅读(156) 评论(0) 推荐(0)
摘要:协程:能够在一个线程中实现并发效果的概念,能够巧妙的利用任务中的IO阻塞时间,在任务的执行过程中,检测到IO操作时就能够协程切换到别的任务中运行 阅读全文
posted @ 2018-10-28 15:38 _小溢 阅读(990) 评论(0) 推荐(0)
摘要:# pip 装模块 greenlet和gevent # 协程 # 与进程、线程一样也是实现并发的手段 # 创建一个线程、关闭一个线程都需要创建寄存器、栈等、需要消耗时间 # 协程本质上是一个线程 # 能够在多个任务之间切换来节省一些IO时间 # 协程中任务之间的切换时间开销,要远远小于进程或线程之间的切换 # 4CPU中,进程一般创建4+1个进... 阅读全文
posted @ 2018-10-28 14:43 _小溢 阅读(158) 评论(0) 推荐(0)
摘要:# concurrent.futures模块提供了高度封装的异步调用接口。 # 其中ThreadPoolExecutor:线程池,提供异步调用 # 其中ProcessPooExecutor:进程池,提供异步调用。之前学过multiprocessing中的Pool也是进程池。 # 在这个concurrent.futures模块中,线程池与进程池的所有方法接口都是相同的 # 基本方... 阅读全文
posted @ 2018-10-28 13:36 _小溢 阅读(155) 评论(0) 推荐(0)
摘要:# 队列是数据安全的,意思是自带锁,多线程间通信时,使用队列是好的,不会出现同一个数据被多个线程抢占,使用其他数据类型进行通信则需要自己实现锁功能 import queue # 普通先进先出队列 # q = queue.Queue() # 没有参数则表示队列没有指定深度 # q.put(1) # 如果队列指定了深度则到了深度后,会阻塞在这里等待队列有空间后再向队列中放入数据 # q.pu... 阅读全文
posted @ 2018-10-28 12:55 _小溢 阅读(718) 评论(0) 推荐(0)
摘要:1.线程中的条件 2.线程中的定时器 阅读全文
posted @ 2018-10-28 12:40 _小溢 阅读(776) 评论(0) 推荐(0)
摘要:# 线程中的信号量 # 和进程中的信号量概念一样,创建好信号量的深度后,同一时间只有n个线程可以访问被信号量保护的代码 # 同一时间只有4个线程可以访问被信号量保护的代码 # import time # from threading import Semaphore, Thread # # def func(sem, a, b): # sem.acquire() # ... 阅读全文
posted @ 2018-10-26 21:55 _小溢 阅读(1288) 评论(0) 推荐(0)
摘要:# 一般进程中,我们锁用的少,因为我们进程之间通信,很少会使用IPC中的管道、队列、Manager这些东西,而是使用一些中间件,而在这些中间件中,已经帮我们实现了进程之间锁的功能,访问消息中间件是不需要加锁的 # 线程锁 # Lock互斥锁会存在死锁问题,需要编码者注意 # RLock递归锁 # 互斥锁 # from threading import Lock # from ... 阅读全文
posted @ 2018-10-26 21:14 _小溢 阅读(1205) 评论(0) 推荐(0)
摘要:# 没有守护线程时,主线程会等待子线程的结束,子线程结束后,主线程才会结束 # import time # from threading import Thread # # # def func1(): # print(666) # time.sleep(10) # # def func2(): # pass # # if __name__ == '__main__':... 阅读全文
posted @ 2018-10-24 22:11 _小溢 阅读(134) 评论(0) 推荐(0)
摘要:import threading def wahaha(n): print(n, threading.current_thread()) # 1 threading.Thread(target=wahaha, args=(1,)).start() print(threading.current_thread()) # # 查看线程名和线程id的方法, print(th... 阅读全文
posted @ 2018-10-24 21:40 _小溢 阅读(121) 评论(0) 推荐(0)
摘要:# Cpyrhon解释器下有个全局解释器锁-GIL:在同一 # 在同一时刻,多线程中只有一个线程访问CPU # 有了全局解释器锁(GIL)后,在同一时刻只能有一个线程访问CPU。 # 全局解释器锁锁的是线程,而不是数据。 # 这种全局解释器锁的特性就是同一时间只有有一个线程访问CPU,所以在多个CPU的情况下,也只有一个线程在一个时间点访问CPU,这是Cpytho... 阅读全文
posted @ 2018-10-24 21:39 _小溢 阅读(361) 评论(0) 推荐(0)
摘要:1.server 2.client 阅读全文
posted @ 2018-10-24 21:39 _小溢 阅读(152) 评论(0) 推荐(0)
摘要:# python线程模块的选择 #python提供了几个用于多线程编程的模块,包括thread、threading和Queue等。 # thread和threading模块允许程序员创建和管理线程。 # thread模块提供了基本的线程和锁的而支持,threading提供了更高级别、功能更强的线程管理功能 # Queue模块允许用户创建一个... 阅读全文
posted @ 2018-10-23 22:28 _小溢 阅读(124) 评论(0) 推荐(0)
摘要:# 使用进程池的进程爬取网页内容,使用回调函数处理数据,用到了正则表达式和re模块 import re from urllib.request import urlopen from multiprocessing import Pool def get_page(url,pattern): response=urlopen(url).read().decode('utf-8') ... 阅读全文
posted @ 2018-10-23 21:20 _小溢 阅读(173) 评论(0) 推荐(0)
摘要:回调函数:一般应用在进程的任务有延时,而要处理的数据时间的很短时,将进程的任务和回调函数绑定起来,将任务获取到的数据返回给回调函数,由回调函数处理数据,回调函数是在主进程中得以执行的 阅读全文
posted @ 2018-10-23 21:00 _小溢 阅读(374) 评论(0) 推荐(0)
摘要:1.使用requsets出现这个错误,ImportError: No module named 'chardet' 原因:requests依赖其他一些模块 解决:依次使用pip安装即可 pip install certifi pip install chardet pip install idna 阅读全文
posted @ 2018-10-23 20:34 _小溢 阅读(15331) 评论(0) 推荐(1)
摘要:1.cmd上运行pip后,出现这个 Fatal error in launcher: Unable to create process using '"' 原因:计算机的环境变量中找不到python,找不到pip。肯定是之前装过很多个python版本造成的。 解决:path环境变量中python.e 阅读全文
posted @ 2018-10-23 20:19 _小溢 阅读(341) 评论(0) 推荐(0)
摘要:一般在爬虫中,用到回调函数比较多,并且是将访问网页、下载网页的过程放到子进程中去做,分析数据,处理数据让回调函数去做,因为访问网页与下载网页有网络延时,而处理数据只占用很小的时间 阅读全文
posted @ 2018-10-22 21:34 _小溢 阅读(423) 评论(0) 推荐(0)
摘要:# import time # from multiprocessing import Pool # # def func(i): # time.sleep(1) # return i * i # # # if __name__ == '__main__': # pool = Pool(4) # # for i in range(10): # re... 阅读全文
posted @ 2018-10-22 21:21 _小溢 阅读(692) 评论(0) 推荐(0)
摘要:1.进程池1 2.进程池 阅读全文
posted @ 2018-10-21 16:25 _小溢 阅读(275) 评论(0) 推荐(0)
摘要:# 管道实现生产者消费者模型 # # 应该特别注意管道端点的正确管理问题,如果是生产者或消费者中都没有使用管道的端点就应该将它关闭 # 这也说明了为何在生产者中关闭了管道的输出端,在消费者中关闭管道的输入端。如果忘记执行这个步骤 # 程序可能在消费者中的recv()操作上挂起。管道是由操作系统进行引用计数的,必须在所有进程中关闭管道 # 后才能生成EoFEroor... 阅读全文
posted @ 2018-10-21 15:24 _小溢 阅读(858) 评论(0) 推荐(0)
摘要:# 以后我们会尝试使用数据库类解决现在进程之间的数据共享问题 # multiprocessing.Manager模块,是数据共享用的模块,共享的数据存在数据不安全问题,需要加锁操作 # from multiprocessing import Manager, Process # # # def process1(dic): # dic['count'] = 5 # pri... 阅读全文
posted @ 2018-10-21 15:24 _小溢 阅读(233) 评论(0) 推荐(0)
摘要:# 管道 # 一根管子,双向通信,拿到管道的两端,一端传输的数据会传输到另一端 # from multiprocessing import Pipe,Process # # # # # # def func(conn): # # while True: # # print(conn.recv()) # 当管道没有数据时,接收这里会阻塞住 # # # # #... 阅读全文
posted @ 2018-10-21 15:23 _小溢 阅读(195) 评论(0) 推荐(0)
摘要:# 多进程的生产者消费者模型 # 队列 # 队列是进程安全的,同时只能有一个进程从队列中取到数据 # 生产者消费者模型 # 为什么要这个模型 # 这个模型经常性的解决数据的供需不平衡的问题 # 经常有两拨人,一拨是生产数据的,一拨是消费数据的。 # 消费者指的是使用数据处理数据的一端 # 生产数据的一端生产的数据过快 ... 阅读全文
posted @ 2018-10-21 13:18 _小溢 阅读(368) 评论(0) 推荐(0)
摘要:1.队列1 阅读全文
posted @ 2018-10-19 22:48 _小溢 阅读(425) 评论(0) 推荐(0)
摘要:# 可控制 多个进程 同时 执行或阻塞 # 事件 # set 和 clear # 分别用来修改一个事件的状态,True或者False,True表示设置为非阻塞,False表示设置为阻塞 # is_set 查看一个事件的状态 # wait 根据事件状态来决定自己是否阻塞 # from multiprocessing import Event # 导... 阅读全文
posted @ 2018-10-19 22:20 _小溢 阅读(307) 评论(0) 推荐(0)
摘要:# 多进程中的组件 # 信号量 # 举例说概念:现在有4个门,只能进4个人。一套资源同一时间只能被N个人访问。这里将N个人比作N个进程,一套资源这里比作代码 # 某一段代码 同一时间只能被N个进程执行 # 有一个房子,房子就是要保护的代码(限定进程访问的代码),房子只有一个门,门上有一串钥匙,有多少把钥匙是你规定的,此时当有一个进... 阅读全文
posted @ 2018-10-19 21:17 _小溢 阅读(691) 评论(0) 推荐(0)
摘要:# 进程锁 # 多个进程都操作一个数据时(下面指的是文件)、会存在数据安全问题,则需要加入锁 # 先说一个现象 # 买火车票 # 当我们手机软件买票时,发现有余票20张,但是点击订票后,告诉你票订光了 # 这是因为买票时,肯定是一个并发的过程,好多人同时来买票,并发的过程 # 当一个人订票后,我们后台肯定要修改票数,肯定是修改数据... 阅读全文
posted @ 2018-10-17 21:31 _小溢 阅读(645) 评论(0) 推荐(0)
摘要:# 守护进程 # 子进程转换成的守护进程 # 守护进程会随着主进程的代码执行完毕而结束 # 下面的例子,当主进程执行结束了,但子进程还在执行,子进程没有结束 # import time # from multiprocessing import Process # # # def func(): # while True: # time.sleep(0.... 阅读全文
posted @ 2018-10-17 20:29 _小溢 阅读(303) 评论(0) 推荐(0)
摘要:2.开启多个进程的方法 3.使用自定义类继承Process类,重写run方法和init方法进行启动进程的方法 4.进程与进程之间数据隔离问题,进程与进程之间数据是隔离的,想要互相交互数据需要通过其他手段(管道,后面再说) 5.使用多进程实现socket服务端的并发,只为了演示多进程,当客户端多时,会 阅读全文
posted @ 2018-10-16 20:54 _小溢 阅读(207) 评论(0) 推荐(0)
摘要:1.服务端 客户端1 客户端2 阅读全文
posted @ 2018-10-07 13:49 _小溢 阅读(206) 评论(0) 推荐(0)
摘要:1.服务端 客户端 阅读全文
posted @ 2018-10-07 12:58 _小溢 阅读(212) 评论(0) 推荐(0)
摘要:1.利用struct模块,可以一定程度上解决黏包问题 认识struct 2.利用struct模块,实现大文件上传 server.py client.py 阅读全文
posted @ 2018-10-07 12:25 _小溢 阅读(160) 评论(0) 推荐(0)
摘要:1.先说下subprocess模块的用法,为了举个黏包的例子 2.写一个tcp的server端和client,模拟黏包的现象,tcp端发送windows的命令给client,client接收后执行该命令后,将控制台返回的内容传输到server端 tcpserver.py tcpclient.py 3 阅读全文
posted @ 2018-10-04 16:58 _小溢 阅读(1832) 评论(0) 推荐(0)
摘要:1.udp例子1 udpserver.py udpclient1.py ucpclient2.py 2.简单udp时间服务器例子 udpserver.py udpclient.py 阅读全文
posted @ 2018-10-04 15:02 _小溢 阅读(471) 评论(0) 推荐(0)
摘要:server.py client.py 阅读全文
posted @ 2018-10-04 13:49 _小溢 阅读(1011) 评论(0) 推荐(0)
摘要:OSI(五层的) 阅读全文
posted @ 2018-10-04 12:55 _小溢 阅读(164) 评论(0) 推荐(0)
摘要:logging 类 阅读全文
posted @ 2018-10-03 22:37 _小溢 阅读(212) 评论(0) 推荐(0)
摘要:# configparse 模块 # 一种处理配置文件的一种机制 # 配置文件的格式要与ini文件格式类似。。。。就是ini,必须要有组。 import configparser config = configparser.ConfigParser() config['DEFAULT'] = {'e 阅读全文
posted @ 2018-10-03 21:21 _小溢 阅读(256) 评论(0) 推荐(0)
摘要:hashlib(1) hashlib(2) 阅读全文
posted @ 2018-10-03 17:23 _小溢 阅读(296) 评论(0) 推荐(0)
摘要:面向对象进阶(1) 阅读全文
posted @ 2018-10-03 16:45 _小溢 阅读(199) 评论(0) 推荐(0)
摘要:# 类的内置方法 # 双下方法 # __str__ # 当类中定义了__str__方法后,print(这个类对象时),会调用__str__. 或者格式化%s输出对象时,都会触发__str__ # __repr__ # 当类中定义了__repr__方法后,print(repr(a)),就会调用a对象中的__repr__()方法。格式化输出用%r时同... 阅读全文
posted @ 2018-10-03 15:17 _小溢 阅读(152) 评论(0) 推荐(0)
摘要:反射(1) 反射(2) 阅读全文
posted @ 2018-10-03 12:10 _小溢 阅读(152) 评论(0) 推荐(0)
摘要:# method 英文是方法的意思 # classmethod 类方法 # 当一个类中的方法中只涉及操作类的静态属性时,此时在逻辑上,我们想要直接通过类名就可以调用这个方法去修改类的静态属性,此时可以用这个内置装饰器函数 # staticmethod 静态方法 # 类的方法 classmethod class Goods: discount = 0.5 # 折扣 ... 阅读全文
posted @ 2018-10-03 11:44 _小溢 阅读(334) 评论(0) 推荐(0)
摘要:# property # 内置装饰器函数 只在面向对象中使用 # 装饰后效果:将类的方法伪装成属性 # 被property装饰后的方法,不能带除了self外的任何参数 from math import pi class Circle: def __init__(self, r): self.r = r def perimeter(sel... 阅读全文
posted @ 2018-10-03 11:12 _小溢 阅读(1716) 评论(0) 推荐(1)
摘要:封装(1) 封装(2) 阅读全文
posted @ 2018-10-02 17:53 _小溢 阅读(186) 评论(0) 推荐(0)
摘要:# python是一门动态强类型的语言 # 多态:同一个东西,有多种表现形式 # 在python中,天生支持多态,所以python没有实现多态的一种机制 # 因为python是一门动态强类型的语言,所以可以进行多态,不同对象可以被参数识别,不用借助父类就可以展现不同形式 class Wechat(): def pay(self, money): ... 阅读全文
posted @ 2018-10-02 17:32 _小溢 阅读(150) 评论(0) 推荐(0)
摘要:# 抽象类 # 一般情况下都是单继承 能实现的功能都是一样的 # 抽象类也是一种规范,在python中实现起来与接口类类似 # 多继承的情况 由于功能比较复杂,所以不容易抽象出相同的功能的具体实现写在父类中.而单继承实现的功能都是一样的,所以在父类中 # 不管是抽象类还是接口类都是面向对象的开发规范 # 在python中没有接口类(但是为了规范,所以弄了接... 阅读全文
posted @ 2018-10-02 16:49 _小溢 阅读(135) 评论(0) 推荐(0)
摘要:# 动物园 # 老虎 tiger 走路 游泳 # 天鹅 swan 走路 游泳 飞 # 老鹰 oldying 飞 走路 from abc import abstractmethod, ABCMeta # 接口的多继承 # 接口类 class Swim_Animal(metaclass=ABCMeta): # 游泳 @abstractmethod def swim(se... 阅读全文
posted @ 2018-10-02 16:25 _小溢 阅读(313) 评论(0) 推荐(0)
摘要:# 接口类 来源于设计模式,一种思想 # python原生不支持 # 抽象类 来源设计模式,一种思想 # python原生支持的 from abc import abstractmethod, ABCMeta # 规范 接口类,必须指定元类为ABCMeta,必须用@abstractmethod装饰器 # 规范:接口类或者抽象类都可以 # 接口类:默认多继承,接口类中... 阅读全文
posted @ 2018-10-02 16:00 _小溢 阅读(201) 评论(0) 推荐(0)
摘要:1.钻石继承的顺序(新式类中) 2.小乌龟的继承顺序 3.关于super在新式类中多继承时的关系 阅读全文
posted @ 2018-10-02 14:31 _小溢 阅读(173) 评论(0) 推荐(0)
摘要:# 面向对象的三大特性 # 继承 # 多态 # 封装 # 继承 # 继承是一种创建新类的方式,在python中,新建的类可以继承一个或多个父类,父类又被称为基类或超类,新建的类称为派生类或子类 # 一个类可以被多个类继承 # python中特性的是,一个类可以继承多个父类(多继承) # object是类祖宗 # 在python... 阅读全文
posted @ 2018-10-02 13:25 _小溢 阅读(188) 评论(0) 推荐(0)
摘要:# 组合 一个类对象的属性值是另外一个类的对象 # 狗 class Dog: def __init__(self, name, aggr, hp, kind): self.name = name self.aggr = aggr self.hp = hp self.kind = kind def bite(s... 阅读全文
posted @ 2018-10-02 11:47 _小溢 阅读(471) 评论(0) 推荐(0)
摘要:# 类里 可以定义两种属性 # 静态属性 存储在类的命名空间中 # 只要是这个类就一定有的属性 # 可以使用类名调用类的静态属性 # 可以使用对象调用类的静态属性 # 动态属性 # 类和对象的命名空间 # 创建一个类时,会创建一个命名空间在内存中 # 创建一个对象时,会创建一个对象的命名空间,这个对象的命名空间中... 阅读全文
posted @ 2018-10-02 11:00 _小溢 阅读(997) 评论(0) 推荐(0)