![](https://img-blog.csdnimg.cn/20201014180756928.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
学习笔记
文章平均质量分 82
MiamorJia
我的bug,程序很少
展开
-
47 创建Django的页面跳转
Django跳转当创建好Django文件之后,在urls.py文件中,可以先输入一下的代码,但是需要注意的是HttpResponse包只能返回字符串数据,不能跳转html文件。然后在重新启动一下项目,点击跳转页面,由于在第三部中设定的url后面的是login,所以我们需要输入完整的url:http://127.0.0.1:8000/login/,就可以发现网页发生了跳转,显示login跳...原创 2019-10-13 11:00:16 · 293 阅读 · 0 评论 -
46 PyCharm的Django初识
安装Django(Python3)在cmd终端中输入命令行:pip install django即可。创建文件在专业版PyCharm中打开File->New Project其中,Location代表的是所创建文件的路径,Projiect Interpreter选择Existing interpreter,选择已经安装好的Python3的安装路径。运行在创建完项目位置以及名称之...原创 2019-10-13 09:59:34 · 247 阅读 · 0 评论 -
38 线程池
线程池属性concurrent.futures模块提供了高度封装的异步调用接口ThreadPoolExecutor :线程池,提供异步调用ProcessPoolExecutor :进程池,提供异步调用基本方法:submit(fn,*args,**kwargs) 异步提交任务。map(func,*iterables,timeout = None,chunksize = 1) 取代f...原创 2019-06-13 20:37:31 · 261 阅读 · 0 评论 -
35 threading模块、基础代码、全局解释锁以及一些其他方法
通过继承的方式,实现线程:import timefrom threading import Threadclass MyThread(Thread): def __init__(self, args): super().__init__() #执行父类中的__init__() self.args = args def run(self):...原创 2019-06-12 15:54:26 · 668 阅读 · 0 评论 -
31 事件
事件:通过一个信号来控制多个进程同时执行或者阻塞。一个信号可以使所有的进程都进入到阻塞状态,也可以控制所有的进程接触阻塞,一个时间被创建之后,默认是阻塞的状态from multiprocessing import Evente = Event()print(e.is_set()) #查看一个时间的状态,默认是阻塞状态print(123456)e.wait() #依据e.is_set()...原创 2019-05-24 21:11:04 · 275 阅读 · 0 评论 -
28 使用多进程实现socket服务端的并发效果
服务器端:import socketfrom multiprocessing import Processdef server(conn): ret = '你好' conn.send(ret.encode('utf-8')) msg = conn.recv(1024).decode('utf-8') print(msg) conn.close()if...原创 2019-05-11 17:08:10 · 215 阅读 · 0 评论 -
27 进程进阶
进程之间的运行次序import time,osfrom multiprocessing import Processdef func(args1,args2): print(args1,args2) print(1234) time.sleep(1) print(654323)if __name__ == '__main__': p = Proces...原创 2019-05-11 15:49:15 · 177 阅读 · 0 评论 -
30 进程锁
为了保证数据的安全性。import json, timefrom multiprocessing import Process,Lockdef show(): with open(r'E:\Python FullStack\Interpreter\MultiProcessing\ticket') as f: dic = json.load(f) print...原创 2019-05-15 16:53:48 · 154 阅读 · 0 评论 -
29 守护进程
当主进程结束时,子进程应该随着主进程的结束而结束,能做到这件事的,就叫做守护进程。下面的代码,挡住进程结束之后,子进程还会继续执行from multiprocessing import Processimport timedef func(): while True: time.sleep(0.5) print('123456')if __name...原创 2019-05-15 16:14:53 · 148 阅读 · 0 评论 -
26 初识进程
狭义上,进程就是正在运行的程序实例。广义上,进程是一个具有一定独立功能的程序关于某个数据集合的一次运行活动。它是操作系统动态执行的基本单元,在传统的操作i系统中,进程既是基本的分配单元,也是基本的执行单元。什么是进程为了将每个程序分离开来,在运行的时候,都有自己的运行空间,所以操作系统引入了进程的概念。(1) 进程是一个实体,每一个进程都有它自己的地址空间,一般情况下,包括文本区域,数据区域...原创 2019-05-07 12:05:03 · 314 阅读 · 0 评论 -
23 常用模块 hashlib
hashlib,是提供摘要算法的模块,它是一个集合。MD5,SHA1,SHAKE算法等。摘要算法:用于密码的密文存储、文件的一致性验证。对于同一个字符串,进行摘要,使用同一个算法得到的值始终是不变的。使用不同的算法对同一个字符串进行摘要算法,得到的值应该是不同的。,不管是用什么摘要算法,hashlib的使用方式永远不变。import hashlibmd5 = hashlib.md5()md...原创 2019-04-27 21:53:27 · 165 阅读 · 0 评论 -
22 内置方法__repr__、__str__、__del__
双下划线方法str、reprobj.__str__(object) #打印object信息obj.__repr__(object) #会把object中的信息完整的打印出来例如:a = 'abcde'print(a.__str__())print(a.__repr__())print(a) #打印一个对象的时候,就是调用了a.__str__()输出:class Pers...原创 2019-04-27 19:32:29 · 195 阅读 · 0 评论 -
Keras 深度学习框架方法及参数
Keras是python中基于Theano、CNTK等为计算后台的深度学习建模环境,相对于其他的深度学习框架,如tensorflow,theano,Caffe等,Keras具有其显著的优点,如,支持CNN,RNN等算法。大大地加快了开发的速度。本文主要介绍Keras的相关使用参数。核心层全连接层:神经网络中最常用到的,实现对神经网络中神经元的激活。keras.layers.core.De...原创 2019-06-12 15:57:15 · 820 阅读 · 0 评论 -
36 守护进程、守护线程、锁
守护进程随着主进程代码的执行结束而结束守护线程会在主线程结束之后等待其他子线程的结束才结束import timefrom threading import Threaddef func1(): while True: print('*'*10) time.sleep(1)def func2(): print('in func2') ...原创 2019-06-13 11:35:39 · 4980 阅读 · 2 评论 -
37 信号量、条件
信号量(Semaphore)控制只能由n个线程访问代码import timefrom threading import Semaphore,Threaddef func(sem,a , b): sem.acquire() time.sleep(1) print(a+b) sem.release()sem=Semaphore(4)for i in range...原创 2019-06-13 19:21:28 · 278 阅读 · 0 评论 -
Django连接MySQL数据库django.core.exceptions.ImproperlyConfigured错误
在Django的2.0版本之后,在使用自己创建app中的__init__.py文件中调用pymysql包,使用如下语句import pymysqlpymysql.install_as_MySQLdb()当运行是会出现如下错误:在网上搜了很多攻略,其中的一些方法是找到Python安装路劲下的Python36-32\Lib\site-packages\django\db\backends\...原创 2019-09-06 15:11:59 · 3617 阅读 · 0 评论 -
43 JavaScript基础
JavaScript概述一个完整的 JavaScript 实现是由以下 3 个不同部分组成的:核心(ECMAScript)文档对象模型(DOM) Document object model (整合js,css,html)浏览器对象模型(BOM) Broswer object model(整合js和浏览器)简单地说,ECMAScript 描述了JavaScript语言本身的相关内容。...原创 2019-08-06 20:22:42 · 133 阅读 · 0 评论 -
44 BOM和DOM
JavaScript分为 ECMAScript,DOM,BOM。BOM(Browser Object Model)是指浏览器对象模型,它使 JavaScript 有能力与浏览器进行“对话”。DOM (Document Object Model)是指文档对象模型,通过它,可以访问HTML文档的所有元素。Window对象是客户端JavaScript最高层对象之一,由于window对象是其它大部分...原创 2019-08-08 19:58:44 · 181 阅读 · 0 评论 -
41 HTML简介
什么是HTMLHTML(Hypertext Markup Language,超文本标记语言)是一种用于创建网页的标记语言。本质上是浏览器可识别的规则,我们按照规则写网页,浏览器根据规则渲染我们的网页,对于不同的浏览器,对同一标签可能会有不同的解释,也就是我们常说的兼容性问题。HTML文档结构<!DOCTYPE html><html lang="zh-CN"><...原创 2019-07-31 15:22:34 · 178 阅读 · 0 评论 -
40 数据库基础
什么是数据库数据库就是存储数据的仓库,平时所用到的电脑上的资料等都可以看作是数据。对数据库的操作,我们可以通过SQL语句进行操作,也可以通过可视化界面操作。数据库的几个概念数据库服务器 —>对应计算机数据库管理系统 —>对应操作系统库 —>文件夹表 —>文件记录 —>文件中的表头数据 —>文件中的数据MySQL的下载以及安装可以参考网上的...原创 2019-10-24 11:02:38 · 1569 阅读 · 1 评论 -
39 初始协程
协程主要用于高IO的操作的代码中,例如爬虫,如果只是单个的计算代码,不建议使用协程。进程:启动多个进程 进程之间是由操作系统负责调用线程:启动多个线程 真正被CPU执行的最小单位实际是线程开启一个线程 创建一个线程 寄存器 堆栈关闭一个线程协程:本质上就是一个线程能够在多个任务之间切换来节省一些IO时间协程中任务之间的切换也消耗时间,但是开销要远远小于进程线程之间的切换协程模...原创 2019-07-19 17:28:55 · 134 阅读 · 0 评论 -
34 线程
一个进程中,会有一个或者多个线程。进程是资源分配的最小单位,线程是CPU。每个进程中,至少有一个线程。进程与线程的关系进程与线程的区别:地址空间和其他资源:进程间相互独立,同意进程的各个线程间共享,某进程内的线程和其他进程不可见。通信:进程间通信IPC,线程间可以直接读写进程数据段(如全局变量)来仅从通信–需要进程同步和互斥手段的辅助,来保证数据的一致性。调度和切换:线程上下文切换比...原创 2019-06-12 10:39:01 · 215 阅读 · 0 评论 -
33 管道、数据共享、进程池、回调函数
###管道进程间通信(IPC)方式二:管道(不推荐使用,了解即可),端口易导致数据不安全的情况出现。from multiprocessing import Pipe,Processdef func(conn1,conn2): msg = conn1.recv() # 接收了conn2传递的 # msg1 = conn2.recv() # 接收了conn1传递的 ...原创 2019-06-11 21:14:15 · 473 阅读 · 0 评论 -
32 进程之间的通信
进程间通信(Inter-Porcess Communication,简称IPC),首先要了解队列,它是先进先出的。通过from multiprocessing import Queue来使用。from multiprocessing import Queueq = Queue(6)for i in range(6): q.put(i) print('%d放入队列'%i)pr...原创 2019-06-11 19:22:20 · 211 阅读 · 0 评论 -
25 struct定制报头以及ftp实践
struct定制报头以及ftp传输文件我们自网络上传输的所有数据,都叫数据包,数据包里的所有数据,都叫报文。报文里不止包含要发送的消息信息,还包括了ip地址,mac地址,端口号等。。。所有的报文都有报头,这是协议决定的。报文中包含里要接受多少个字节的信息等。我们可以自己定义报文,在网络传输过程中,处处有协议,协议就是一堆报文和报头。实现一个大文件的上传或者下载#server端import...原创 2019-05-02 14:03:54 · 1217 阅读 · 0 评论 -
24 TCP黏包问题
黏包问题只发生在TCP传输的时候,UDP不存在黏包问题。TCP是面向字节流的传输,UDP是面向包的传输。#server端from socket import *ip_port=('127.0.0.1',8080)tcp_socket_server=socket()tcp_socket_server.bind(ip_port)tcp_socket_server.listen(5)co...原创 2019-05-02 10:19:57 · 222 阅读 · 0 评论 -
爬虫【进阶】(套路二)
GitHub爬虫import requestsfrom bs4 import BeautifulSoupreq1 = requests.get('https://github.com/login')soup = BeautifulSoup(req1.text, features='lxml')tag = soup.find(name='input', attrs={'name': 'a...原创 2019-04-10 08:44:40 · 153 阅读 · 0 评论 -
爬虫【升级】(套路一)
示例一:爬取数据(携带请起头)import requestsfrom bs4 import BeautifulSoupr1 = requests.get( url='https://dig.chouti.com/', headers={ 'user-agent':'Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleW...原创 2019-03-17 17:34:41 · 170 阅读 · 0 评论 -
初识爬虫
爬取简单网页import requestsfrom bs4 import BeautifulSoupresponse = requests.get('https://www.autohome.com.cn/')response.encoding = 'utf-8' #设置网页编码text = response.text #打印网页信息# print(text)soup =...原创 2019-03-17 17:05:15 · 102 阅读 · 0 评论 -
07 装饰器 (wrapper)
装饰器形成的过程装饰器的作用装饰器的固定模式原创 2019-03-17 12:38:46 · 493 阅读 · 0 评论 -
04 文件操作
文件操作。文件路径:d:\log.txt编码方式:utf-8 gbk 。。。。操作方式:只读,只写,追加,读写,写读…以什么编码方式储存的文件,就以什么编码打开进行操作。只读:rf = open('log',mode='r',encoding='utf-8')content = f.read()print(content,type(content))f.close()f ...原创 2019-03-17 09:37:10 · 70 阅读 · 0 评论 -
03 Dict、集合的操作
数据类型划分:可变数据类型,不可变数据类型 不可变数据类型:元组,bool int str 可哈希 可变数据类型:list,dict set 不可哈希dict key 必须是不可变数据类型,可哈希, value:任意数据类型。dict 优点:二分查找去查询 存储大量的关系型数据 特点:无序的dic = { 'nam...原创 2019-03-17 09:36:21 · 98 阅读 · 0 评论 -
02 List、Tuple、range操作
List操作li = ['alex',[1,2,3],'wusir','egon','女神','taibai']l1 = li[0]print(l1)l2 = li[1]print(l2)l3 = li[0:3]print(l3)输出:alex [1, 2, 3] [‘alex’, [1, 2, 3], ‘wusir’]增加 append insertli = [...原创 2019-03-17 09:35:42 · 253 阅读 · 0 评论 -
12 匿名函数
![在这里插入图片描述](https://img-blog.csdnimg.cn/20190320160716263.png)def add(x,y): return x+y#类似于add = lambda x,y:x+yprint(add(1,2))原创 2019-03-20 19:55:03 · 100 阅读 · 0 评论 -
06 函数进阶
命名空间和作用域命名空间内置命名空间 就是python解释器启动时就可以使用的,比如:print()、input()、list() 内置的名字在启动解释器的时候,就被加载到内存中全局命名空间 在程序从上到下被执行的时候,一次加载到内存的 放置了我们设置的所有变量名和函数名局部命名空间 函数内部定义的名字 调用函数的时候,才会产生这个名称空间,随着函数执行的结束...原创 2019-03-16 13:30:23 · 96 阅读 · 0 评论 -
05 函数
定义函数在定义好之后,可以在任何需要的地方调用。函数:可读性强 复用性强def 函数名(): 函数体 return 返回值所有的函数只定义不调用就一定不执行,先定义后调用函数名() 不接收返回值def 函数名(参数): #函数名不能是关键字,不能以数字开头。参数有无具体看实际情况 函数体 return 返回值不能只是单纯的打印,还要有返回值!!!!返回...原创 2019-03-16 09:48:12 · 88 阅读 · 0 评论 -
01 Python 学习笔记
Python 基础宏观上:python2 与 python3的区别: python2 源码不标准,混乱,重复代码过多python3 统一标准,去除重复代码Python特点编译型:一次性将所有程序编译成二进制文件。缺点:开发效率低,不能跨平台。优点:运行速度快。例如:C,C++等等。解释型:优点:开发效率高,可以跨平台。缺点:运行速度慢。例如:pyth...原创 2019-03-15 22:18:07 · 290 阅读 · 0 评论 -
08 迭代器和生成器
只要含有yield关键字的函数,都是生成器函数。如果一个函数中由yield关键字,就不能出现return关键字,两者不能共用,且yield需要写在函数内部。def generator(): print(1) return 'a'ret = generator()print(ret)def gennerator(): print(1) yield 'a'ret = genera...原创 2019-03-17 21:39:05 · 97 阅读 · 0 评论 -
09 生成器函数进阶
def generator(): print('123') yield 1 print('456') yield 2 print('789')g = generator()ret = g.__next__()print('***',ret)ret = g.__next__()print('***',ret)输出:因为print(‘789’)下面没有yield了,所以会报错。...原创 2019-03-18 20:16:52 · 128 阅读 · 0 评论 -
10 生成器表达式和列表推导式
生成器表达式和列表推导式不同:括号不同,生成器表达式用(),列表推导式不用返回的值不一样,生成器表达式返回一个生成器,几乎不占内存。列表推导式一下子把值全取出来,占内存大。列表推导式[满足条件的元素相关的操作 for 元素 in 可迭代数据类型 if 元素相关的条件] #带删选功能egg_list=['鸡蛋%s'%i for i in range(10)] #列表推导式pri...原创 2019-03-18 20:47:00 · 169 阅读 · 0 评论