一些术语
HTTP概况
超文本传输协议,是一个基于请求与响应,无状态的,应用层的协议,常基于TCP/IP协议传输数据,互联网上应用最为广泛的一种网络协议,所有的WWW文件都必须遵守这个标准。设计HTTP的初衷是为了提供一种发布和接收HTML页面的方法。
HTTP连接
HTTP非持久连接
每次从接收一个Web对象之后,TCP连接都会关闭,下次请求又会重新请求TCP连接
响应时间模型
HTTP持久连接
非流水线方式:
一次请求一个对象,等这次请求结束后再请求下一个对象
流水线方式:HTTP1.1版本默认方式
第一个请求都没有回来的时候,就开始请求下一个对象。
HTTP请求报文
通用格式
提交表单输入
方法类别
HTTP响应报文
HTTP响应状态码
用户-服务器状态:cookies
为了保存用户在服务器的状态,将HTTP从无状态协议变得有状态
Web缓存
缓存示例
更快地接入链路
安装本地缓存
条件GET方法
如果本地服务器Web缓存与源端不一样,可能是源端更新了。为了避免这种情况使用条件GET方法。
def partial_table(p):
'''''partial_table("ABCDABD") -> [0, 0, 0, 0, 1, 2, 0]'''
prefix = set()
res = [0]
for i in range(1, len(p)):
prefix.add(p[:i])
postfix = {p[j:i + 1] for j in range(1, i + 1)}
#print(p[:i+1],prefix,postfix,prefix & postfix or {''})
res.append(len((prefix & postfix or {''}).pop()))
return res
def kmp_match(s, p):
m = len(s);
n = len(p)
cur = 0 # 起始指针cur
table = partial_table(p)
while cur <= m - n: #只去匹配前m-n个
for i in range(n):
if s[i + cur] != p[i]:
cur += max(i - table[i - 1], 1) # 有了部分匹配表,我们不只是单纯的1位1位往右移,可以一次移动多位
break
else:
return True # loop从 break 中退出时,else 部分不执行。
return False
HTTPS
https://blog.csdn.net/xiaoming100001/article/details/81109617