为了能到远方,脚下的每一步都不能|

王寄鱼

园龄:4年3个月粉丝:5关注:1

12 2020 档案

加权图与非加权图
摘要:1.加权图,非加权图 说白了,就是在有向图的边上加上数字,这个数字可以代表很多东西,如果边代表路径,那么数字可以代表这个边的长度。同时这个数字有专门的术语,叫做权重。要计算非加权图中的最短路径,可使用广度优先搜索。要计算 加权图中的最短路径,可使用狄克斯特拉算法。 2.狄克斯特拉算法 狄克斯特拉算法
2416
0
0
摘要:1.有向图 图也是一种常用到的数据结构,图分有向图和无向图。其中有向图,同时,树其实是一种特殊的有向图。 有下面一个问题,我们需要出售芒果,需要联系朋友们找芒果商。 在构建图算法的时候需要注意,我们需要标记某个元素是不是已经被查找过了,不然的话可能会造成死循环。比如下面的情况,你的朋友是peggy,
97
0
0
散列表
摘要:散列表是一种非常常用的数据结构,在python中,字典与集合的底层实现都是散列表,也叫hash表。 1.散列函数 想要了解散列表首先需要知道散列函数,散列函数的使用非常简单,当你传入一个不可变类型的数据,他会返回一个固定的数字,并且他满足如下的条件 1.散列函数的结果必须是一致的,例如,在你输入ap
138
0
0
基于python-快速排序
摘要:快速排序是一种很常用的排序算法,一般来说我们使用递归来实现它,从效率来说,快速排序不算快(时间复杂度O(n^2)),但是因为使用递归很好编写,容易理解,并且如果结合二分法的话可以把时间复杂度提到O(nlongn),这是一个还能接受的复杂度。 下面使用递归实现一个简单的sum函数,为下面的快速排序做为
103
0
0
TCPIP深入
摘要:详细有七层 但是一般来说对我们开发来说归为五层 应用层的程序要准备某种协议的数据,在发送前,通过内核完成和别人的连接 什么是tcp 面向连接的 -》一定要聊三次握手 可靠的传输协议 当双方走完三次握手之后,双方会在自己的内存里开辟一个队列空间,里面有一些资源,比如socket等。双方有资源为对方服务
90
0
0
MySQL-部分简单操作
摘要:一、MySQL部分简单操作 一般mysql的单表瓶颈大概是五百万条数据,这个时候我们需要水平拆分,也就是分表,但是注意,生产环境下分表的时候我们需要把表分在两台不同的机器上,如果还是在同一个机器上其实是没有意义的,因为如果在同一台机器上那么消耗的资源还是一样的,没太大区别。同理我们的数据库瓶颈大概在
72
0
0
Redis-配置文件与持久化
摘要:redis 乐观锁 乐观锁,即获取数据时不加锁,在修改的时候才会比对数据是否和获取时一致。若一致才能修改。 使用watch关键字,他的作用是在事务开始前先获取值,然后监控这个值,当你开始事务之后,如果在你执行之前redis会自动帮你检测这个数据是否被更改了,若被更改了整个事务都不会执行。需要unwa
154
0
0
Redis-搭建简单集群
摘要:主从复制,读写分离 一般读的操作都在从机,写的操作在主机, info replication 查看当前库的信息 最少要一主二从,后台文件都需要改需要三个配置文件,三个端口,dump文件要改,日志文件现在不能为空了,需要对应,pidfile文件需要修改。设置79,80,81三台服务器 默认情况下,每个
66
0
0
python实现简单的统计
摘要:实现功能如下: 对于一串给定的纯数字字符串,实现统计相邻的相同数字,用中文输出,如下:、 输入:'11223345' 输出:2个一,2个二,2个三,1个四,1一五 输入:'11223345112233' 输出:2个一,2个二,2个三,1个四,1个五,2个一,2个二,2个三 代码: class MyC
600
0
0
Redis-三种数据结构与事务
摘要:一、Geospatial 地理位置 定位,附近的人,打车距离计算,学生请假还假打卡时判断是否在学校中 Redis的geo在3.2就推出了,这个功能可以推算地理位置的信息,两地之间的距离 geoadd 添加地理位置 geoadd key 纬度 经度 名称 # 规则:无法直接添加两极,南极北极,一般正常
145
0
0
Redis-简介与安装
摘要:一、Redis简介 Redis的全称是Remote Dictionary Server,中文翻译叫远程字典服务,由C语言编写,支持网络,是一个可以基于内存也可持久化的日志型。是当下最热门的NoSQL技术之一,也被称为结构化的数据库。 Redis能做什么 1、内存存储保证了我们了效率,也可以持久化保证
172
0
0
Redis-基础类型与命令
摘要:一、基础命令 select 2 选择2号数据库,redis默认有16个数据库,默认进入0号数据库 flushdb 删除当前数据库数据 flushall 删除所有数据库数据 keys * 查看当前库所以的key exists key 是否存在key,返回1或0 move key 新的数据库 移动key
76
0
0
Docker-基础
摘要:一、docker基本组成 镜像(image): 镜像就好比是一个模板,可以通过这个模板来创建容器服务。 比如tomcat镜像==》run==》tomcat01容器(提供服务)。 可以通过这个镜像可以创建多个容器(最终服务的运行就是在容器中) 容器(container): 利用容器技术,独立运行一个或
70
0
0
Django-Ajax使用
摘要:一、ajax简介 Ajax,(asynchronous JavaScript and XML)全名翻译为:异步的JavaScript 和XML。这里有三个重点,异步,js,xml 同步交互:客户端发出一个请求后,需要等待服务器响应结束后,才能发出第二个请求; 异步交互:客户端发出一个请求后,无需等待
215
0
0
Django-Auth组件
摘要:一、auth组件介绍 在日常的开发中,我们会必定会写的一个功能就是注册,登录,认证,注销且这部分的代码逻辑基本相似。所以django为了我们内置了一个用户认证组件,auth组件,他属于和我们自己创建的app一个级别 二、内置属性方法 auth组件的内置属性与方法都需要数据迁移之后才能使用,当我们数据
93
0
0
Django-choice用法
摘要:一、使用场景 当我们存储数据时,可能不想存整个字段,比如,男女性别,希望在数据库中存1,0 二、原理 choice接收一个元组(保证值不可变),同理每一个选项也是由一个元组(value,display_name)构成。 获取displayname 通过属性取value,通过 get_属性_displ
391
0
0
Django-Cookie和session组件
摘要:一、cookie session token cookie:客户端浏览器上的键值对 session:存在服务端的键值对 token:加密的键值对,如果放在客户端浏览器上,它就叫cookie,它是服务端签发的加密字符串 详细解读可看:https://www.cnblogs.com/liuqingzhe
146
0
0
Django-DRF
摘要:一、DRF简介与安装 1.简介 drf:djangorestframework,是一个基于django的包,相当于我们自己的app,使用前需要在配置文件中注册 作用:更快速在django框架上的写接口 2.安装 命令行中: pip3 install djangorestframework pycha
876
0
0
Django-DRF分页器
摘要:drf内置了三种分页器 PageNumberPagination:普通分页(用的最多) LimitOffsetPagination:偏移分页(用的第二多) CursorPagination:游标分页(在数据类很大情况下使用,因为使用游标,所以查询最快,但是只能查当前页的前后各一页) 三个基类的位置
191
0
0
Django-DRF全局异常捕获,响应封装,自动生成接口文档
摘要:一、全局异常 1 统一接口的返回方式,即便视图函数执行出错 2 使用方式,写一个函数,并在setting中配置 from rest_framework import status from rest_framework.views import exception_handler from rest
728
0
0
Django-DRF认证,权限,限频,过滤,排序
摘要:一、DRF自定义认证使用 # 1 定义一个类,继承BaseAuthentication,重写authenticate方法 class LoginAuth(BaseAuthentication): def authenticate(self, request): token = request.GET
215
0
1
Django-DRF认证
摘要:一、drf认证功能介绍 drf在请求进到视图函数的过程中,会进行认证相关的工作。 0 认证,频率,权限 1 用户是否登录到系统中 2 后期基本上会用JWT的认证 3 自定制的认证 二、认证功能源码分析 1 APIView 》dispatch 》self.initial(request, *args,
189
0
0
Django-Forms组件
摘要:一、forms组件介绍 在我们只做项目的过程中,比如注册功能,登录功能等肯定是需要校验的。校验通常在前端和后端都会进行,前端校验可以做一些简单的逻辑判断,减少服务器压力,且对于一些非法数据直接过滤。后端的校验可以说是安全的保障,因为对于专业人士来说,完全可以自己模拟http请求,绕过前端的校验。比如
139
0
0
Django-ORM操作
摘要:一、orm概述 1 orm:对象关系映射(跟语言无关) 数据库中的表 》对应程序的一个类 数据库中的一行数据 》对应程序中的一个对象 2 python中常见orm框架 -django的orm框架 -sqlachemy的orm框架 3 java:(扩展),java中写web项目 ssh框架 :spri
209
0
0
Django-安装与基础
摘要:一、Django安装 django发展到目前,已经有三个大版本,三个版本之间是有些差距的。但是总体是不变的 1.安装 1. -在cmd中敲:pip3 install django==1.11.9 #如果不写安装版本,默认装最新版本(3.x) 2. -pycharm中--》setting--》搜索框搜
175
0
0
Django-分页器
摘要:一、分页器组件介绍 项目数据量大了以后,比如涉及到分页,一页一页的加载显示 django中分页器组件,把分页常用的东西,封装到一个类中 实例化得到一个对象,对象里有属性和方法 二、分页器的简单使用 #1 Paginator对象的属性和方法 book_list=models.Book.objects.
235
0
0
Django-基于Cookie的登录
摘要:基础版 写2个路由和视图函数,一个是登录,写入cookie,访问order,必须登录以后才能访问,否则重定向到登录页面,order页面实现退出功能,清除cookie,利用登录认证装饰器,必须登录之后获取到了cookie才能进入order函数 模板文件:login页面三个input标签,分别为用户名,
251
0
0
Django-基于session的登录
摘要:基于session写一个登录认证装饰器,四个视图(登录,退出,订单,用户信息),使用cbv 一、路由 path('', views.Login.as_view(),name='login'), path('out/', views.Out.as_view()), path('userinfo/',
377
0
0
Django-利用orm批量插入
摘要:bulk_create方法 bulk_create方法是django orm特地提供给我们的方便批量操作数据库的方式,效率非常高。 将views.py中原先的视图函数稍作变化 以下例子为实现向数据库一次性插入一万条数据。 def get_book(request): l = [] for i in
848
0
0
Django-路由控制
摘要:一、路由层之简单路由配置 1 路由参数 # 第一个参数是正则表达式 # 第二个参数是视图函数内存地址 # 第三个参数是个字典 {'name':lqz,'age':18},给视图函数传递默认值 # 第四个参数name,当前路由的别名,用作反向解析 url(r'^home2/', views.home,
77
0
0
Django-模板层
摘要:一、django模板使用的两种方式 本质:打开模板文件,字符串替换,retern HttpRespnse('替换完的字符串') view.py # 方式一 def index(request): return render(request,'time.html',context={'current_
124
0
0
Django-视图层
摘要:一、视图层之请求对象 def index(request): ''' request:django封装的对象,它的类是WSGIRequest,它里面包含了所有http请求的东西 ''' print(request) print(type(request)) # from django.core.ha
100
0
0
Django-视图组件
摘要:Django REST framwork 提供的视图的主要作用: 1.控制序列化器的执行(检验、保存、转换数据) 2.控制数据库查询的执行 一、两个视图基类 先上结论: APIView:如果跟models没有关系(没有数据库相关操作),就继承它 GenericAPIView:有关数据库操作,quer
130
0
0
Django-中间件
摘要:一、中间件简介 是介于request与response处理之间的一道处理过程,相对比较轻量级,并且在全局上改变django的输入与输出。因为改变的是全局,所以需要谨慎实用,用不好会影响到性能。 如果你想修改请求,例如被传送到view中的HttpRequest对象。 或者你想修改view返回的Http
98
0
0
Django-序列化器
摘要:一、序列化组件介绍 作用: 1. 序列化,序列化器会把模型对象转换成字典,经过response以后变成json字符串 -Book--序列化器-->字典--同过drf:Response--》json格式字符串 >传给前端 2. 反序列化,把客户端发送过来的数据,经过request以后变成字典,序列化器
706
0
0
HTTP请求头响应头的信息
摘要:一、请求头信息内容 每个HTTP请求和响应都会带有相应的头部信息。默认情况下,在发送XHR请求的同时,还会发送下列头部信息: Accept:浏览器能够处理的内容类型 Accept-Charset:浏览器能够显示的字符集 Accept-Encoding:浏览器能够处理的压缩编码 Accept-Lang
445
0
0
HTTP协议
摘要:一、HTTP协议简介 超文本传输协议(英文:HyperText Transfer Protocol,缩写:HTTP)是一种用于分布式、协作式和超媒体信息系统的应用层协议。是用于从万维网(WWW:World Wide Web )服务器传输超文本到本地浏览器的传送协议。 HTTP是一个基于TCP/IP协
126
0
0
IAAS,PAAS,SAAS
摘要:IAAS,PAAS,SAAS SaaS:Software-as-a-Service(软件即服务)提供给客户的服务是运营商运行在云计算基础设施上的应用程序,用户可以在各种设备上通过客户端界面访问,如浏览器。消费者不需要管理或控制任何云计算基础设施,包括网络、服务器、操作系统、存储等等; PaaS:Pl
145
0
0
MySQL-部分名词解释
摘要:mysql索引实现的底层数据结构是? 就大部分的存储引擎,比如Innodb,MyISAM,都是利用B+树,官方文档里写的是B树,但是实际上使用是B+树,它是B树的一种延伸.还有一种memory存储引擎他使用的数据结构是哈希表。 索引的优点? 1.减少了扫描的数据类 2.将随机IO变成了顺序IO 3.
147
0
0
MySQL-事务和特性
摘要:一、什么是事务 事务是数据库操作的最小工作单位,一个事务可以是一条sql语句,也可以是一组sql语句。 事务有四大特征:原子性,持久性,隔离性,一致性,就是我们常说的ACID 二、原子性 原子性的意思是说一个事务里的操作会组成一个最小的执行单位,不可再分割,在一个事务中,要么操作都成功,要么都失败。
137
0
0
MySQL-索引失效原理
摘要:一、联合索引的B+树 索引失效我们针对的是联合索引,我们之前有讲到过,在没有遵守最佳左法则或者使用like或者使用百分号的情况下索引会失效。但是到底为什么索引失效了并没有解释。索引失效和innodb引擎的B+树存储方式有关。我们知道单索引的B+树是这样的。 联合索引的B+树也相差不多,因为联合所有有
4649
0
1
MySQL-忘记密码
摘要:1.进入mysql的bin目录 2.net stop mysql 3.mysqld --skip-grant-tables 输入 mysqld --skip-grant-tables 回车。 (--skip-grant-tables 的意思是启动 MySQL 服务的时候跳过权限表认证) 注意:这时候
101
0
0
OSI七层模型
摘要:一、OSI七层协议 OSI是Open System Interconnection的缩写,意为开放式系统互联。国际标准化组织(ISO)制定了OSI模型,该模型定义了不同计算机互联的标准,是设计和描述计算机网络通信的基本框架。 OSI七层协议分别为应用层,表示层,会话层,传输层,网络层,数据链路层,物
287
0
0
Python-socket通信
摘要:一、基于udp协议的套接子通信 TCP协议与UDP协议的比较 可靠性 tcp协议是可靠协议: 对方必须回复一个ack确认信息,才会将自己这端的数据从内存中删除 udp协议不可靠: 发送一条消息就会立即删除,不管对方是否接收到 有无链接 tcp有链接,udp无链接 传输数据的效率 udp更高,因为ud
158
0
0
Python-编程小技巧
摘要:1.Pycharm的自动提示 from django.core.handlers.wsgi import WSGIRequest # pycharm的自动提示 request=request # type: WSGIRequest 2.如果encode和decode记混了,可以用下面的方式 1 方式
53
0
0
Python-常见内置函数
摘要:map map() 会根据提供的函数对指定序列做映射。 第一个参数 function 以参数序列中的每一个元素调用 function 函数,返回包含每次 function 函数返回值的新列表。 在Python2中返回列表,在python3中返回迭代器。 def square(x): return x
78
0
0
Python-迭代器与生成器
摘要:一、迭代器 迭代:是一个重复的过程,但每次重复都是基于上一次的结果而来的 迭代器:就是一种不依赖于索引的取值工具 为什么要用迭代器: 1.迭代器是一种通用的迭代取值方法(可以无视是否有索引) 2.惰性计算,节省内存。迭代器在生成时,并没有产生值,并不会占用很多内存。在每次使用next方法后,会临时计
101
0
0
Python-多态
摘要:一、在子类派生的新方法中重用父类功能的方式二 super()方法:调用super(自己的类名,self)会返回一个特殊的对象,super(自己的类名,self).属性,会参照属性发起者类的mro列表去当前所在类的父类中查找属性。 # 在python3中,会自动帮你添加super需要的两个默认参数,可
161
0
0
Python-封装
摘要:一、封装 隐藏属性 封装:封装是面向对象三大特性之一。在程序设计中,封装(Encapsulation)是对具体对象的一种抽象,即将某些部分隐藏起来,在程序外部看不到,其含义是其他程序无法调用。要了解封装,离不开“私有化”,就是将类或者是函数中的某些属性限制在某个区域之内,外部无法调用。 1、在封装的
154
0
0
Python-函数递归
摘要:一、函数递归 引入 函数的递归调用:就是在调用一个函数的过程中又直接或间接地调用自己 示例1:直接调用自己 def foo(): print('hello') foo() foo() # 无限递归,会抛出异常,调用python对象超过最大递归深度 示例2:间接调用自己 def bar(): prin
100
0
0
Python-函数基础
摘要:什么是函数 具备某一功能的工具 对于工具的使用,我们应该先准备好工具,然后再使用。即我们对函数应该先定义后引用。和变量一样。 为什么用函数 1、程序的组织结构不清晰,可读性差 2、如果要用到重复的功能,只能拷贝功能的实现代码=》代码冗余 3、可扩展性差 如何使用函数 函数使用原则:先定义后引用 #
106
0
0
Python-基础类型dict
摘要:用途 按key:value的形式存放多个任意类型的value,key反映的是value的属性 因为字典的key是不能重复的,所以我们也可以利用这个特点来去重 定义方式 在内用逗号分隔开多个key:value,其中value可以是任意类型,而key必须是不可变的类型,通常是字符串类型。若key为可变类
138
0
0
Python-基础类型int与float
摘要:整型int **用途:**记录年龄,个数,号码等 定义方式: age = 18 # 该代码等于 age = int(18),这个也是把纯数字字符串改为整型的工作原理 s = '123' print(type(s)) s = int(s) print(type(s)) <class 'str'> <c
1097
0
0
Python-基础类型list
摘要:用途 序列中的每个元素都分配一个数字表示它的位置,也叫索引。与字符串一样,第一个位置的索引是0,第二个索引是1,依此类推。下面介绍的元组的索引也算如此计算。 定义 在[ ]内用逗号分割开多个任意类型的元素 l = [1,2,'hello',[3,4]] 数据类型转换 res1=list("hello
69
0
0
Python-基础类型set
摘要:作用 1.去重 集合内不可能出现相同的元素 2.关系运算 如:共同好友、共同关注...、交叉并集... 用集合就是用上面两个功能 如果都用不上 那么就不要用 定义 s = {1,2,3,4,5,6,7,8} """ 1.集合内的元素必须是不可变类型 2.元素与元素之间逗号隔开 不是键值对 3.集合内
80
0
0
Python-基础类型str
摘要:字符串型 **用途:**记录有描述性的状态,如名字,公司名称,家庭地址等 **定义方式:**在引号(' '或者" "或者''' ''')包含一串字符 s = 'hello' # 与s = str('hello')等价,str()可以把任意类型转成字符串型 常用操作及内置方法: 以下所有方法必须掌握
126
0
0
Python-基础类型tuple
摘要:元组相当于一个不可修改的列表,除了不能存之外,取的操作同列表一样。 用途 按照索引存放多个任意类型的值,索引反应的是位置/顺序 定义方式 在()内用逗号分隔开多个任意类下的值或者元素 强调:当元组内只有一个元素时,必须加逗号 # 错误方式 t=(10) print(type(t)) <class '
131
0
0
Python-继承
摘要:一、继承介绍 继承 继承是一种新建类的方式,新建的类称之为子类,被继承的类称为父类,也称为基类与超类 为何要用继承: 子类会遗传父类的属性(与方法),所以继承是解决类与类之间代码冗余的问题 还记得我们为什么会定义出类吗,我们学习的编程方法叫做面向对象编程,而不是面向类编程,那前几天开始学习时我们的类
171
0
0
Python-简单的套接字通信
摘要:一、socket 什么是socket socket是用于在两个基于TCP/IP协议的应用程序之间相互通信。最早出现在UNIX系统中,是UNIX系统主要的信dao息传递方式。在WINDOWS系统中,SOCKET称为WINSOCK。 Socket是应用层与TCP/IP协议族通信的中间软件抽象层,它是一组
214
0
0
Python-进程
摘要:一、进程 我们之前有讲到,程序就是存放代码的文件 程序的静态的,进程的动态的,即进程表示一次活动过程。同一个程序每执行一次就是一个进程 进程(Process)是计算机中的程序关于某数据集合上的一次运行活动,是系统进行资源分配和调度的基本单位,是操作系统结构的基础。 1.进程是一个抽象的概念 2.进程
152
0
0
Python-垃圾回收机制
摘要:一、简介 储备知识 堆区与栈区 在定义变量时,变量名与变量值都是需要存储的,分别对应内存中的两块区域:堆区与栈区。 1、变量名与值内存地址的关联关系存放于栈区 2、变量值存放于堆区,内存管理回收的则是堆区的内容 直接引用与间接引用 直接引用指的是从栈区出发直接引用到的内存地址。 x = 1 # 直接
341
0
0
Python-面向对象编程
摘要:一、如何基于面向对象的思想写程序 利用面向过程方式书写面向对象: 上一个笔记已经写到,面向对象是一种编程思想,不同语言都可以实现面向对象。在python中也专门为我们提供了面向对象的各种方法,但并不意味着一定要使用python定制的方法来写面向对象。 通过字典也可以实现面向对象思想,只要能把相关的数
135
0
0
Python-魔术方法
摘要:一、__new__方法 触发时机:实例化类生成对象的时候触发(触发时机在__init__之前) 功能:控制对象的创建过程 参数:至少一个cls接受当前的类,其他根据情况决定 返回值:通常返回对象或None 1.基本语法 class MyClass(): a = 1 obj = MyClass() p
127
0
0
Python-三元表达式与匿名函数
摘要:一、三元表达式 ''' 对于一个简单的函数,其中只包含数,可以用三元表达式简化,省去了构造函数 ''' def max2(x,y): if x > y: return x else: return y 三元表达式: res = 表达式1 if 条件 else 表达式2 x=111 y=222 res
111
0
0
Python-深浅拷贝
摘要:一、浅拷贝 常见的浅拷贝的方法,是使用数据类型本身的构造器,比如下面两个例子: list1 = [1, 2, 3] list2 = list(list1) print(list2) print("list1==list2 ?",list1==list2) print("list1 is list2
90
0
0
Python-生成式
摘要:列表生成式 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','
89
0
0
Python-手写web应用
摘要:一、web应用 1 用浏览器访问的应用程序 2 优点: -不需要客户端 -更新直接在服务端更新,客户端感知不到 -跨平台性好 3 缺点: -强调浏览器的适用性 -用户的数据都保存在软件厂商那边,可能会被厂商泄露信息 二、b/s、c/s架构 1 b/s:浏览器 服务端(本质还是cs) 2 c/s:客户
194
0
0
Python-为什么产生了GIL锁?
摘要:因为在python设计出来的年代根本就没有多核这一说法,都是单核cpu,因为线程是cpu执行的最小单位,在单核情况下,我们的python进程中就算开了多条线程,在同一个时刻也只有一个线程被cpu调度执行,当某一个线程在执行时,其他线程都是停止工作的,所以不会同时对一个数据进行操作导致数据混乱。 但是
616
0
1
点击右上角即可分享
微信分享提示
深色
回顶
收起