Bootstrap

多线程与http协议

多线程编程的基本概念:

线程(Thread)

是程序执行中的一个独立运行流程。

线程池(Thread Pool)

线程被组织在一个线程池中,可以重复使用,而不是每次需要时都创建和销毁。

任务调度(Task Scheduling)

线程被分配任务(包裹),任务完成后线程返回线程池等待下一个任务。

就绪状态(Ready State)

线程准备好执行但尚未被CPU选中的状态。

运行状态(Running State)

线程正在被CPU执行的状态。

上下文切换(Context Switching)

线程在运行时被中断,CPU开始执行另一个线程的过程。

优先级(Priority)

线程执行的优先级,高优先级的线程可能更快地被CPU执行。

死锁(Deadlock)

两个或多个线程在等待对方释放资源,导致它们都无法继续执行。

锁(Lock)

一种同步机制,确保在多线程环境中,资源在同一时间只被一个线程访问。

资源分配算法

为了避免死锁,资源应该按照一定的顺序进行分配。

缓存(Caching)

使用缓存如Memcached来存储频繁访问的数据,减少对数据库的直接访问,提高效率。

数据库连接池(Database Connection Pool)

数据库连接也是一种有限资源,通过连接池可以复用连接,减少创建和销毁连接的开销。

系统维护(System Maintenance)

系统可能会定期进行维护和升级,这可能涉及到系统的重启。

垃圾回收(Garbage Collection)

在一些情况下,不再需要的对象或线程会被垃圾回收机制清除。

系统重启(System Restart)

系统重启可能会导致所有当前的线程和进程被终止,所有状态被重置。

TCP

TCP连接建立:通过三次握手过程建立一个虚拟的连接,确保数据能够可靠地在网络中传输。

  1. TCP连接建立:通过三次过程建立虚拟连接,确保数据可靠传输。
  2. 三次
    • 客户端发送连接请求给服务器。
    • 服务器收到请求后发送确认信息给客户端。
    • 客户端收到确认后再次发送确认,完成连接建立。
  3. 数据传输:数据分包传输,每包有序号。
  4. 确认机制:接收方收到数据包后发送确认信息。
  5. 超时重传:未收到确认则重发数据包。
  6. 滑动窗口协议:提高传输效率,允许发送多个数据包等待确认。
  7. 流量控制:通过窗口大小控制发送速率,防止接收方处理不过来。
  8. 拥塞控制:网络拥塞时减少发送量,避免加剧拥堵。
  9. 数据包重组:接收方按序号重组数据包。
  10. 路由器:引导数据包至正确路径。
  11. 不可靠传输:通过TCP实现不可靠介质上的可靠传输。
  12. 费用支付:类比网络通信中的带宽和资源消耗。
  13. 虚电路(Virtual Circuit)

    需要事先建立一个端到端的通信路径。通信过程中,所有数据都通过这个预先建立的路径传输。虚电路在通信结束后可以释放。
  14. 分组交换(Packet Switching)

    不需要事先建立连接,每个数据包独立选择路由。数据被分成小块,每块独立传输,可能走不同的路径,可能失序到达。端点负责实现数据的可靠传输,如通过确认机制和超时重传。
  15. 路由选择(Routing)

    根据路由表和其他因素决定数据包的下一跳。
  16. 可靠性

    虚电路提供了一定程度的可靠性保证,因为通信路径是预先建立的。分组交换的可靠性需要由发送方和接收方共同实现,例如通过确认和重传机制。
  17. 资源利用

    虚电路在不通信时可能会造成资源浪费,因为它占用了固定的通信路径。分组交换更加灵活,可以根据需要动态分配资源。
  18. 动态性

    分组交换允许数据包根据当前网络状况选择最佳路径,具有更高的动态性。
  19. 失序、重复和丢失

    分组交换中,数据包可能会失序到达、重复或丢失,需要端点进行处理。
  20. 失败重传

    如果接收方没有收到数据包或确认信息,发送方需要重新发送数据。
  21. 恢复数据

    是能够从丢失的数据包中恢复数据的能力。
  22. 状态图

    用于描述系统状态及其在接收到特定输入时的转移。
  23. 等待确认机制

    发送方发送数据后,需要等待接收方的确认信息。
  24. 数据编号

    给每个数据包分配一个编号,以便接收方能够识别和排序。
  25. 超时重传

    如果在设定的时间内没有收到确认,发送方会重新发送数据。
  26. 沙漏定时器(超时计时器):

    用于实现超时重传机制,一旦计时结束而未收到确认,就触发重传。
  27. 发送窗口

    允许发送方在等待确认的过程中连续发送多个数据包。
  28. 窗口机制

    通过限制发送窗口的大小来控制发送速率,防止接收方处理不过来。
  29. 回退N步协议

    如果发生丢包,从最后一个已确认的包开始,重新发送所有未确认的包。
  30. 选择性重传

    仅重传那些丢失的数据包,而不是所有未确认的包。
  31. 缓存机制

    接收方缓存那些已经接收但尚未按顺序到达的数据包。
  32. 交互图

    描述发送方和接收方之间的数据包和确认信息的交换过程。
  33. ACK(确认)机制

    接收方发送确认信息给发送方,告知数据包已成功接收。
  34. 保密性

    强调了在政治斗争中保护重要信息不被对手利用的重要性。

 http协议

HTTP(Hypertext Transfer Protocol)是互联网上应用最为广泛的一种网络协议,它是客户端浏览器或其他程序与Web服务器之间的应用层通信协议。HTTP用于从WWW(World Wide Web)服务器传输超文本到本地浏览器的传输协议。它使用户能够访问网络上的各种资源,如HTML文档、图像、视频等,并且可以进行交互。

HTTP的基本概念:

  1. 请求与响应

    • 请求:当客户端想要获取服务器上的资源时,会发送一个HTTP请求。请求包括一个方法(GET, POST, PUT, DELETE等),URL,以及可选的头部信息和实体主体。
    • 响应:服务器收到请求后,会返回一个HTTP响应。响应包括一个状态码(如200 OK表示成功,404 Not Found表示未找到),可能还有头部信息和实体主体。
  2. 状态码

    • 用于表示请求的结果。常见的有200(成功)、301/302(重定向)、400(错误请求)、401(未授权)、403(禁止访问)、404(未找到)、500(服务器内部错误)等。
  3. 方法

    • GET:请求获取指定的资源。
    • POST:向指定资源提交数据进行处理。
    • PUT:上传一个新的资源,或更新已存在的资源。
    • DELETE:删除指定的资源。
  4. 头部信息

    • 请求头和响应头中包含关于请求和响应的元数据,比如Content-Type(内容类型)、User-Agent(用户代理)、Accept-Language(接受的语言)等。
  5. 版本

    • 最初的HTTP/1.0,之后发展为HTTP/1.1,现在最常见的是HTTP/2和HTTP/3。HTTP/2引入了多路复用和二进制格式,而HTTP/3则基于QUIC协议,提供了更低的延迟和更好的性能。
  6. 安全

    • HTTP默认使用TCP端口80,而HTTPS(HTTP Secure)则使用端口443,通过SSL/TLS协议提供加密传输,保证数据的安全性。

使用HTTP的步骤:

  1. 客户端发起HTTP请求。
  2. 服务器接收请求并解析。
  3. 服务器根据请求处理相应的资源。
  4. 服务器构建HTTP响应。
  5. 响应被发送回客户端。
  6. 客户端解析并显示响应内容。
;