框架的核心: Flask只提供路由和视图(路由和视图也是依赖第三方)
重量级框架: Django
额外的功能: 模型类,后台管理
优点:开发速度快,比如像官网一类长时间不变的网站可以用Django开发
缺点:像业务复杂,需求变化快,用Django不合适
轻量级框架: Flask
通过扩展来实现Django的功能
优点:可以根据开发者的能力,也可以提高开发能力
缺点:开发速度可能没有Django快
Jinja2 模板引擎和 Werkzeug WSGI 工具集 管视图
IP 标记网络设备
端口:标记进程
进程号
DNS:把域名解析成IP
浏览器--DNS解析--TCP三次挥手
wsgi: web服务器和框架的桥梁
uwsgi: web服务器和框架之间数据协议
uWSGI:实现了uwsgi协议的web服务器
nginx: Nginx 就是性能非常好的反向代理服务器,它可以用来做负载均衡。
Nginx是一款轻量级的Web 服务器/反向代理服务器及电子邮件(IMAP/POP3)代理服务器,在BSD-like 协议下发行。其特点是占有内存少,并发能力强,事实上nginx的并发能力确实在同类型的网页服务器中表现较好,中国大陆使用nginx网站用户有:百度、京东、新浪、网易、腾讯、淘宝等。
动静分离
负载均衡:这里提到的客户端发送的、Nginx反向代理服务器接收到的请求数量,就是我们说的负载量。
请求数量按照一定的规则进行分发到不同的服务器处理的规则,就是一种均衡规则。
所以~将服务器接收到的请求按照规则分发的过程,称为负载均衡。
正向代理和反向代理
正向代理:指它隐藏了真实的请求客户端,服务端不知道真实的客户端是谁,客户端请求的服务都被代理服务器代替来请求,
反向代理:反向代理隐藏了真实的服务端,当我们访问 www.baidu.com 的时候,就像拨打 10086 一样,背后可能有成千上万台服务器为我们服务,但具体是哪一台,你不知道,也不需要知道,你只需要知道反向代理服务器是谁就好了,www.baidu.com 就是我们的反向代理服务器,反向代理服务器会帮我们把请求转发到提供真实计算的服务器那里去。Nginx 就是性能非常好的反向代理服务器,它可以用来做负载均衡。
HTTP协议:
应用层
概念:超文本传输协议,是一个基于请求与响应,无状态的,应用层的协议,常基于TCP/IP协议传输数据,互联网上应用最为广泛的一种网络协议,所有的WWW文件都必须遵守这个标准。设计HTTP的初衷是为了提供一种发布和接收HTML页面的方法。
HTTP特点:
无状态:协议对客户端没有状态存储,对事物处理没有“记忆”能力,比如访问一个网站需要反复进行登录操作
无连接:HTTP/1.1之前,由于无状态特点,每次请求需要通过TCP三次握手四次挥手,和服务器重新建立连接。比如某个客户机在短时间多次请求同一个资源,服务器并不能区别是否已经响应过用户的请求,所以每次需要重新响应请求,需要耗费不必要的时间和流量。
基于请求和响应:基本的特性,由客户端发起请求,服务端响应
简单快速、灵活
通信使用明文、请求和响应不会对通信方进行确认、无法保护数据的完整性
请求头:User-Agent Cookie Refeter
响应头
状态码
请求方式:GET POST
HTTPS:基于HTTP协议,通过SSL或TLS提供加密处理数据、验证对方身份以及数据完整性保护
传输层
通过抓包可以看到数据不是明文传输,而且HTTPS有如下特点:
内容加密:采用混合加密技术,中间者无法直接查看明文内容
验证身份:通过证书认证客户端访问的是自己的服务器
保护数据完整性:防止传输的内容被中间人冒充或者篡改
解决错误的方法:
1:大概知道错误什么意思
2:定位行数
3:上下文 上一步操作
排除法,print,假设法,调试
经典类时 多继承时候 会深度查找
新式 多继承时候 会广度查找
父类或者以上有object 就是新式类 否则是经典类
新式类 类内 属性 super().__init__
经典类 类内 属性 类名.__init__
经典 类外 类.方法(对象)
新式类 super(子类,对象)
可以下载PostMan 实现http请求
路由:一个视图可以对应多个路由,重定向用redirect和url_for 注意写到是函数名,如果想支持请求方法加参数methods