IO调用
- 准备阶段(内核缓冲区数据未就绪,继续读取或写入)
- 判断是否能够进入准备阶段,即等待数据是否可用,内核完成这个过程
- 阻塞和非阻塞:应用程序的表现,看进程是否挂起
- IO操作准备阶段的完成方式,数据还没有准备好的时候(内核缓冲区的数据未就绪),应用程序的实际表现
- 针对于进程在访问数据时
- 阻塞和非阻塞是一种读取或者写入操作函数的实现方式
- 阻塞:读取或写入函数将一直阻塞
- 非阻塞:读取或者写入函数完成后会立即返回一个状态值
- 数据还没有准备好时候,进程挂起表示阻塞,否则非阻塞
- 阻塞和非阻塞是一种读取或者写入操作函数的实现方式
- 操作阶段(内核缓冲区数据已就绪,准备拷贝)
- 执行实际的IO调用,数据从内核缓冲区拷贝到用户进程缓冲区
- 实际IO操作阶段的完成方式(拷贝),指实际访问数据的机制,IO操作是否会使得进程挂起
- 同步
- 主动发送请求并等待IO操作完毕的方式,IO操作未完成前,会导致应用程序进程挂起
- 异步
- 用户触发IO操作后开始做自己的事情,IO操作已经完成时,会得到IO完成的通知,通过这个机制,使得进程在数据读写的过程时不阻塞
- 异步特点:通知
- 执行实际的IO调用,数据从内核缓冲区拷贝到用户进程缓冲区
阻塞和同步
- 同步调用,当前线程是运行状态,从底层讲,只是从逻辑上来讲没有返回,当前线程还可以处理其他信息
- 阻塞调用,当前进程是阻塞不可用的状态,线程没有返回并且不能处理其他信息
session与cookie
-
session
- 存储到服务器
- 安全,一定时间内保存在服务器,访问量增多时会比较占用服务器性能,考虑性能用cookie
- 登录信息敏感数据保存在session中
-
cookie
- 存储到客户端浏览器上
- 不安全,可以查询,存储客户端浏览器的cookie,伪造存在客户端浏览器进行欺骗请求
- 不敏感信息可以用cookie存储
- 由于单个cookie保存的数据不超过4kb,一般浏览器会有一个站点cookie数量的限制
- cookie具有不可跨域性(很不好的点)
- 会话cookie不设置过期时间,浏览器关闭就消失,一般存储在内存
- 持久cookie设置过期时间,关闭浏览器也不会消失cookie,一般存储到硬盘中
-
seesion和cookie共享
- 多网站单服务器,解决不同网站上SessionId共享
- 网站域名不同,对于同一父域名不同子域名
- 可改变cookie的存储范围到父域名,达到cookie和sessionId的共享
- 多网站单服务器,解决不同网站上SessionId共享
输入网址到浏览器渲染
- 在客户端浏览器中输入网址URL
- 发送DNS获取URL对应web服务器的IP地址
- 服务器和浏览器建立TCP连接
- 向对应IP地址发送相应的HTTP或者HTTPS请求
- 响应请求,返回URL数据或错误信息,若设定重定向,则重定向到新的URL地址
- 客户端浏览器下载数据后解析HTML源文件,解析过程中实现对页面的排版,解析完成后再浏览器中显示基础的页面
- 分析页面中的超链接,显示在当前页面,重复以上过程直至没有超链接需要发送,完成页面的全部显示
http和https
-
http超文本传输协议 80
- 明文传输,无状态的连接
- 1.0
- 1.1
- 2.0
- 3.0
-
https 具有安全性的ssl/tls加密传输协议 443
- 到CA申请证书,一般是需要付费
- 由SSL/TLS+HTTP协议构建的可进行加密传输、身份认证的网络协议
-
无状态和有状态
- Web服务的状态指的是请求的状态,而不是资源的状态
- C和S进行交互操作时所留下来的公共信息(工作流、用户状态信息等数据)
- 有状态
- 典型用户登录状态保存在Server的Session中
- 对负载均衡不利
- 无状态
- 在无状态的Web服务中,每一个Web请求都必须是独立的,请求之间是完全分离的
- 请求必须包含有能够让服务器理解请求的全部信息,包括自己的状态信息
- 分布式系统,Restful的无状态是非常重要的原则,且能够有较强的容错和可伸缩性,Rest中每个对象都是URL表示,状态信息会打包进每一条信息,保证对象的处理总是无状态的,能被任意的Server应答
总结
- 网络上都行都可以融汇贯通想一想,串起来更好理解
- 还是要写代码才行