1 初心ya

尚未进行身份认证

我要认证

暂无相关简介

等级
TA的排名 16w+

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

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

2020-06-18 18:19:16

五种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

根据访问量的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

高并发(水平扩展,垂直扩展)

一、什么是高并发高并发(High Concurrency)是互联网分布式系统架构设计中必须考虑的因素之一,它通常是指,通过设计保证系统能够同时并行处理很多请求。高并发相关常用的一些指标有响应时间(Response Time),吞吐量(Throughput),每秒查询率QPS(Query Per Second),并发用户数等。响应时间:系统对请求做出响应的时间。例如系统处理一个HTTP请求需要200ms,这个200ms就是系统的响应时间。吞吐量:单位时间内处理的请求数量。QPS:每秒响应请求数。在互

2020-06-16 17:25:22

Nginx的正向代理和反向代理

nginx是一款自由的、开源的、高性能的HTTP服务器和反向代理服务器;同时也是一个IMAP、POP3、SMTP代理服务器;nginx可以作为一个HTTP服务器进行网站的发布处理,另外nginx可以作为反向代理进行负载均衡的实现。这里主要通过三个方面简单介绍nginx反向代理负载均衡1. 关于代理说到代理,首先我们要明确一个概念,所谓代理就是一个代表、一个渠道;此时就设计到两个角色,一个是被代理角色,一个是目标角色,被代理角色通过这个代理访问目标角色完成一些任务的过程称为代理操作过程;如同生

2020-06-16 17:02:47

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

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

2020-06-15 17:06:35

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

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

2020-06-09 18:51:52

Python 判断链表是否有环

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

2020-06-09 18:44:07

Redis 5大数据类型 详解

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

2020-06-09 18:25:32

Python常用排序算法

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

2020-06-09 18:09:30

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

Django——中间件

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

2020-06-02 18:42:56

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

vue+django——webshell的实现

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

2020-06-02 18:22:53

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

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

2020-06-01 19:11:32

什么是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

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

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

2020-06-01 16:23:15

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

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

2020-06-01 12:38:32

单点登录

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

2020-06-01 11:51:44

HTTP与HTTPS的区别

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

2020-06-01 11:23:50

查看更多

勋章 我的勋章
  • 签到新秀
    签到新秀
    累计签到获取,不积跬步,无以至千里,继续坚持!
  • 持之以恒
    持之以恒
    授予每个自然月内发布4篇或4篇以上原创或翻译IT博文的用户。不积跬步无以至千里,不积小流无以成江海,程序人生的精彩需要坚持不懈地积累!
  • 勤写标兵Lv4
    勤写标兵Lv4
    授予每个自然周发布9篇以上(包括9篇)原创IT博文的用户。本勋章将于次周周三上午根据用户上周的博文发布情况由系统自动颁发。