自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(101)
  • 收藏
  • 关注

原创 面向对象的3大特性

为啥要封装 好处在使用面向过程编程时,当需要对数据处理时,需要考虑用哪个模板中哪个函数来进行操作,但是当用面向对象编程时,因为已经将数据存储到了这个独立的空间中,这个独立的空间(即对象)中通过一个特点的变量(class)能够获取到类(模板),而且这个类中的方法是有一定数量的,与此类无关的将不会出现在本类中,因此需要对数据处理时,可以很快速的定位到需要的方法是谁 这样更方便 ...

2018-12-04 14:47:28 363

原创 多继承以及MRO顺序

多继承以及MRO顺序1. 单独调用父类的方法# coding=utf-8print("******多继承使用类名.__init__ 发生的状态******")class Parent(object): def __init__(self, name): print('parent的init开始被调用') self.name = name ...

2018-12-04 14:47:15 321

转载 svn检出的时候报 Unable to connect to a repository at URL错误

背景:1.         SVN服务器:VisualSVN-Server-2.5.5;2. SVN客户端:TortoiseSVN-1.7.6.22632-x64-svn-1.7.4.msi; 在SVN服务器上,新建一个数据仓库aaa,用户ABC拥有读写权限。现象:1.         在checkout数据仓库aaa时,出现如下错误:Unable to connect to...

2018-09-10 17:29:19 10864

原创 import导入模块

import导入模块1. import 搜索路径路径搜索从上面列出的目录里依次查找要导入的模块文件 '' 表示当前路径 列表中的路径的先后顺序代表了python解释器在搜索模块时的先后顺序程序执行时添加新的模块路径sys.path.append('/home/itcast/xxx')sys.path.insert(0, '/home/itcast/xxx') # 可...

2018-09-09 14:19:07 612

原创 私有化

私有化xx: 公有变量 _x: 单前置下划线,私有化属性或方法,from somemodule import *禁止导入,类对象和子类可以访问 __xx:双前置下划线,避免与子类中的属性命名冲突,无法在外部直接访问(名字重整所以访问不到) __xx__:双前后下划线,用户名字空间的魔法对象或属性。例如:__init__ , __ 不要自己发明这样的名字 xx_:单后置下划线,用于避免与...

2018-09-09 14:19:03 149

原创 深拷贝、浅拷贝

深拷贝、浅拷贝1. 浅拷贝浅拷贝是对于一个对象的顶层拷贝通俗的理解是:拷贝了引用,并没有拷贝内容  2. 深拷贝深拷贝是对于一个对象所有层次的拷贝(递归)进一步理解深拷贝3. 拷贝的其他方式分片表达式可以赋值一个序列字典的copy方法可以拷贝一个字典4. 注意点浅拷贝对不可变类型和可变类型的copy不同copy.copy对...

2018-09-09 14:18:59 127

原创 Web静态服务器07-gevent版

Web静态服务器-7-gevent版from gevent import monkeyimport geventimport socketimport sysimport remonkey.patch_all()class WSGIServer(object): """定义一个WSGI服务器的类""" def __init__(self, port, d...

2018-09-09 14:18:52 192

原创 Web静态服务器06-epoll

Web静态服务器-6-epollIO 多路复用就是我们说的select,poll,epoll,有些地方也称这种IO方式为event driven IO。select/epoll的好处就在于单个process就可以同时处理多个网络连接的IO。它的基本原理就是select,poll,epoll这个function会不断的轮询所负责的所有socket,当某个socket有数据到达了,就通...

2018-09-09 14:18:47 148

原创 Web静态服务器05-非堵塞模式

Web静态服务器-5-非堵塞模式单进程非堵塞 模型#coding=utf-8from socket import *import time# 用来存储所有的新链接的socketg_socket_list = list()def main(): server_socket = socket(AF_INET, SOCK_STREAM) server_socket...

2018-09-09 14:18:42 152

原创 Web静态服务器04-多线程

Web静态服务器-4-多线程#coding=utf-8import socketimport reimport threadingclass WSGIServer(object): def __init__(self, server_address): # 创建一个tcp套接字 self.listen_socket = socket.so...

2018-09-09 14:18:37 161

原创 Web静态服务器03-多进程

Web静态服务器-3-多进程#coding=utf-8import socketimport reimport multiprocessingclass WSGIServer(object): def __init__(self, server_address): # 创建一个tcp套接字 self.listen_socket = soc...

2018-09-09 14:18:32 235

原创 Web静态服务器02-显示需要的页面

Web静态服务器-2-显示需要的页面#coding=utf-8import socketimport redef handle_client(client_socket): "为一个客户端进行服务" recv_data = client_socket.recv(1024).decode('utf-8', errors="ignore") request_he...

2018-09-09 14:18:27 167

原创 Web静态服务器01-显示固定的页面

Web静态服务器-1-显示固定的页面#coding=utf-8import socketdef handle_client(client_socket): "为一个客户端进行服务" recv_data = client_socket.recv(1024).decode("utf-8") request_header_lines = recv_data.spli...

2018-09-09 14:18:22 206

原创 HTTP协议简介

HTTP协议简介1. 使用谷歌/火狐浏览器分析在Web应用中,服务器把网页传给浏览器,实际上就是把网页的HTML代码发送给浏览器,让浏览器显示出来。而浏览器和服务器之间的传输协议是HTTP,所以: HTML是一种用来定义网页的文本,会HTML,就可以编写网页; HTTP是在网络上传输HTML的协议,用于浏览器和服务器的通信。 Chrome浏览器提供了一套完整地调试工具,...

2018-09-08 16:56:13 123

原创 正则表达式09-正则中r的作用

r的作用>>> mm = "c:\\a\\b\\c">>> mm'c:\\a\\b\\c'>>> print(mm)c:\a\b\c>>> re.match("c:\\\\",mm).group()'c:\\'>>> ret = re.mat

2018-09-08 16:21:28 1899

原创 正则表达式08-python贪婪和非贪婪

python贪婪和非贪婪Python里数量词默认是贪婪的(在少数语言里也可能是默认非贪婪),总是尝试匹配尽可能多的字符;非贪婪则相反,总是尝试匹配尽可能少的字符。在"*","?","+","{m,n}"后面加上?,使贪婪变成非贪婪。>>> s="This is a number 234-235-22-423">>&amp

2018-09-08 16:21:23 169

原创 正则表达式07-re模块的高级用法

re模块的高级用法search需求:匹配出文章阅读的次数#coding=utf-8import reret = re.search(r"\d+", "阅读次数为 9999")ret.group()运行结果:'9999'findall需求:统计出python、c、c++相应文章阅读的次数#coding=utf-8import reret = r...

2018-09-08 16:21:16 319 1

原创 正则表达式06-匹配分组

匹配分组字符 功能 | 匹配左右任意一个表达式 (ab) 将括号中字符作为一个分组 \num 引用分组num匹配到的字符串 (?P<name>) 分组起别名 (?P=name) 引用别名为name分组匹配到的字符串 示例1:|需求:匹配出0-100之间的数字#coding=utf-8import rere...

2018-09-08 16:21:10 174

原创 正则表达式01-正则表达式概述

正则表达式概述思考场景1:在一个文件中,查找出itcast开头的语句测试文件itcast hello pythonitcast c++itheima iositheima php场景:在一个文件中,找到含有itcast的语句测试文件hello itcast pythonwww.itcast.cn c++itheima iositheima php...

2018-09-08 16:21:03 283

原创 正则表达式05-匹配开头结尾

匹配开头结尾字符 功能 ^ 匹配字符串开头 $ 匹配字符串结尾 示例1:$需求:匹配163.com的邮箱地址#coding=utf-8import reemail_list = ["[email protected]", "[email protected]", "[email protected]"]for email in ...

2018-09-08 16:20:50 5404

原创 正则表达式04-匹配多个字符

匹配多个字符匹配多个字符的相关格式字符 功能 * 匹配前一个字符出现0次或者无限次,即可有可无 + 匹配前一个字符出现1次或者无限次,即至少有1次 ? 匹配前一个字符出现1次或者0次,即要么有1次,要么没有 {m} 匹配前一个字符出现m次 {m,n} 匹配前一个字符出现从m到n次 示例1:*需求:匹配出,一个字符串第一个字母为...

2018-09-08 16:20:45 18126

原创 正则表达式03-匹配单个字符

匹配单个字符在上一小节中,了解到通过re模块能够完成使用正则表达式来匹配字符串本小节,将要讲解正则表达式的单字符匹配字符 功能 . 匹配任意1个字符(除了\n) [ ] 匹配[ ]中列举的字符 \d 匹配数字,即0-9 \D 匹配非数字,即不是数字 \s 匹配空白,即 空格,tab键 \S 匹配非空白 \w 匹...

2018-09-08 16:20:39 1129

原创 正则表达式02-re模块操作

re模块操作在Python中需要通过正则表达式对字符串进行匹配的时候,可以使用一个模块,名字为re1. re模块的使用过程 #coding=utf-8 # 导入re模块 import re # 使用match方法进行匹配操作 result = re.match(正则表达式,要匹配的字符串) # 如果上一步匹配到数据的话,可以使用gr...

2018-09-08 16:20:31 133

原创 多任务22-协程案例

并发下载器并发下载原理from gevent import monkeyimport geventimport urllib.request# 有耗时操作时需要monkey.patch_all()def my_downLoad(url): print('GET: %s' % url) resp = urllib.request.urlopen(url) ...

2018-09-06 20:56:56 219

原创 多任务21-进程、线程、协程对比

进程、线程、协程对比请仔细理解如下的通俗描述有一个老板想要开个工厂进行生产某件商品(例如剪子) 他需要花一些财力物力制作一条生产线,这个生产线上有很多的器件以及材料这些所有的 为了能够生产剪子而准备的资源称之为:进程 只有生产线是不能够进行生产的,所以老板的找个工人来进行生产,这个工人能够利用这些材料最终一步步的将剪子做出来,这个来做事情的工人称之为:线程 这个老板为了提高生产率,想...

2018-09-06 20:55:09 105

原创 多任务20-gevent

geventgreenlet已经实现了协程,但是这个还的人工切换,是不是觉得太麻烦了,不要捉急,python还有一个比greenlet更强大的并且能够自动切换任务的模块gevent其原理是当一个greenlet遇到IO(指的是input output 输入输出,比如网络、文件操作等)操作时,比如访问网络,就自动切换到其他的greenlet,等到IO操作完成,再在适当的时候切换回来继续执行。...

2018-09-06 20:54:01 187

原创 多任务19-greenlet

greenlet为了更好使用协程来完成多任务,python中的greenlet模块对其封装,从而使得切换任务变的更加简单安装方式使用如下命令安装greenlet模块:sudo pip3 install greenlet#coding=utf-8from greenlet import greenletimport timedef test1(): whi...

2018-09-06 20:53:03 113

原创 多任务18-协程

协程协程,又称微线程,纤程。英文名Coroutine。协程是啥协程是python个中另外一种实现多任务的方式,只不过比线程更小占用更小执行单元(理解为需要的资源)。 为啥说它是一个执行单元,因为它自带CPU上下文。这样只要在合适的时机, 我们可以把一个协程 切换到另一个协程。 只要这个过程中保存或恢复 CPU上下文那么程序还是可以运行的。通俗的理解:在一个线程中的某个函数,可以在任...

2018-09-06 20:52:16 84

原创 多任务17-生成器

生成器1. 生成器利用迭代器,我们可以在每次迭代获取数据(通过next()方法)时按照特定的规律进行生成。但是我们在实现一个迭代器时,关于当前迭代到的状态需要我们自己记录,进而才能根据当前状态生成下一个数据。为了达到记录当前状态,并配合next()函数进行迭代使用,我们可以采用更简便的语法,即生成器(generator)。生成器是一类特殊的迭代器。2. 创建生成器方法1要创建一个生...

2018-09-06 20:51:41 206

原创 多任务16-迭代器

迭代器迭代是访问集合元素的一种方式。迭代器是一个可以记住遍历的位置的对象。迭代器对象从集合的第一个元素开始访问,直到所有的元素被访问完结束。迭代器只能往前不会后退。1. 可迭代对象我们已经知道可以对list、tuple、str等类型的数据使用for...in...的循环语法从其中依次拿到数据进行使用,我们把这样的过程称为遍历,也叫迭代。但是,是否所有的数据类型都可以放到for....

2018-09-06 20:50:39 79

原创 多任务15-多进程案例

应用:文件夹copy器import multiprocessingimport osimport timeimport randomdef copy_file(queue, file_name,source_folder_name, dest_folder_name): """copy文件到指定的路径""" f_read = open(source_folde...

2018-09-06 20:49:27 173

原创 多任务14-进程池Pool

进程池Pool当需要创建的子进程数量不多时,可以直接利用multiprocessing中的Process动态成生多个进程,但如果是上百甚至上千个目标,手动的去创建进程的工作量巨大,此时就可以用到multiprocessing模块提供的Pool方法。初始化Pool时,可以指定一个最大进程数,当有新的请求提交到Pool中时,如果池还没有满,那么就会创建一个新的进程用来执行该请求;但如果池中的进...

2018-09-06 20:48:11 106

原创 多任务13-进程间通信-Queue

进程间通信-QueueProcess之间有时需要通信,操作系统提供了很多机制来实现进程间的通信。1. Queue的使用可以使用multiprocessing模块的Queue实现多进程之间的数据传递,Queue本身是一个消息列队程序,首先用一个小实例来演示一下Queue的工作原理:#coding=utf-8from multiprocessing import Queueq=...

2018-09-06 14:11:00 85

原创 多任务12-进程、线程对比

进程、线程对比功能进程,能够完成多任务,比如 在一台电脑上能够同时运行多个QQ 线程,能够完成多任务,比如 一个QQ中的多个聊天窗口定义的不同 进程是系统进行资源分配和调度的一个独立单位. 线程是进程的一个实体,是CPU调度和分派的基本单位,它是比进程更小的能独立运行的基本单位.线程自己基本上不拥有系统资源,只拥有一点在运行中必不可少的资源(如程序计数器,一组寄存器和栈...

2018-09-05 09:39:25 90

原创 多任务11-进程的创建-multiprocessing

进程的创建-multiprocessingmultiprocessing模块就是跨平台版本的多进程模块,提供了一个Process类来代表一个进程对象,这个对象可以理解为是一个独立的进程,可以执行另外的事情1. 2个while循环一起执行# -*- coding:utf-8 -*-from multiprocessing import Processimport timede...

2018-09-05 09:38:29 96

原创 多任务10-进程以及状态

进程以及状态1. 进程程序:例如xxx.py这是程序,是一个静态的进程:一个程序运行起来后,代码+用到的资源 称之为进程,它是操作系统分配资源的基本单元。不仅可以通过线程完成多任务,进程也是可以的2. 进程的状态工作中,任务数往往大于cpu的核数,即一定有一些任务正在执行,而另外一些任务在等待cpu进行执行,因此导致了有了不同的状态就绪态:运行的条件都已经慢去,正在等在...

2018-09-05 09:37:13 273

原创 解决问题:pycharm导入模块时有下波浪线

问题:This inspection detects names that should resolve but don't. Due to dynamic dispatch and duck typing, this is possible in a limited but useful number of cases. Top-level and class-level items are...

2018-09-05 09:35:02 4372

原创 Ubuntu 16.04 .5安装 PyCharm

先在PyCharm官网下载安装包链接:https://www.jetbrains.com/pycharm/download/#section=linux选择平台为Linux,选择pycharm的版本,我下载的是2017.1.4,但是pycharm已经更新到2018.2,要是想用以前版本,左侧有个之前的版本.这里分为Professional专业版和Community社区版,区别是专业版是...

2018-09-05 09:34:57 698

原创 多任务09-死锁

死锁比如在现实社会中,男女生吵架后,男女双方都在等待对方先道歉如果双方都这样固执的等待对方先开口,弄不好,就分手了 线程中的死锁:在线程间共享多个资源的时候,如果两个线程分别占有一部分资源并且同时等待对方的资源,就会造成死锁。尽管死锁很少发生,但一旦发生就会造成应用的停止响应。下面看一个死锁的例子#coding=utf-8import threadingimpor...

2018-09-05 09:34:51 171

原创 多任务08-互斥锁

互斥锁当多个线程几乎同时修改某一个共享数据的时候,需要进行同步控制线程同步能够保证多个线程安全访问竞争资源,最简单的同步机制是引入互斥锁。互斥锁为资源引入一个状态:锁定/非锁定某个线程要更改共享数据时,先将其锁定,此时资源的状态为“锁定”,其他线程不能更改;直到该线程释放资源,将资源的状态变成“非锁定”,其他的线程才能再次锁定该资源。互斥锁保证了每次只有一个线程进行写入操作,从而保...

2018-09-05 09:34:44 243

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除