Data structures 用于缓冲区的数据结构

Data structures 用于缓冲区的数据结构,data-structures,buffer,Data Structures,Buffer,我最近参加了一次开发人员面试,被问到以下问题: 我有一个可以处理20个请求的服务器。使用哪种数据结构对此进行建模?如果你有超过20个请求,会发生什么?i、 例如,如果缓冲区溢出,您会怎么做? 我不是CS出身。我正在从另一个领域过渡。我自学编程和DSA。所以我想知道这些问题的答案。提前感谢 关于可同时处理20个请求的服务器: 你的问题表明你还没有以一种合理的方式考虑这一点,并且可能还远远没有理解它是如何工作的。没问题,这只是意味着你要学的东西可能比你想象的要多 为了帮助你,我会给你写一个正确的答案

我最近参加了一次开发人员面试,被问到以下问题: 我有一个可以处理20个请求的服务器。使用哪种数据结构对此进行建模?如果你有超过20个请求,会发生什么?i、 例如,如果缓冲区溢出,您会怎么做?
我不是CS出身。我正在从另一个领域过渡。我自学编程和DSA。所以我想知道这些问题的答案。提前感谢

关于可同时处理20个请求的服务器:

你的问题表明你还没有以一种合理的方式考虑这一点,并且可能还远远没有理解它是如何工作的。没问题,这只是意味着你要学的东西可能比你想象的要多

为了帮助你,我会给你写一个正确的答案,上面写满了你可以用谷歌搜索的术语:

当客户机尝试连接到您的服务器时,内核将其请求放入连接到服务器的侦听“套接字”的“侦听队列”

当您的服务器准备好为请求提供服务时,它将“接受”来自侦听套接字的连接,这将为客户端和服务器之间的通信创建一个新套接字,然后服务器将处理该请求

如果您的服务器可以同时处理20个请求,则通常意味着它最多可以有20个线程同时处理连接。这通常通过使用有限大小的“线程池”来实现。当池中的线程可用时,它会从侦听套接字获取一个新连接(可能需要等待一个连接),并对其进行处理,但事实上,这些线程中最多有20个限制了您将同时处理的请求数量。(实际上,与任何类型的缓冲区无关)

如果服务器在收到新请求时已经在同时处理20个请求,那么客户端的请求将在套接字侦听队列中等待,直到服务器最终接收到它,或者如果等待时间太长,它将超时并失败


侦听队列中可以等待的连接请求数量也有限制(TCP积压)。如果在侦听队列已满时传入连接请求,则会立即拒绝该请求。如果您希望服务器同时处理20个请求,那么侦听队列的长度应至少为20,以防20个请求同时到达——它们将全部排队,直到您的服务器接收到它们。

关于能够同时处理20个请求的服务器:

你的问题表明你还没有以一种合理的方式考虑这一点,并且可能还远远没有理解它是如何工作的。没问题,这只是意味着你要学的东西可能比你想象的要多

为了帮助你,我会给你写一个正确的答案,上面写满了你可以用谷歌搜索的术语:

当客户机尝试连接到您的服务器时,内核将其请求放入连接到服务器的侦听“套接字”的“侦听队列”

当您的服务器准备好为请求提供服务时,它将“接受”来自侦听套接字的连接,这将为客户端和服务器之间的通信创建一个新套接字,然后服务器将处理该请求

如果您的服务器可以同时处理20个请求,则通常意味着它最多可以有20个线程同时处理连接。这通常通过使用有限大小的“线程池”来实现。当池中的线程可用时,它会从侦听套接字获取一个新连接(可能需要等待一个连接),并对其进行处理,但事实上,这些线程中最多有20个限制了您将同时处理的请求数量。(实际上,与任何类型的缓冲区无关)

如果服务器在收到新请求时已经在同时处理20个请求,那么客户端的请求将在套接字侦听队列中等待,直到服务器最终接收到它,或者如果等待时间太长,它将超时并失败


侦听队列中可以等待的连接请求数量也有限制(TCP积压)。如果在侦听队列已满时传入连接请求,则会立即拒绝该请求。如果您希望服务器同时处理20个请求,那么侦听队列的长度应至少为20,以防20个请求同时到达——它们将全部排队,直到您的服务器接收它们。

您是说20个并发请求吗?你听说过一家公司吗?是的。20个并发请求。我听说有人排队。我已经用python实现了一个队列。另外,请告诉我,如果有并发请求而不是并发请求,该怎么办。并发和并发是同义词。哦,好的。我不知道。那么,如果我收到超过20个请求,我该怎么办呢。我认为这叫做缓冲区溢出。如何纠正?你是说20个并发请求?你听说过一家公司吗?是的。20个并发请求。我听说有人排队。我已经用python实现了一个队列。另外,请告诉我,如果有并发请求而不是并发请求,该怎么办。并发和并发是同义词。哦,好的。我不知道。那么,如果我收到超过20个请求,我该怎么办呢。我认为这叫做缓冲区溢出。怎么纠正?好的!谢谢这是一个非常清楚的解释。回答得很好!我明白了。我现在还有一个疑问。缓冲区和缓冲区溢出究竟是什么?它在哪里使用?@Laxman缓冲区只是用于将数据从程序或系统的一部分传输到另一部分的内存区域。缓冲区溢出是一种编程错误,它错误地在缓冲区外写入数据,就像导致将200字节写入100字节的空间一样。结果可能是数据结构的关键部分被垃圾覆盖!知道了!谢谢,好的!谢谢这是一个非常清楚的解释。g