自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 Reids限流

前言:“限流”顾名思义就是限制流量,它也是保护高并发系统三个法宝之一(保护高并发三种方式:缓存、降级、限流),我们都知道服务器的处理能力是有一定上限的,如果超出这个上限继续把请求放进来,可能会发生很多不可预料的麻烦事的。通过限流可以在超出我们预先设置的请求量最大值就让剩余的请求排队或者拒绝服务,这样就可以让系统在扛不住高并发的情况下做到"有损服务"而不是导致服务器崩掉彻底无法服务。举个例子:最近华为新手机mate40上架发行,由于手机发行的数量有限,市场黄牛过多存货抬高价格的情况。华为官方为了

2020-11-11 19:11:22 272

原创 Celery和borker

CeleryCelery是一个异步任务的调度工具Celery 是 Distributed Task Queue,分布式任务队列,分布式决定了可以有多个 worker 的存在,队列表示其是异步操作,即存在一个产生任务提出需求的工头,和一群等着被分配工作的码农。在 Python 中定义 Celery 的时候,我们要引入Broker,中文翻译过来就是“中间人”的意思,在这里 Broker 起到一个中间人的角色。在工头提出任务的时候,把所有的任务放到 Broker 里面,在 Broker 的另外一头,一群码农

2020-11-09 20:51:31 414 2

原创 mysql无法连接navicat

解决mysql连接报错:1251-Client does not support authentication protocol requested by server;consider upgrading MYSQL client使用navicat连接mysql8.0时报错:1251-Client does not support authentication protocol requested by server;consider upgrading MYSQL client错误原因使用MyS

2020-11-09 20:48:47 304

原创 WebSocket和HTTP的区别及原理

HTTP协议HTTP是单向的,客户端发送请求,服务器发送响应。举例来说,当客户端向服务器发送请求时,该请求以HTTP或HTTPS的形式发送,在接收到请求后,服务器会将响应发送给客户端。每个请求都与一个对应的响应相关联,在发送响应后客户端与服务器的连接会被关闭。每个HTTP或HTTPS请求每次都会新建与服务器的连接,并且在获得响应后,连接将自行终止。 HTTP是在TCP之上运行的无状态协议,TCP是一种面向连接的协议,它使用三向握手方法保证数据包传输的传递并重新传输丢失的数据包。HTTP可以运行在任何可靠

2020-11-09 20:47:43 1330 1

原创 ABAC权限模型的设计

ABAC(Attribute Base Access Control) 基于属性的权限控制​ 不同于常见的将用户通过某些方式关联到权限的方式,ABAC则是通过动态计算一个或一组属性来​ 判断是否满足某种条件来进行授权判断(可以编写简单的逻辑)。属性通常来说分为四类:​ 用户属性(如用户年龄 用户地址)​ 环境属性(比如当前时间)​ 操作属性(增、删、改、查)​ 对象属性(比如一篇文章,又称资源属性)例如:​ 规则:“允许所有班主任在上课时间可以自由出入校门”这条规则,其中,“班主任”是用户

2020-11-03 10:45:42 8666 2

原创 逻辑删除和物理删除的区别

一、逻辑删除逻辑删除的本质就是修改操作,所谓的逻辑删除并不是真的删除,而是在表中将对应的是否删除标识(is_delete)或者说是状态字段(status)做修改操作。比如0是未删除,1是删除。在逻辑上数据是被删除了,但是数据本身依旧存在库里。对应的sql语句:update 表名 set is_delete = 1 where id =1;语句表示,在该表中将id为1的信息进行逻辑删除,那么客户端进行查询id为1的信息,服务器就不会提供信息。如果想继续为客户端提供信息,可以把is_delete更

2020-11-02 17:02:51 9951

原创 权限框架ACL和RBAC

什么是权限控制 ?忽略特别细致的概念,比如权限能细分出很多种,功能权限、数据权限、管理权限等。理解两个概念即可:用户和资源, 让指定的用户,只能操作指定的资源(CRUD)ACL:Access Control List (访问控制列表)​ ACL是最早也是最基本的一种访问控制机制ACL原理:​ 每一项资源都有一个列表,这个列表记录的就是那些用户可以对这项资源执行CRUD中​ 的那些操作。当系统视图访问这项资源时,会首先检查这个列表中是否有关于用户的访​ 问权限,从而确定当前用户可否执行相

2020-11-02 17:02:19 411

原创 数据库物理外键和逻辑外键

物理外键性能问题物理外键性能问题总结:​ 1.数据库需要维护外键的内部管理​ 2.外键等于把数据的一致性实物实现,全部交给数据库的服务器完成​ 3.有了外键,当做一些设计外键字段的增、删、更新操作之后,需要触发相关操作去检查,​ 不得不消耗资源​ 4.外键还会印象需要请求对其他表内部加锁而容易出现死锁的情况mysql的外键设计问题 虽然很多人都不推荐你在关系型数据库使用外键但你更多听到的是mysql的,而不是SQLserver或者其他。比较公认的是,他的外键设计的 的确不是很好,限制

2020-11-02 17:01:45 2156

原创 python常见面试题

python基础1.列表常用方法append:用于在列表末尾追加新的对象extend:可以在列表末尾一次性追加另一个序列的多个值count:用来统计某个元素在序列中出现的次数index:用来查找某个值第一个匹配项的索引的位置insert:用于将对象插入到列表中pop:删除列表的一个元素,默认是最后一个,并且返回元素的值remove:用于移除列表中某个值的第一个匹配项reverse:将列表中的元素反向存放sort:用于在原位置对列表进行排序,改变原来的列表,让其中的元素按一定顺序排列2.

2020-10-26 17:16:31 789

原创 docker和git

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 -p:端口80:80:左边是宿主机,右边是映射 docker stop 容器id:关闭

2020-10-26 17:13:40 916

原创 安装Docker Desktop中遇到的问题

安装Docker Desktop中遇到的问题在Windows 10 中 Docker2.3.0.45519 版本 , 启用 使用Docker Desktop 时 发现 根本无法启动, 偶尔 或者频繁的出错:System.InvalidOperationException:Failed to set version to docker-desktop: exit code: -1使用 管理员方式执行 命令 netsh winsock reset在windows 10 中 如果 安装了 Andr

2020-10-26 11:18:39 1720

原创 05.创建订单并生成支付链接接口

1.创建订单并生成支付链接接口1.1 goods/urls.py中注册路由urlpatterns = [ path('getpayurl/', views.PayUrlView.as_view()), # /goods/getpayurl/]1.2 goods/views.py 中写视图函数from rest_framework.views import APIViewfrom rest_framework.permissions import AllowAny, IsAuthenti

2020-10-15 21:44:44 2070

原创 03.通过课程查询商品信息

1.只需要修改/course/sourse/1/返回的数据即可1.1 course/serializers.py 添加商品信息序列化# 添加显示商品字段from goods.serializers import GoodsSerializerclass CourseDeepSerializer(CourseSerializer): goods_set = GoodsSerializer(many=True) chapters = ChaptersSerializer(many=Tru

2020-10-15 21:44:00 154

原创 七牛云原理与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-15 07:17:50 220

原创 02.创建商品APP

1.创建course模型3.1 创建用户模型coursepython ../manage.py startapp goods # 创建course模型3.2 在setting.py中注册goods模型(第一步)INSTALLED_APPS = [ 'goods.apps.GoodsConfig',]# 注:pycharm无法联想,需要把apps文件夹设置为源根3.3 syl/urls.py添加路由(第二步)urlpatterns = [ path('goods/', in

2020-10-14 17:02:27 195

原创 04.支付宝支付原理

1.支付宝支付流程https://www.lanqiao.cn/vip2.新建支付宝应用# 访问"支付宝开发平台"登录,可以访问开发者中心https://open.alipay.com/platform/home.htm# 可以参考"电脑网站支付" 熟悉电脑支付整体流程 https://docs.open.alipay.com/270/105899/2.1 第一步:创建应用(这里使用沙箱环境测试)沙箱环境说明线上环境需要创建应用,因为我们不是企业,没有资质,所以只能申请沙箱

2020-10-14 17:01:56 2002 1

原创 01.商品模块表结构分析

1.表结构分析1.1 商品模块表结构分析from django.db import modelsfrom utils.MyBaseModel import Baseclass Goods(Base): GOODS_TYPE = ( ('1', 'Vip'), ('2', 'Course') ) CHANNEL_TYPE = ( ('1', '普通'), ('2', '促销') ) course

2020-10-14 17:00:04 244

原创 django中的基类

只要继承了model.Model, 就会生成一个新的表,但是,如果在Meta方法中添加abstract=True,就不会产生新的表,而是作为一个基类存放多个表共同拥有的方法和字段等from django.db import modelsclass Commen(models.Model): create_time = models.DateTimeField(auto_now_add=True) update_time = models.DateTimeField(auto_no.

2020-10-13 07:13:15 275

原创 序列化,反序列化查询

1.序列化常用字段参数'''1. 选项参数'''name = serializers.CharField(min_length=3,max_length=20)max_length # 最大长度min_lenght # 最小长度allow_blank # 是否允许为空max_value # 最大值min_value # 最小值'''2. 通用参数'''gp = serializers.SerializerMethodField(read_onl

2020-10-12 16:34:39 348

原创 08.vue绑定用户页面

1.vue微博回调空页面注:微博回调空页面为:http://127.0.0.1:8888/oauth/callback/1.1 页面路径 components\oauth.vue<template> <div> <div v-show='visiable'> 绑定用户 用户名: <input type="text" v-model="username" @blur="che

2020-10-09 16:18:43 196

原创 07.绑定微博用户接口

1.微博绑定用户接口1.1 oauth/urls.py中添加路由urlpatterns = [ path('weibo/binduser/', views.OauthWeiboBindUser.as_view()), # /oauth/weibo/callback/]1.2 oauth/views.py 中添加试图函数class OauthWeiboBindUser(APIView): permission_classes = (AllowAny,)

2020-10-09 16:18:12 221

原创 06.vue微博回调空页面

1.vue微博回调空页面注:微博回调空页面为: http://127.0.0.1:8888/oauth/callback/1.1 页面路径 components\oauth.vue<template><div><p>跳转中....</p></div></template><script>import { oauth_callback_post } from './axios_api/api'ex

2020-10-09 11:47:59 134

原创 05.微博回调接口

1.微博回调接口1.1 oauth/urls.py 中添加路由urlpatterns = [ path('weibo/callback/', views.OauthWeiboCallback.as_view()),# /oauth/weibo/callback/ ]1.2 oauth/views.py中添加试图函数http://192.168.56.100:8888/oauth/weibo/callback/from .models import OauthUserfrom res

2020-10-09 11:47:34 147

原创 04.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-09 11:46:06 139 1

原创 03.生成微博授权URL接口

1.创建apps/oauth模块进行oauth认证'''2.1 在apps文件夹下新建应用: oauth'''cd syl/appspython ../manage.py startapp oauth # 切换到apps文件夹下执行创建命令'''2.2 添加子路由: oauth/urls.py'''from django.urls import pathfrom . import viewsurlpatterns = []'''2.3 在syl/settings.py中添加应用'''

2020-10-09 11:45:43 132

原创 02.微博账号注册

新浪微博开放平台:https://open.weibo.com/1.注册账号注册新浪微博账号进入首页。创建网站接入的应用: https://open.weibo.com/选择立即接入,进入到创建应用页面创建应用基本信息页面: https://open.weibo.com/apps/3516473472/info/advanced高级信息页面2.接口文档查看接口文档https://open.weibo.com/wiki/授权机制说明OAuth2.

2020-10-09 11:44:05 274

原创 01.微博第三方登录原理讲解

1.微博三方登录流程https://api.weibo.com/oauth2/authorize?client_id=4122644977&response_type=code&state=study&forcelogin=true&redirect_uri=https%3A%2F%2Fstudy.163.com%2Fsns%2Fweibo%2FoAuthCallback.htm%3FoauthType%3Dlogin%26returnUrl%3DaHR0cH

2020-10-09 11:40:13 878

原创 Redis的pipline使用

1.pipeline原理redis基本语法:https://www.cnblogs.com/xiaonq/p/7919111.htmlredis四篇:https://www.cnblogs.com/xiaonq/category/1544586.html1.1 redis发送数据原理Redis是建立在TCP协议基础上的CS架构,客户端client对redis server采取请求响应的方式交互。一般来说客户端从提交请求到得到服务器相应,需要传送两个tcp报文。设想这样的一个场景,

2020-10-08 11:31:11 189

原创 短信验证接口

1.注册荣联云账号1.1注册账号1.2 登录即可看到开发者账号信息1.3 添加测试账号2.使用容联云发送代码测试'''1. 安装容联云sdk'''pip install ronglian_sms_sdk# 免费测试文档地址:https://doc.yuntongxun.com/p/5a531a353b8496dd00dcdfe2'''2. 短信发送代码'''# libs/rl_sms.pyfrom ronglian_sms_sdk import SmsSDKaccId = '8

2020-10-08 07:43:02 195

原创 07.后端注册接口完善

1.完善注册接口1.1 修改user/views.py中完善视图函数# 注册接口class RegisterView(APIView): """ 用户注册, 权限是: 匿名用户可访问 """ # 自定义权限类 permission_classes = (AllowAny,) def post(self, request): """ 接收用户名,密码,手机号和验证码, 前端校验两遍一致性, 注册成功后返回成功, 然后用户自

2020-10-07 09:06:56 203

原创 06.vue检查用户名是否使用

1.vue检查用户名是否重复前端函数如下,js方法代码无需更改,前端代码逻辑在components\common\lab_header.vue只需要修改components\axios_api\http.js中调用的后端地址// axios.defaults.baseURL = "http://127.0.0.1:8000/"axios.defaults.baseURL = "http://192.168.56.100:8888/" // 检查用户名 是否使用

2020-10-07 09:06:25 941

原创 05.检查用户名是否使用接口

1.django添加检查用户名和手机号数量接口1.1 在user/urls.py中添加urlpatterns = [ path('count/', views.RegCountView.as_view()), # 查询用户名手机号使用量的视图, /user/count/]1.2 在user/views.py中添加视图函数# 查询用户数量接口class RegCountView(APIView): # 注册时需要验证的用户名和手机号是否使用 # 自定义权限类

2020-10-07 09:06:02 245 1

原创 04.vue发送短信逻辑

1.vue发送短信逻辑前端函数如下,js方法代码无需更改,前端代码逻辑在components\common\lab_header.vue只需要修改components\axios_api\http.js中调用的后端地址// axios.defaults.baseURL = "http://127.0.0.1:8000/"axios.defaults.baseURL = "http://192.168.56.100:8888/" // 获取手机验证码 sendco

2020-10-07 09:05:06 561

原创 03.linux常用命令

1.linux常用命令1.1 系统命令runlevel # 查看当前的运行级别systemctl status sshd # 开启网络服务功能 stop # 关闭 restart # 重启 reload # 重载reboot # 重启halt

2020-10-07 09:04:36 131

原创 03.celery发送短信接口

1.使用celery异步发送短信1.1 在celery_task/mian.py中添加发送短信函数# celery项目中的所有导包地址, 都是以CELERY_BASE_DIR为基准设定.# 执行celery命令时, 也需要进入CELERY_BASE_DIR目录执行.CELERY_BASE_DIR = os.path.dirname(os.path.abspath(__file__))@app.task(bind=True)def send_sms_code(self, mobile, dat

2020-10-07 09:04:04 306

原创 02.celery配置与基本使用

1.celery配置与基本使用1.1 安装celerypip install celery @ https://github.com/celery/celery/tarball/master1.2 新建celery/main.py配置celery# celery_task/main.pyimport osfrom celery import Celery# 定义celery实例, 需要的参数, 1, 实例名, 2, 任务发布位置, 3, 结果保存位置app = Celery('mycel

2020-10-07 09:03:28 273

原创 01.celery原理与组件

1.Celery介绍https://www.cnblogs.com/xiaonq/p/11166235.html#i11.1 celery应用举例Celery 是一个 基于python开发的分布式异步消息任务队列,通过它可以轻松的实现任务的异步处理,如果你的业务场景中需要用到异步任务,就可以考虑使用celery你想对100台机器执行一条批量命令,可能会花很长时间 ,但你不想让你的程序等着结果返回,而是给你返回 一个任务ID,你过一段时间只需要拿着这个任务id就可以拿到任务执行结果, 在任务执

2020-10-07 09:03:08 245 1

原创 编写注册接口

1.编写注册接口1.1 user/urls.py 中添加路由urlpatterns = [ path('register/', views.RegisterView.as_view()), # 注册视图, /user/register/ ]1.2 user/views.py 中写注册视图函数class RegisterView(APIView): """ 用户注册, 权限是: 匿名用户可访问 """ # 自定义权限类 permission_classes = (Al

2020-10-06 19:29:23 922

原创 图片验证码接口(干货)

1.django 缓存设置django的六种缓存(mysql+redis) :https://www.cnblogs.com/xiaonq/p/7978402.html#i61.1 安装Django缓存模块pip install django-redis==4.12.11.2 syl/settings.py 中配置缓存# 缓存配置CACHES = { # django存缓默认位置,redis 0号库 # default: 连接名称 "default": {

2020-10-06 19:03:21 1428

原创 JWT原理

1.COOKIE使用和优缺点1.1cookie原理:用户名+密码cookie是保存在用户浏览器端,用户名和密码等明文信息1.2 session使用原理session是存储在服务器端的一段字符串,相当于字典的key1.用户向服务器发送用户名和密码。2.验证服务器后,相关数据(如用户角色,登录时间等)将保存在当前会话中。3.服务器向用户返回session_id,session信息都会写入到用户的Cookie。4.用户的每个后续请求都将通过在Cookie中取出session_id传给

2020-10-05 19:13:47 230

空空如也

空空如也

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

TA关注的人

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