一、操作系统

1、线程切换比进程切换开销要小

(1)线程进程切换的流程

进程切换分为两步:

  • 切换页表以使用新的地址空间,所有已经缓存的内存地址一瞬间都作废了
  • 切换内核栈和硬件上下文

对于linux来说,线程和进程的最大区别就在于地址空间,因为每个进程都有自己的虚拟地址空间,而线程是共享所在进程的虚拟地址空间的,因此同一个进程中的线程进行线程切换时不涉及虚拟地址空间的转换

(2)虚拟地址空间切换会比较耗时

进程都有自己的虚拟地址空间,把虚拟地址转换为物理地址需要查找页表,页表查找是一个很慢的过程,因此通常使用Cache来缓存常用的地址映射

由于每个进程都有自己的虚拟地址空间,都有自己的页表,那么当进程切换后页表也要进行切换,页表切换后TLB就失效了,Cache失效导致命中率降低,那么虚拟地址转换为物理地址就会变慢,表现出来的就是程序运行会变慢,而线程切换则不会导致TLB失效,因为线程无需切换地址空间

二、计算机网络

1、HTPP状态码

状态码 类别
1XX 信息性状态码
2XX 成功状态码
3XX 重定向状态码
4XX 客户端错误状态码
5XX 服务端错误状态码

1XX

  • 100 Continue:表示正常,客户端可以继续发送请求
  • 101 Switching Protocols:切换协议,服务器根据客户端的请求切换协议。

2XX

  • 200 OK:请求成功
  • 201 Created:已创建,表示成功请求并创建了新的资源
  • 202 Accepted:已接受,已接受请求,但未处理完成。
  • 204 No Content:无内容,服务器成功处理,但未返回内容。
  • 205 Reset Content:重置内容,服务器处理成功,客户端应重置文档视图。
  • 206 Partial Content:表示客户端进行了范围请求,响应报文应包含Content-Range指定范围的实体内容

3XX

  • 301 Moved Permanently:永久性重定向
  • 302 Found:临时重定向
  • 303 See Other:和301功能类似,但要求客户端采用get方法获取资源
  • 304 Not Modified:所请求的资源未修改,服务器返回此状态码时,不会返回任何资源。
  • 305 Use Proxy:所请求的资源必须通过代理访问
  • 307 Temporary Redirect: 临时重定向,与302类似,要求使用get请求重定向。

4XX

  • 400 Bad Request:客户端请求的语法错误,服务器无法理解。
  • 401 Unauthorized:表示发送的请求需要有认证信息。
  • 403 Forbidden:服务器理解用户的请求,但是拒绝执行该请求
  • 404 Not Found:服务器无法根据客户端的请求找到资源。
  • 405 Method Not Allowed:客户端请求中的方法被禁止
  • 406 Not Acceptable:服务器无法根据客户端请求的内容特性完成请求
  • 408 Request Time-out:服务器等待客户端发送的请求时间过长,超时

5XX

  • 500 Internal Server Error:服务器内部错误,无法完成请求
  • 501 Not Implemented:服务器不支持请求的功能,无法完成请求
  • 502 Bad Gateway:指错误网关,无效网关;在互联网中表示一种网络错误;表现在WEB浏览器中给出的页面反馈;它通常并不意味着上游服务器已关闭(无响应网关网关/98992)/代理) ,而是上游服务器和网关/代理使用不一致的协议交换数据

2、HTTP请求头

https://segmentfault.com/a/1190000018234763

(1)General

(不属于headers,只用于收集请求url和响应的status等信息)

  • Request URL
  • Request Method
  • Status Code
  • Remote Address

(2)Request Headers

  • Accept
  • Accept-Encoding
  • Connection
  • Cookie
  • Host
  • Origin
  • User-Agent

(3)Response Headers

  • cache-control
  • connection
  • data

3、第二次挥手和第三次挥手能否合并

可以合并

TCP四次挥手里,第二次和第三次挥手之间,是有可能有数据传输的。第三次挥手的目的是为了告诉主动方,”被动方没有数据要发了”。

在第一次挥手之后,如果被动方没有数据要发给主动方。第二和第三次挥手是有可能合并传输的。这样就出现了三次挥手。

4、Get和Post请求区别

  • HTTP报文层面GET请求将信息放到url中,POST请求将信息放到请求体中
  • 数据库层面,GET请求是幂等性和安全性的,POST不是
  • 缓存层面,GET 请求能够被缓存,POST不可以

5、滑动窗口

在这里插入图片描述

  • 滑动窗口的组成

    四大组成部分

  • 发送过程

    当已经发送的窗口收到确认时,窗口会向右移,之前在窗口右边的分组就会移动到窗口内部

一、数据库

1、三大范式

https://segmentfault.com/a/1190000013695030

(1)第一范式

属性的原子性,不可再分

(2)第二范式

消除所有非主属性对主属性的部分依赖

(3)第三范式

消除非主属性对主属性的传递依赖