06 2020 档案
摘要:延迟绑定出现在闭包问题中。下面我们看一个闭包的例子: def gen_mul(n): def mul(x): return n*x return mul double = gen_mul(2) double_value = double(6) print(double_value) 可以看出满足闭包
阅读全文
摘要:基本语法 MULTI 开启事务, 后续的命令会被加入到同一个事务中 事务中的操作会发给服务端, 但是不会立即执行, 而是放到了该事务的对应的一个队列中, 服务端返回QUEUED EXEC 执行EXEC后, 事务中的命令才会被执行 事务中的命令出现错误时, 不会回滚也不会停止事务, 而是继续执行 DI
阅读全文
摘要:什么是模块? 常见的场景:一个模块就是一个包含了python定义和声明的文件,文件名就是模块名字加上.py的后缀。 但其实import加载的模块分为四个通用类别: 1 使用python编写的代码(.py文件) 2 已被编译为共享库或DLL的C或C++扩展 3 包好一组模块的包 4 使用C编写并链接到
阅读全文
摘要:1.什么是Celery? Celery 是芹菜Celery 是基于Python实现的模块, 用于执行异步定时周期任务的其结构的组成是由 1.用户任务 app 2.管道 broker 用于存储任务 官方推荐 redis rabbitMQ / backend 用于存储任务执行结果的 3.员工 worke
阅读全文
摘要:DRF的视图 APIView 我们django中写CBV的时候继承的是View,rest_framework继承的是APIView,那么他们两个有什么不同呢~~~ urlpatterns = [ url(r'^book$', BookView.as_view()), url(r'^book/(?P<
阅读全文
摘要:对于客户端请求的key,根据公式HASH_SLOT=CRC16(key) mod 16384,计算出映射到哪个分片上,然后Redis会去相应的节点进行操作! 那大家思考过,为什么有16384个槽么?ps:CRC16算法产生的hash值有16bit,该算法可以产生2^16-=65536个值。换句话说,
阅读全文
摘要:课室和老师分别为: classes = [[],[],[]] teacheres = ['A','B','C','D','E','F','G','H','L'] 先是随机分配: for teacher in teacheres: index = random.randint(0, 2) classe
阅读全文
摘要:视图的功能:说白了就是接收前端请求,进行数据处理 (这里的处理包括:如果前端是GET请求,则构造查询集,将结果返回,这个过程为序列化;如果前端是POST请求,假如要对数据库进行改动,则需要拿到前端发来的数据,进行校验,将数据写入数据库,这个过程称为反序列化) 最原始的视图可以实现这样的逻辑处理,但是
阅读全文
摘要:DRF分页组件 为什么要使用分页 我们数据表中可能会有成千上万条数据,当我们访问某张表的所有数据时,我们不太可能需要一次把所有的数据都展示出来,因为数据量很大,对服务端的内存压力比较大还有就是网络传输过程中耗时也会比较大。 通常我们会希望一部分一部分去请求数据,也就是我们常说的一页一页获取数据并展示
阅读全文
摘要:解析器 解析器的作用 解析器的作用就是服务端接收客户端传过来的数据,把数据解析成自己可以处理的数据。本质就是对请求体中的数据进行解析。 在了解解析器之前,我们要先知道Accept以及ContentType请求头。 Accept是告诉对方我能解析什么样的数据,通常也可以表示我想要什么样的数据。 Con
阅读全文
摘要:权限组件源码 我们先看到在rest_framework.permissions这个文件中~存放了框架给我们提供的所有权限的方法~~ BasePermission 这个是我们写权限类继承的一个基础权限类~~~ 权限的详细用法 在这里我们一定要清楚一点~我们的Python代码是一行一行执行的~那么执行i
阅读全文
摘要:先下结论:自定义python装饰器时一定要记住使用@functools.wraps(func)该bug在一次flask app开发中遇到的。 代码如下: from flask import Blueprint from middleware.authentications import login_
阅读全文
摘要:基本语法 MULTI 开启事务, 后续的命令会被加入到同一个事务中 事务中的操作会发给服务端, 但是不会立即执行, 而是放到了该事务的对应的一个队列中, 服务端返回QUEUED EXEC 执行EXEC后, 事务中的命令才会被执行 事务中的命令出现错误时, 不会回滚也不会停止事务, 而是继续执行 DI
阅读全文
摘要:1. 常用命令 String 记录字符串/整数/浮点数 命令 set 添加/修改数据 get 获取数据 mset 添加多个数据 mget 获取多个数据 incr 计数加1 decr 计数减1 incrby 计数加n 键命令 适用于所有的类型 命令 del 删除数据 exists 判断数据是否存在 e
阅读全文
摘要:读写分离 在settings中配置不同名称的数据库连接参数,并配置一条数据库选择路由 DATABASES = { ‘default‘: { ‘ENGINE‘: ‘django.db.backends.sqlite3‘, ‘NAME‘: os.path.join(BASE_DIR, ‘db.sqlit
阅读全文
摘要:1. 作用 对数据备份, 实现高可用 HA 通过读写分离, 提高吞吐量, 实现高性能 2. 原理 Mysql的复制 是一个异步的复制过程 过程本质为 Slave 从 Master 端获取 Binary Log, 然后再在自己身上完全顺序的执行日志中所记录的各种操作 MySQL 复制的基本过程如下:
阅读全文
摘要:转自:https://woodenrobot.me/2020/03/09/redis-lock/ 业界常用解决方案 基于 MySql 等数据库的唯一索引 基于 ZooKeeper 临时有序节点 基于 Redis 的 NX EX 参数 本文主要讲解基于 Redis 实现的分布式锁 分布式锁的特点 互斥
阅读全文
摘要:try: redis_conn = get_redis_connection('defult') collected_set = redis.conn.smember('collected%s' % request.user.id) collected_list = [] for item in c
阅读全文
摘要:模型类的创建 class Area(models.Model): """ 行政区划 """ # 创建 name 字段, 用户保存名称 name = models.CharField(max_length=20, verbose_name='名称') # 自关联字段 parent # 第一个参数是 s
阅读全文
摘要:from flask import Flask, session from flask_restful import Api, Resource from flask_restful.reqparse import RequestParser from flask_sqlalchemy import
阅读全文
摘要:可以简单的理解 utf8mb4 是目前最大的一个字符编码,支持任意文字. 因为之前默认的mysql中设置的字符集是utf8,utf8编码可能是1个字符,2个字符,3个字符,最大不会超过三个字符。 但是有些需要用到四个字符的,比如android和ios中的emoji表情,就是特殊的四个字符,这个时候就
阅读全文
摘要:原文链接:Redis实现消息队列的方案 Redis作为内存中的数据结构存储,常用作数据库、缓存和消息代理。它支持数据结构,如 字符串,散列,列表,集合,带有范围查询的排序集(sorted sets),位图(bitmaps),超级日志(hyperloglogs),具有半径查询和流的地理空间索引。Red
阅读全文
摘要:快速排序 快速排序是由东尼·霍尔所发展的一种排序算法。在平均状况下,排序 n 个项目要 Ο(nlogn) 次比较。在最坏状况下则需要 Ο(n2) 次比较,但这种状况并不常见。事实上,快速排序通常明显比其他 Ο(nlogn) 算法更快,因为它的内部循环(inner loop)可以在大部分的架构上很有效
阅读全文
摘要:一、进程间通信 队列和管道(multiprocess.Queue、multiprocess.Pipe) 进程间通信:IPC(inter-Process Communication) 1、队列 创建共享的进程队列,Queue是多进程的安全的队列,可以使用Queue实现多进程之间的数据传递。 # Que
阅读全文
摘要:crontab系统自带的调度命令,通过crontab命令,我们可以在固定的间隔时间执行指定的系统指令或 shell script脚本。时间间隔的单位可以是分钟、小时、日、月、周及以上的任意组合。这个命令非常适合周期性的日志分析或数据备份等工作。 crontab服务的重启关闭,开启 $sudo /et
阅读全文
摘要:区分uWSGI和WSGI 在python web开发中,我们经常使用uwsgi配合nginx部署一个web框架,如Django或flask。同时我们又会说,框架和web服务器之间要符合WSGI协议。那就来厘清一下这几个概念。 web服务器和web框架 在讲uWSGI和WSGI之前,先要弄清楚web开
阅读全文
摘要:args 获取字符串的参数 form 获取表单数据 data 请求体的全部参数 json 获取json数据 files 获取文件 headers 获取请求头 url 获取完整路径 method 获取请求的方法 cookies 获取cookies数据
阅读全文
摘要:Django在接收到http请求之后,会根据http请求携带的参数以及报文信息创建一个WSGIRequest对象,并且作为视图函数第一个参数传给视图函数。也就是我们经常看到的request参数。在这个对象上我们可以找到客户端上传上来的所有信息。这个对象的完整路径是django.core.handle
阅读全文
摘要:CORS 跨域资源共享(CORS cross-origin sharing standard )是一种机制,它使用额外的 HTTP 头来告诉浏览器 让运行在一个 origin (domain) 上的Web应用被准许访问来自不同源服务器上的指定的资源。当一个资源从与该资源本身所在的服务器不同的域、协议
阅读全文
摘要:概念理解 首先呢,要了解session和cookie的区别先要了解以下几个概念: 无状态的HTTP协议: 协议,是指计算机通信网络中两台计算机之间进行通信所必须共同遵守的规定或规则,超文本传输协议(HTTP)是一种通信协议,它允许将超文本标记语言(HTML)文档从Web服务器 传送到客户端的浏览器。
阅读全文
摘要:Session介绍: 在计算机中,尤其是在网络应用中,称为“会话控制”。Session 对象存储特定用户会话所需的属性及配置信息。这样,当用户在应用程序的 Web 页之间跳转时,存储在 Session 对象中的变量将不会丢失,而是在整个用户会话中一直存在下去。当用户请求来自应用程序的 Web 页时,
阅读全文
摘要:先看缓存中是否存在数据 data = redis.get(key) if data: # 存在 else: # 不存在 如果存在,则直接调用缓存数据,响应出去 return json.loads(data.decode()) 如果不存在,则查询数据库 # 查询数据库获取模型数据 user = ...
阅读全文
摘要:安装概要步骤: 官网下载系统-》刷入TF卡-》设置开启显示器和SSH-》通电-》进入系统 1. 进入官方网站下载系统镜像 下载页面:https://www.raspberrypi.org/downloads/ 来到下面这个页面 2.Windows系统下的安装: 2.1)首先将准备好的TF卡连接读卡器
阅读全文
摘要:在用flask框架写一个小demo时提示该错误,英文翻译大概是视图函数没有返回响应,查看视图函数,发现忘记在render_templates函数前面添加关键字return,导致视图无返回值
阅读全文
摘要:转发:只有一次请求和响应 render render(request, template_name[, context]) 结合一个给定的模板和一个给定的上下文字典,并返回一个渲染后的HttpResponse对象 request:该request用于生成response template_name:
阅读全文
摘要:1. 增加slave数据库的配置 DATABASES = { 'default': { # 写(主机) 'ENGINE': 'django.db.backends.mysql', # 数据库引擎 'HOST': '172.16.238.128', # 数据库主机 'PORT': 3306, # 数据
阅读全文
摘要:定义 QQ 登录模型类 1. 定义模型类基类 在内层 meiduo_mall 中 添加新的包 utils 在这个包中增加 BaseModel.py 文件. 在这个文件里, 添加如下的代码, 这里的代码主要作为别的模型类的基类来使用. 增加数据新建时间和更新时间: from django.db imp
阅读全文
摘要:当登录用户在浏览商品的详情页时,我们就可以把这件商品信息存储起来,作为登录用户的浏览记录。 用户未登录,我们不记录其商品浏览记录。 1. 存储数据说明 虽然浏览记录界面上要展示商品的一些SKU信息,但是我们在存储时没有必要存很多SKU信息。 我们选择存储SKU信息的唯一编号(sku_id)来表示该件
阅读全文
摘要:用户部分模块: 基本功能:用户注册,登录,密码的重置,第三方登录用户注册 1,图片验证码 流程分析: 1,前端生成uuid随机字符串 2,后端生成图片验证码发送给前端,将图形验证码的存入到redis中 2,短信验证码 1,检查图片的验证码 2,检验是否是在60s内是否已经发送过 3,生成短信验证码
阅读全文
摘要:第一步,创建一个空文件夹,我们命名为django,路径我们采用在home文件夹下 python@ubuntu:~$ mkdir django python@ubuntu:~$ cd django python@ubuntu:~/django$ pwd /home/python/django pyth
阅读全文
摘要:问题: 当我们部署完Nginx静态数据后,发现动态业务无法访问。 原因: Nginx服务器无法找到美多商城服务器。 解决: 部署美多商城服务器,并使用Nginx反向代理 部署服务器 1.准备生产环境配置文件 复制开发环境配置文件dev.py到生产环境配置文件prod.py,并做修改。 # SECUR
阅读全文
摘要:Nginx提供的负载均衡策略有两种: 内置策略:nginx自带的算法 雨露均沾型:轮训、加权轮训、哈希 定向服务型:ip_hash、least_conn、cookie、route、lean、 商业类型:ntlm、least_time、queue、stick 扩展策略:各种结合业务场景自定义的算法或者
阅读全文