自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 AI镜像使用教程

AI教程

2024-02-13 12:10:24 314

原创 记录并学习python实现protobuf协议传输

记录并学习python实现protobuf协议传输1.protobuf协议是什么?官方解释:protocol buffers 是一种与语言无关、平台无关、可扩展的序列化结构数据的方法,它可用于(数据)通信协议、数据存储等。Protocol Buffers 是一种灵活,高效,自动化机制的结构数据序列化方法-可类比 XML,但是比 XML 更小(3 ~ 10倍)、更快(20 ~ 100倍)、更为简单。你可以定义数据的结构,然后使用特殊生成的源代码轻松地在各种数据流中使用各种语言进行编写和读取结构数据。你甚

2022-04-13 11:01:15 1639

原创 docker容器技术(部署python项目)

docker容器是目前应用比较广泛的虚拟化技术,下面我们一起来部署一下.以ubuntu系统为例.1. 准备python项目这里我准备了一个简单的flask代码,用于测试.#!/usr/bin/python# -*- coding: utf-8 -*-from flask import Flaskapp = Flask(__name__)@app.route('/', methods=['GET'])def index(): return "docker success!"

2021-11-10 15:11:32 3025

原创 服务器异常挂掉后,通过定时任务和shell脚本的方式实现自动重启服务

在日常开发维护的过程中,我们的服务会因为各种原因挂掉,这个时候实现自动重启服务就比较重要!服务异常挂掉后,自启实现原理:使用linux系统的crontab定时任务,对服务的进程进行监听,当服务进程不在的时候,我们来执行脚本文件运行服务!...

2020-11-25 12:31:53 1372

原创 docker容器数据存储的方式——数据卷

docker容器数据存储的方式——数据卷在使用docker的过程中,我们知道,容器的运行,是以镜像为基础层、在其上创建一个当前容器的存储层,用来进行读写,当我们的容器被删除的时候,容器存储层也会被删除,数据会丢失,所以,容器存储数据的方式需要改变,这里就应用到了数据卷。什么是数据卷?数据卷是一个可供一个或多个容器使用的特殊目录,可以提供很多有用的特性:数据卷可以在容器之间共享和重用对数据卷的更新,不会影响镜像数据卷默认会一直存在,即使容器被删除数据卷指令关于数据卷的管理我们从

2020-11-07 23:29:12 1234

原创 docker中的仓库(Repository)介绍以及搭建私有仓库方法

docker中的仓库(Repository)介绍以及搭建私有仓库方法镜像构建完成后,可以很容易的在当前宿主机上运行,但是,如果需要在其它服务器上使用这个镜像,我们就需要一个集中的存储、分发镜像的服务,Docker Registry 就是这样的服务。一个 Docker Registry 中可以包含多个仓库(Repository);每个仓库可以包含多个标签(Tag);每个标签对应一个镜像。通常,一个仓库会包含同一个软件不同版本的镜像,而标签就常用于对应该软件的各个版本。我们可以通过 <仓库名>

2020-11-06 21:50:52 4270 1

原创 docker中对于容器(Container)的介绍及使用命令

docker中对于容器(Container)的介绍及使用命令镜像(Image)和容器(Container)的关系,就像是面向对象程序设计中的类和实例一样,镜像是静态的定义,容器是镜像运行时的实体。容器可以被创建、启动、停止、删除、暂停等。容器的实质是进程,但与直接在宿主执行的进程不同,容器进程运行于属于自己的独立的命名空间。因此容器可以拥有自己的root文件系统、自己的网络配置、自己的进程空间,甚至自己的用户 ID 空间。容器内的进程是运行在一个隔离的环境里,使用起来,就好像是在一个独立于宿主的系统下操

2020-11-06 21:38:16 892

原创 docker中对于镜像(Image)的介绍及使用命令

docker中对于镜像(Image)的介绍及使用命令Docker镜像是什么?操作系统分为内核和用户空间。对于 Linux 而言,内核启动后,会挂载root文件系统为其提供用户空间支持。而 Docker 镜像(Image),就相当于是一个root文件系统。比如官方镜像ubuntu:18.04就包含了完整的一套 Ubuntu 18.04 最小系统的root文件系统。Docker 镜像是一个特殊的文件系统,除了提供容器运行时所需的程序、库、资源、配置等文件外,还包含了一些为运行时准备的一些配置参数(如匿名卷

2020-11-06 21:17:51 1616 1

原创 在linux系统中配置docker镜像加速器(附具体步骤)

配置docker镜像加速器国内从 Docker Hub 拉取镜像有时会遇到困难,此时可以配置镜像加速器。Docker 官方和国内很多云服务商都提供了国内加速器服务,例如:Docker 官方提供的中国 registry mirrorhttps://registry.docker-cn.com七牛云加速器https://reg-mirror.qiniu.com/当配置某一个加速器地址之后,若发现拉取不到镜像,请切换到另一个加速器地址。国内各大云服务商均提供了 Docker 镜像加速服务,建议根

2020-11-06 20:49:30 2651

原创 Docker简介(当前最流行的虚拟化技术)

Docker简介(当前最流行的虚拟化技术)Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的Linux机器上,也可以实现虚拟化,容器是完全使用沙箱机制,相互之间不会有任何接口。Docker 包括三个基本概念镜像(Image)容器(Container)仓库(Repository)理解了这三个概念,就理解了 Docker 的整个生命周期为什么要使用 Docker?作为一种新兴的虚拟化方式,Docker 跟传统的虚拟化方式相比

2020-11-06 20:39:49 347

原创 Django项目定时任务(django-crontab)

Django项目使用定时任务(django-crontab)关于django-crontab定时任务,首先他是操作系统层面的定时任务,一旦激活启动,只要操作系统在运行,则定时任务会一直在后台运行。定时任务可以使用在页面静态化技术上,以便按照我们想要的时间间隔自动生成页面下面以Django项目页面静态化技术应用定时任务来进行举例:首先安装pip install django-crontab添加应用# settings.pyINSTALLED_APPS = [ ... # 定时

2020-11-05 15:35:42 5712 2

原创 Django项目关于跨域cors及解决方案(配置项)

出于浏览器的同源策略限制。同源策略(Sameoriginpolicy)是一种约定,它是浏览器最核心也最基本的安全功能,如果缺少了同源策略,则浏览器的正常功能可能都会受到影响。可以说Web是构建在同源策略基础之上的,浏览器只是针对同源策略的一种实现。所谓同源(即指在同一个域)就是两个页面具有相同的协议(protocol),主机(host)和端口号(port)三者之间任意与当前页面地址不同,即为跨域。我们的前端和后端分别是两个不同的端口。现在,前端与后端分处不同的域名,这就涉及到跨域访问数据的问题,因为浏览

2020-11-05 13:30:50 916 1

原创 Django项目使用JWT(Django REST framework JWT)

Django项目使用JWT(Django REST framework JWT)我们在验证完用户的身份后(检验用户名和密码),需要向用户签发JWT,在需要用到用户身份信息的时候,还需核验用户的JWT。关于签发和核验JWT,我们可以使用Django REST framework JWT扩展来完成。1.安装配置安装pip install djangorestframework-jwt配置REST_FRAMEWORK = { 'DEFAULT_AUTHENTICATION_CLASSES'

2020-11-05 13:06:55 2458 1

原创 JWT的原理和构成

JWT的原理和构成ps:JWT在Django项目中的使用,我会写在下一篇博文!1.什么是JWTJson web token (JWT), 是为了在网络应用环境间传递声明而执行的一种基于JSON的开放标准((RFC 7519).该token被设计为紧凑且安全的,特别适用于分布式站点的单点登录(SSO)场景。JWT的声明一般被用来在身份提供者和服务提供者间传递被认证的用户身份信息,以便于从资源服务器获取资源,也可以增加一些额外的其它业务逻辑所必须的声明信息,该token也可直接被用于认证,也可被加密。说

2020-11-05 12:47:00 253

原创 DRF框架中的异常处理 Exceptions

DRF框架中的异常处理 Exceptions点我查看异常处理官方文档REST framework提供了异常处理,我们可以自定义异常处理函数。例如处理关于数据库的异常需导入from rest_framework.views import exception_handlerfrom rest_framework.views import exception_handlerfrom rest_framework import statusfrom django.db import Database

2020-11-05 11:58:08 755

原创 DRF框架的排序OrderingFilter和分页Pagination

DRF框架的排序OrderingFilter和分页Pagination点我查看官方文档对于列表数据,REST framework提供了OrderingFilter过滤器来帮助我们快速指明数据按照指定字段进行排序。使用方法:在类视图中设置filter_backends,使用rest_framework.filters.OrderingFilter过滤器,REST framework会在请求的查询字符串参数中检查是否包含了ordering参数,如果包含了ordering参数,则按照ordering参数指

2020-11-05 11:57:51 839

原创 DRF框架中过滤的使用方法

DRF框架中过滤的使用方法Filtering点我查看官方文档对于列表数据可能需要根据字段进行过滤,我们可以通过添加django-fitlter扩展来增强支持。pip install django-filter安装应用(注册)# settings.pyINSTALLED_APPS = [ ... 'django_filters', ...]在配置文件中增加过滤后端的设置:# settings.pyREST_FRAMEWORK = { 'DEFAULT_F

2020-11-04 16:00:56 1029

原创 DRF中关于限流的配置方式

DRF中关于限流的配置方式使用限流可以对接口访问的频次进行限制,以减轻服务器压力。1.使用可以在配置文件中,使用DEFAULT_THROTTLE_CLASSES和DEFAULT_THROTTLE_RATES进行全局配置REST_FRAMEWORK = { # 节流的配置列表 'DEFAULT_THROTTLE_CLASSES': ( 'rest_framework.throttling.AnonRateThrottle', #匿名未认证用户,使用IP区分用户

2020-11-04 15:51:48 468 2

原创 Django REST framework中认证和权限的使用方法

Django REST framework中认证和权限的使用方法认证方式:基本认证会话认证(SessionAuthentication)令牌认证(TokenAuthentication)基本认证:此身份验证方案使用HTTP基本身份验证,该身份针对用户的用户名和密码进行了签名。基本身份验证通常仅适用于测试。如果成功通过身份验证request.user将是DjangoUser实例。未经授权的身份验证的响应将被拒绝 HTTP 401 Unauthorized会话认证(SessionAuthe

2020-11-04 13:36:24 1064 1

原创 DRF中的路由Router使用

DRF中的路由Router使用对于视图集ViewSet,我们除了可以自己手动指明请求方式与动作action之间的对应关系外,还可以使用Routers来帮助我们快速实现路由列表信息。REST framework提供了两个routerSimpleRouterDefaultRouter1.使用方法1) 创建router对象router = DefaultRouter()2) 注册视图集,注册语法为router.register(prefix, viewset,basename)pre

2020-11-04 12:20:46 1568

原创 DRF中的视图集使用

DRF中的视图集使用常用的视图集有:ViewSetGenericViewSetModelViewSetReadOnlyModelViewSetViewSet一个ViewSet类只是一种基于类的View,继承自APIView,作用也与APIView基本类似,提供了身份认证、权限校验、流量管理等。在ViewSet中,它不提供任何方法处理程序,需要我们自己重写该类并明确实现action方法。class BookViewSet(viewsets.ViewSet): def list(

2020-11-04 11:59:58 457

原创 Django REST framework中的几个子类视图分享

Django REST framework中的几个子类视图分享1) CreateAPIViewfrom rest_framework.generics import CreateAPIView提供 post 方法继承自: GenericAPIView、CreateModelMixinclass CreateAPIView(mixins.CreateModelMixin, GenericAPIView): """ Concrete view

2020-11-04 11:29:32 251 1

原创 Django REST framework中的Mixin扩展类

Django REST framework中的Mixin扩展类1)ListModelMixin列表视图扩展类,提供list(request, *args, **kwargs)方法快速实现列表视图,返回200状态码。该Mixin的list方法会对数据进行过滤和分页。源码:class ListModelMixin(object): """ List a queryset. """ def list(self, request, *args, **kwargs):

2020-11-04 11:08:25 432

原创 Django REST framework中的GenericAPIView的使用

Django REST framework中的GenericAPIViewrest_framework.generics.GenericAPIView继承自APIVIew,增加了对于列表视图和详情视图可能用到的通用支持方法。通常使用时,可搭配一个或多个Mixin扩展类。使用GenericAPIView类一般需要实现queryset属性或者重写get_queryset方法GenericAPIView支持定义的属性:列表视图与详情视图通用:queryset列表视图的查询集serializer

2020-11-04 11:00:36 1764

原创 Django REST framework中的APIView的使用

Django REST framework中的APIViewrest_framework.views.APIViewAPIView是REST framework提供的所有视图的基类,继承自Django的View父类。APIView与View的不同之处在于:传入到视图方法中的是REST framework的Request对象,而不是Django的HttpRequeset对象;视图方法可以返回REST framework的Response对象,视图会为响应数据设置(render)符合前端要求的格

2020-11-04 10:43:41 2734

原创 Django REST framework的请求与响应

Django REST framework的请求与响应RequestREST framework 传入视图的request对象不再是Django默认的HttpRequest对象,而是REST framework提供的扩展了HttpRequest类的Request类的对象。REST framework 提供了Parser解析器,在接收到请求后会自动根据Content-Type指明的请求数据类型(如JSON、表单等)将请求数据进行parse解析,解析为类字典对象保存到Request对象中。Request

2020-11-04 10:34:04 616

原创 模型类序列化器ModelSerializer的使用

模型类序列化器ModelSerializer如果我们想要使用序列化器对应的是Django的模型类,DRF为我们提供了ModelSerializer模型类序列化器来帮助我们快速创建一个Serializer类。ModelSerializer与常规的Serializer相同,但提供了:基于模型类自动生成一系列字段包含默认的create()和update()的实现1.定义比如我们创建一个BookInfoModelSerializerfrom rest_framework import se

2020-11-03 13:53:17 678

原创 反序列化的使用

反序列化的使用反序列化主要分为两个部分,验证和保存验证:使用序列化器进行反序列化时,需要对数据进行验证后,才能获取验证成功的数据或保存成模型类对象。在获取反序列化的数据前,必须调用**is_valid()**方法进行验证,验证成功返回True,否则返回False。验证失败,可以通过序列化器对象的errors属性获取错误信息,返回字典,包含了字段和字段的错误。验证成功,可以通过序列化器对象的validated_data属性获取数据。在定义序列化器时,指明每个字段的序列化类型和选项参数,本身就是一

2020-11-03 13:19:42 1696 1

原创 序列化器的基本使用

序列化器的基本使用我们在django shell中来学习序列化器的使用。python manage.py shell基本使用1) 先查询出一个图书对象from book.models import BookInfobook = BookInfo.objects.get(id=4)2) 构造序列化器对象from book.serializers import BookInfoSerializerserializer = BookInfoSerializer(book)3)获取序列化

2020-11-03 12:09:42 519

原创 关于Django REST framework中Serializer字段和选项

关于Django REST framework中Serializer字段和选项1.定义Serializer类Django REST framework中的Serializer使用类来定义,须继承自rest_framework.serializers.Serializer。例如,我们已有了一个数据库模型类BookInfoclass BookInfo(models.Model): name = models.CharField(max_length=20, verbose_name='名称')

2020-11-03 11:30:31 1309

原创 Django REST framework简介及安装配置等

Django REST framework简介及安装配置等Django REST framework 框架是一个用于构建Web API 的强大而又灵活的工具。通常简称为DRF框架 或 REST framework。DRF框架是建立在Django框架基础之上,由Tom Christie大牛二次开发的开源项目。1、在序列化与反序列化时,虽然操作的数据不尽相同,但是执行的过程却是相似的,也就是说这部分代码是可以复用简化编写的。2、在开发REST API的视图中,虽然每个视图具体操作的数据不同,但增、删

2020-11-03 10:43:47 465

原创 RESTful风格及设计思想

RESTful风格及设计思想在前后端分离的应用模式里,后端API接口如何定义?我们定义了一种普遍采用的API接口设计风格,这就是API的RESTful设计风格。1.起源REST这个词,是Roy Thomas Fielding在他2000年的博士论文中提出的。Fielding是一个非常重要的人,他是HTTP协议(1.0版和1.1版)的主要设计者、Apache服务器软件的作者之一、Apache基金会的第一任主席。所以,他的这篇论文一经发表,就引起了关注,并且立即对互联网开发产生了深远的影响。2.名称

2020-11-03 10:26:27 358

原创 web应用模式(前后端不分离、前后端分离)分享

web应用模式(前后端不分离、前后端分离)分享在开发Web应用中,有两种应用模式:前后端不分离前后端分离1、前后端不分离在前后端不分离的应用模式中,前端页面看到的效果都是由后端控制,由后端渲染页面或重定向,也就是后端需要控制前端的展示,前端与后端的耦合度很高。这种应用模式比较适合纯网页应用,但是当后端对接App时,App可能并不需要后端返回一个HTML网页,而仅仅是数据本身,所以后端原本返回网页的接口不再适用于前端App应用,为了对接App后端还需再开发一套接口。2、前后端分离...

2020-11-03 10:00:51 1053

原创 python对接redis

python对接redis安装包安装Redis的有3种方式https://github.com/andymccurdy/redis-py第一种:进⼊虚拟环境,联⽹安装包redispip install redis第二种:进⼊虚拟环境,联⽹安装包rediseasy_install redis第三种:到中⽂官⽹-客户端下载redis包的源码,使⽤源码安装一步步执行 wget https://github.com/andymccurdy/redis-py/archive/master.zip

2020-11-02 22:43:41 117

原创 redis数据类型操作之zset

redis数据类型操作之zsetsorted set,有序集合元素为string类型元素具有唯⼀性,不重复每个元素都会关联⼀个double类型的score,表示权重,通过权重将元素从⼩到⼤排序说明:没有修改操作增加添加zadd key score1 member1 score2 member2 ...例1:向键a5的集合中添加元素lisi、wangwu、zhaoliu、zhangsan,权重分别为4、5、6、3zadd a5 4 lisi 5 wangwu 6 zhaoliu 3

2020-11-02 22:30:46 99

原创 redis数据类型操作之set

redis数据类型操作之setset类型⽆序集合元素为string类型元素具有唯⼀性,不重复说明:对于集合没有修改操作增加添加元素sadd key member1 member2 ...例1:向键a3的集合中添加元素zhangsan、lisi、wangwusadd a4 zhangsan lisi wangwu获取返回所有的元素smembers key例2:获取键a4的集合中所有元素smembers a4删除删除指定元素srem key例3:删除键a3

2020-11-02 22:20:55 65

原创 redis数据类型操作之list

redis数据类型操作之listlist类型列表的元素类型为string按照插⼊顺序排序增加在左侧插⼊数据lpush key value1 value2 ...例1:从键为a1的列表左侧加⼊数据a 、 b 、clpush a1 a b c在右侧插⼊数据rpush key value1 value2 ...例2:从键为a1的列表右侧加⼊数据0、1rpush a1 0 1在指定元素的前或后插⼊新元素linsert key before或after 现有元素 新元素

2020-11-02 22:12:27 77

原创 redis数据类型操作之hash

redis数据类型操作之hashhash类型hash⽤于存储对象,对象的结构为属性、值值的类型为string增加、修改设置单个属性hset key field value例1:设置键 user的属性name为mayunhset user name mayun设置多个属性hmset key field1 value1 field2 value2 ...例2:设置键u2的属性name为mayun、属性age为50hmset u2 name mayun age 50获取获

2020-11-02 21:50:25 73

原创 redis的键命令操作

redis的键命令操作键命令查找键,参数⽀持正则表达式(语法)keys pattern例1:查看所有键keys *例2:查看名称中包含a的键keys a*判断键是否存在,如果存在返回1,不存在返回0exists key1例3:判断键a1是否存在exists a1查看键对应的value的类型(语法)type key例4:查看键a1的值类型,为redis⽀持的五种类型中的⼀种type a1删除键及对应的值(语法)del key1 key2 ...例5:

2020-11-02 21:33:42 79

原创 redis 数据类型操作之String

redis 数据操作之StringString类型:字符串类型是 Redis 中最为基础的数据存储类型,它在 Redis 中是二进制安全的,这便意味着该类型可以接受任何格式的数据,如JPEG图像数据或Json对象描述信息等。在Redis中字符串类型的Value最多可以容纳的数据长度是512M。保存设置键值(语法)set key value例1:设置键为name值为mayun的数据set name mayun设置键值及过期时间,以秒为单位(语法)setex key seconds val

2020-11-02 21:16:46 130

空空如也

空空如也

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

TA关注的人

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