自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 sqlserver 按时间戳查询天、周、月、年数据

SQLSERVER 时间日期函数,查询今天日期、昨天、一个星期、半年前的数据(时间戳类型)https://www.cnblogs.com/kelly1314/p/10808828.htmlhttps://www.cnblogs.com/ftian26977863/p/10265159.html

2021-07-21 16:18:21 870

原创 flask

目录1. 什么是Flask,有什么优点?2. Django和Flask有什么区别?3. Flask-WTF是什么,有什么特点?4. Flask脚本的常用方式是什么?5. 如何在Flask中访问会话?6. Flask是一个MVC模型吗?如果是,可以示例一下吗?7. 解释Python Flask中的数据库连接?9. 列举Http请求中常见的请求方式?10. 列举Http请求中的状态码?11. 列举Http请求中常见的请求头?12. 什么是wsgi?13. Flask框架依赖组件?14. Flask蓝图的作用?1

2020-07-14 18:07:48 470

原创 装饰器实现计算函数的运行时间

装饰器实现计算函数的运行时间何为装饰器装饰器其实就是一个函数,该函数有一个参数(函数类型),返回一个闭包在返回的闭包中调用传递进来的函数,然后在调用函数的前后就可以添加内容作用:当需要改变一个函数原有的功能时,但是不想/不能改变原来的函数,可以通过装饰器解决计算函数执行时间的装饰器import functoolsimport timedef run_time(fn): @functools.wraps(fn) def wrapper(*args, **kw):

2020-06-18 18:19:16 1005

原创 五种IO模型

五种IO模型在网络环境下,通俗的讲,将IO分为两步:1.等;2.数据搬迁。如果要想提高IO效率,需要将等的时间降低。五种IO模型包括:阻塞IO、非阻塞IO、信号驱动IO、IO多路转接、异步IO。其中,前四个被称为同步IO。在介绍五种IO模型时,我会举生活中钓鱼的例子,加深理解。1.阻塞IO(blocking I/O)A拿着一支鱼竿在河边钓鱼,并且一直在鱼竿前等,在等的时候不做其他的事情,十分专心。只有鱼上钩的时,才结束掉等的动作,把鱼钓上来。在内核将数据准备好之前,系统调用会一直等待所有的

2020-06-18 18:18:35 187

原创 根据访问量的QPS如何来计算?根据系统的配置如何来得到自己的QPS?

原理:每天80%的访问集中在20%的时间里,这20%时间叫做峰值时间。公式:( 总PV数 * 80% ) / ( 每天秒数 * 20% ) = 峰值时间每秒请求数(QPS) 。机器:峰值时间每秒QPS / 单台机器的QPS = 需要的机器 。每天300w PV 的在单台机器上,这台机器需要多少QPS?( 3000000 * 0.8 ) / (86400 * 0.2 ) = 139 (QPS)。一般需要达到139QPS,因为是峰值。...

2020-06-16 17:35:48 724

原创 Redis内存满了的几种解决方法(内存淘汰策略与Redis集群)

1,增加内存;2,使用内存淘汰策略。3,Redis集群。`重点介绍下23;第2点:我们知道,redis设置配置文件的maxmemory参数,可以控制其最大可用内存大小(字节)。那么当所需内存,超过maxmemory怎么办?这个时候就该配置文件中的maxmemory-policy出场了。其默认值是noeviction。下面我将列出当可用内存不足时,删除redis键具有的淘汰规则。规则名称规则说明volatile-lru使用LRU算法删除一个键(只对设置了生存时间的键

2020-06-15 17:06:35 306 1

转载 Python常见的数据类型的底层实现

数据类型决定数据在内存中所占用空间大小一体式结构与分离式结构的区别:如果增加元素超过了列表的最大存储量时,则需要新建一个数据区一体式结构若想更换数据区,则要整体更改分离式结构则只需要更改表信息区中的数据区链接地址即可,顺序表对象不变list的基本实现技术Python标准类型list就是一种元素个数可变的线性表,可以加入和删除元素,并在各种操作中维持已有元素的顺序(即保序),而且还具有以下行为特征:基于下标(位置)的高效元素访问和更新,时间复杂度应该是O(1);采用顺序表技术,表中

2020-06-09 18:51:52 400

原创 Python 判断链表是否有环

问题描述给定一个链表,如何判断该链表是否成环?解题思路首先,一听到这个问题,脑子一下子映出下面这幅链表成环的图:快慢指针为啥在有环的链表中为啥一定会相遇因为快慢指针的差距不管有多少 他们速度不同在环形结构上会逐渐缩小一步直到相遇代码实现class ListNode: def __init__(self, val): self.val = val self.next = None# 借助辅助空间# class Solution:#

2020-06-09 18:44:07 529

原创 Redis 5大数据类型 详解

redis中所有数据结构都以唯一的key字符串作为名称,然后通过这个唯一的key来获取对应的value不同的数据类型数据结构差异就在于value的结构不一样1. 字符串(string)value的数据结构(数组)字符串value数据结构类似于数组,采用与分配容易空间来减少内存频繁分配当字符串长度小于1M时,扩容就是加倍现有空间如果字符串长度超过1M时,扩容时最多扩容1M空间,字符串最大长度为 512M字符串的使用场景(缓存)字符串一个常见的用途是缓存用户信息,.

2020-06-09 18:25:32 168

原创 Python常用排序算法

目录:冒泡排序选择排序插入排序快速排序堆排序归并排序冒泡排序它重复地走访过要排序的元素列,依次比较两个相邻的元素,如果顺序(如从大到小、首字母从从Z到A)错误就把他们交换过来。走访元素的工作是重复地进行直到没有相邻元素需要交换,也就是说该元素列已经排序完成。这个算法的名字由来是因为越小的元素会经由交换慢慢“浮”到数列的顶端(升序或降序排列),就如同碳酸饮料中二氧化碳的气泡最终会上浮到顶端一样,故名“冒泡排序”。原理:比较两个相邻的元素,将值大的元素交换到右边思路:依次比较相邻的两个数,将比较小的

2020-06-09 18:09:30 296

原创 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-06-02 19:16:44 270

原创 Django——中间件

中间件Django中的中间件是一个轻量级、底层的插件系统,可以介入Django的请求和响应处理过程,修改Django的输入或输出。中间件的设计为开发者提供了一种无侵入式的开发方式,增强了Django框架的健壮性。我们可以使用中间件,在Django处理视图的不同阶段对输入或输出进行干预。中间件的定义方法定义一个中间件工厂函数,然后返回一个可以别调用的中间件。中间件工厂函数需要接收一个可以调用的get_response对象。返回的中间件也是一个可以被调用的对象,并且像视图一样需要接收一个reques

2020-06-02 18:42:56 93

原创 Django 实现 Websocket 广播、点对点发送消息

1.Django实现Websocket使用Django来实现Websocket服务的方法很多在这里我们推荐技术最新的Channels库来实现1.1.安装DjangoChannelsChannels安装如果你是Windows操作系统的话,那么必要条件就是Python3.7pip install channels1.2.配置DjangoChannels1.创建项目ChannelsReadydjango-admin startprobject ChannelsReady2.在项目的settin

2020-06-02 18:30:45 1105 2

原创 vue+django——webshell的实现

Webshell“web”的含义是显然需要服务器开放web服务,“shell”的含义是取得对服务器某种程度上操作权限。webshell常常被称为通过网站端口对网站服务器的某种程度上操作的权限。一方面,webshell被站长常常用于网站管理、服务器管理等等,根据FSO权限的不同,作用有在线编辑网页脚本、上传下载文件、查看数据库、执行任意程序命令等。另一方面,被入侵者利用,从而达到控制网站服务器的目的。这些网页脚本常称为WEB脚本木马,比较流行的asp或php木马,也有基于.NET的脚本木马与JSP脚本木

2020-06-02 18:22:53 1170

原创 前端Vue上传图片到七牛云&后端Django上传图片到七牛云

前言在开发项目的时候,经常会用到上传图片的功能,如果把图片全都存放在项目路径下,会导致项目越来越臃肿,因此可以考虑把图片上传交给第三方处理,此处采用七牛云进行图片存储。经过测试,通过七牛云获取图片确实比直接通过自己的服务器获取的速度要快得多,赶快去注册七牛云吧。上传方式上传图片的方式有两种:通过服务器:将文件传到服务端,由服务端上传到七牛云通过前端JS:将文件直接从JS上传到七牛云。两种方式都可以完成上传,但是前者还需占用服务端的带宽来上传文件,然后再由服务端上传;而后者仅占用客户端的资

2020-06-01 19:11:32 675 2

原创 什么是FastDFS

FastDFS是一个开源的轻量级分布式文件系统。它解决了大数据量存储和负载均衡等问题。特别适合以中小文件(建议范围:4KB < file_size <500MB)为载体的在线服务,如相册网站、视频网站等等。在UC基于FastDFS开发向用户提供了:网盘,社区,广告和应用下载等业务的存储服务。FastDFS是一款开源的轻量级分布式文件系统纯C实现,支持Linux、FreeBSD等UNIX系统类google FS,不是通用的文件系统,只能通过专有API访问,目前提供了C、Java和PHP API为

2020-06-01 16:52:06 354

原创 什么是Oauth2.0,Oauth2.0的四种授权模式

Oauth2.0本身:Oauth2.0是一种授权协议,当然也归属为安全协议的范畴,在实际执行的时候就是保护互联网中不断增长的大量WEB API的安全访问。OAuth2.0共包含四种角色,分别是资源所有者、第三方应用(也称为客户端client)、授权服务器和资源服务器。如下图所示,某公司A开发了一个微信小程序(第三方应用)可以帮助我(资源所有者)美化微信服务器(资源服务器)上面的头像,我在用这个微信小程序开发的美化头像功能的时候,首先要给微信小程序授权(授权服务器),这个微信小程序才能访问我的头像,实际上访

2020-06-01 16:23:15 1826

原创 为什么要使用celery,以及broker的选择标准

celery是什么?​ Celery是基于Python开发的一个分布式任务队列框架,支持使用任务队列的方式在分布的机器/进程/线程上执行任务调度celery的使用场景?有延时需要网络IO的,并且不关心返回结果的数据。例如:你想对100台机器执行一条批量命令,可能会花很长时间 ,但你不想让你的程序等着结果返回,而是给你返回 一个任务ID,你过一段时间只需要拿着这个任务id就可以拿到任务执行结果, 在任务执行ing进行时,你可以继续做其它的事情定时任务(django-crontable)celer

2020-06-01 12:38:32 1768

原创 单点登录

什么是单点登陆?单点登录(Single Sign On),简称为 SSO。SSO的定义是在多个应用系统中,用户只需要登录一次就可以访问所有相互信任的应用系统。单点登陆如何解决?redis作为缓存储存session信息(cookie/session)JWT来解决单点登陆基于cookie和session的单点登陆解决传统的session认证    我们知道,http协议本身是一种无状态的协议,而这就意味着如果用户向我们的应用提供了用户名和密码来进行用户认证,那么下一次请求时,用户还要再一次进行

2020-06-01 11:51:44 138

原创 HTTP与HTTPS的区别

超文本传输协议HTTP协议被用于在Web浏览器和网站服务器之间传递信息,HTTP协议以明文方式发送内容,不提供任何方式的数据加密,如果攻击者截取了Web浏览器和网站服务器之间的传输报文,就可以直接读懂其中的信息,因此,HTTP协议不适合传输一些敏感信息,比如:信用卡号、密码等支付信息。为了解决HTTP协议的这一缺陷,需要使用另一种协议:安全套接字层超文本传输协议HTTPS,为了数据传输的安全,HTTPS在HTTP的基础上加入了SSL协议,SSL依靠证书来验证服务器的身份,并为浏览器和服务器之间的通信加密。

2020-06-01 11:23:50 99

原创 vue cli3 项目打包

新建 vue.config.js 文件// 在这里配置module.exports = { // 基本路径 publicPath:"./", // 输出文件目录 outputDir: 'dist', // webpack-dev-server 相关配置 devServer: { // port: 8888, // ... },}在 router.js 里//把mode写成hash模式mode: 'hash'

2020-05-31 19:13:07 261

原创 Python基本数据结构

目录栈队列链表单向链表双向链表单向链表的反转数组字典实现原理 NSDictionary哈希表哈希函数树二叉树、满二叉树、完全二叉树hash树B-tree/B+tree什么是数据结构简单来说,数据结果就是设计数据以何种方式 存储在计算机中如:列表,集合,与字典等都是一种数据结构程序 = 数据结构 + 算法数据结构与数据类型数据类型说明:数据类型是一个值的 (集合和定义)在此集合上的一组操作(通常是增删改查或者操作读写的方法)的总称数据类型:int、str、boolean、byte

2020-05-31 18:10:07 446

原创 线性表 —— (顺序表、链表)

存储类别顺序存储结构单链表存储分配方式用一段连续的存储单元依次存储线性表的数据元素采用链式存储结构,用一组任意的存储单元存放线性表的元素时间性能查找O(1)、插入和删除O(n)查找O(n)、插入和删除O(1)空间性能需要预分配存储空间,分大了浪费,小了容易发生上溢不需要分配存储空间,只要有就可以分配,元素个数不受限制由图可以得知,顺序表 和 链表都是线性表。线性表:线性表是最简单也是最常用的一种数据结构。英文字母表(A、B、…、Z)是一个线性表,表中...

2020-05-31 16:56:09 175

原创 Python知识点——TCP和UDP的区别

相同点UDP协议和TCP协议都是传输层协议。TCP(Transmission Control Protocol,传输控制协议)提供的是面向连接,可靠的字节流服务。即客户和服务器交换数据前,必须现在双方之间建立一个TCP连接,之后才能传输数据。并且提供超时重发,丢弃重复数据,检验数据,流量控制等功能,保证数据能从一端传到另一端。UDP(User Data Protocol,用户数据报协议)是一个简单的面向数据报的运输层协议。它不提供可靠性,只是把应用程序传给IP层的数据报发送出去,但是不能保证它们能到达

2020-05-31 16:42:59 353

原创 Python知识点——正则表达式

目录1. 正则表达式基础1.1 简单介绍1.2. 数量词的贪婪模式与非贪婪模式1.3. 反斜杠的困扰1.4. 匹配模式2. re模块2.1. 开始使用re2.2. Match2.3. Pattern1. 正则表达式基础1.1 简单介绍正则表达式并不是Python的一部分。正则表达式是用于处理字符串的强大工具,拥有自己独特的语法以及一个独立的处理引擎,效率上可能不如str自带的方法,但功能十分强大。得益于这一点,在提供了正则表达式的语言里,正则表达式的语法都是一样的,区别只在于不同的编程语言实现支持的语

2020-05-31 16:10:36 204

原创 Python知识点——文件的相关操作

python文件的相关操作写入操作-writef = open('test.txt','w') # w是写的权限f.write('test...') # write写入f.close()# 运行结果# 在你当前目录创建一个test.txt文件里面的内容就是test... test...读取数据-readf = open('老婆美美哒.txt','r') # r是读的权限conition = f.read() # read读取 print(conition)

2020-05-31 15:44:50 257

原创 Python基础知识点——高阶函数

高阶函数1、 lambda基本使用lambda只是一个表达式,函数体比def简单很多。lambda的主体是一个表达式,而不是一个代码块。仅仅能在lambda表达式中封装有限的逻辑进去。lambda表达式是起到一个函数速写的作用。允许在代码内嵌入一个函数的定义。格式:lambda的一般形式是关键字lambda后面跟一个或多个参数,紧跟一个冒号,之后是一个表达式。f = lambda x,y,z:x+y+zprint(f(1,2,3)) # 6my_l

2020-05-31 15:16:18 192

原创 Python基础知识点——上下文管理

上下文管理1、什么是with语句with是一种上下文管理协议,目的在于从流程图中把 try,except 和finally关键字和资源分配释放相关代码统统去掉,简化try….except….finlally的处理流程。所以使用with处理的对象必须有enter()和exit()这两个方法  1. with通过enter方法初始化(enter方法在语句体执行之前进入运行)  2. 然后在exit中做善后以及处理异常(exit()方法在语句体执行完毕退出后运行)2、with语句使用场景wi

2020-05-31 14:54:44 156

原创 Python基础知识点——垃圾回收机制

python垃圾回收机制1. 引用计数:当一个对象的引用被创建或者复制时,对象的引用计数加1;当一个对象的引用被销毁时,对象的引用计数减1.当对象的引用计数减少为0时,就意味着对象已经再没有被使用了,可以将其内存释放掉。2. 标记-清除:它分为两个阶段:第一阶段是标记阶段,GC会把所有的活动对象打上标记,第二阶段是把那些没有标记的对象非活动对象进行回收。对象之间通过引用(指针)连在一起,构成一个有向图从根对象(rootobject)出发,沿着有向边遍历对象,可达的(reachable

2020-05-31 14:47:46 162

原创 Python基础知识点——深拷贝、浅拷贝

预备知识一——python的变量及其存储python的一切变量都是对象,变量的存储,采用了引用语义的方式,存储的只是一个变量的值所在的内存地址,而不是这个变量的只本身不管多么复杂的数据结构,浅拷贝都只会copy一层。 理解:两个人公用一张桌子,只要桌子不变,桌子上的菜发生了变化两个人是共同感受的。copy模块用于对象的拷贝操作。该模块只提供了两个主要的方法:copy.copy与copy.deepcopy,分别表示浅拷贝与深拷贝浅copy与deepcopy浅拷贝: 不管是多么复杂的数据结构,

2020-05-31 14:41:54 99

原创 Python基础知识点——面向对象

目录面向对象1. 方法2. 特性3. 属性4. 反射: hasattr、getattr、setattr 和 delattr面向对象简介:面向对象编程(Object Oriented Programming-OOP) 是一种解决软件复用的设计和编程方法。 这种方法把软件系统中相近相似的操作逻辑和操作 应用数据、状态,以类的型式描述出来,以对象实例的形式在软件系统中复用,以达到提高软件开发效率的作用。其实面向对象也很简单,却也很难,熟能生巧。你需要了解类和对象,要学会定义类,创建对象。特点:类(C

2020-05-31 14:34:51 295

原创 Python基础知识点——装饰器、生成器、迭代器

目录1. 装饰器2.迭代器3.生成器1. 装饰器介绍:装饰器(Decorators)是 Python 的一个重要部分。简单地说:他们是修改其他函数的功能的函数。他们有助于让我们的代码更简短,也更Pythonic(Python范儿)。装饰器的概念:装饰器实际上就是一个函数有2个特别之处,参数是一个函数。返回值是一个参数装饰器的简单理解:实际上就是为了给一个程序添加功能,但是该程序已经上线或者已被使用, 那么就不能大批量的修改源码,这样不现实,因此就产生了装饰器。注意点:不能修

2020-05-29 15:20:31 356

原创 Python基础知识点——进程、线程、协程

目录:1. 进程2. 线程3. 协程1. 进程进程的定义进程是资源分配最小单位一个运行起来的程序就是一个进程什么是程序(程序是我们存储在硬盘里的代码、文件)当我们双击图标,打开程序的时候,实际上就是通过I/O操作(读写)内存条里面内存条就是我们所指的资源进程之间内存独立,不能相互访问进程定义拓展内容:程序并不能单独运行,只有将程序装载到内存中,系统为它分配资源才能运行,这种执行的程序就称之为进程程序和进程的区别就在于:程序是指令的集合,它是进程运行的静态描述文本;进程是程序的一次

2020-05-29 12:46:28 232

原创 vue 使用高德地图JSAPI——轨迹巡航

使用vue-amap1、使用npm 安装vue-amapnpm install vue-amap --save2、在main.js中引入vue-amapimport VueAMap from 'vue-amap' Vue.use(VueAMap) VueAMap.initAMapApiLoader({ key: '高德地图申请的key', plugin: [//高德地图扩展插件(按需添加) 'AMap.Autocomplete', // 输入提示插件 'AMap.

2020-05-28 13:20:51 2190 2

原创 vue中使用echarts绘制折线图

1. 安装:npm install echarts --save2. 页面中使用2.1 引入:import echarts from ‘echarts’2.2 定义具备高宽的 DOM 容器。<div id="chartLineBox" style="width: 90%;height: 70vh;"> </div>2.3 echarts.init 方法初始化一个 echarts 实例并通过 setOption 方法生成一个简单的折线图注意:这里只是在mou

2020-05-28 13:15:57 588

原创 vue+Django实现excel文件下载

vue端<template> <div id="home"> <a :href="'http://localhost:8000/download/?way_id=' + id"> 下载记录</a></div></template><script> export default { name: 'home', data() { r

2020-05-28 13:08:14 874

原创 Django——实现根据时间间隔自动生成温度

直接上代码# 记录间隔import datetimeimport randomimport timegap = 5 # 单位分temp_list = []# 声明当前时间time_start = datetime.datetime.now()print(time_start)# 间隔时间time.sleep(10)# 声明结束时间time_end = datetime.datetime.now()print(time_end)# 计算时间间隔gap_time = ((ti

2020-05-25 22:06:16 352

原创 通过 经纬度 获取 地理位置(Python、高德地图)

通过经纬度获取高德地图地理位置的思路1. 在网址https://lbs.amap.com/dev/申请一个Web服务开发的Key,如下图所示:下面直接上代码import requestsdef geocode(location): # 参数内容 可以写成字典的格式 parameters = {'output': 'json', 'key': '74be80caf932ea23afdaff4cf43929e5', 'location': location,

2020-05-25 21:54:21 2535 2

原创 Django设置允许跨域访问

安装django-cors-headerspip install django-cors-headers修改settings.pyINSTALLED_APPS = [ ...... 'corsheaders', ......]MIDDLEWARE = [ ...... 'corsheaders.middleware.CorsMiddleware', 'django.middleware.common.CommonMiddleware',.

2020-05-23 13:35:14 114

原创 权限控制模型之RBAC

一、RBAC是什么1、RBAC模型概述RBAC模型(Role-Based Access Control:基于角色的访问控制)模型是20世纪90年代研究出来的一种新模型,但其实在20世纪70年代的多用户计算时期,这种思想就已经被提出来,直到20世纪90年代中后期,RBAC才在研究团体中得到一些重视,并先后提出了许多类型的RBAC模型。其中以美国George Mason大学信息安全技术实验室(LIST)提出的RBAC96模型最具有代表,并得到了普遍的公认。RBAC认为权限授权的过程可以抽象地概括为:Who

2020-05-23 13:30:42 1239

空空如也

空空如也

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

TA关注的人

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