首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

面经总结——腾讯面试题汇总(一)

所谓三次握手(Three-Way Handshake)即建立TCP连接,就是指建立一个TCP连接时,需要客户端和服务端总共发送3个包以确认连接的建立。...在关闭“前一个连接”之后,马上又重新建立起一个相同的IP和端口之间的“新连接”,“前一个连接”的迷途重复分组在“前一个连接”终止后到达,而被“新连接”收到了。...进程间通信 管道(pipe):管道是一种半双工的通信方式,数据只能单向流动,而且只能在具有亲缘关系的进程间使用进程间的亲缘关系通常是指父子进程关系。...命名管道(named pipe/FIFO):命名管道也是半双工的通信方式,但是它允许无亲缘关系进程间的通信。...全双工管道:共享内存、信号量、消息队列、管道和命名管道只适用于本地进程间通信,套接字和全双工管道可用于远程通信,因此可用于网络编程。

1.5K30

进程间通信的方式——信号、管道、消息队列、共享内存

常见的通信方式: 1. 管道pipe:管道是一种半双工的通信方式,数据只能单向流动,而且只能在具有亲缘关系的进程间使用。进程的亲缘关系通常是指父子进程关系。 2....命名管道FIFO:有名管道也是半双工的通信方式,但是它允许无亲缘关系进程间的通信。 4. 消息队列MessageQueue:消息队列是由消息的链表,存放在内核中并由消息队列标识符标识。...管道是Linux 支持的最初Unix IPC形式之一,具有以下特点: 1) 管道是半双工的,数据只能向一个方向流动;需要双方通信时,需要建立起两个管道; 2) 匿名管道只能用于父子进程或者兄弟进程之间(...管道分为pipe(无名管道)和fifo(命名管道)两种,除了建立、打开、删除的方式不同外,这两种管道几乎是一样的。他们都是通过内核缓冲区实现数据传输。...也就是说它可以让不在同一台计算机但通过网络连接计算机上的进程进行通信。也因为这样,套接字明确地将客户端和服务器区分开来。

29810
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    Windows进程间通信—命名管道

    大家好,又见面了,我是全栈君 命名管道是通过网络来完成进程间的通信,它屏蔽了底层的网络协议细节。我们在不了解网络协议的情况下,也可以利用命名管道来实现进程间的通信。...命名管道服务器和客户机的区别在于:服务器是唯一一个有权创建命名管道的进程,也只有它能接受管道客户机的连接请求。而客户机只能同一个现成的命名管道服务器建立连接。...命名管道服务器只能在WindowsNT或Windows2000上创建,不过可以是客户机。命名管道提供了两种基本通信模式,字节模式和消息模式。...在字节模式中,数据以一个连续的字节流的形式在客户机和服务器之间流动。...而在消息模式中,客户机和服务器则通过一系列不连续的数据单位进行数据的收发,每次在管道上发出一条消息后,它必须作为一条完整的消息读入。

    1.4K10

    百度2014软件开发工程师笔试题详解

    由于共享内存是用文件映射实现的,所以它也有较好的安全性,也只能运行于同一计算机上的进程之间。 匿名管道:管道(Pipe)是一种具有两个端点的通信通道:有一端句柄的进程可以和有另一端句柄的进程通信。...管道可以是单向-一端是只读的,另一端点是只写的;也可以是双向的一管道的两端点既可读也可写。 命名管道:命名管道(Named Pipe)是服务器进程和一个或多个客户进程之间通信的单向或双向管道。...不同于匿名管道的是命名管道可以在不相关的进程之间和不同计算机之间使用,服务器建立命名管道时给它指定一个名字,任何进程都可以通过该名字打开管道的另一端,根据给定的权限和服务器进程通信。...接收方只需像处理其它消息那样处理WM_COPY 3.简述TCP与UDP的区别 TCP UDP 是否有序 接收到的可能乱序,但是有段标号供排序 无序 可靠性 可靠的 不可靠的 是否连接 面相连接 面相非连接...2 性能瓶颈应该出现在调整算法上,当发生一次冲突时,可能会引起连带的反应,造成多次调整。     解决方案:对点进行分级,每个点增加权重,按级别进行标记,优先标记权重值较高的点。

    1.5K20

    如何使用Microsoft技术栈

    它所渲染的HTML和JavaScript好像比较低效,此外其高级功能所必须的view state能快速地压垮一个手机的网络连接。...第二选择:WCF 与Web API相比WCF被认为是一种更加灵活的选项,因为它并没有与任何特定的传输协议或者消息格式绑定。例如,你能够利用TCP或者命名管道和二进制消息提升性能。...这两者都支持现代的理念,例如数据绑定和async/await,同时都能够使用WCF或者SignalR进行双向通信。 在WPF和WinForms之间做出选择之前需要考虑下面几点因素: 首先是难度。...在这种情况下,从WPF入手会让你更有可能在不同的平台之间共享代码。 与常见的WinForms应用程序相比,WPF灵活的渲染引擎渲染的外观更漂亮。...对于简单的场景,命名管道和Microsoft消息队列是比较容易的选项,而更复杂的系统则需要一个服务总线。

    1.4K60

    基于Unity的编辑器开发(二): 进程间通信

    所以我就想能不能让一个C# dll库可以同时被Winforms的编辑器和Unity脚本引用呢?...进程间通信 为了达成这一通信需求, 首先做了一些搜索: unity3D 命名管道 进程通信 Unity3D应用嵌入WPF应用并实现通信 桌面WPF程序嵌入Unity3D引擎(standalone)并实现通讯...使用ipc协议也会出现莫名其妙连不上的问题, 本质上底层还是走的NamePipe, 换成tcp协议就好了 错误信息不够直观, 所以我又在NNanomsg里加了nanomsg的一些调试用的函数的接口 一次性发送大量数据...(比如几MB), 会导致链接断开或卡死, 问了作者说实现机制的问题, 让我尝试nanomsg next gen, 不过这个问题暂时可以绕过 用nanomsg的好处就是连接的建立/发送/接收等不用自己操心..., 可以直接连接UnityEditor进行双端开发, 对于调试修改非常方便: ?

    3.4K160

    看图理解进程间通信IPC

    通常,IPC一般包含客户端和服务器,客户端请求数据,服务器响应请求(比如分布式计算中就是这样)。...套接字(Socket) 通过网络接口将数据量发送到本机的不同进程或远程计算机。 Unix域套接字(Unix domain socket) 用于在同一台机器上运行的进程之间的通信。...消息队列(Message queue) 类似于套接字的数据流,但消息有自己的结构,它允许多个进程只需要读写消息队列,而不需要直接相互连接。...管道(Pipe) 管道是一种半双工的通信方式,数据只能单向流动,而且只能在具有亲缘关系的进程间使用。进程的亲缘关系通常是指父子进程关系。...命名管道(Named pipe或FIFO) 命名管道可在同一台计算机的不同进程之间或在跨越一个网络的不同计算机的不同进程之间,支持可靠的、单向或双向的数据通信。

    2.6K20

    详解操作系统之进程间通信 IPC (InterProcess Communication)

    只能用于父子进程或者兄弟进程之间(具有亲缘关系的进程); 单独构成一种独立的文件系统:管道对于管道两端的进程而言,就是一个文件,但它不是普通的文件,它不属于某种文件系统,而是自立门户,单独构成一种文件系统...该缓冲区可以看做是一个循环队列,读和写的位置都是自动增长的,不能随意改变,一个数据只能被读一次,读出来以后在缓冲区就不复存在了。...管道的局限: 管道的主要局限性正体现在它的特点上: 只支持单向数据流; 只能用于具有亲缘关系的进程之间; 没有名字; 管道的缓冲区是有限的(管道制存在于内存中,在管道创建时,为缓冲区分配一个页面大小)...它会创建一个与原有的命名套接不同的新套接字,这个套接字只用于与这个特定客户端进行通信,而命名套接字(即原先的套接字)则被保留下来继续处理来自其他客户的连接(建立客户端和服务端的用于通信的流,进行通信)。...客户端 (1)客户应用程序首先调用socket来创建一个未命名的套接字,然后将服务器的命名套接字作为一个地址来调用connect与服务器建立连接。

    4.5K30

    【翻译】.NET 5 Preview 1 发布

    用于构建SPA应用程序和用于构建分布式应用和服务的gRPC模板、用于与gRPC对话丰富的客户端代码生成、REST API服务等等.我们很高兴看到.NET Core 3成为有史以来发展最快的.NET版本,...Framework Core、WinForms、WPF、Xamarin、ML.NET.整个平台将首次为所有应用程序木星使用统一的BCL(Base Class Libraries).拥有一个比.NET...今天Xamarin应用程序使用Mono BCL,但将转向使用.NET Core BCL, 从而改善了我们应用程序模型之间的兼容性....下面的改进在Preview 1中: 对null检查的改进–在更多情况下,通过观察证明不需要null检查的更多模式,无需生成null检查 调整公共子表达式评估(CSE) - JIT查找并迭代那些只需要求值一次的重复表达式...Event pipe profiler APIs 事件管道是我们在.NET Core 2.2中添加的新子系统和API,可以在任何操作系统上执行性能和其他诊断调查.在.NET 5.0中,事件管道已得到扩展

    89710

    【翻译】.NET 5 Preview 1 发布

    用于构建SPA应用程序和用于构建分布式应用和服务的gRPC模板、用于与gRPC对话丰富的客户端代码生成、REST API服务等等.我们很高兴看到.NET Core 3成为有史以来发展最快的.NET版本,...Framework Core、WinForms、WPF、Xamarin、ML.NET.整个平台将首次为所有应用程序木星使用统一的BCL(Base Class Libraries).拥有一个比.NET...今天Xamarin应用程序使用Mono BCL,但将转向使用.NET Core BCL, 从而改善了我们应用程序模型之间的兼容性....下面的改进在Preview 1中: 对null检查的改进–在更多情况下,通过观察证明不需要null检查的更多模式,无需生成null检查 调整公共子表达式评估(CSE) - JIT查找并迭代那些只需要求值一次的重复表达式...Event pipe profiler APIs 事件管道是我们在.NET Core 2.2中添加的新子系统和API,可以在任何操作系统上执行性能和其他诊断调查.在.NET 5.0中,事件管道已得到扩展

    80410

    Linux文件类型

    对于命名管道,即有名称的管道,命名管道将文件保留在文件系统中,它也称为FIFO,也就是first in first out。...虽然命名管道文件保留在文件系统中,但是这个文件只是使用命名管道的一个入口,在使用命名管道传输数据的时候,仍然是在内存中进行的,也就是说并不会因为保留在文件系统上命名管道的效率就低了。...一般的管道都是单向通信的,无法实现双向通信的功能,也就是只能一边写一边读,不能两边都能读、写。...对于TCP套接字,客户端发起连接请求即表示要和服务端进行三次握手(内核完成,和用户空间进程无关)。...将这三次握手的每一次进行细分,第一次客户端发送SYN请求,服务端接收到SYN后,内核将这个连接放进syn queue中并设置状态为syn-recv,然后发送ack+syn给客户端,当接收到客户端回复ack

    3.1K10

    Redis的管道Pipeline

    API Redis的管道(Pipeline) 为什么使用管道 其中redis的执行一条命令可以分为四个步骤 发送命令 命令排队 命令执行 返回结果 其中1-4之间所需要的时间称为往返时间(RTT) Redis...但 大部分命令是不支持批量操作的,例如要执行n次hgetall命令,并没有 mhgetall命令存在,需要消耗n次RTT。Redis的客户端和服务端可能部署在不 同的机器上。.../3),那么客户端在1秒 内大约只能执行80次左右的命令,这个和Redis的高并发高吞吐特性背道而驰。...Pipeline(管道)机制能改善上面这类问题,它能将一组Redis命令进行组装,通过一次RTT传输给Redis,再将这组Redis命令的执行结果按顺序返回给客户端 客户端使用管道执行命令 使用的是Jedis...); //执行管道命令 } API 所有的命令都可以使用管道连接,只是通过Pipeline对象调用而已 pipeline.set() :添加字符串 pipeline.get() :获取字符串 pipeline.sync

    1.6K20

    HTTP1.1与前端性能

    举一下上一节持久连接的那个例子,首先,服务器处理完第一次请求后,会发生了一次完整的往返:先是响应回传,接着是第二次请求,在第二次请求到达服务器之间的这段时间里,服务器空闲。...这一次,通过使用HTTP管道,又减少了两次请求之间的一次往返,总延迟减少为 172 ms。...HTTP持久连接虽然帮我们解决了TCP连接复用的问题,但是现阶段的HTTP管道却无法实现多个请求结果的交错返回,所以浏览器只能开启多个TCP连接,以达到并行地加载资源的目的。...域名分区 前面说到,浏览器和服务器之间只能并发4到8个TCP连接,也就是同时下载4到8个资源,够吗?...我们可以手工将所有资源分散到多个子域名,由于主机名称不一样了,就可以突破浏览器的连接限制,实现更高的并行能力。 通过这种方式“欺骗”浏览器,这样浏览器和服务器之间的并行传输数量就变多了。

    2.1K00

    HTTP1.1与前端性能

    举一下上一节持久连接的那个例子,首先,服务器处理完第一次请求后,会发生了一次完整的往返:先是响应回传,接着是第二次请求,在第二次请求到达服务器之间的这段时间里,服务器空闲。...这一次,通过使用HTTP管道,又减少了两次请求之间的一次往返,总延迟减少为 172 ms。...HTTP持久连接虽然帮我们解决了TCP连接复用的问题,但是现阶段的HTTP管道却无法实现多个请求结果的交错返回,所以浏览器只能开启多个TCP连接,以达到并行地加载资源的目的。...域名分区 前面说到,浏览器和服务器之间只能并发4到8个TCP连接,也就是同时下载4到8个资源,够吗?...我们可以手工将所有资源分散到多个子域名,由于主机名称不一样了,就可以突破浏览器的连接限制,实现更高的并行能力。 通过这种方式“欺骗”浏览器,这样浏览器和服务器之间的并行传输数量就变多了。

    96490

    进程间通讯的7种方式是_第一种形态有哪些方式

    大家好,又见面了,我是你们的朋友全栈君。 1、常见的通信方式 管道pipe:管道是一种半双工的通信方式,数据只能单向流动,而且只能在具有亲缘关系的进程间使用。进程的亲缘关系通常是指父子进程关系。...2、按通信类型区分 共享存储器系统 1.基于共享数据结构的通信方式 (仅适用于传递相对少量的数据,通信效率低,属于低级通信) 2.基于共享存储区的通信方式 管道通信系统 管道是指用于连接一个读进程和一个写进程以实现它们之间通信的一个共享文件...1、特点: 它是半双工的(即数据只能在一个方向上流动),具有固定的读端和写端。 它只能用于具有亲缘关系的进程之间的通信(也是父子进程或者兄弟进程之间)。...管道的实质是一个内核缓冲区,进程以先进先出的方式从缓冲区存取数据:管道一端的进程顺序地将进程数据写入缓冲区,另一端的进程则顺序地读取数据,该缓冲区可以看做一个循环队列,读和写的位置都是自动增加的,一个数据只能被读一次...而无名管道却不同,进程只能访问自己或祖先创建的管道,而不能访任意访问已经存在的管道——因为没有名字。 Linux中通过系统调用mknod()或makefifo()来创建一个命名管道。

    46620

    线程通信(ITC)

    记名管道 如果要在两个不相关的线程,如两个不同进程里面的线程,之间进行管道通信,则需要使用记名管道。顾名思义,记名管道是一个有名字的通信管道。...对于同一主机来讲允许有多个同一命名管道的实例,并且可以由不同的进程打开,但是不同的管道都有属于门己的管道缓冲区,而且有自己的通信环境,互不影响。命名管道可以支持多个客户端连接一个服务器端。...命名管道客户端不但可以与本机上的服务器通信也可以同其他主机上的服务器通信。 管道和记名管道虽然具有简单,无需特殊设计(指应用程序方面)就可以和另外一个进程远行通信的优点,但其缺点也是显然的。...之后,客户端和服务器端就可以通过send和recv命令在这个创建的套接字通道上进行交流了。 服务器套接字有点类似于传说中的虫洞(worm hole)。...还有一点,就是管道中的数据一读就没有了(只能读一次),而共享内存中的数据可以反复读(只要不被覆盖,删除)因此其灵活性比管道和套接字大很多,能够传递的信息也复杂得多。

    77520

    进程间通信

    我们把从一个进程连接到另一个进程的一个数据流称为一个“管道”。 ?...管道特点 只能用于具有共同祖先的进程之间进行通信;通常,一个管道由一个进程创建,然后该进程调用fork,此后父、子进程之间就可应用该管道。...命名管道 管道应用的一个限制就是只能在具有共同祖先的进程间通信。 如果我们想在不相关的进程之间交换数据,可以使用FIFO文件来做这项工作,它经常被称为命名管道。...命名管道由mkfifo函数创建,打开用open FIFO(命名管道)与pipe(匿名管道)之间唯一的区别在它们创建与打开的方式不同,一但这些工作完成之后,它们具有相同的语义。...关系为进程的互斥 系统中某些资源一次只允许一个进程使用,称这样的资源为临界资源或互斥资源。

    1K20

    【高级编程】linux进程间通信总结

    PIPES 管道是UNIX系统IPC的最古老形式,并且所有的UNIX系统都提供此通信机制。但管道有两个局限性: 历史上,它们是半双工的,现在某些系统提供全双工管道。 它们只能在共有祖先的进程间使用。...2.2 FIFO FIFO也被称为命名管道。管道只能有相关进程使用,这些相关进程的共同的祖先进程创建了管道。通过FIFO,不相关的进程也能交换数据。...用于客户进程-服务器进程应用程序中,以在客户进程和服务器进程之间传递数据。...共享存储 6.1 XSI 共享存储 共享存储允许两个或更多进程共享一给定的存储区,因为数据不需要在客户端和服务器之间进行复制,所以这是一种最快的IPC。...小结 上面介绍了进程间通讯的多种形式:管道,命名管道(FIFO),以及另外三种IPC形式(通常称为XSI IPC),即消息队列,信号量和共享存储。信号量实际上是同步原语而不是IPC。

    2K70

    由一道面试题来了解进程间的通信

    B、不同祖先的进程之间可以通过管道共享数据。 C、当共享管道的进程执行完所有的I/O操作以后,命名管道将继续保存在文件系统中以便以后使用。 管道只能由相关进程使用,它们共同的祖先进程创建了管道。...由于共享内存是用文件映射实现的,所以它也有较好的安全性,也只能运行于同一计算机上的进程之间。...4  命名管道   命名管道(Named Pipe)是服务器进程和一个或多个客户进程之间通信的单向或双向管道。...不同于匿名管道的是命名管道可以在不相关的进程之间和不同计算机之间使用,服务器建立命名管道时给它指定一个名字,任何进程都可以通过该名字打开管道的另一端,根据给定的权限和服务器进程通信。   ...邮件槽与命名管道相似,不过它传输数据是通过不可靠的数据报(如TCP/IP协议中的UDP包)完成的,一旦网络发生错误则无法保证消息正确地接收,而命名管道传输数据则是建立在可靠连接基础上的。

    2.2K70
    领券