摘要: 一、docker基本组成 镜像(image): 镜像就好比是一个模板,可以通过这个模板来创建容器服务。 比如tomcat镜像==》run==》tomcat01容器(提供服务)。 可以通过这个镜像可以创建多个容器(最终服务的运行就是在容器中) 容器(container): 利用容器技术,独立运行一个或 阅读全文
posted @ 2020-12-01 13:15 王寄鱼 阅读(88) 评论(0) 推荐(0)
摘要: 一、ajax简介 Ajax,(asynchronous JavaScript and XML)全名翻译为:异步的JavaScript 和XML。这里有三个重点,异步,js,xml 同步交互:客户端发出一个请求后,需要等待服务器响应结束后,才能发出第二个请求; 异步交互:客户端发出一个请求后,无需等待 阅读全文
posted @ 2020-12-01 11:08 王寄鱼 阅读(234) 评论(0) 推荐(0)
摘要: 一、auth组件介绍 在日常的开发中,我们会必定会写的一个功能就是注册,登录,认证,注销且这部分的代码逻辑基本相似。所以django为了我们内置了一个用户认证组件,auth组件,他属于和我们自己创建的app一个级别 二、内置属性方法 auth组件的内置属性与方法都需要数据迁移之后才能使用,当我们数据 阅读全文
posted @ 2020-12-01 11:02 王寄鱼 阅读(109) 评论(0) 推荐(0)
摘要: 一、使用场景 当我们存储数据时,可能不想存整个字段,比如,男女性别,希望在数据库中存1,0 二、原理 choice接收一个元组(保证值不可变),同理每一个选项也是由一个元组(value,display_name)构成。 获取displayname 通过属性取value,通过 get_属性_displ 阅读全文
posted @ 2020-12-01 10:58 王寄鱼 阅读(423) 评论(0) 推荐(0)
摘要: 一、cookie session token cookie:客户端浏览器上的键值对 session:存在服务端的键值对 token:加密的键值对,如果放在客户端浏览器上,它就叫cookie,它是服务端签发的加密字符串 详细解读可看:https://www.cnblogs.com/liuqingzhe 阅读全文
posted @ 2020-12-01 10:51 王寄鱼 阅读(158) 评论(0) 推荐(0)
摘要: 一、DRF简介与安装 1.简介 drf:djangorestframework,是一个基于django的包,相当于我们自己的app,使用前需要在配置文件中注册 作用:更快速在django框架上的写接口 2.安装 命令行中: pip3 install djangorestframework pycha 阅读全文
posted @ 2020-12-01 10:45 王寄鱼 阅读(915) 评论(0) 推荐(0)
摘要: drf内置了三种分页器 PageNumberPagination:普通分页(用的最多) LimitOffsetPagination:偏移分页(用的第二多) CursorPagination:游标分页(在数据类很大情况下使用,因为使用游标,所以查询最快,但是只能查当前页的前后各一页) 三个基类的位置 阅读全文
posted @ 2020-12-01 10:41 王寄鱼 阅读(219) 评论(0) 推荐(0)
摘要: 一、全局异常 1 统一接口的返回方式,即便视图函数执行出错 2 使用方式,写一个函数,并在setting中配置 from rest_framework import status from rest_framework.views import exception_handler from rest 阅读全文
posted @ 2020-12-01 10:36 王寄鱼 阅读(761) 评论(0) 推荐(0)
摘要: 一、DRF自定义认证使用 # 1 定义一个类,继承BaseAuthentication,重写authenticate方法 class LoginAuth(BaseAuthentication): def authenticate(self, request): token = request.GET 阅读全文
posted @ 2020-12-01 10:32 王寄鱼 阅读(243) 评论(0) 推荐(1)
摘要: 一、drf认证功能介绍 drf在请求进到视图函数的过程中,会进行认证相关的工作。 0 认证,频率,权限 1 用户是否登录到系统中 2 后期基本上会用JWT的认证 3 自定制的认证 二、认证功能源码分析 1 APIView 》dispatch 》self.initial(request, *args, 阅读全文
posted @ 2020-12-01 10:29 王寄鱼 阅读(203) 评论(0) 推荐(0)
摘要: 一、forms组件介绍 在我们只做项目的过程中,比如注册功能,登录功能等肯定是需要校验的。校验通常在前端和后端都会进行,前端校验可以做一些简单的逻辑判断,减少服务器压力,且对于一些非法数据直接过滤。后端的校验可以说是安全的保障,因为对于专业人士来说,完全可以自己模拟http请求,绕过前端的校验。比如 阅读全文
posted @ 2020-12-01 10:26 王寄鱼 阅读(145) 评论(0) 推荐(0)
摘要: 一、orm概述 1 orm:对象关系映射(跟语言无关) 数据库中的表 》对应程序的一个类 数据库中的一行数据 》对应程序中的一个对象 2 python中常见orm框架 -django的orm框架 -sqlachemy的orm框架 3 java:(扩展),java中写web项目 ssh框架 :spri 阅读全文
posted @ 2020-12-01 10:23 王寄鱼 阅读(242) 评论(0) 推荐(0)
摘要: 一、Django安装 django发展到目前,已经有三个大版本,三个版本之间是有些差距的。但是总体是不变的 1.安装 1. -在cmd中敲:pip3 install django==1.11.9 #如果不写安装版本,默认装最新版本(3.x) 2. -pycharm中--》setting--》搜索框搜 阅读全文
posted @ 2020-12-01 10:17 王寄鱼 阅读(214) 评论(0) 推荐(0)
摘要: 一、分页器组件介绍 项目数据量大了以后,比如涉及到分页,一页一页的加载显示 django中分页器组件,把分页常用的东西,封装到一个类中 实例化得到一个对象,对象里有属性和方法 二、分页器的简单使用 #1 Paginator对象的属性和方法 book_list=models.Book.objects. 阅读全文
posted @ 2020-12-01 10:14 王寄鱼 阅读(240) 评论(0) 推荐(0)
摘要: 基础版 写2个路由和视图函数,一个是登录,写入cookie,访问order,必须登录以后才能访问,否则重定向到登录页面,order页面实现退出功能,清除cookie,利用登录认证装饰器,必须登录之后获取到了cookie才能进入order函数 模板文件:login页面三个input标签,分别为用户名, 阅读全文
posted @ 2020-12-01 10:13 王寄鱼 阅读(263) 评论(0) 推荐(0)
摘要: 基于session写一个登录认证装饰器,四个视图(登录,退出,订单,用户信息),使用cbv 一、路由 path('', views.Login.as_view(),name='login'), path('out/', views.Out.as_view()), path('userinfo/', 阅读全文
posted @ 2020-12-01 10:12 王寄鱼 阅读(389) 评论(0) 推荐(0)
摘要: bulk_create方法 bulk_create方法是django orm特地提供给我们的方便批量操作数据库的方式,效率非常高。 将views.py中原先的视图函数稍作变化 以下例子为实现向数据库一次性插入一万条数据。 def get_book(request): l = [] for i in 阅读全文
posted @ 2020-12-01 10:11 王寄鱼 阅读(883) 评论(0) 推荐(0)
摘要: 一、路由层之简单路由配置 1 路由参数 # 第一个参数是正则表达式 # 第二个参数是视图函数内存地址 # 第三个参数是个字典 {'name':lqz,'age':18},给视图函数传递默认值 # 第四个参数name,当前路由的别名,用作反向解析 url(r'^home2/', views.home, 阅读全文
posted @ 2020-12-01 10:10 王寄鱼 阅读(101) 评论(0) 推荐(0)
摘要: 一、django模板使用的两种方式 本质:打开模板文件,字符串替换,retern HttpRespnse('替换完的字符串') view.py # 方式一 def index(request): return render(request,'time.html',context={'current_ 阅读全文
posted @ 2020-12-01 10:09 王寄鱼 阅读(147) 评论(0) 推荐(0)
摘要: 一、视图层之请求对象 def index(request): ''' request:django封装的对象,它的类是WSGIRequest,它里面包含了所有http请求的东西 ''' print(request) print(type(request)) # from django.core.ha 阅读全文
posted @ 2020-12-01 10:07 王寄鱼 阅读(126) 评论(0) 推荐(0)
摘要: Django REST framwork 提供的视图的主要作用: 1.控制序列化器的执行(检验、保存、转换数据) 2.控制数据库查询的执行 一、两个视图基类 先上结论: APIView:如果跟models没有关系(没有数据库相关操作),就继承它 GenericAPIView:有关数据库操作,quer 阅读全文
posted @ 2020-12-01 10:05 王寄鱼 阅读(152) 评论(0) 推荐(0)
摘要: 一、中间件简介 是介于request与response处理之间的一道处理过程,相对比较轻量级,并且在全局上改变django的输入与输出。因为改变的是全局,所以需要谨慎实用,用不好会影响到性能。 如果你想修改请求,例如被传送到view中的HttpRequest对象。 或者你想修改view返回的Http 阅读全文
posted @ 2020-12-01 10:03 王寄鱼 阅读(116) 评论(0) 推荐(0)
摘要: 一、序列化组件介绍 作用: 1. 序列化,序列化器会把模型对象转换成字典,经过response以后变成json字符串 -Book--序列化器-->字典--同过drf:Response--》json格式字符串 >传给前端 2. 反序列化,把客户端发送过来的数据,经过request以后变成字典,序列化器 阅读全文
posted @ 2020-12-01 10:02 王寄鱼 阅读(730) 评论(0) 推荐(0)
摘要: 一、请求头信息内容 每个HTTP请求和响应都会带有相应的头部信息。默认情况下,在发送XHR请求的同时,还会发送下列头部信息: Accept:浏览器能够处理的内容类型 Accept-Charset:浏览器能够显示的字符集 Accept-Encoding:浏览器能够处理的压缩编码 Accept-Lang 阅读全文
posted @ 2020-12-01 09:55 王寄鱼 阅读(470) 评论(0) 推荐(0)
摘要: 一、HTTP协议简介 超文本传输协议(英文:HyperText Transfer Protocol,缩写:HTTP)是一种用于分布式、协作式和超媒体信息系统的应用层协议。是用于从万维网(WWW:World Wide Web )服务器传输超文本到本地浏览器的传送协议。 HTTP是一个基于TCP/IP协 阅读全文
posted @ 2020-12-01 09:52 王寄鱼 阅读(148) 评论(0) 推荐(0)
摘要: IAAS,PAAS,SAAS SaaS:Software-as-a-Service(软件即服务)提供给客户的服务是运营商运行在云计算基础设施上的应用程序,用户可以在各种设备上通过客户端界面访问,如浏览器。消费者不需要管理或控制任何云计算基础设施,包括网络、服务器、操作系统、存储等等; PaaS:Pl 阅读全文
posted @ 2020-12-01 09:50 王寄鱼 阅读(152) 评论(0) 推荐(0)
摘要: mysql索引实现的底层数据结构是? 就大部分的存储引擎,比如Innodb,MyISAM,都是利用B+树,官方文档里写的是B树,但是实际上使用是B+树,它是B树的一种延伸.还有一种memory存储引擎他使用的数据结构是哈希表。 索引的优点? 1.减少了扫描的数据类 2.将随机IO变成了顺序IO 3. 阅读全文
posted @ 2020-12-01 09:48 王寄鱼 阅读(168) 评论(0) 推荐(0)
摘要: 一、什么是事务 事务是数据库操作的最小工作单位,一个事务可以是一条sql语句,也可以是一组sql语句。 事务有四大特征:原子性,持久性,隔离性,一致性,就是我们常说的ACID 二、原子性 原子性的意思是说一个事务里的操作会组成一个最小的执行单位,不可再分割,在一个事务中,要么操作都成功,要么都失败。 阅读全文
posted @ 2020-12-01 09:46 王寄鱼 阅读(149) 评论(0) 推荐(0)
摘要: 一、联合索引的B+树 索引失效我们针对的是联合索引,我们之前有讲到过,在没有遵守最佳左法则或者使用like或者使用百分号的情况下索引会失效。但是到底为什么索引失效了并没有解释。索引失效和innodb引擎的B+树存储方式有关。我们知道单索引的B+树是这样的。 联合索引的B+树也相差不多,因为联合所有有 阅读全文
posted @ 2020-12-01 09:44 王寄鱼 阅读(4682) 评论(0) 推荐(1)
摘要: 1.进入mysql的bin目录 2.net stop mysql 3.mysqld --skip-grant-tables 输入 mysqld --skip-grant-tables 回车。 (--skip-grant-tables 的意思是启动 MySQL 服务的时候跳过权限表认证) 注意:这时候 阅读全文
posted @ 2020-12-01 09:42 王寄鱼 阅读(113) 评论(0) 推荐(0)
摘要: 一、OSI七层协议 OSI是Open System Interconnection的缩写,意为开放式系统互联。国际标准化组织(ISO)制定了OSI模型,该模型定义了不同计算机互联的标准,是设计和描述计算机网络通信的基本框架。 OSI七层协议分别为应用层,表示层,会话层,传输层,网络层,数据链路层,物 阅读全文
posted @ 2020-12-01 09:38 王寄鱼 阅读(322) 评论(0) 推荐(0)
摘要: 一、基于udp协议的套接子通信 TCP协议与UDP协议的比较 可靠性 tcp协议是可靠协议: 对方必须回复一个ack确认信息,才会将自己这端的数据从内存中删除 udp协议不可靠: 发送一条消息就会立即删除,不管对方是否接收到 有无链接 tcp有链接,udp无链接 传输数据的效率 udp更高,因为ud 阅读全文
posted @ 2020-12-01 09:37 王寄鱼 阅读(169) 评论(0) 推荐(0)
摘要: 1.Pycharm的自动提示 from django.core.handlers.wsgi import WSGIRequest # pycharm的自动提示 request=request # type: WSGIRequest 2.如果encode和decode记混了,可以用下面的方式 1 方式 阅读全文
posted @ 2020-12-01 09:35 王寄鱼 阅读(68) 评论(0) 推荐(0)
摘要: map map() 会根据提供的函数对指定序列做映射。 第一个参数 function 以参数序列中的每一个元素调用 function 函数,返回包含每次 function 函数返回值的新列表。 在Python2中返回列表,在python3中返回迭代器。 def square(x): return x 阅读全文
posted @ 2020-12-01 09:33 王寄鱼 阅读(87) 评论(0) 推荐(0)
摘要: 一、迭代器 迭代:是一个重复的过程,但每次重复都是基于上一次的结果而来的 迭代器:就是一种不依赖于索引的取值工具 为什么要用迭代器: 1.迭代器是一种通用的迭代取值方法(可以无视是否有索引) 2.惰性计算,节省内存。迭代器在生成时,并没有产生值,并不会占用很多内存。在每次使用next方法后,会临时计 阅读全文
posted @ 2020-12-01 09:31 王寄鱼 阅读(108) 评论(0) 推荐(0)
摘要: 一、在子类派生的新方法中重用父类功能的方式二 super()方法:调用super(自己的类名,self)会返回一个特殊的对象,super(自己的类名,self).属性,会参照属性发起者类的mro列表去当前所在类的父类中查找属性。 # 在python3中,会自动帮你添加super需要的两个默认参数,可 阅读全文
posted @ 2020-12-01 09:29 王寄鱼 阅读(181) 评论(0) 推荐(0)
摘要: 一、封装 隐藏属性 封装:封装是面向对象三大特性之一。在程序设计中,封装(Encapsulation)是对具体对象的一种抽象,即将某些部分隐藏起来,在程序外部看不到,其含义是其他程序无法调用。要了解封装,离不开“私有化”,就是将类或者是函数中的某些属性限制在某个区域之内,外部无法调用。 1、在封装的 阅读全文
posted @ 2020-12-01 09:28 王寄鱼 阅读(166) 评论(0) 推荐(0)
摘要: 一、函数递归 引入 函数的递归调用:就是在调用一个函数的过程中又直接或间接地调用自己 示例1:直接调用自己 def foo(): print('hello') foo() foo() # 无限递归,会抛出异常,调用python对象超过最大递归深度 示例2:间接调用自己 def bar(): prin 阅读全文
posted @ 2020-12-01 09:23 王寄鱼 阅读(129) 评论(0) 推荐(0)
摘要: 什么是函数 具备某一功能的工具 对于工具的使用,我们应该先准备好工具,然后再使用。即我们对函数应该先定义后引用。和变量一样。 为什么用函数 1、程序的组织结构不清晰,可读性差 2、如果要用到重复的功能,只能拷贝功能的实现代码=》代码冗余 3、可扩展性差 如何使用函数 函数使用原则:先定义后引用 # 阅读全文
posted @ 2020-12-01 09:21 王寄鱼 阅读(123) 评论(0) 推荐(0)
摘要: 用途 按key:value的形式存放多个任意类型的value,key反映的是value的属性 因为字典的key是不能重复的,所以我们也可以利用这个特点来去重 定义方式 在内用逗号分隔开多个key:value,其中value可以是任意类型,而key必须是不可变的类型,通常是字符串类型。若key为可变类 阅读全文
posted @ 2020-12-01 09:20 王寄鱼 阅读(169) 评论(0) 推荐(0)
摘要: 整型int **用途:**记录年龄,个数,号码等 定义方式: age = 18 # 该代码等于 age = int(18),这个也是把纯数字字符串改为整型的工作原理 s = '123' print(type(s)) s = int(s) print(type(s)) <class 'str'> <c 阅读全文
posted @ 2020-12-01 09:18 王寄鱼 阅读(1115) 评论(0) 推荐(0)
摘要: 用途 序列中的每个元素都分配一个数字表示它的位置,也叫索引。与字符串一样,第一个位置的索引是0,第二个索引是1,依此类推。下面介绍的元组的索引也算如此计算。 定义 在[ ]内用逗号分割开多个任意类型的元素 l = [1,2,'hello',[3,4]] 数据类型转换 res1=list("hello 阅读全文
posted @ 2020-12-01 09:17 王寄鱼 阅读(76) 评论(0) 推荐(0)
摘要: 作用 1.去重 集合内不可能出现相同的元素 2.关系运算 如:共同好友、共同关注...、交叉并集... 用集合就是用上面两个功能 如果都用不上 那么就不要用 定义 s = {1,2,3,4,5,6,7,8} """ 1.集合内的元素必须是不可变类型 2.元素与元素之间逗号隔开 不是键值对 3.集合内 阅读全文
posted @ 2020-12-01 09:14 王寄鱼 阅读(92) 评论(0) 推荐(0)
摘要: 字符串型 **用途:**记录有描述性的状态,如名字,公司名称,家庭地址等 **定义方式:**在引号(' '或者" "或者''' ''')包含一串字符 s = 'hello' # 与s = str('hello')等价,str()可以把任意类型转成字符串型 常用操作及内置方法: 以下所有方法必须掌握 阅读全文
posted @ 2020-12-01 09:13 王寄鱼 阅读(151) 评论(0) 推荐(0)
摘要: 元组相当于一个不可修改的列表,除了不能存之外,取的操作同列表一样。 用途 按照索引存放多个任意类型的值,索引反应的是位置/顺序 定义方式 在()内用逗号分隔开多个任意类下的值或者元素 强调:当元组内只有一个元素时,必须加逗号 # 错误方式 t=(10) print(type(t)) <class ' 阅读全文
posted @ 2020-12-01 09:09 王寄鱼 阅读(151) 评论(0) 推荐(0)
摘要: 一、继承介绍 继承 继承是一种新建类的方式,新建的类称之为子类,被继承的类称为父类,也称为基类与超类 为何要用继承: 子类会遗传父类的属性(与方法),所以继承是解决类与类之间代码冗余的问题 还记得我们为什么会定义出类吗,我们学习的编程方法叫做面向对象编程,而不是面向类编程,那前几天开始学习时我们的类 阅读全文
posted @ 2020-12-01 08:55 王寄鱼 阅读(180) 评论(0) 推荐(0)
摘要: 一、socket 什么是socket socket是用于在两个基于TCP/IP协议的应用程序之间相互通信。最早出现在UNIX系统中,是UNIX系统主要的信dao息传递方式。在WINDOWS系统中,SOCKET称为WINSOCK。 Socket是应用层与TCP/IP协议族通信的中间软件抽象层,它是一组 阅读全文
posted @ 2020-12-01 08:31 王寄鱼 阅读(236) 评论(0) 推荐(0)
摘要: 一、进程 我们之前有讲到,程序就是存放代码的文件 程序的静态的,进程的动态的,即进程表示一次活动过程。同一个程序每执行一次就是一个进程 进程(Process)是计算机中的程序关于某数据集合上的一次运行活动,是系统进行资源分配和调度的基本单位,是操作系统结构的基础。 1.进程是一个抽象的概念 2.进程 阅读全文
posted @ 2020-12-01 08:29 王寄鱼 阅读(167) 评论(0) 推荐(0)
摘要: 一、简介 储备知识 堆区与栈区 在定义变量时,变量名与变量值都是需要存储的,分别对应内存中的两块区域:堆区与栈区。 1、变量名与值内存地址的关联关系存放于栈区 2、变量值存放于堆区,内存管理回收的则是堆区的内容 直接引用与间接引用 直接引用指的是从栈区出发直接引用到的内存地址。 x = 1 # 直接 阅读全文
posted @ 2020-12-01 08:25 王寄鱼 阅读(359) 评论(0) 推荐(0)
摘要: 一、如何基于面向对象的思想写程序 利用面向过程方式书写面向对象: 上一个笔记已经写到,面向对象是一种编程思想,不同语言都可以实现面向对象。在python中也专门为我们提供了面向对象的各种方法,但并不意味着一定要使用python定制的方法来写面向对象。 通过字典也可以实现面向对象思想,只要能把相关的数 阅读全文
posted @ 2020-12-01 08:21 王寄鱼 阅读(152) 评论(0) 推荐(0)
摘要: 一、__new__方法 触发时机:实例化类生成对象的时候触发(触发时机在__init__之前) 功能:控制对象的创建过程 参数:至少一个cls接受当前的类,其他根据情况决定 返回值:通常返回对象或None 1.基本语法 class MyClass(): a = 1 obj = MyClass() p 阅读全文
posted @ 2020-12-01 07:55 王寄鱼 阅读(155) 评论(0) 推荐(0)
摘要: 一、三元表达式 ''' 对于一个简单的函数,其中只包含数,可以用三元表达式简化,省去了构造函数 ''' def max2(x,y): if x > y: return x else: return y 三元表达式: res = 表达式1 if 条件 else 表达式2 x=111 y=222 res 阅读全文
posted @ 2020-12-01 07:43 王寄鱼 阅读(127) 评论(0) 推荐(0)
摘要: 一、浅拷贝 常见的浅拷贝的方法,是使用数据类型本身的构造器,比如下面两个例子: list1 = [1, 2, 3] list2 = list(list1) print(list2) print("list1==list2 ?",list1==list2) print("list1 is list2 阅读全文
posted @ 2020-12-01 07:37 王寄鱼 阅读(110) 评论(0) 推荐(0)
摘要: 列表生成式 l=[i**2 for i in range(5)] print(l) [0, 1, 4, 9, 16] ''' 1.for的左边,只要是一个有返回值的就行,可以是变量,可以是函数len(i),也可以是常数 2.在for条件后,还可以跟if条件 ''' names=['lqz_sb',' 阅读全文
posted @ 2020-12-01 07:31 王寄鱼 阅读(105) 评论(0) 推荐(0)
摘要: 一、web应用 1 用浏览器访问的应用程序 2 优点: -不需要客户端 -更新直接在服务端更新,客户端感知不到 -跨平台性好 3 缺点: -强调浏览器的适用性 -用户的数据都保存在软件厂商那边,可能会被厂商泄露信息 二、b/s、c/s架构 1 b/s:浏览器 服务端(本质还是cs) 2 c/s:客户 阅读全文
posted @ 2020-12-01 07:29 王寄鱼 阅读(227) 评论(0) 推荐(0)
摘要: 因为在python设计出来的年代根本就没有多核这一说法,都是单核cpu,因为线程是cpu执行的最小单位,在单核情况下,我们的python进程中就算开了多条线程,在同一个时刻也只有一个线程被cpu调度执行,当某一个线程在执行时,其他线程都是停止工作的,所以不会同时对一个数据进行操作导致数据混乱。 但是 阅读全文
posted @ 2020-12-01 07:27 王寄鱼 阅读(629) 评论(0) 推荐(1)