python
文章平均质量分 92
lql_小白
这个作者很懒,什么都没留下…
展开
-
vue+django下载文档
vue+Django实现excel文件下载vue端<template> <div id="home"> <a :href="'http://localhost:8000/download/?way_id=' + id"> 下载记录</div></template><script> export default { name: 'home', data() {原创 2020-05-28 11:00:11 · 605 阅读 · 0 评论 -
python datetime模块 时间格式转str-------str转时间格式
温馨小知识import datetime# str转时间格式:time= '2020-03-27 11:00:00'time= datetime.datetime.strptime(time, "%Y-%m-%d %H:%M:%S") # 加"-" 要看上方的字符串里拼接的是什么字符 print(time,type(time))# 时间格式转str:new_time= time.strftime("%Y-%m-%d %H:%M:%S")print(new_time,type(原创 2020-05-25 22:54:02 · 494 阅读 · 0 评论 -
django设置读写分离
django设置读写分离配置Django实现数据库读写分离django在进行数据库操作的时候,读取数据与写数据(增、删、改)可以分别从不同的数据库进行操作。1. 在配置文件中增加slave数据库的配置DATABASES = { 'default': { 'ENGINE': 'django.db.backends.mysql', 'HOST': '10.211.55.5', 'PORT': 3306, 'USER': 'meidu原创 2020-05-14 10:37:08 · 209 阅读 · 0 评论 -
mysql-orm模糊匹配
字段名__contains(分大小写的) 或 字段名__icontains(不分大小写)#商品检索接口class GoodsSearch(APIView): def get(self,request): #接受参数 word = request.GET.get('word',None) #模拟 模糊查询 name__contains分大小写的 name__icontains不分大小写 #Q的使用 | 或原创 2020-05-14 10:36:46 · 234 阅读 · 0 评论 -
装饰器-迭代器-生成器
迭代器迭代器定义1.迭代器是访问集合内元素的一种方式,迭代器对象从集合的第一个元素对象开始访问,知道所有元素都被访问结束。2.迭代器只能往前,前不能后退迭代器作用迭代器是用来帮助我们记录每次迭代访问的位置,当我们使用next()函数的时候,迭代器会向我们返回她所记录位置的下一个位置的元素next()和iter()next()函数调用的就是迭代器对象的__next__方法iter()函数调用的就是可迭代对象的__iter__方法(iter()函数在往细说就是 iter()函数调用了可迭代对象原创 2020-05-14 10:27:14 · 407 阅读 · 0 评论 -
django定义CBV装饰器
django自定义CBV装饰器#utils 工具包from django.utils.decorators import method_decorator#定义CBV装饰器def my_decorators(func): def wrapper(request,*args,**kwargs): #解码 uid = request.GET.get('uid') print(uid) res_jwt = request.GET.g原创 2020-05-12 16:43:45 · 131 阅读 · 0 评论 -
Python3.7+Django2.0.4配合Mongodb = 高性能高扩展标签云存储方案
Python3.7+Django2.0.4配合Mongodb = 高性能高扩展标签云存储方案本次主要讨论下标签分词切出来之后,如何进行存储。假设我们目前文章-标签体系的需求是这样:每篇文章都具有唯一的标题、描述以及 URL。每篇文章都具有一个或多个标签。每篇文章都具有作者的名称,以及喜欢每篇文章都有用户的评论,用户名、消息、日期时间以及评论的喜欢度。每篇文章都可以有 0 个或多个评论。那么如果使用关系型数据库来设计,比较简单的设计方案可以是这样:可以注意到,标签和文章的对应关系还是简单的一原创 2020-05-12 16:40:59 · 184 阅读 · 0 评论 -
八大排序算法---冒泡-选择--快排
冒泡排序冒泡排序:它重复地走访过要排序的数列,一次比较两个元素,如果他们的顺序错误就把他们交换过来。走访数列的工作是重复地进行直到没有再需要交换,也就是说该数列已经排序完成时间复杂度:O(n²)空间复杂度:O(1)稳定性:稳定def bubble_sort(blist): count = len(blist) for i in range(0, count): for j in range(i + 1, count): if blist[i]原创 2020-05-12 16:39:27 · 162 阅读 · 0 评论 -
八大查找算法-----折半查找
折半查找二分查找(Binary Search),是一种在有序数组中查找某一特定元素的查找算法。查找过程从数组的中间元素开始,如果中间元素正好是要查找的元素,则查找过程结束;如果某一特定元素大于或者小于中间元素,则在数组大于或小于中间元素的那一半中查找,而且跟开始一样从中间元素开始比较。如果在某一步骤数组为空,则代表找不到。 这种查找算法每一次比较都使查找范围缩小一半。算法描述 给予一个包含 个带值元素的数组A 1、 令 L为0 , R为 n-1 2、 如果L>R,则搜索以失败告终 3、 令 m (原创 2020-05-12 16:38:38 · 546 阅读 · 0 评论 -
高阶函数介绍---使用
1、map一般情况map()函数接收两个参数,一个函数(该函数接收一个参数),一个序列,将传入的函数依次作用到序列的每个元素,并返回一个新的Iterator(迭代器)。 例如有这样一个list:[‘pYthon’, ‘jaVa’, ‘kOtlin’],现在要把list中每个元素首字母改为大写,其它的改为小写,可以这样操作:def f(s): return s.title()l = map(f, ['pYthon', 'jaVa', 'kOtlin'])list(l)['Python',原创 2020-05-12 16:37:49 · 276 阅读 · 0 评论 -
Websocket介绍+广播、点对点发送消息原理--简单例子
Websocket 即使通讯1.websocket介绍WebSocket protocol 是HTML5一种新的协议。它实现了浏览器与服务器全双工通信(full-duplex)。一开始的握手需要借助HTTP请求完成。2.目的即时通讯,代替轮询网站上的即时通讯是很常见的,比如网页的QQ,聊天系统等。按照以往的技术能力通常是采用轮询、Comet技术解决。两种连接例子1.短链接型基于HTTP短连接如何保障数据的即时性HTTP的特性就是无状态的短连接,即一次请求一次响应断开连接失忆,这样服务端就原创 2020-05-12 16:31:48 · 2885 阅读 · 2 评论 -
django自定义验证码-简单例子
django自定义验证码(中文数字英文)#导入图片库#绘画库from PIL import ImageDraw#字体库from PIL import ImageFont#图片库from PIL import Image#随机库import random#文件流import io#定义验证码类class MyCode(View): ''' #生成随机汉字 def GBK2312(self): #gbk2312对字符的编码采用俩个字原创 2020-05-12 16:23:18 · 157 阅读 · 0 评论 -
推荐算法的介绍+简单例子
推荐算法介绍推荐算法: 推荐算法是计算机专业中的一种算法,通过一些数学算法,推测出用户可能喜欢的东西,目前应用推荐算法比较好的地方主要是网络,其中淘宝做的比较好。发展背景: 推荐算法的研究起源于20世纪90年代,由美国明尼苏达大学 GroupLens研究小组最先开始研究,他们想要制作一个名为 Movielens的电影推荐系统,从而实现对用户进行电影的个性化推荐。首先研究小组让用户对自己看过的电影进行评分,然后小组对用户评价的结果进行分析,并预测出用户对并未看过的电影的兴趣度,从而向他们推荐从原创 2020-05-12 16:21:23 · 5341 阅读 · 0 评论 -
实现无限级评论的简单例子
无限级评论[{},{},{},{},{}][{ “child”: {“child”:[ {} , {} ] } }, {id:5, child:[{ child:[{}],{}] } ]django将数据封装为树结构def change_comments(data): list = [] tree = {} root = '' p_id = '' for i in data: #将data循环,然后加入一个d原创 2020-05-12 16:20:21 · 621 阅读 · 0 评论 -
乐观锁与悲观锁使用场景及简单例子
乐观锁与悲观锁使用场景及简单例子定义1、乐观锁:顾名思义,对每次的数据操作都保持乐观的态度,不担心数据会被修改,所以不会对数据进行上锁。由于数据没有上锁,这就存在数据会被多人读写的情况。所以每次修改数据的时候需要对数据进行判断是否被修改过。2、悲观锁:与乐观锁相反,对每次的数据操作都保存悲观的态度,总是担心数据会被修改,所以在自己操作的时候会对数据上锁,防止在自己操作的时候被他人同时操作导致更新丢失。使用场景1、乐观锁:由于乐观锁的不上锁特性,所以在性能方面要比悲观锁好,比较适合用在DB的原创 2020-05-12 16:19:24 · 794 阅读 · 0 评论 -
阿里云短信服务
python + 阿里云短信服务登录阿里云并进入短信服务控制台点击国内消息 并申请签名 如下图2. 点击模板管理 ,并申请模板 (模板和签名必须一致)点击快速学习进入 ,如下图点击查看API Demo 进入 ,并点击右侧的Demo代码 如下图进行填写测试,如下图成功结果如下图成功则可以把右侧python Demo代码复制到python上使用(注意’’, ‘’)在个人设置立#随机验证码def my_random(): s1 = rando原创 2020-05-12 16:18:39 · 262 阅读 · 0 评论 -
token与session
token与session的区别一、session的状态保持及弊端当用户第一次通过浏览器使用用户名和密码访问服务器时,服务器会验证用户数据,验证成功后在服务器端写入session数据,向客户端浏览器返回sessionid,浏览器将sessionid保存在cookie中,当用户再次访问服务器时,会携带sessionid,服务器会拿着sessionid从服务器获取session数据,然后进行用户信息查询,查询到,就会将查询到的用户信息返回,从而实现状态保持。弊端:1、服务器压力增大通常session原创 2020-05-12 16:10:11 · 170 阅读 · 0 评论 -
redis分布式锁使用+简单例子
Redis分布式锁什么是分布式锁? 分布式锁是控制分布式系统之间同步访问共享资源的一种方式。什么实用分布式锁? 为了保证共享资源的数据一致性。什么场景下使用分布式锁? 数据重要且要保证一致性如何实现分布式锁? 主要介绍使用redis来实现分布式锁redis实现分布式锁redis事务redis事务介绍: 1.redis事务可以一次执行多个命令,本质是一组命令的集合。 2.一个事务中的所有命令都会序列化,按顺序串行化的执行而不会被其他命令插入 **作用:原创 2020-05-12 16:03:51 · 609 阅读 · 0 评论 -
Django+Uwsgi+Nginx的生产环境部署
**1、什么是WSGI(WSGI是一种*python专用的*web协议 和http类似):1. WSGI是一种规范,它定义了使用python编写的web app(django)与web server(uWSGI)之间接口格式,实现web app与web server间的解耦。2. WSGI 没有官方的实现, 因为WSGI更像一个协议. 只要遵照这些协议,WSGI应用(Application)都可以在任何服务器(Server)上运行3. **WSGI****实质:**WSGI是一种描述web服务器(如n原创 2020-05-12 16:02:29 · 127 阅读 · 0 评论 -
在阿里云Centos7.6上面配置Mysql主从数据库
在阿里云Centos7.6上面配置Mysql主从数据库(master/slave),实现读写分离mysql主从同步的原理很简单,从库生成两个线程,一个I/O线程,一个SQL线程;i/o线程去请求主库 的binlog(二进制日志),并将得到的binlog日志写到relay log(中继日志) 文件中;主库会生成一个 log dump 线程,用来给从库 i/o线程传binlog;SQL 线程,会读取relay log文件中的日志,并解析成具体操作,来实现主从的操作一致,而最终数据一致。[外链图片转存失败,原创 2020-05-12 09:34:02 · 225 阅读 · 0 评论 -
Mysql锁机制简单介绍
Mysql中的锁锁分类按操作划分:DML锁(增删改表中的数据),DDL锁(增删改表的结构)按锁的粒度划分:表级锁、行级锁、页级锁按锁级别划分:共享锁、排他锁按加锁方式划分:自动锁、显示锁按使用方式划分:乐观锁、悲观锁Mysql搜索引擎锁的支持MyISAM:表锁InnoDB:行锁、表锁BDB:页锁、表锁Mysql锁的概述及表,行,页等级锁为什么要用锁数据库锁定机制简单来说,就是数据库为了保证数据的一致性,而使各种共享资源在被并发原创 2020-05-12 09:33:02 · 108 阅读 · 0 评论 -
Mysql索引简单介绍
Mysql索引索引索引是表的目录,在查找内容之前可以先在目录中查找索引位置,以此快速定位查询数据。对于索引,会保存在额外的文件中。索引的种类普通索引:仅加速查询唯一索引:加速查询 + 列值唯一(可以有null)主键索引:加速查询 + 列值唯一 + 表中只有一个(不可以有null)组合索引:多列值组成一个索引,专门用于组合搜索,其效率大于索引合并全文索引:对文本的内容进行分词,进行搜索索引合并,使用多个单列索引组合搜索覆盖索引,select的数据列只用从索引中原创 2020-05-12 09:32:22 · 122 阅读 · 0 评论 -
mysql事务的一个简单介绍
Mysql事务基础概念事务(transaction)是 访问和更新数据库的程序执行单元,事务中可能包含 一个或多个sql语句,这些语句要么都执行,要么都不执行。作为一个关系行数据库,Mysql支持事务逻辑架构和存储引擎[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-z2vakpFm-1589247064544)(/blog/img/sw1.png)]图片来源:https://blog.csdn.net/fuzhongmin05/article/details/原创 2020-05-12 09:31:39 · 243 阅读 · 0 评论 -
django-orm模糊匹配的使用
字段名__contains(分大小写的) 或 字段名__icontains(不分大小写)#商品检索接口class GoodsSearch(APIView): def get(self,request): #接受参数 word = request.GET.get('word',None) #模拟 模糊查询 name__contains分大小写的 name__icontains不分大小写 #Q的使用 | 或原创 2020-05-12 09:30:47 · 770 阅读 · 0 评论 -
django图片上传以图片加水印
diango上传文件及去重#上传文件class UploadFile(APIView): def post(self,request): #接收参数 img = request.FILES.get("file") # 获取当前时间 times = timezone.now() # print(times) #定义MD5对象 md5 = hashlib.md5() #转码原创 2020-05-12 09:28:40 · 390 阅读 · 0 评论 -
DjangoQ,F简单介绍使用
Django Q/F1.1 Django Q()表达式当我们在查询的条件中需要组合条件时(例如两个条件“且”或者“或”)时。我们可以使用Q()查询对象from django.db.models import Qmodels.Author.objects.filter(Q(name="cox") | Q(name="Tom")) # 获取在Author表中,name等于cox和name等于cox的所有数据models.Author.objects.filter(Q(name="cox") &原创 2020-05-12 09:27:20 · 462 阅读 · 0 评论 -
django+sql+原生sql结果美化
django里原生sql查询书写#导入原生sql模块from django.db import connectionclass PathDetail_To_CourseAPI(View): # 展示 def get(self, request): #获取路径阶段id pd_id = request.GET.get('pd_id') #建立游标对象 cursor = connection.cursor() #执原创 2020-05-12 09:25:58 · 169 阅读 · 0 评论 -
django+rest_framework+jwt详解使用方法
django rest_frameworker jwt首先需要声明,rest_frameworker jwt 是基于django自带的认证系统来实现的(也就是说我们的用户表(user)直接继承django自带的AbstractUser表,在此基础上添加字段)rest_frameworker jwt token的生成from rest_framework_jwt.settings import api_settingsclass lll(APIView): def get(self原创 2020-05-12 09:24:07 · 2841 阅读 · 2 评论 -
centOS-RabbitMQ
centOS系统安装-RabbitMq前言消息通知机制是我们在日常业务开发总常常都会遇到;在微服务架构里,消息也是必不可少的,我们可以借助它异步实现很多业务,就拿我们日常的购物需求来说,在我们下单支付之后,我们就可以通过消息机制来异步处理很多的业务(给商家发送下单成功消息;给用户发送短信;通知发货或生成凭证;修改订单状态等等);此篇只介绍如何安装RabbitMq!!!消息机制-Rabbitmq作为消息通知中间件来说,Rabbitmq依靠它微秒级的时效、活跃的社区、万级的吞吐量等也得到了许多公司的原创 2020-05-12 09:21:49 · 118 阅读 · 0 评论 -
centOS7以上系统---配置RabbitMQ
centOS系统安装-RabbitMq前言消息通知机制是我们在日常业务开发总常常都会遇到;在微服务架构里,消息也是必不可少的,我们可以借助它异步实现很多业务,就拿我们日常的购物需求来说,在我们下单支付之后,我们就可以通过消息机制来异步处理很多的业务(给商家发送下单成功消息;给用户发送短信;通知发货或生成凭证;修改订单状态等等);此篇只介绍如何安装RabbitMq!!!消息机制-Rabbitmq作为消息通知中间件来说,Rabbitmq依靠它微秒级的时效、活跃的社区、万级的吞吐量等也得到了许多公司的原创 2020-05-12 09:17:06 · 151 阅读 · 0 评论 -
celery的介绍+使用
title: “Celery详解”date: 2020-04-25T15:51:16+08:00draft: truedescription: ‘celery的使用’author: “李齐良”Celery 简介 Celery是一个基于python开发的分布式异步消息任务队列,通过它可以请轻松的实现任务的异步处理,如果你的业务场景中需要用到异步任务,可以使用celeryCelery场景 首先对该任务非常耗时,其次不注重结果。 如:短信业务,邮箱业务等。 (注意:如扣费.原创 2020-05-11 21:49:21 · 265 阅读 · 0 评论