Python基础
文章平均质量分 84
HashFlag
Lazy or lazy
展开
-
Git操作的基本命令
Git的基本创建分支,rebase,stash,回滚等命令原创 2022-10-04 20:29:14 · 455 阅读 · 0 评论 -
Django框架(2)
五、静态文件配置Django的常用的三种静态文件的配置方式(1)settings配置引入静态文件在settings.py中配置STATICFILES_DIRS = [ os.path.join(BASE_DIR, 'statics'), # statics为创建的静态文件夹]在前端文件导入的时候使用settings.py中的STATIC_URL = '/static/'的static路径引入<!-- html代码 --><!DOCTYPE html&原创 2020-07-19 18:54:09 · 173 阅读 · 0 评论 -
Django框架(1)
Django框架的基本使用Django是一个功能强大的web框架框架模式1、MVC和MTV框架MVC:Web服务器开发领域里著名的MVC模式,所谓MVC就是把Web应用分为模型(M),控制器©和视图(V)三层,结构说明如下:M: models 数据库相关操作V: views 视图,也就是业务逻辑相关操作C: controller 控制器,也就是通过路径找到对应视图函数MTV:Django的MTV模式本质上和MVC是一样的,也是为了各组件间保持松耦合关系,只是定义上有些许不同。M: mo原创 2020-07-14 22:57:54 · 381 阅读 · 0 评论 -
jQuery的基本使用
五、jQuery的使用1、jQuery基本使用(1)jQuery简介jQuery是一个简洁而快速的JavaScript库,可用于简化事件处理,HTML文档遍历,Ajax交互和动画,目的是让开发者更容易地在网站上使用JavaScript(将复杂的js操作封装的很简单)。支持链式操作 :`$(’.c1’).addClass(‘c2’).text(‘xxx’).addClass(‘xxx’).css({‘color’:‘white’});`在各大浏览器里面都兼容,不需要考虑兼容性问题注:在使用aj原创 2020-07-05 22:11:01 · 551 阅读 · 0 评论 -
js的BOM对象和DOM对象
(9)序列化var d = {'a':'aa','b':18};序列化: var d_json = JSON.stringify(d); //python json.dumps(d); 反序列化: d_json = "{"a":"aa","b":18}" var reverse_json = JSON.parse(d_json); //python json.loads()5、BOM对象浏览器对象模型,描述处理网页内容的方法和接口(1)弹窗 alert();和confirm原创 2020-07-02 22:25:02 · 236 阅读 · 0 评论 -
JavaScript基础
四、JavaScript注:javascript和java毫无关系js(简称)–javascript直译型脚本语言javascript的标准是ECMAscript,截至 2012 年,所有浏览器都完整的支持ECMAScript 5.1,旧版本的浏览器至少支持ECMAScript 3 标准。1、JavaScript的三大组成部分ECMAScript,文档对象模型(DOM),浏览器对象模型(BOM)ECMAScript:描述了语言的语法和基本对象,是JavaScript的核心DOM:描述处理网页内原创 2020-07-01 22:28:58 · 300 阅读 · 0 评论 -
css补充
(12)伪元素选择器html代码: <div> 吟诗作对! </div>css写法 div{ background-color: pink; height: 100px; width: 200px; } div:after{ content: '?'; color:white; }(13)伪类选择器hover和pointerhtml代原创 2020-07-01 07:43:47 · 151 阅读 · 0 评论 -
css基本使用
1、css css的文件的引入方式# 第一种引入方式head标签中引入head标签中引入<style> /* 选择器{css属性名称:属性值;css属性名称:属性值;} */ div{ /* css注释 */ width: 200px; height: 200px; background-color: red; }</style># 第二种引入方式外部文件引入 工作中常用原创 2020-06-29 21:33:15 · 306 阅读 · 0 评论 -
前端知识
前端知识web服务的本质:基于B/S网络架构,浏览器和服务端的交互浏览器发送请求,服务端接收请求,服务端响应请求,服务端吧HTML文件内容发给浏览器,浏览器渲染页面发送请求通过OSI网络七层模型:应用层,表示层,会话层,传输层,网络层,数据链路层,物理层一、HTML介绍html是超文本标记语言,用于创建网页的标记语言本质是浏览器能识别的规则,不过容易出现浏览器的兼容问题导致渲染效果不同网页文件的拓展名:.html或htm注:html不是编程语言,只是一种标记语言;标记语言是不存在逻辑的1原创 2020-06-28 23:53:14 · 174 阅读 · 0 评论 -
索引树的高度、执行计化、事务处理的四项特征
十三、索引树高度1、表的数据量数据量越大,树的高度就会变高,理论上三层索引树的告诉最为理想,可以支持百万级别的数据量解决:可以使用分表(横切,竖切),分库,增加缓存,解决数据量大,查询慢的问题2、索引键值过长该索引字段存储数据太大,每个叶子节点最大存储16K,超过这个范围会新增加叶子节点和分支节点解决:前缀索引(截取前5个长度)3、数据类型char(定长) varchar(变长)从开辟空间速度来看,char快从数据结构上来看,varchar更合理(1)避免使用select * ,不确定表原创 2020-06-24 23:09:53 · 329 阅读 · 0 评论 -
sql语句优化
十二、SQL语句优化1、SQL语句优化1、mysql的执行流程客户端: 发送连接请求,然后发送增删改查sql语句执行操作服务端: (1)连接层:提供和客户端连接的服务,在tcp协议下,提供多线程的技术,让多个用户登录到mysql中 可使用命令:show processlist; 查看所有登录到mysql的用户进程 (2)服务器:提供各种接口(增删改查等操作)分析器组件会解析用户的sql语句; 如果发现sql语句执行效率较低,会提交给优化器组原创 2020-06-23 22:24:19 · 191 阅读 · 0 评论 -
单表、多表、子查询
七、单表查询select . . . from . . . where . . . group by . . . having . . . order by . . . limit . . .1、while 条件的使用: 对表中数据的筛选和过滤 (1)判断的符号: = > >= < <= != <>不等于 (2)拼接条件关键字: and or not (3)查询区间范围值:between betw原创 2020-06-18 22:35:07 · 390 阅读 · 0 评论 -
约束,表与表之间的关系
三、约束 对编辑的数据进行类型限制,不满足约束条件的直接报错 unsigned:无符号 not null:不为空 default:设置默认值 unique:唯一约束,数据唯一不能重复 索引:相当于字典的目录,通过索引可以加快查询速度 UNI 表示唯一索引,允许null空值; primary key:主键,标记数据的唯一特征(唯一且不为空的数据) 注:主键非空且唯一,在一个表里面,只能有一个字段是主键 auto_increment :自原创 2020-06-17 22:33:08 · 557 阅读 · 0 评论 -
线程补充、线程/进程池、协程
def get_url(url):response = requests.get(url)if response.status_code == 200:# print(response.text)time.sleep(0.1)(1) 正常爬取‘’’starttime = time.time()for i in url_list:get_url(i)endtime = time.time()print(“执行时间:” ,endtime - starttime ) # 18.7802140原创 2020-06-14 23:35:43 · 207 阅读 · 0 评论 -
线程与进程的数据共享
10、数据共享除了上面的通过Queue队列文件进行数据共享外还可以使用Manager(list列表,dict字典)进行进程之间的共享数据from multiprocessing import Process,Manager,Lockdef work(data,lock): # 1.正常写法 """ lock.acquire() # data["count"] -= 1 data[0] += 1 lock.release() """ # 2.使用with 语法简化上锁解锁操作 w原创 2020-06-11 21:11:41 · 1489 阅读 · 0 评论 -
锁,队列,事件,生产者消费者模型
6、锁(Lock)(1)进程锁:Lock lock.acquire():上锁 lock.release():解锁 调用方式:from multiprocessing import Process 注意点: 同一时间只允许一个进程上一把锁(Lock锁的特点) 优点:加锁可以保证多个进程修改同负一数据时,同一时间只能由一个任务执行修改, 即串行修改,牺牲运行速度来保证数据安全互斥锁Lock:互斥锁就是进程间互相排斥,谁先强盗资源原创 2020-06-11 00:22:04 · 262 阅读 · 0 评论 -
python进程
廿二、进程进程是正在运行的程序,他是操作系统中,资源分配的最小单位资源分配:分配的是cup和内存等物理资源注:进程号是进程的唯一标识;同一个程序执行两次后是两个进程进程和进程之间是彼此隔离的,通过socket通信1、并行和并发并发:一个cpu同一时间不停执行多个程序并行:多个cpu同一时间不停执行多个程序2、cpu的进程调度方法先来先服务fcfs(fist come first server):先来的先执行短作业优先算法:分配的cpu多,先把短的算完时间片轮转算法:每一个任务就执行一个原创 2020-06-09 22:38:36 · 185 阅读 · 0 评论 -
socketserver模块与哈希加密模块
七、socketserver模块基于原有的socket模块进行封装后的模块socketserver网络协议的最底层就是socketserversocketserver的作用:实现TCP协议,server端的并发socket参数的详解:socket.socket(family=AF_INET, type=SOCK_STREAM, proto=0, fileno=None)family参数:地址系列默认为AF_INET,AF_INET代表IPV4;AF_INET6代表IPV6 AF_UNI原创 2020-06-08 20:50:36 · 182 阅读 · 0 评论 -
Tcp/Udp协议、socket、粘包
五、TCP/UDP协议三次握手SYN 创建连接ACK 确认响应FIN 断开连接三次握手 客户端发送一个请求,与服务端建立连接 服务端接受这个请求,并且响应与客户端建立连接的请求 (服务端的响应和请求是在一次发送当中完成的) 客户端接受服务端的请求之后,把消息在响应给服务端 接下来客户端和服务端可以发送数据了. 每发送一个数据出去,对应的主机都会有一个回执消息,确认数据的接受情况, 如果没有得到回执消息,该数据会重发一次,保证数据的完整. 不会一直不停的发下去,有时间最大允许原创 2020-06-06 23:43:00 · 267 阅读 · 0 评论 -
计算机网络基础
计算机网络基础一、网络开发两大架构早期数据交互原理——>socket(套接字)的模型socket(套接字)是收发数据的一个工具a文件与b文件之间的交流是通过c文件实现的a文件把数据放到c文件中,b文件从c文件中取b文件把数据放到c文件中,a文件从c文件中取出现网络后:a文件中的数据,可以通过网络协议,转化成像101010这样的电信号,进行发送a文件借助socket发送数据b文件结束socket接收数据1、C/S 架构c => client 客户端 是具体的一个软件,原创 2020-06-04 22:23:06 · 573 阅读 · 0 评论 -
异常处理
二十一、异常处理注:语法报错无法抑制(无法抛出异常)1、异常处理(30)IndexError:索引超出序列的范围KeyError:字典中查找一个不存在的关键字NameError:尝试访问一个不存在的变量IndentationError:缩进错误AttributeError:尝试访问未知的对象属性sStoplteration:迭代器没有更多的值AssertionError:断言语句(assert)失败 [测试领域] assert断言,猜后面的表达式是否正确,如果猜对了,什么反应都没有原创 2020-06-03 22:25:09 · 156 阅读 · 0 评论 -
反射和装饰器
9、反射反射针对的是类、对象和模块反射:通过字符串去操作类对象或者模块当中的成员(属性方法)hasattr、getattr、setattr、delattr(1)反射类、对象中的成员 hasattr:判断类或对象中是否存在指定的成员 注:判定的必须是字符串形式的成员 getattr:获取对象/类成员的值 注:通过类反射出来的是一个普通方法;通过对象反射出来的是绑定方法; 当类对象中的成员不存在时,可以设置默认值(第三个参数是默认原创 2020-06-01 23:35:34 · 265 阅读 · 0 评论 -
魔术方法
十九、魔术方法与魔术属性定义:在Python中,所有以“__”双下划线包起来的方法,都统称为“Magic Method”(魔术方法)1、__del__析构方法触发时机:当对象被内存回收的时候自动触发功能:对象使用完毕后资源回收参数:一个self接受对象返回值:无自动触发的两种情况: (1)页面执行完毕回收所有变量 (2)所有对象执行完毕回收所有变量 注:没有任何变量指向或引用,这个值才是真正的被释放了class LangDog(): food = "吃肉"原创 2020-05-29 23:31:20 · 378 阅读 · 0 评论 -
面向对象之多态
3、面向对象之多态不同的子类对象调用相同的父类方法,产生了不同的执行结果继承和改写class Soldier: def attack(self): pass def back(self): passclass Army(Soldier): def attack(self): print("[陆军]上来拼刺刀,你捅我我捅你,一刀999") def back(self): print("[陆军]撒腿就原创 2020-05-28 18:10:56 · 144 阅读 · 0 评论 -
面向对象
2、面向对象之继承继承:一个类除了自身所拥有的属性方法之外,还获取了另外一个类的成员属性和方法一个类继承另一个类,那么该类就是子类(衍生类),被继承的这个叫做父类(基类,超类)继承的3种形式:单继承、多继承、菱形继承注:python中所有类都默认继承object类(python3.X版本,python2.X则不会默认继承object类)单继承一个子类只继承一个父类继承的特点(子类继承父类) (1)子类可以调用父类所有的公有成员 (2)子类不可以调用父类的私有成员 (3)子类可原创 2020-05-27 22:29:43 · 132 阅读 · 0 评论 -
面向对象
十八、面向对象(oop)面向过程编程POP(Procedure-Oriented Programming)面向对象编程OOP(Object Oriented Programming)(1)类的定义: 第一种定义方式 class Car: pass 第二种定义方式 class Car(): pass 第三种定义方式 class Car(object): pass(2)类的实例化 class Car():原创 2020-05-26 20:14:49 · 145 阅读 · 0 评论 -
正则模块补充
9、正则函数findall search match split sub subn finditer compilefindall:匹配所有符合条件的字符,并返回到列表中search:匹配第一次匹配到的符合条件的,返回对象,通过group获取结果,通过groups获取分组结果并返回元组中match:验证用户输入内容,search在正则表达式中加上^就和match效果一样split:切割,比字符串的split切割功能更加强大sub:替换,比字符串的replace替换功能原创 2020-05-25 20:46:20 · 118 阅读 · 0 评论 -
正则表达式
十七、正则表达式需要使用re模块:import re1、预定义字符集\d 匹配数字\D 匹配非数字\w 匹配字母数字或下划线(正则中支持中文的匹配,中文会被匹配到)\W 匹配非字母数字下划线(中文不会被匹配到)\s 匹配任意的空白符 \n \t \r\S 匹配非空白符\n 匹配一个换行符2、字符组必须匹配中括号里列举的字符[]- 代表一个范围 [0-9] 代表范围0-9^ 在字符组当中代表除了… [^] 除了0-9想要匹配 - 和 ^ 使用 \ 使转义字符失效匹配 \ 使用原创 2020-05-23 21:30:04 · 456 阅读 · 0 评论 -
压缩模块和导包
9、zipfile压缩模块使用方式:import 导入 zipfile 模块 import zipfiler:读 w:写 a:追加(1)创建压缩文件:zipfile.ZipFile(文件路径,“w”, 压缩方式),默认只存储打包, zipfile.ZIP_STORED:默认只存储打包,不会对文件进行压缩 zipfile.ZIP_DEFLATED:对文件进行压缩操作 写入文件:write(路径,别名),可临时创建一个文件夹(2)打开压缩文件:zipfile.ZipFile原创 2020-05-21 22:47:37 · 220 阅读 · 0 评论 -
os、time、shufil模块
6、time时间模块time(时间戳)、localtime、mktime、ctime、asctime、sleep、strftime、strptime、perf_counter使用方式:import 导入 time 模块 import timetime:获取本地时间戳localtime:默认返回当前时间戳对应的时间元组mktime:通过时间元组获取时间戳(参数是时间元组)ctime:获取本地时间字符串(参数是时间戳,默认当前)asctime:通过时间元组获取字符串时间(参数是时间元组):缺陷不能原创 2020-05-20 22:54:26 · 252 阅读 · 0 评论 -
内置函数和序列化
3、内置函数abs、round、sum、max、min、sorted、pow、range、bin、oct、hex、chr、eval、esec、repr、hashabs:绝对值函数round:四舍五入函数(注:n.5 n为偶数则舍去,n.5 n为奇数,则进一)注:其余情况正常四舍五入sum:计算序列的和,列表、集合、元组、字典皆可,注:字典只会取到键,所有元素必须是数字,不能是字符或其它max:获取列表里面的最大值(高级函数)min:获取列表里面的最小值(高级函数) 列表、集合、元组、字典原创 2020-05-19 22:22:22 · 208 阅读 · 0 评论 -
递归函数,random和math模块
十四、递归函数1、普通递归:递去归来递归的触发条件:(1)当最后 一层函数全部执行结束的时候,有触底反弹的过程(回马枪),回到上层函数空间的调用处(2)遇到return返回值,直接返回上层空间的调用处函数在运行的时候,需要内存开辟空间,这个空间叫栈帧空间递归:去的过程就是不停的开辟栈帧空间,在回的时候就是不停的释放栈帧空间,递归函数就是不停开辟释放内存空间的一个完整的过程回的时候,有两种触发的机制,要么是最后一层函数空间全部执行完毕,要么是遇到return,都会触底反弹(回马枪)原创 2020-05-18 20:07:50 · 283 阅读 · 0 评论 -
推导式
十二、推导式1、推导式(列表推导式)用一行循环判断遍历出一系列数据的方式注:推导式在使用时只能使用for循环和if判断,if判断只能式单项判断推导式得三种形式:列表推导式、集合推导式、字典推导式(1)普通推导式:通过 [] 和 for 形式构成(2)带有判断的推导式:通过 [] for if 形式构成(3)多循环推导式:通过 [] for for … 形式构成(4)带有判断条件的循环推导式:通过 [] for for if 的形式构成列表推导式,获取的数据在列表中lst = [1, 2,原创 2020-05-17 21:04:27 · 2315 阅读 · 0 评论 -
高阶函数
(1)迭代器: 概念:能被next()函数调用,并不断返回下一个值的对象,叫做迭代器(迭代器是对象) 特征:不依赖索引,通过next指针迭代所有数据,一次只取一个,可以大大节省空间,迭代无限量的数据可迭代对象: 如果成员中含有__iter__这个方法,就是可迭代对象 dir函数可以查看一个对象中所有的成员(2)迭代器:迭代器的定义: 通过iter()方法定义迭代器 通过可迭代对象.__iter__()定义迭代器判断迭代器:如果内置成员中含有__iter原创 2020-05-14 22:16:25 · 226 阅读 · 0 评论 -
闭包函数,函数的嵌套,匿名函数
2)locals和golbals 、nonlocal和globallocals 获取当前作用域中的所有内容,有两种情况(返回系统的字典) 在函数外 ,获取打印之前的所有变量,返回字典,全局空间 在函数内 ,获取调用之前的所有变量,返回字典,局部空间作用域# 例子 1a = 1b = 2res = locals()c=3print(res)d = 4# 例子2a=1def func(): b = 2 res = locals() c=3 pr原创 2020-05-13 23:06:59 · 215 阅读 · 0 评论 -
函数
3、函数的参数1)参数的种类:(1) 形参: 形式上的参数 , 在函数的定义处(2) 实参: 实际上的参数 , 在函数的调用处2)形参的种类:普通(位置)形参,默认形参,普通收集参数,命名关键字参数,关键字收集参数注:调用时,如果不给实际参数,默认使用自带的值进行调用调用时,如果给实际参数,那么使用实参来进行调用默认参数必须跟在普通参数的后面调用函数时,关键字实参顺序可以任意调整的关键字实参必须跟在普通实参的身后 收集参数: 普通收集参数:通过*加参数代表普通收集参数,收集多原创 2020-05-12 20:04:56 · 148 阅读 · 0 评论 -
文件的扩展模式,文件相关函数,函数的基本定义与概念
2、文件的扩展模式(包含文件的读写追加操作)utf-8编码中,默认一个中文字符占三个字节,英文或符号占用一个字节1)r、w、a、rb、wb、ab、r+、w+、a+、rb+、wb+、ab+(1)r读(文本文件):read读,文件不存在就会报错,文件存在就从头开始读。并且将文件指针放在文件的开头开始读取数据(2)w写(文本文件):write写,文件不存在就默认创建文件,存在就默认从文件的开头开始写入内容,并且将文件指针放在文件的开头开始写入数据(3)a追加(文本文件):append追加,文件不存在就默原创 2020-05-11 22:17:23 · 445 阅读 · 0 评论 -
列表、元组、字典、集合的基本使用和相关函数,基础的文件操作
2、列表的相关函数append、insert、extend、pop、remove、clear、index、count、sort、reverse、del(1)增:有三个方法append 向列表末尾添加新的元素insert 向指定索引前添加新的元素,必须设置参数,否则会报错;当插入的列表为空时,参数为0也可执行插入操作extend 迭代追加所有元素(迭代追加字典类型只会获取到键添加进去)(2)删:有4个方法pop 通过索引删除指定元素(无参数默认删除最后一个,可获取已删元素内容);注:删除元原创 2020-05-10 15:48:12 · 760 阅读 · 0 评论 -
字符串的操作与使用,列表的基本使用
1、字符串的操作1)字符串的拼接(使用 +)strvar1 = 'asd'strvar2 = 'asd'ret = strvar1 + strvar2print(ret)2)字符串的重复(使用 *)strvar = 'qwe' * 2print(strvar)3)字符串的跨行拼接(使用 \)strvar = 'sdfsdfasdfasfaasdfasfd' \'asfda...原创 2020-05-07 23:41:41 · 478 阅读 · 0 评论 -
while循环补充和for循环的使用
双层while循环:(使用时应注意判断条件和自增(自减)变量的位置)# 打印九九乘法表i = 1while i <= 9 : j = 1 while j <= i: print( "%d * %d = %2d " % (i, j, i * j) , end = "") j += 1 print() i += 1 多层while循环# 百钱百鸡问题...原创 2020-05-06 21:39:26 · 228 阅读 · 0 评论