半双工

服务端向客户端推送消息技术之websocket的介绍

早过忘川 提交于 2019-12-01 21:53:45
websocket的介绍 在讲解WebSocket前,我们先来看看下面这种场景,在HTTP协议下,怎么实现。 需求: 在网站中,要实现简单的聊天,这种情况怎么实现呢?如下图: 当发送私信的时候,如果要求实时同步的话,可以先让消息入库,等对方登陆之后,查询显示即可。如下图: 可是现在,需要实时消息,怎么办? 最简单的一种方式,就是写个定时任务,轮询查询去。如下图: 虽然这样可以实现,我们可以看到,每隔一定时间,就会去调用服务器接口,查询一次。这样很浪费系统资源的。我们来看看HTTP协议: 如上图: 客户端和服务器建立连接后,发送请求数据给服务器; 服务器接收请求后,处理完成并更加请求返回响应的呼作为回应; 客户端得到数据后,与服务器断开连接。 这就是HTTP三次握手。是基于TCP/IP的 从上图中,我们可以看到,http协议是典型的拉取方式,短链接的;是客户端向服务器拉取数据的。如果,客户端不发送请求,那么服务器的数据就不会主动给客户的的。 我们的需求是要实现即时聊天的。因为要即时,所以,不能考客户端拉取数据,就需要使用服务器主动给客户端推送数据的。就需要客户端和服务器实时保持着联系,也就是长连接。这种情况下,我们应该使用哪种技术来实现呢?实现方式有很多种,这里我们就用websocket来实现。 我们来看看WebSocket介绍: WebSocket 是HTML5一种新的协议

TCP和UDP的区别

北慕城南 提交于 2019-12-01 08:08:31
TCP和UDP都是传输层协议,但是两者具有不同的特性和应用场景 TCP UDP 可靠性 可靠 不可靠 连接性 面向连接 面向无连接 报文 面向字节流 面向报文 效率 低 高 双工性 全双工 一对一、一对多、多对一、多对多 流量控制 滑动窗口 无 拥塞控制 慢开始、拥塞避免、快重传、快恢复 无 传输速度 慢 快 应用场景 对效率要求低,对准确度要求高或者要求有连接的场景。比如:电子邮件(SMTP)、万维网(HTTP)、文件传输(FTP) 对效率要求高,对准确度要求低的场景。比如:域名转换(DNS)、远程文件服务器(NFS) TCP端口和UDP端口主要是区别,基本没什么联系:   1)TCP端口-- -传输控制协议 ,提供的是面向连接、可靠的字节流服务。当客户和服务器彼此交换数据前,必须先在双方之间建立一个TCP连接,之后才能传输数据。TCP提供超时重发,丢弃重复数据,检验数据,流量控制等功能,保证数据能从一端传到另一端。   2)UDP端口-- -用户数据报协议 ,是一个简单的面向数据报的运输层协议。UDP不提供可靠性,它只是把应用程序传给IP层的数据报发送出去,但是并不能保证它们能到达目的地。由于UDP在传输数据报前不用在客户和服务器之间建立一个连接,且没有超时重发等机制,故而传输速度很快。 名词解释: 1 面向报文和面向字节流   面向报文的传输方式是应用层交给UDP多长的报文

进程间的通信方式(java)

浪尽此生 提交于 2019-11-28 15:54:39
由于内存管理的一些机制,导致两个进程间并不能直接的进行通信(在独立的用户空间),因此我们需要利用一些介质来完成两个进程之间的通信。以下是常用的进程间通信方式。 管道(Pipe):管道是一种半双工的通信方式,数据只能单向流动,而且只能在具有亲缘关系进程间的通信,允许一个进程和另一个与它有共同祖先的进程之间进行通信。( 半双工:数据传输指数据可以在一个信号载体的两个方向上传输,但是不能同时传输。 ) 有名管道(named pipe): 有名管道也是半双工的通信方式,但是它允许无亲缘关系进程间的通信。命名管道在文件系统中有对应的文件名。命名管道通过命令 mkfifo 或系统调用 mkfifo 来创建。 信号(Signal):信号是比较复杂的通信方式,用于通知接受进程有某种事件发生。 消息(Message)队列:消息队列是 消息的链接表 。有足够权限的进程可以向队列中添加消息,被赋予读权限的进程则可以读走队列中的消息。消息队列克服了信号承载 信息量少 , 管道 只能承载 无格式字节流 以及缓冲区大小受限等缺点。 共享内存:使得多个进程可以访问同一块内存空间,是 最快的 可用IPC形式。是针对其他通信机制运行效率较低而设计的。往往与其它通信机制,如 信号量 结合使用,来达到进程间的同步及互斥。 内存映射(mapped memory):内存映射允许任何多个进程间通信

​802.11协议精读22:CCA (Clear Channel Assessment)

早过忘川 提交于 2019-11-27 03:17:55
序言 在之前介绍802.11中DCF工作模式时,我们讨论过信道检测的部分问题。在802.11中,信道检测包含两个部分,物理载波监听和虚拟载波监听,其中物理载波通常我们所述为CCA (Clear Channel Assessment)机制,本文就关于CCA的机制做一些介绍。 Remark:由于本文部分内容比较细节,建议是先阅读《802.11协议精读2:DCF与CSMA/CA》后,进而理解本文的一些内容。 802.11的需求 我们知道802.11协议是基于半双工的物理层进行设计的,半双工的物理层在设计时会有很多的细节问题需要考量,包含单根天线如何切换,如何识别收发时机等。有了这些基本因素的考量,我们才能够进一步设计802.11的MAC层协议,很多情况下,我们对802.11的MAC层协议理解不够彻底,也是因为对于其物理层的设计以及限制了解的不够多。基于此,我们首先谈谈在半双工情况下,802.11协议有什么需求: 需求1: 监听网络中是否有数据包正在发送,并该数据包的信号进行准确的截取。 该需求实际上是从下行的角度考虑的。我们首先考虑一个更简单的场景,一个AP发送,一个节点接收。节点仅仅接收数据包,没有任何的发送功能,从而就不需要引入CSMA/CA的竞争过程。 节点需要接收由AP发送过来的数据包,此时节点仅仅有一根天线接收无线信道,其需要从茫茫信号的海洋中,找到一个数据帧,并且

mysql存储引擎和执行计划

北城余情 提交于 2019-11-26 19:44:46
学习笔记用,转在咕泡学院 文章目录 存储引擎 存储引擎介绍 CSV存储引擎 Archive存储引擎 Memory存储引擎 Innodb 对比 MySQL体系结构及运行机制 Mysql体系 MySQL查询优化 1 mysql客户端/服务端通信 2 查询缓存 **工作原理:** **判断标准:** 查询缓存配置 mysql默认关闭缓存开启 使用业务场景 3 查询优化处理 4 查询执行引擎 5 返回客户端 执行计划 查询优化器找到最优执行计划 查询执行计划 **执行计划-id** 执行计划-select_type 执行计划-table 执行计划-type(索引) 执行计划-possible_keys、key、rows、filtered 执行计划-Extra 定位慢sql 慢查询日志配置 慢查询日志分析 慢查询日志分析工具 存储引擎 存储引擎介绍 1,插拔式的插件方式 2,存储引擎是指定在表之上的,即一个库中的每一个表都可以指定专用的存储引擎。 3,不管表采用什么样的存储引擎,都会在数据区,产生对应的一个frm文件(表结构定义描述文件) CSV存储引擎 数据存储以CSV文件 特点: 不能定义没有索引、列定义必须为 NOT NULL 、不能设置自增列 ​ 不适用大表或者数据的在线处理 CSV数据的存储用,隔开,可直接编辑CSV文件进行数据的编排 ​ 数据安全性低 注:编辑之后,要生效使用