自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 Django 视图类丶增加额外功能及中间件

创建视图类class RegisterView(View): def get(self,request): print('当前的请求是get请求') return HttpResponse('get') def post(self,request): return HttpResponse('post')路由配置url(r'register/',RegisterView.as_view()),遵循开放封闭原则,添加额外功能第一种

2020-10-19 20:23:29 190

原创 django关于获取

get获取参数def get(self, key, default=None): """ Returns the last data value for the passed key. If key doesn't exist or value is an empty list, then default is returned. """ try: val = self[key] except KeyError: return

2020-10-19 20:15:33 183

原创 django 视图路径(补)

反向解析第一步:在include中设置namespace第二步:在子应用的URL中设置name第三步:以后如果需要使用到反向解析来获取真实的路径地址from django.urls import reversereverse('books:testurl')URL路径参数位置参数第一步:现在url地址中,进行路由匹配,将对应的数据使用分组的情况进行匹配第二步:框架会将在第一步匹配的数据自动传递给处理路径的视图函数,匹配的个数与视图函数的参数个数必须一致def index(reques

2020-10-19 20:07:18 142

原创 Django 路径与视图

一级路径确定from django.conf.urls import url,includefrom django.contrib import adminurlpatterns = [ url(r'^admin/', admin.site.urls), url(r'users/',include('users.urls'))]二级路径的确定 应用.urls中确定from django.conf.urls import url,includeurlpatterns =

2020-10-19 19:59:21 174

原创 Django查询及模型的问题

查询filter模型类.objects.filter(查询条件)注意点:1、返回的是一个列表get注意点:1、get返回的数据必须有且仅有一个,如果返回的结果没有匹配到数据或者返回多个则报错exclude注意点1、exclude方法返回的是与查询规则相反的数据。(取反)条件运算符1、exact 表示相等2、endswith表示的是以。。。。结尾3、iendswith 表示的是忽略大小写的以。。。结尾4、coutoins 包含。。5、isnull 空查询6、regex

2020-10-19 19:53:46 233

原创 Django关系型数据库及迁移

1.在指定数据库中创建数据库如mysql中create database 名字 charset utf8在settings文件下DATABASES = { #'default': { # 'ENGINE': 'django.db.backends.sqlite3', # 'NAME': os.path.join(BASE_DIR, 'db.sqlite3'), # } 'default': { 'ENGINE': 'django

2020-10-19 19:42:53 90

原创 Djang配置

配置环境创建虚拟环境mkvirtualenv dj_1.11 -p python3安装djangopip install django==版本号这里需要注意版本兼容问题创建一个新项目django-admin startproject 项目的名称创建子应用此时要先进入虚拟环境 然后进入到该项目路径下.(针对于DOS窗口操作)workon 虚拟环境名称名称 #进入虚拟环境#进入到项目文件夹下后python manage.py startapp 子应用的名字子应用做完要注

2020-10-19 19:32:42 109

原创 MongoDB个人整理

安装sudo apt-get install mongodb关系型数据库与mongodb的对比关系型数据库MongoDB说明databasedatabase数据库tablecollection数据库表/集合rowdocument数据库记录行/文档column 数据属性field 字段/域列/字段index 索引index 索引primary keyprimary key数据库的相关命令db查看当前数据库名称

2020-10-19 19:12:13 49

原创 关于常见的反爬之字体

字体反爬原理CSS3 @font-face 规则在 CSS3 之前,web 设计师必须使用已在用户计算机上安装好的字体。通过 CSS3,web 设计师可以使用他们喜欢的任意字体。当您您找到或购买到希望使用的字体时,可将该字体文件存放到 web 服务器上,它会在需要时被自动下载到用户的计算机上。您“自己的”的字体是在 CSS3 @font-face 规则中定义的。分析过程1、先分析出font-face对应的加密过的字符串例子:import base64font_face = '''AA

2020-10-19 18:56:50 365

原创 xpath

爬虫的具体步骤1、所需要数据对应的真实URL地址2、找到对应的请求方式3、使用第三方包,构造请求(注意需要进行伪装,headers的伪装,最重要的是需要进行浏览器伪装–User-Agent)4、发送请求5、收到响应之后,需要对响应体数据进行解析(普通的页面text,如果是多媒体文件是content)6、将拿到的页面或者多媒体文件按照需求进行提取(正则)7、将获取到的目标文件进行保存html 与xml作用XML可扩展标记语言XML 被设计用来传输和存储数据,它的焦点

2020-09-23 19:55:25 61

原创 正则匹配补充

match从开头进行匹配,不匹配报错def match(pattern, string, flags=0): """Try to apply the pattern at the start of the string, returning a match object, or None if no match was found.""" return _compile(pattern, flags).match(string)searchdef search(patter

2020-09-23 19:26:51 92

原创 关于正则匹配的个人整理

match进行匹配import re# match方法进行匹配,从头开始匹配。match这个函数如果成功匹配,返回的就是一个对象,如果匹配不到数据,返回的就是Noneresult = re.match('python','python is good')print(result)# group这个方法用来提取匹配到的数据print(result.group())注意点:1、match从头匹配字符.单个任意字符result = re.match('.','bcd')print(

2020-09-23 19:19:32 67

原创 爬虫(补)

关于通信过程1、浏览器会通过dns服务器查找域名对应的IP地址2、向IP地址对应的web服务器取发送请求3、web服务器会根据请求进行响应,发送你需要的数据回浏览器4、浏览器接收服务器发送过来的数据或者网页,会进行渲染,展示在页面中关于路径URL:统一资源定位符http://tieba.baidu.com/f/index/forumpark?cn=%E7%BE%8E%E9%A3%9Fhttps://tieba.baidu.com/f?kw=%E7%81%B5%E7%AC%BC协议(HTT

2020-09-23 19:03:56 100

原创 爬虫基础,搜索引擎原理(个人整理)

爬虫的分类通用爬虫搜索引擎的一部分,将互联网的网页下载到本地,形成镜像聚焦爬虫面向特定的需求,在网页抓取的时候对内容已经进行了筛选更多的是面向聚焦爬虫抓取网页 搜索引擎网络爬虫1、首先选取一部分的种子url,将这些URL放入到等待抓取的url队列中2、取出待抓取的url地址,解析等到主机的ip,将url对应的网页下载下来,存储进已经下载的网页库中,并且将这些已经完成url地址抓取的URL放入到已经抓取的url队列中3、分析已经抓取的URL队列中的url,分析其

2020-09-23 18:55:18 824

原创 MySQL 会话变量

(1)查看所有的会话变量 SHOW session VARIABLES SHOW VARIABLES (2)模糊查找会话变量 SHOW session VARIABLES like '%变量%' SHOW VARIABLES like '%变量%'(3) 查看具体的某个全局变量 SELECT @@autocommit SELECT @@session.autocommit (4) 对于某个具体的全局变量进行赋值 方法1:SET @@session.aut

2020-09-23 18:46:35 1454

原创 mysql的流程控制结构

if函数IF (表达式1,表达式2,表达式3)功能:实现简单的双分支问题执行顺序:首先判断表达式1如果表达式1成立,则返回表达式2的值否则返回表达式3运用在任何地方case类似if语句,实现区间判断case when 判断条件1|需要判断的值 then 返回值或者表达式; when 判断条件2|需要判断的值 then 返回值或者表达式; 。。。 else 返回值或者表达式;end case注意点:1、在真实的使用场景下,else可以省略实例:DEL

2020-09-23 18:46:17 107

原创 关于sql循环语句基础

while的结构语法标签名:while 条件 do 循环体内容 end while 标签案例DELIMITER $CREATE PROCEDURE p18()BEGIN DECLARE i INT DEFAULT 1; WHILE i<=10 DO INSERT INTO girls(gname) VALUES(CONCAT('小红',i)); SET i=i+1; END WHILE ;ENDCALL p18()批量插入数据,如果名字是小红3的话,则停

2020-09-23 18:46:01 115

原创 关于sql函数

函数优点:1、提高代码重用2、简化操作3、减少编译次数4、减少了数据库服务器的连接次数提高效率函数与存储过程的区别存储过程:可以有返回值,也可以没有返回值,按照业务需求来定,适合批量插入,适合批量跟新,更多时候用在增删改函数:有且只有一个返回值,适合处理完成后返回一个结果函数的格式:CREATE FUNCTION 函数名(参数名 参数类型) RETURNS FLOATCREATE FUNCTION 函数名(参数列表) RETURNS 返回值类型BEGIN 函数体;END

2020-09-18 08:36:20 64

原创 循环语句扩展补充(个人理解)

iterate leave语句与python类似语句作用iteratecontinue跳出当前循环进入下一次循环leavebreak跳出循环,直接结束循环loop[标签:]loop 循环体 end loop [标签]repeat[标签:]repeat 循环体until 结束循环的条件end repeat [标签][]表示可写可不写,看实际情况,建议还是写while loop repeat的区别例子:已知表strtableid 主

2020-09-18 08:35:35 107

原创 mysql系统变量(全局)

定义由系统提供的,属于服务器层面的,启动之后就会出现的,已经有初始值的系统变量的分类1、全局变量 mysql在启动的时候由服务器将他们初始化默认值2、会话变量 针对的是每一次创建的连接,由mysql来进行初始化操作,会将当前所有的全局变量复制一份,存储为会话变量全局变量(1)查看所有的全局变量 SHOW GLOBAL VARIABLES (2)模糊查找全局变量 SHOW GLOBAL VARIABLES like '%变量%'(3) 查看具体的某个全局变量(以自动提交为

2020-09-17 19:55:23 758

原创 关于存储过程中参数的问题

参数可以为空值DELIMITER $ CREATE PROCEDURE p1()BEGININSERT INTO brand(brandename) VALUES('lv'), ('哇哈哈'), ('雪碧'), ('coco');END$注意点:当前存储过程中,没有参数参数模式为in—单个参数#根据传入的brande_id查找对应的品牌的名字CREATE PROCEDURE p2(IN brandeid INT)BEGINSELECT

2020-09-17 19:51:37 551

原创 数据库存储过程

优点:1、提高代码重用2、简化操作3、减少编译次数4、减少了与数据库服务器的连接次数作用:一般情况下,用于数据库的增删改存储过程的格式CREATE PROCEDURE p1()BEGIN 存储过程体(合法有效的sql语句)END格式:CREATE PROCEDURE 存储过程的名字(参数列表)BEGIN合法有效的sql语句END注意点:1、参数列表 参数模式 参数名字 参数类型 参数模式: in 该参数是可以作为输入,说明当存储过程进行调用的时候需

2020-09-17 19:48:34 59

原创 数据库视图

视图的定义:一种虚拟存在的表,行和列的数据来自于视图中的查询所用的表,并且是使用视图的时候动态生成的,只保存sql逻辑,不保存结果视图:是虚拟的表,和普通的表一样,通过表,动态生成新数据表:数据库中真实存在的视图的使用场景在不同的使用场景下,比如商品展示的,商品列表,商品详情,可能会用到相同的业务逻辑,而且这个逻辑写出的sql语句特别的麻烦,没有必要重复书写多次,可以使用视图,一次创建,下一次使用相同的逻辑的时候,使用视图基本的视图格式:create view 视图名assql查询语句

2020-09-17 19:46:07 48

原创 关于私有属性和私有方法

类的私有属性:不能通过实例对象直接访问,但是可以在类里面访问类的保护变量:可以通过实例直接访问但是子类不可以使用父类的私有属性私有方法:私有的属性,不能通过对象直接访问,但是可以通过方法访问私有的方法,不能通过对象直接访问私有的属性和方法不能被子类继承,也不能访问一般情况下,私有的属性和方法都不对外公布,用来做内部的操作,起到安全的作用强行获取:获取私有属性:调用私有方法:...

2020-09-17 19:27:15 1928 1

原创 mysql与python的交互基础整理

以上是步骤。至于导包等操作就不细讲!!添加数据的操作:import pymysql# import sqlalchemy# todo 创建连接con = pymysql.connect(host='localhost',user='root',password='mysql',database='shanghui',port=3306,charset='utf8')# host=None, user=None, password="",database=None, port=0print

2020-09-17 19:07:18 56

原创 关于索引生效问题

索引失效的问题部分情况(尽量避免)1、在mysql中使用不等于!= 或者<>,会导致无法使用索引,全表扫描2、is null,is not null 会导致无法使用索引3、like以通配符开头’%…’。索引失效导致全表扫描4、字符串不加单引号会导致索引失效5、多用or进行连接会导致索引失效6、减少select * 这种方式进行查询查看索引生效explain + sql 语句模拟的是优化器执行sql查询语句的,分析查询语句的性能例:运行结果id的具体内容:select查询的

2020-09-17 18:57:36 388

原创 关于数据库索引整理,个人理解

索引的定义与优缺点sql性能下降,sql慢,执行时间过长,等待时间过长原因:1、sql语句写的烂2、索引失效3、关联查询太多join4、服务器或者各种参数的设置(缓冲,线程数等)建议一张表不要超过5个索引不是不允许多于5个定义:帮助mysql高效获取数据的数据结构索引的本质就是一个排好序的快速查找的数据结构优点:1、类似图书馆的书籍目录是一样的,提高数据的检索效率,降低的是数据库的IO成本2、通过索引列对数据进行排序,降低了数据排序的成本,降低了CPU的消耗缺点:1、索引本质上是一

2020-09-17 18:15:18 187

原创 mysql架构原理(待补充)

mysql底层框架稍微详细深入一些的整理如下:连接池:负责存储和管理客户端与数据库的连接,一个线程负责管理一个连接查询优化器:解析树进行转化成执行计划,跟存储引擎其余剩下的内容之后会补充!...

2020-09-17 18:06:29 30

原创 关于sql注入的问题

关于sql注入的问题其实有很多种。这只是其中俩种方法。在python中使用的。不管前端是否有js校验,传入的数据都默认是不安全的数据。import pymysqlimport re# import sqlalchemy# todo 创建连接con = pymysql.connect(host='localhost',user='root',password='mysql',database='shanghui',port=3306,charset='utf8')# host=None, us

2020-09-17 18:01:16 84

原创 数据库事务并发问题

具体表现:脏读:对于两个事务,t1,t2,如果T1读取了已经被t2修改过的但是还没有提交的数据,但是最后t2回滚了,t1读取的内容是临时并且无效的不可重复读:对于两个事务,T1,T2读取了一个字段的值,但是T2更新了这个字段,T1再次读取的时候,两读取的数据是不一致的幻读:对于两个事务T1,T2,T1从一个表中按照一定的条件读取数据,接着T2将表进行了更新,插入几行新数据,当T1再次以相同的条件进行读取的时候,会出现新的数据不可重复读更加侧重于对于数据的修改,解决这个问题:将满足条件的行锁起来幻读

2020-09-09 17:50:45 383

原创 线程与进程的对比(补充)

总结一下线程与进程的对比:1、进程是系统进行资源分配的基本单位2、线程是进程的一个实体,是CPU进行调度和分配的基本单位,和当前进程的其他线程一起,共享资源3.一个程序至少有一个进程,一个进程至少有一个线程线程的划分尺度小于进程(资源比进程少),多线程的并发性高(并发:交替进行 ;;;;并行:同时进行)4.进程在执行过程中拥有独立的内存单元,多个线程共享内存线程不能独立执行,必须依附在线程中5.线程的优点执行开销小,但是不利于资源的管理和保护的进程相反同时同步与并发又不相同

2020-09-02 19:45:37 212

原创 协程定义及与线程的区别 半自动与全自动

协程的定义:微线程,是是一个比线程还小的执行单元称作执行单元的原因:协程是自带cpu上下文的协程与线程的区别线程:系统进行调度的基本单位线程切换的过程中,从系统的角度来讲,不只是CPU的上下文(CPU寄存器和程序计数器)切换,系统为了程序能够高效执行,每一个线程都有自己缓存起来的数据,操作系统除了cpu上下文切换,还要恢复这些缓存数据,线程切换十分的消耗资源。协程:开发者来确定,什么时候切换,切换多少次,协程之间的切换,只是cpu上下文的切换(一分钟切换上百万次)协程的缺点系统不能感知协程,

2020-09-02 19:33:12 89

原创 互斥锁与银行家算法 消费者与生产者模式(补)

解决线程不安全的问题线程同步概念:同步:协同步调,按照预定的先后顺序,进行执行即等我做完这事,你在接着做。先洗菜,在炒菜。同步机制:互斥锁,保证了同一实可只能有一个线程进行修改操作互斥锁import threadingimport timelock = threading.Lock()num=0def word1(times): global num for i in range(times): flag=lock.acquire(True)

2020-09-02 19:09:15 299

原创 多线程

线程才是真正干活的人多线程创建:import threadingimport timedef write(): for i in range(10): print('执行write的线程对象',threading.current_thread()) time.sleep(0.01)def read(): for i in range(10): print('执行read的线程对象',threading.current_thread

2020-09-02 18:41:42 57

原创 多进程创建,进程状态,进程池及进程之间的通信

多任务的概念操作系统同时运行多个任务进程与程序程序:编写完成的代码,是一个静态的概念进程:代码以及运行代码所需要的资源,正在运行的程序,是一个动态的概念多进程实现—multiprocessingimport osimport multiprocessingfrom multiprocessing import Processdef child_process_func(name): print('当前执行的进程是子进程,进程是{},父进程编号是{},当前子进程的名字是{}'.fo

2020-09-02 18:22:42 85

原创 数据库中关于小数类型的存储

平时我们float与double用的比较多1、float类型在存储的时候,存储的是二进制中最接近小数的那个值2、float因为上述的特性,会造成误差的存在,使用精度不是特别高的情况下,数据的存储3、decimal存储的过程中,按照写入的数据进行存储,适用的场景为精度要求较高的,比如货币的运算等...

2020-09-02 17:43:07 3344

原创 装饰器及闭包

装饰器是一种特殊的闭包功能:1、额外增加功能 2、函数执行时间统计3、执行函数的时候需要进行的预处理 4、权限校验等5、缓存6、日志 (后三个重点)1、标识符的查找顺序 L>E>G>BL(local) E G BL —— Local(function);函数内的名字空间E —— Enclosing function locals;外部嵌套函数的名字空间(例如closure)G —— Global(module);函数定义所在模块(文件)的名字空间B —— Built

2020-08-26 19:11:48 315

原创 生成器笔记

生成器是特殊的迭代器,一边循环一边计算的机制生成器语法`def func(): i = 0 while i<10: param = yield i print(param) i+=1 注意点:1、函数,函数体内包含yield2、生成一个生成器 g1 = func() g1才是一个生成器唤醒生成器的方法:print(g.next())print(next(g))print(g.se

2020-08-26 18:22:49 238

原创 迭代器笔记及斐波拉切数列

迭代是一个访问集合元素的方式迭代器只能向前不会后退迭代器是一个可以记住遍历位置的对象迭代器对象从集合的第一个元素开始访问,直到所有的元素被访问完结束第一种集合数据类型:列表,元组,字典,集合,字符串等第二种:生成器统称为可迭代对象判断数据是否是可迭代对象from collections import Iterablenew_set = {1,2,3,3,3,4}print(new_set)print(isinstance(new_set,Iterable))print(isinst

2020-08-26 18:01:37 125

原创 简单的测试方法:笔记

以下是测试时间。自身用列表的不同添加方式来进行举例说明。如下图接下来是执行代码。用运行100万次来进行测试。接下来是运行结果。显示的是时间。时间只是其中的一部分,测试并不只是单看时间。...

2020-08-20 17:08:33 112

空空如也

空空如也

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

TA关注的人

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