拓展

相对导入和绝对导入

# 绝对导入---》绝对指的是 环境变量   sys.path 里面的路径,项目跟路径在pycharm自动加入环境变量
# 相对导入---->一个py文件中如果使用相对导入,这个文件不能以脚本运行

django国际化配置

# django 国际化---》配置文件改

# 国际化相关
LANGUAGE_CODE = 'zh-hans'
#时区:改成东八区
TIME_ZONE = 'Asia/Shanghai'
USE_I18N = True
USE_L10N = True
USE_TZ = False

models 的级联删除相关

    '''
     on_delete可以选择的请情况
        -models.CASCADE   级联删除
        -models.SET_NULL  关联字段置为空    null=True
        -models.SET_DEFAULT 关联字段设为默认值 default=0
        -models.DO_NOTHING     由于数据库有约束会报错,去掉外键关系(公司都不建立外键)
        -on_delete=models.SET(值,函数内存地址)  设置上某个值,或者运行某个函数
    '''

原生django,如何向响应头写数据

def test(request):
    obj=HttpResponse('ok')
    # obj=render()
    # obj=redirect('/index')
    # obj=JsonResponse()
    obj['xxx']='ooo'  #直接放
    return obj

序列化,host,断言,

1 # 浏览器输入地址 www.taobao.com----》dns(本地,网络)(host文件)查找 ip地址--》向这个地址的80端口发送请求(没写端口就是80)

2 序列化的时候,如果传了many=True,生成的序列化类对的对象是ListSerializer的对象


3 assert  断言   本质就是if+抛异常
a = 11
# if a!=10:
#     raise Exception('a必须是10,不然不能往后走')

assert a == 10, ('a必须是10,不然不能往后走')
print(a)

语言的不同点

# python 是动态强类型语言    
# go    是静态强类型语言
# java   是静态强类型语言---》隐士类型转换
# js     是动态弱类型语言	

# 动态:解释型语言
# 强弱指的是:数据类型强:不同类型之间不允许之间运算
# 弱类型:不同类型之间不需要转换可以之间运算

对称加密与非对称加密

# 加密:对称加密  非对称加密
	-加密和解密都使用同一个秘钥
    -加密用公钥,解密用私钥

装饰器

# 装饰器
	-函数装饰器
    	-装饰函数的
        -无参装饰器
        -有参装饰器    #指的是装饰器有参,无参,不是被装饰的函数
        
        -模板
        def auth(func):
            def inner(*args,**kwargs):
                # 逻辑
                res=func(*args,**kwargs)
                # 逻辑
                return res
           	return inner
        @auth   #add=auth(add)--->add=inner---->现在的add就是inner
        def add(a,b):
            return a+b
        
        add(1,2)---->inner(1,2)
        
    -类装饰器
    	-第一种:加在类中方法上的装饰器   
        -第二种:类作为装饰器        
        class Person:
        	def __init__(func):
                self.func=func
            def __call__(*args,**kwargs)
            	# 逻辑
                res=self.func(*args,**kwargs)
                # 逻辑
                return res
        @Person     # add=Person(add)---->add变成了Person的对象
        def add(a,b):
            return a+b
    	add(1,2)--->person(1,2)

cgi fastcig WSGI uwsgi uWSGI与接口幂等性,中间件

1 cgi fastcig WSGI uwsgi uWSGI  
	# cgi:通用网关接口(Common Gateway Interface/CGI)是一种重要的互联网技术,可以让一个客户端,从网页浏览器向执行在网络服务器上的程序请求数据。CGI描述了服务器和请求处理程序之间传输数据的一种标准。
     一句话总结: 一个标准,定义了客户端服务器之间如何传数据
    
    # fastcig:快速通用网关接口(Fast Common Gateway Interface/FastCGI)是一种让交互程序与Web服务器通信的协议。FastCGI是早期通用网关接口(CGI)的增强版本
      一句话总结: CGI的升级版
      常用的fastcgi软件: 
            Apache HTTP Server (部分)
            Nginx(主流):nginx是一个符合fastcgi协议的软件,处于浏览器和web程序之间,主要做请求转发和负载均衡,也可以称之为服务器中间件
            Microsoft IIS
            
   # WSGI:Web服务器网关接口(Python Web Server Gateway Interface,缩写为WSGI)是为Python语言定义的Web服务器和Web应用程序或框架之间的一种简单而通用的接口。自从WSGI被开发出来以后,许多其它语言中也出现了类似接口
	一句话总结: 为Python定义的web服务器和web框架之间的接口标准
    wsgiref:性能很低,python实现的,djgno内置了,测试阶段用,上线不用
    uWSIG:性能高,c实现的
    gunicorn:python实现的
    
  # uWSGI: 符合wsgi协议的web服务器,上面标准的具体实现

  # uwsgi:uWSGI服务器,自有协议
    
    
2 接口幂等性
	-幂等性:多次操作的效果跟一次操作是一样的
    -多次调用接口,跟调用一次效果一样
    -哪些接口天然就是幂等性的?
    	-get
        -put
        -delete
	-post新增数据,不是接口幂等的,对不符合幂等性的接口,进行处理
    -如何解决:
    	-方式一:通过唯一字段解决,像注册接口,让用户名唯一
        -方式二:前端点击以后,按钮失效,只能点一次
        -方式三:(主流)token机制
        1、哪些接口存在幂等问题的,就必须在执行业务前,先去获取token,服务器会把token保存到redis中。
        2、然后调用业务接口请求时,把token携带过去,一般放在请求头部。
        3、服务器判断token是否存在redis中,存在表示第一次请求,然后删除token,继续执行业务。
        4、如果判断token不存在redis中,就表示是重复操作,直接返回重复标记给client,这样就保证了业务代码,不被重复执行


3 中间件
	-介于a和b之间的东西都称之为中间件
        -服务器中间件:nginx,apache
        -数据库中间件:介于应用程序和数据库之前的, MyCat
        -消息队列中间件:kafka,rabbitmq,Rocketmq
        
        

接口性能

# 接口性能指标
    # qps:Queries Per Second,每秒查询率,一台服务器每秒能够响应的查询次数
    # tps:Transactions Per Second,是每秒处理的事务数,包括一条消息入和一条消息出,加上一次用户数据库访问
    #并发量:
        系统同时处理的请求或事务数,可以直接理解为:系统同时处理的请求数量
        QPS = 并发量 / 平均响应时间
        并发量 = QPS * 平均响应时间
        例如当前系统QPS为1w,每个请求的响应时间都是2s,那么并发量就是2w    
    # PV
    PV(Page View):页面访问量,即页面浏览量或点击量,用户每次刷新即被计算一次。可以统计服务一天的访问日志得到。
    # UV
    UV(Unique Visitor):独立访客,统计1天内访问某站点的用户数。可以统计服务一天的访问日志并根据用户的唯一标识去重得到。
    # DAU(日活)
    DAU(Daily Active User),日活跃用户数量。常用于反映网站、app、网游的运营情况。
    DAU通常统计一日(统计日)之内,登录或使用了某个产品的用户数(去除重复登录的用户),与UV概念相似
    # MAU(月活)
    MAU(Month Active User):月活跃用户数量,指网站、app等去重后的月活跃用户数量
    
  
    
# 你写的接口,qps应该是多少?
	几十到一百多一点

    
    
# 解释型语言
	-python解释器
    -js 解释型语言----》浏览器中有---》只能运行在浏览器中
    -于是就有大神---》把谷歌浏览的v8引擎(js解释器),抠出来---》能够运行在操作系统之上+c写了底层库---》node js
    
    
    
# pycharm中装vue插件
	-setting---》plugins---》下载,重启
posted @ 2022-07-31 14:42  thrombus  阅读(68)  评论(0编辑  收藏  举报