- 博客(46)
- 收藏
- 关注
原创 OSI七层模型
应用层网络服务与最终用户的一个接口。协议有:HTTP FTP TFTP SMTP SNMP DNS TELNET HTTPS POP3 DHCP表示层数据的表示、安全、压缩。(在五层模型里面已经合并到了应用层)格式有,JPEG、ASCll、EBCDIC、加密格式等 [2]会话层建立、管理、终止会话。(在五层模型里面已经合并到了应用层)对应主机进程,指本地主机与远程主机正在进行的会话传输层定义传输数据的协议端口号,以及流控和差错校验。协议有:TCP UDP,数据包一旦离开网卡即进入网络传
2020-10-26 19:06:19
230
原创 python生成器
生成器 是(特殊)的迭代器特殊: 构建 方式不同查看 对象 的所有 属性 和 方法: dir()生成器 是 对 迭代器补充, 可以处理 那些 无规律 的数字实现方式函数中 具备 yield关键字,它就是生成器,此时 ,它具备__iter__方法和__next__方法yield(1.暂停执行 2.返回值)将列表推导式 的 [] 变为 (), 他就是 生成器获取生成器数据 1.利用for循环获取迭代器数据 2.利用while循环和异常捕获 3.利用list、t
2020-10-26 18:45:58
148
原创 Doker与Git初识
文章目录@[toc]1.DockerDocker命令2.GitGit命令3.错误1.DockerDocker是一个容器技术hub:仓库image:镜像container:容器Docker命令docker load -i 'E:/Longtan/Four seas gate/eight/docker/workflow.tar’docker info:查看版本docker images:查看所有镜像docker run -it -p 80:80 镜像id-it:image,tap
2020-10-26 17:15:17
287
原创 关于python基础的面试题
python基础1.列表常用方法append:用于在列表末尾追加新的对象extend:可以在列表末尾一次性追加另一个序列的多个值count:用来统计某个元素在序列中出现的次数index:用来查找某个值第一个匹配项的索引的位置insert:用于将对象插入到列表中pop:删除列表的一个元素,默认是最后一个,并且返回元素的值remove:用于移除列表中某个值的第一个匹配项reverse:将列表中的元素反向存放sort:用于在原位置对列表进行排序,改变原来的列表,让其中的元素按一定顺序排列2.
2020-10-21 20:22:08
392
1
原创 倒排索引与全文检索
倒排索引一个未经处理的数据库中,一般是以文档ID作为索引,文档内容作为记录而倒排索引指的是,将单词或记录作为索引,将文档ID作为记录,这样便可以方便地通过索引来查找到其所在的文档例如:简单来说,普通的查询检索是通过文档查找关键词,而倒排索引就是通过关键词找到文档流程:将数据库中的结构化数据数据转换为非结构化数据然后将非结构化数据转化为分词结构Django使用haystackhaystack是django的开源搜索框架,该框架支持 Solr,Elasticsearch,Wh
2020-10-21 20:14:07
617
原创 支付宝支付原理与后端代码
支付宝支付原理1.首先,需要在支付宝的沙箱环境中,创建一个应用https://openhome.alipay.com/platform/appDaily.htm?tab=info2.然后按照官方要求生成密钥3.把生成的app公钥粘贴到沙箱环境的app中之后查看沙箱环境的账号和密码代码:1.首先建一个keys文件夹,然后建两个文件夹,用来存放app私钥和支付宝公钥app_private_key.pem app私钥-----BEGIN RSA PRIVATE KEY----- 自
2020-10-15 21:08:51
1497
原创 七牛云原理与python
七牛云原理七牛云后端获取token代码示例# 获取七牛云tokenclass QNYTokenView(APIView): def get(self,request): from qiniu import Auth, put_file, etag # 需要填写你的 Access Key 和 Secret Key access_key = '-TYkErL-28AVgO5k8INKyoVYEl_UhdMFBn_0q' secr
2020-10-14 21:44:12
185
1
原创 模型字段与序列化正反向查找
普通字段Course_name = models.CharField(max_length=24)一对多字段,ForeignKey,第一个参数为,对应的model模型,on_delete代表对应关系删除时,是否删除数据course_type = models.ForeignKey(CourseType,verbose_name='课程类型',on_delete=models.SET_NULL,default=None,null=True)多对多字段,第一个参数为多对多对应的model模型cours
2020-10-12 19:32:36
360
原创 Django中的基类
基类,指的是继承了model.Model且没有生成表,而是作为基类或公共类被其他类继承只要继承了model.Model, 就会生成一个新的表,但是,如果在Meta方法中添加abstract=True,就不会产生新的表,而是作为一个基类存放多个表共同拥有的方法和字段等from django.db import modelsclass Commen(models.Model): create_time = models.DateTimeField(auto_now_add=True).
2020-10-12 19:15:07
306
原创 vue获取微博授权URL
1.在Vue**页面加载时动态发送请求获取微博授权url1.1 在 components\common\lab_header.vue 中写oauth动态获取微 博授权URL// 获取微博登录地址oauth() { // 从后端获取 微博登录地址 oauth_post().then((resp) => { console.log(resp) //{'code': '0', 'msg': '成功', 'data': {'url': url}}
2020-10-11 21:58:39
854
1
原创 三方登录原理及后端示例代码
原理图拿微博示例:注意,此时后端有三个接口,分别为,获取扫码url的接口,验证是否为绑定用户的接口,绑定接口注意,验证是否为绑定用户的接口并没有绑定接口的功能注册微博地址:https://open.weibo.com/回调页面是指扫码后,携带code码返回给前端的url地址,在后端的获取扫码url接口中和微博后台中一致使用微博用户code+微博开发者账号信息换取微博的认证access_token获取url接口代码class WeiboUrl(APIView):
2020-10-11 21:52:33
1795
原创 redis的pipline使用
redis发送数据原理Redis是建立在TCP协议基础上的CS架构,客户端client对redis server采取请求响应的方式交互。一般来说客户端从提交请求到得到服务器相应,需要传送两个tcp报文。设想这样的一个场景,你要批量的执行一系列redis命令,例如执行100次get key,这时你要向redis请求100次+获取响应100次。如果能一次性将100个请求提交给redis server,执行完成之后批量的获取相应,只需要向redis请求1次,然后批量执行完命令,一次性结果,性
2020-10-08 11:21:42
185
2
原创 Celery实现短信注册接口
介绍:1.1 celery应用举例Celery 是一个 基于python开发的分布式异步消息任务队列,通过它可以轻松的实现任务的异步处理,如果你的业务场景中需要用到异步任务,就可以考虑使用celery你想对100台机器执行一条批量命令,可能会花很长时间 ,但你不想让你的程序等着结果返回,而是给你返回 一个任务ID,你过一段时间只需要拿着这个任务id就可以拿到任务执行结果, 在任务执行ing进行时,你可以继续做其它的事情Celery 在执行任务时需要通过一个消息中间件来接收和发送任务消息,
2020-10-07 19:48:00
284
1
原创 Git基本使用
配置全局:git config --global user.name "xxx"git config --global user.email "7618733+god_hring@user.noreply.gitee.com"上传到仓库:在码云或者github上创建仓库仓库初始化(在本地)git init新建readme.md文件:touch README.md添加到本地缓冲区(.代表全部)git add .此时,也可以查看缓冲区状态git status
2020-10-07 07:29:54
170
原创 django缓存设置与验证码
django缓存设置安装缓存模块pip install django-redis==4.12.1在settings中配置# 缓存配置CACHES = { # django存缓默认位置,redis 0号库 # default: 连接名称 "default": { "BACKEND": "django_redis.cache.RedisCache", "LOCATION": "redis://127.0.0.1:6379/0", "OPT
2020-10-06 20:44:49
234
原创 Cookie、Session、JWT
cookiecookie是保存在本地浏览器的一个明文的用户信息sessionsession是保存在服务器端的一个键值对类似字典的数据他的主要作用就是加密和保存登录状态和会话登陆时验证用户名密码,如果正确,就会返回session的key,以后,浏览器端直接携带key访问,无需验证用户名和密码session缺点:1.这种模式最大的问题是,没有分布式架构,无法支持横向扩展。2.如果使用一个服务器,该模式完全没有问题。3.但是,如果它是服务器群集或面向服务的跨域体系结构的话,则
2020-10-05 16:29:58
295
1
原创 Django-DRF-分页
自定义类或者全局配置class PageNum(PageNumberPagination): #每页几条数据 page_size = 3 # 查询字符串中代表每页返回数据量的参数名,默认值:None page_query_param = 'limit' # 查询字符串中代表页码的参数名,有默认值:page # page_query_param = 'page' # 一页中最多的结果条数 # max_page_s
2020-10-05 07:30:52
159
原创 ModelViewSet基础讲解(纯干货)
ModelViewSet是封装度最高的DRF的视图类。包含了怎删改查中的所有接口操作。它继承自GenericViewSet、ListModelMixin、RetrieveModelMixin、CreateModelMixin、UpdateModelMixin、DestoryModelMixin。!!!!!注意,因为继承关系,必须在内部定义属性,queryset和serializer_class,因此,ModelViewSet通常结合ModelSerializer使用所以,在使用ModelVi.
2020-09-29 19:34:32
6528
2
原创 Vue-组件
1.组件定义定义组件并引用父组件向子组件传值子组件向父组件传值组件间传值:vuex1.1 什么是组件Html中有组件,是一段可以被复用的结构代码Css中有组件,是一段可以被复用的样式Js中有组件,是一段可以被复用的功能Vue中的组件,指的就是一个模块,是一个独立的,完整的(包含html,cssm,js等),可以直接拿来用1.2 组件特性组件的实例化对象,跟vue实例化对象一样,因此,我们也可以将vue实例化对象看成组件组件间是独立的,因此数据要独立存
2020-09-29 15:26:24
110
原创 CORS跨域与前后端联调思路
CORS跨域#允许所有源来跨域CORS_ORIGIN_ALLOW_ALL =True#或者设置跨域请求白名单# CORS_ORIGIN_WHITELIST = (# 'http://127.0.0.1:8080',# 'http://localhost:8080',# )#允许携带cookieCORS_ALLOW_CREDENTALS = True前后端联调思路写完视图函数,使用postman进行接口测试,保证后端接口没有问题在vue中写页面,向后端发送
2020-09-28 21:14:29
349
原创 axios的封装
axios的封装src文件夹下新建http文件夹,用来放网络请求相关的文件src/http文件夹下,创建index.js文件,对axios进行封装const { data } = require('autoprefixer');const axios = require('axios');const { error } = require('shelljs');axios.defaults.baseURL = 'http://192.168.56.100:8888' //vue请求后端
2020-09-28 21:11:11
224
原创 Django-DRF-APIview
APIview与ModelViewSetModelViewSet是对APIView的进一步封装ModelSerializers是对Serializer的进一步封装APIview的使用在user/urls.py中添加路由urlpatterns = [ path('apiview/',views.UserInfoViewSet.as_view()), ]创建user/serializers.py写序列化器serializers.ModelSerializer 和 seri
2020-09-28 18:52:01
227
原创 RESTful设计规范讲解
1.什么是RESTfulREST与技术无关,代表的是一种软件架构风格(REST是Representational State Transfer的简称,中文翻译为“表征状态转移”)REST从资源的角度类审视整个网络,它将分布在网络中某个节点的资源通过URL进行标识所有的数据,不过是通过网络获取的还是操作(增删改查)的数据,都是资源,将一切数据视为资源是REST区别与其他架构风格的最本质属性对于REST这种面向资源的架构风格,有人提出一种全新的结构理念,即:面向资源架构(ROA: Res
2020-09-28 18:49:13
204
原创 Django--DRF操作
1.DRF初始化DRF六中常用操作1.认证2.权限3.限流4.序列化5.分页6.版本1.1安装DjangoRestFrameworkpip install djangorestframework==3.11.1pip install django-filter==2.3.8 #过滤器pip install markdown # markdown support for the browsable API1231.2在syl/settings.py中注册INSTALLED_A
2020-09-28 18:42:45
167
原创 django基础
web工作流程图或者可以理解为:django介绍目的:了解Django框架的作用和特点作用:简便、快速的开发数据库驱动的网站Django的优势快速开发MVT功能齐全Django学习版本: 1.11.11思考:用django还是flask开发数据驱动web网站(复杂业务逻辑)数据分析后的结果展示界面, flask快速成型应用上线, 就用djangoDjango设计模式目的: 了解什么是MVC, MTV思考: 为什么要用设计模式分工、解耦,让不
2020-09-25 19:06:11
107
原创 正则表达式
正则表达式re.match()第一个参数, 是需要匹配的规则第二个参数, 将要匹配的内容match 从字符串开头开始匹配,字符串开头如果匹配不到,就返回None元字符.:任意字符,换行符除外\d:任意数字\w:任意数字字母下划线\s:空白符#如果是大写的s,w,d,代表’非’匹配多个字符:单个字符 + 个数限制(量词)+:最少1个,最多无限个*:最少零个,最多无限个?:最少0个,最多1个{n}:固定n个{n,m}:最少n个,最多m个$:匹配结尾,后面不能再有其他内容g
2020-09-18 20:56:23
90
原创 python通信
通信IP地址与端口号ip地址是网络中电脑的唯一标识通过 IP地址 可以找到 对方的电脑通过 端口号 找到电脑上的 应用软件端口号范围: 1-65535知名端口号: 1024之前的端口号, 被众所周知的端口号动态端口号: 1024之后的端口号, 被系统动态分配的端口号查看端口号命令netstat -ano # widowsnetstat -an # Linux/mac套接字真正的应用程序中, 通过 套接字来收发数据UDP 套接字TCP 套接字发送数据,需
2020-09-18 20:54:37
153
原创 冒泡/选择排序与二分查找
排序冒泡排序相邻比较,逆序交换# 如果某一趟排序,没有 发送任何 交换, 证明数据已经有序, 可以结束排序def bubble_sort(alist): n = len(alist) # 列表中元素个数 # 冒泡排序, n个数字需要 排序 (n-1) 趟 for i in range(1, n): # 在每一趟排序之前,设置一个标志 flag = False for j in
2020-09-18 20:53:57
147
原创 python栈与队列
栈定义在同一端 插入 和 删除元素的 线性表就是栈特点先进后出,后进先出实现方式只允许在列表 的末尾添加和删除元素 注意: 在列表的首位也可以实现栈,但是时间复杂度较高,降低效率class Stack(): def __init__(self): # 初始化空列表存放元素 self.alist = [] def push(self, item): # 将item元素 入栈
2020-09-18 20:52:47
274
原创 python数据结构与算法
数据结构物理结构又称存储结构 顺序结构:逻辑结构相邻,物理结构也相邻 链式结构:逻辑相邻,物理不一定相邻逻辑结构 集合结构:(同属一个整体,但是每个元素之间没有关系) 线性结构:队尾元素没有直接后继,队头元素没有直接前驱 其他元素有唯一的直接前驱和后继(一对一) 树形结构:除了根元素,其他元素都有一个前驱和多个后继(一对多) 图形结构:每个元素都有多个前驱和后继(多对多) 重点:线性结构如果既是线性结构,又是链式结构,这种结构成为链表如果既是线性结构,又是顺
2020-09-18 20:52:19
108
原创 python装饰器
装饰器定义装饰器函数 实质 就是 闭包函数装饰器使用@装饰器函数名进行装饰# 1. 定义装饰器函数def outer(func): def inner(): print("开始新功能") func() print("结束新功能") return inner@outer # 2. 装饰器def add(): #3.被装饰函数 print("两数之和是3") add() 装饰过程:
2020-09-18 20:51:42
71
原创 python递归(返回、闭包)函数
函数调用函数自身,这种方式称为递归,这种函数称为递归函数递归函数的优点是定义简单,逻辑清晰,缺点是过深的调用会导致栈溢出递归函数使用过程中,需要找到不变的规律和停止递归的边界条件,因为函数自身调用自身,函数本身的结构不变,只是每次传的参数改变啦递归实现过程(扩展):利用栈的思想,先找边界条件,同时将后面的任务存起来,一直到最前面的边界条件,然后回去,每次从栈中取任务,进行计算,一直到最后一个任务取完,结果也计算完毕递归过程: 递归前进段 递归边界条件 递归返回段例子递归
2020-09-18 20:51:07
141
原创 python匿名函数
匿名函数,没有名字的函数,又被称为lambda函数lambda 参数:表达式参数列表:lambda关键字和 :之间的部分,需要多少个参数,就写多少个返回值: :后面的表达式结果 就是函数的返回值匿名函数的调用:f = lambda x,y,z:x+y+zr = f(1, 2, 3)print(r)匿名函数作为参数传递def func(alist): # 函数内部,再定义一个函数,判断一个数是否为回文数,如果是回文数,返回True # def f(x): #
2020-09-18 20:50:11
240
原创 python高阶函数
定义当一个函数 接收 另一个函数作为参数, 它就是 高阶函数示例def func(a, x, y): a(x, y) # a就是传递的 函数参数f, 执行 a 相当于 执行 fdef f(x, y): print(x + y)func(f, 1, 2) # 3, 在函数f执行过程中,输出 3四大高阶函数map(func, iterable)将 可迭代对象 中的每个值 按照 第一个参数( 函数)的 规则 依次 处理, 得到一个 新的 迭代器 对象def
2020-09-18 20:49:26
141
原创 python生成器
生成器 是 特殊 的迭代器特殊: 构建 方式不同查看 对象 的所有 属性 和 方法: dir()生成器 是 对 迭代器补充, 可以处理 那些 无规律 的数字实现方式函数中 具备 yield关键字,它就是生成器,此时 ,它具备__iter__方法和__next__方法yield(1.暂停执行 2.返回值)将列表推导式 的 [] 变为 (), 他就是 生成器获取生成器数据 1.利用for循环获取迭代器数据 2.利用while循环和异常捕获 3.利用list、t
2020-09-18 20:48:44
81
原创 python迭代
可迭代对象iterable迭代是遍历元素的一种方式定义可以被 for ... in ... 循环遍历的对象,就是可迭代对象利用模块collections判断是否可迭代 Iterable(类)自定义可迭代对象任何一个对象, 只要具备 __iter__ 魔法方法,这个对象 就是可迭代对象from collections.abc import Iterableclass MyIterable(): """ 自定义一个类, 类 具备 __iter__ 魔法方法 """
2020-09-11 09:37:38
340
原创 python拷贝
自定义python代码名字不能和官方的模块重名浅拷贝copy 浅拷贝 只拷贝顶层数据,其余数据拷贝时是引用关系深拷贝deepcopy深拷贝 递归性质的拷贝,所有数据完全拷贝。数据之间彼此独立,互不影响深拷贝相当于复制,复制的两个文本彼此如何修改不影响另一个...
2020-09-11 09:36:24
88
原创 python作用域
在python程序中创建、改变、查找变量名时,都是在一个保存变量名的空间中进行,我们称之为命名空间,也被称之为作用域。L(在函数中定义的变量,属于局部作用域的变量,在函数外部不能使用) localE(两个函数之间的区域称之为嵌套作用域),嵌套域的变量也可以在局部作用域可以使用 enclosingG(在函数外部定义的变量,称之为全局变量)globalB(python已经定义好的变量和函数,称为内置作用域)bulit-in统称LEGB法则,确定变量名的搜索顺序优先级 局部>嵌套>
2020-09-11 09:35:46
125
原创 python异常处理
python中,我们通过try来捕获可能出现异常的代码,通过except来捕获异常,防止程序报错try:可能出现异常的代码except:(捕获异常)Exception(所有异常总称)as 变量:finally:(最后)
2020-09-11 09:34:09
154
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人