用了这么多年Ctrl+C和Ctrl+V的复制粘贴,你知道简单的原理吗? |
您所在的位置:网站首页 › 电脑复制粘贴怎么设置快捷键是什么 › 用了这么多年Ctrl+C和Ctrl+V的复制粘贴,你知道简单的原理吗? |
前言:
复制粘贴快捷键,对很多人来说,再熟悉不过了,连小孩子都会用。那么,大家都在用,怎么样才能体现出我们骄傲的身份“程序员”的独特之处呢?如果有人说:“计算机也不过如此,几个简单的快捷键就够用了”,那么你可以问他:“你知道复制粘贴的原理吗?我知道”,然后高傲的离开,留下他一人独自在风中凌乱...... 那么,一起来看看本片博客,想要了解简单的复制粘贴的原理,我们就要来看看——进程之间的通信。 为什么要说进程之间的通信呢,假如我现在打开了一个记事本,又打开了一个word文档,然后我要将记事本里面的内容复制,然后粘贴到word中。我们抽象认为记事本是一个任务,一个进程,然后word文档也是一个任务,一个进程,现在它们之间就是在进行通信,所以我们就来了解进程通信,然后最后你就会理解赋值粘贴的大概原理了。 一、进程通信的类型1. 低级通信和高级通信 低级通信: 只能传递状态和整数值(控制信息),包括进程互斥和同步所采用的信号量和管程机制。 优点的速度快。 缺点是: 传送信息量小:效率低,每次通信传递的信息量固定,若传递较多信息则需要进行多次通信。 编程复杂:用户直接实现通信的细节,编程复杂,容易出错。 高级通信: 能够传送任意数量的数据,包括三类:共享存储区、管道、消息。 高级通信的特征: 通信链路(communication link): 点对点/多点/广播 单向/双向 有容量(链路带缓冲区)/无容量(发送方和接收方需自备缓冲区) 数据格式: 字节流(byte stream):各次发送之间的分界,在接收时不被保留,没有格式; 报文(datagram/message):各次发送之间的分界,在接收时被保留,通常有格式(如表示类型),定长/不定长报文,可靠报文/不可靠报文。 收发操作的同步方式 发送阻塞(直到被链路容量或接收方所接受)和不阻塞(失败时立即返回) 接收阻塞(直到有数据可读)和不阻塞(无数据时立即返回) 由事件驱动收发:在允许发送或有数据可读时,才做发送和接收操作 如何区分: 举个例子:低级通信就像之前我们不做人系列里面的信号量呀之类的,而高级通信比如缓冲区,这个会在不做人系列3中提到。
2. 直接通信和间接通信 直接通信: 信息直接传递给接收方,如管道。 在发送时,指定接收方的地址或标识,也可以指定多个接收方或广播式地址; 在接收时,允许接收来自任意发送方的消息,并在读出消息的同时获取发送方的地址。 间接通信: 借助于收发双方进程之外的共享数据结构作为通信中转,如消息队列。通常收方和发方的数目可以是任意的。 如何区分: 区分的唯一点就是在通信的时候双方的生命状态是否有要求,比如直接通信要求双方都要存在,比如打电话,只有两个人同时在线,才可以交流接通;而间接通信比如发短信,发的时候接受的一方不一定要在线。 二、共享存储区 相当于内存,可以任意读写和使用任意数据结构(当然,对指针要注意),需要进程互斥和同步的辅助来确保数据一致性,不要求数据的移动。这里画一个图来看看: 看,生动形象呀,这样的话再进行通信的时候果然方便多了。 三、管道 管道通信方式 Pipe,也称共享文件方式,基于文件系统,利用一个打开的共享文件连接两个相互通信的进程,文件作为缓冲传输介质。上图: 此处一看就知道是直接通信了。 四、消息 与窗口系统中的“消息”不同。通常是不定长数据块。消息的发送不需要接收方准备好,随时可发送 消息缓冲:在内存中开设缓冲区,发送进程将消息送入缓冲区,接收进程接收传递来的缓冲区 直接方式: 发送进程发消息时要指定接收进程的名字, 反过来,接收时要指明发送进程的名字 Send(receiver,message) Receiver(sender,message) * 对称形式:一对一 * 非对称形式:多对一 (顾客/服务员) 有缓冲(有界,无界),无缓冲 间接方式: 发送进程发消息时不指定接收进程的名字,而是指定一个中间媒介,即信箱。进程间通过信箱实现通信 发送原语:send(MB,Message) 接收原语:receive(MB,Message) 我们这里用消息队列来理解一下: 我们将详细放到队列中,然后一一的取出,这里可以看到这个是间接通信,而我们的复制粘贴,是不是像极了这个过程? 五、套接字 双向的,数据格式为字节流(一对一)或报文(多对一,一对多);主要用于网络通信; 支持client-server模式和peer-to-peer模式,本机或网络中的两个或多个进程进行交互。提供TCP/IP协议支持 UNIX套接字(基于TCP/IP):send, sendto, recv, recvfrom; 在Windows NT中的规范称为"Winsock"(与协议独立,或支持多种协议):WSASend, WSASendto, WSARecv, WSARecvfrom; 上面的都是一个主机之间的通信,如果要主机与主机之间通信,那么就要用到套接字。 后记: 收获:我们知道了通信的类型,知道了共享存储区,管道,消息,套接字。 所以有人问你复制粘贴的原理是什么? 你就告诉它,这涉及到进程之间的通信,通过消息队列实现通信过程,是间接通信(在Windows中如果复制之后没有执行粘贴操作,会一直存在,就相当于放在了存储空间中,当关机的时候就消失了)。说完,丢给他一丢概念,然后潇洒的离开。 |
今日新闻 |
推荐新闻 |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |