多线程编程的基本概念:
线程(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连接建立:通过三次握手过程建立一个虚拟的连接,确保数据能够可靠地在网络中传输。
- TCP连接建立:通过三次过程建立虚拟连接,确保数据可靠传输。
- 三次:
- 客户端发送连接请求给服务器。
- 服务器收到请求后发送确认信息给客户端。
- 客户端收到确认后再次发送确认,完成连接建立。
- 数据传输:数据分包传输,每包有序号。
- 确认机制:接收方收到数据包后发送确认信息。
- 超时重传:未收到确认则重发数据包。
- 滑动窗口协议:提高传输效率,允许发送多个数据包等待确认。
- 流量控制:通过窗口大小控制发送速率,防止接收方处理不过来。
- 拥塞控制:网络拥塞时减少发送量,避免加剧拥堵。
- 数据包重组:接收方按序号重组数据包。
- 路由器:引导数据包至正确路径。
- 不可靠传输:通过TCP实现不可靠介质上的可靠传输。
- 费用支付:类比网络通信中的带宽和资源消耗。
虚电路(Virtual Circuit):
需要事先建立一个端到端的通信路径。通信过程中,所有数据都通过这个预先建立的路径传输。虚电路在通信结束后可以释放。分组交换(Packet Switching):
不需要事先建立连接,每个数据包独立选择路由。数据被分成小块,每块独立传输,可能走不同的路径,可能失序到达。端点负责实现数据的可靠传输,如通过确认机制和超时重传。路由选择(Routing):
根据路由表和其他因素决定数据包的下一跳。可靠性:
虚电路提供了一定程度的可靠性保证,因为通信路径是预先建立的。分组交换的可靠性需要由发送方和接收方共同实现,例如通过确认和重传机制。资源利用:
虚电路在不通信时可能会造成资源浪费,因为它占用了固定的通信路径。分组交换更加灵活,可以根据需要动态分配资源。动态性:
分组交换允许数据包根据当前网络状况选择最佳路径,具有更高的动态性。失序、重复和丢失:
分组交换中,数据包可能会失序到达、重复或丢失,需要端点进行处理。失败重传:
如果接收方没有收到数据包或确认信息,发送方需要重新发送数据。恢复数据:
是能够从丢失的数据包中恢复数据的能力。状态图:
用于描述系统状态及其在接收到特定输入时的转移。等待确认机制:
发送方发送数据后,需要等待接收方的确认信息。数据编号:
给每个数据包分配一个编号,以便接收方能够识别和排序。超时重传:
如果在设定的时间内没有收到确认,发送方会重新发送数据。沙漏定时器(超时计时器):
用于实现超时重传机制,一旦计时结束而未收到确认,就触发重传。发送窗口:
允许发送方在等待确认的过程中连续发送多个数据包。窗口机制:
通过限制发送窗口的大小来控制发送速率,防止接收方处理不过来。回退N步协议:
如果发生丢包,从最后一个已确认的包开始,重新发送所有未确认的包。选择性重传:
仅重传那些丢失的数据包,而不是所有未确认的包。缓存机制:
接收方缓存那些已经接收但尚未按顺序到达的数据包。交互图:
描述发送方和接收方之间的数据包和确认信息的交换过程。ACK(确认)机制:
接收方发送确认信息给发送方,告知数据包已成功接收。保密性:
强调了在政治斗争中保护重要信息不被对手利用的重要性。
http协议
HTTP(Hypertext Transfer Protocol)是互联网上应用最为广泛的一种网络协议,它是客户端浏览器或其他程序与Web服务器之间的应用层通信协议。HTTP用于从WWW(World Wide Web)服务器传输超文本到本地浏览器的传输协议。它使用户能够访问网络上的各种资源,如HTML文档、图像、视频等,并且可以进行交互。
HTTP的基本概念:
-
请求与响应:
- 请求:当客户端想要获取服务器上的资源时,会发送一个HTTP请求。请求包括一个方法(GET, POST, PUT, DELETE等),URL,以及可选的头部信息和实体主体。
- 响应:服务器收到请求后,会返回一个HTTP响应。响应包括一个状态码(如200 OK表示成功,404 Not Found表示未找到),可能还有头部信息和实体主体。
-
状态码:
- 用于表示请求的结果。常见的有200(成功)、301/302(重定向)、400(错误请求)、401(未授权)、403(禁止访问)、404(未找到)、500(服务器内部错误)等。
-
方法:
- GET:请求获取指定的资源。
- POST:向指定资源提交数据进行处理。
- PUT:上传一个新的资源,或更新已存在的资源。
- DELETE:删除指定的资源。
-
头部信息:
- 请求头和响应头中包含关于请求和响应的元数据,比如Content-Type(内容类型)、User-Agent(用户代理)、Accept-Language(接受的语言)等。
-
版本:
- 最初的HTTP/1.0,之后发展为HTTP/1.1,现在最常见的是HTTP/2和HTTP/3。HTTP/2引入了多路复用和二进制格式,而HTTP/3则基于QUIC协议,提供了更低的延迟和更好的性能。
-
安全:
- HTTP默认使用TCP端口80,而HTTPS(HTTP Secure)则使用端口443,通过SSL/TLS协议提供加密传输,保证数据的安全性。
使用HTTP的步骤:
- 客户端发起HTTP请求。
- 服务器接收请求并解析。
- 服务器根据请求处理相应的资源。
- 服务器构建HTTP响应。
- 响应被发送回客户端。
- 客户端解析并显示响应内容。