精华内容
下载资源
问答
  • RabbitMq09——confirm串行和并行模式

    千次阅读 2018-07-12 23:53:46
    之前我们确定一个消息是否发送成功是从消费者是否接收到来判断的,但是在实际应用中,消费者生产者往往是分开部署的,我们也不可能每发送一条消息就...confirm串行模式 生产者 package com.mmr.rabbitmq.confir...

    之前我们确定一个消息是否发送成功是从消费者是否接收到来判断的,但是在实际应用中,消费者和生产者往往是分开部署的,我们也不可能每发送一条消息就去消费者那里确认一下,所有我们需要一个机制来确认消息发送后是否成功到达了消息队列,下面来介绍几种在生产者端来确认消息发送状态的方法。(本篇及上一篇事务模式)

    confirm串行模式

    生产者

    package com.mmr.rabbitmq.confirm01;
    
    import com.mmr.rabbitmq.util.ConnectionUtils;
    import com.rabbitmq.client.Channel;
    import com.rabbitmq.client.Connection;
    
    public class Send {
    	
    	private static final String QUEUE_NAME="QUEUE_confirm";//定义队列名
    
    	public static void main(String[] args) throws Exception
    	{
    		Connection connection = ConnectionUtils.getConnection();
    		
    		Channel channel = connection.createChannel();//获取一个信道
    		
    		channel.queueDeclare(QUEUE_NAME, false, false, false, null);
    		
    		channel.confirmSelect(); //将信道设置成confirm模式
    		String msg="Hello confirm QUEUE !";
    		
    		//可使用循环发送多条消息
    		for (int i = 0; i < 10; i++) {
    			channel.basicPublish("", QUEUE_NAME, null, msg.getBytes());
    		
    			System.out.println("---------send ms :"+msg);
    		}
    		
    		//调用方法确认消息是否发送成功
    		//如果在发送多条消息后调用该方法为批量处理操作,即确认调用该方法之前的所有消息的状态
    		//批量确认时,如果有一条消息发送失败,则此批量所有消息都失败
    		if(channel.waitForConfirms())
    		{
    			System.out.println("发送成功");
    		}else{
    			System.out.println("发送失败!!!!!!!");
    		}
    		
    		channel.close();
    		connection.close();
    	}
    
    }
    

    消费者

    package com.mmr.rabbitmq.confirm01;
    
    import java.io.IOException;
    
    import com.mmr.rabbitmq.util.ConnectionUtils;
    import com.rabbitmq.client.AMQP.BasicProperties;
    import com.rabbitmq.client.Channel;
    import com.rabbitmq.client.Connection;
    import com.rabbitmq.client.DefaultConsumer;
    import com.rabbitmq.client.Envelope;
    
    public class Recv {
    	
    	private static final String QUEUE_NAME="QUEUE_confirm";	
    	
    	public static void main(String[] args) throws Exception {
    		
    		Connection connection = ConnectionUtils.getConnection();
    		Channel channel = connection.createChannel();
    		
    		channel.queueDeclare(QUEUE_NAME, false, false, false, null);
    		
    		//定义一个默认的xiaoeiz
    		DefaultConsumer consumer = new DefaultConsumer(channel){
    
    			@Override
    			public void handleDelivery(String consumerTag, Envelope envelope, BasicProperties properties, byte[] body)
    					throws IOException {
    				String msg = new String(body, "utf-8");
    				System.out.println("Rev--->" + msg);
    				try {
    					Thread.sleep(5000);
    				} catch (InterruptedException e) {
    					// TODO Auto-generated catch block
    					e.printStackTrace();
    				}
    			}
    		};
    		
    		channel.basicConsume(QUEUE_NAME, true, consumer);
    		
    	}
    
    }
    

    confirm并行模式

    生产者

    package com.mmr.rabbitmq.confirm02;
    
    import java.io.IOException;
    import java.util.Collections;
    import java.util.SortedSet;
    import java.util.TreeSet;
    
    import com.mmr.rabbitmq.util.ConnectionUtils;
    import com.rabbitmq.client.Channel;
    import com.rabbitmq.client.ConfirmListener;
    import com.rabbitmq.client.Connection;
    
    public class Send {
    	
    	private static final String QUEUE_NAME="QUEUE_confirm_bing";//定义队列名
    
    	public static void main(String[] args) throws Exception
    	{
    		Connection connection = ConnectionUtils.getConnection();
    		
    		Channel channel = connection.createChannel();//获取一个信道
    		
    		channel.queueDeclare(QUEUE_NAME, false, false, false, null);
    		
    		//存放已发送消息的唯一标识
    		final SortedSet<Long>  confirmSet = Collections.synchronizedSortedSet(new TreeSet<Long>());
    		
    		channel.confirmSelect(); //将信道设置成confirm模式
    		String msg="Hello confirm QUEUE !";
    		
    		//获取下次发送消息的标识
    		Long num = channel.getNextPublishSeqNo();
    		channel.basicPublish("", QUEUE_NAME, null, msg.getBytes());
    		
    		//每发送一条消息向集合中添加一条
    		confirmSet.add(num);
    		
    		System.out.println("---------send ms :" + msg);
    		System.out.println("the only num is::::: :" + num);
    			
    		channel.addConfirmListener(new ConfirmListener()
    		{
    			//消息发送失败时回调的方法
    			//deliveryTag 消息的表示,每条消息都是独一无二的
    			//multiple 返回确认的消息是多条还是一条,true为多条
    			public void handleNack(long deliveryTag, boolean multiple) throws IOException
    			{
    				System.out.println("消息发送成功了!!!!!!!!");
    				if(multiple){
    					System.out.println("multiple is --------->" + multiple);
    					System.out.println("deliveryTag is --------->" + deliveryTag);
    					confirmSet.headSet(deliveryTag + 1).clear();
    				}else{
    					System.out.println("multiple is --------->" + multiple);
    					System.out.println("deliveryTag is --------->" + deliveryTag);
    					confirmSet.remove(deliveryTag);
    				}
    				
    			}
    			
    			//消息发送成功时回调的方法
    			public void handleAck(long deliveryTag, boolean multiple) throws IOException
    			{
    				System.out.println("消息发送失败了!!!!!!!!");
    				if(multiple){
    					System.out.println("multiple is --------->" + multiple);
    					System.out.println("deliveryTag is --------->" + deliveryTag);
    					confirmSet.headSet(deliveryTag + 1).clear();
    				}else{
    					System.out.println("multiple is --------->" + multiple);
    					System.out.println("deliveryTag is --------->" + deliveryTag);
    					confirmSet.remove(deliveryTag);
    				}
    				
    			}
    		});
    		
    	}
    
    }
    

    消费者与串行模式相同,只需更改队列名即可。

    扫码关注公众号“魔性JAVA”,免费领取超实用软件开发资料视频(包括大数据,前端完整视频,maven教程视频,java面试必备视频教程,Java并发视频教程)

    该公众号致力于为大家分享工作中会用到一些简单实用的小知识,而不是那些悬在云端的高大上但又感觉空泛的文章,欢迎大家关注,谢谢!

    展开全文
  • command - Go命令模式用于线程安全的串行和并行调度程序
  • 基于STM32的AD9850并行和串行模式程序,并且是基于HAL库进行开发的。
  • 串行通信可以采用多种形式,具体取决于传输模式和数据传输的类型。该传输模式被归类为单工,半双工和全双工。每种传输模式都有一个源(也称为发送器)和目的地(也称为接收器)。数据传输可以通过两种方式进行。它们是...

    在串行通信中,数据是二进制脉冲的形式。换句话说,我们可以说二进制1表示逻辑高电平或5伏特,零表示逻辑低电平或0伏特。串行通信可以采用多种形式,具体取决于传输模式和数据传输的类型。该传输模式被归类为单工,半双工和全双工。每种传输模式都有一个源(也称为发送器)和目的地(也称为接收器)。

    739bf3ac9a31ab162758c7a66f4e3e17.png

    数据传输可以通过两种方式进行。它们是串行通信和并行通信。

    串行通信是一种使用双线即发送器(发送器)和接收器逐位发送数据的技术。使用类似技术的通讯产品包括串口服务器,以太网模块等产品。

    例如,我想从发送器向接收器发送8位二进制数据11001110。但是,哪一点首先消失?最高有效位 - MSB(第 7 位)或最低有效位 - LSB(第 0 位)。我们不能说。在这里,我正在考虑LSB首先移动(对于小Endian)。

    并行通信一次移动8,16或32位数据。打印机和Xerox机器使用并行通信来加快数据传输速度。

    64f16d45dacd504b0585d4df70978b14.png

    串行和并行通信之间的区别

    串行通信一次只发送一位。因此,这些需要更少的I / O(输入 - 输出)线。因此,占用更少的空间并且更能抵抗串扰。串行通信的主要优点是整个嵌入式系统的成本变得便宜并且可以长距离传输信息。串行传输用于DCE(数据通信设备)设备,如调制解调器。

    5c3dafcaed5351762bb25d5d933c103b.png

    在并行通信中,一次发送一块数据(8,16或32位)。因此,每个数据位都需要一个单独的物理I / O线。并行通信的优点是速度快但缺点是它使用了更多的I / O(输入 - 输出)线。并行传输用于PC(个人计算机),用于互连CPU(中央处理单元),RAM(随机存取存储器),调制解调器,音频,视频和网络硬件。

    注意:如果您的集成电路或处理器支持较少量的输入/输出引脚,则最好选择串行通信。

    b780f653799ffaa7e0dfe30eec590551.png

    时钟同步

    为了有效地处理串行设备,时钟是主要来源。时钟故障可能导致意外结果。每个串行设备的时钟信号不同,它分为同步协议和异步协议。

    同步串行接口

    同步串行接口上的所有设备都使用单CPU总线来共享时钟和数据。由于这个事实,数据传输更快。优点是波特率不会失配。此外,接口组件需要更少的I / O(输入 - 输出)线。例如I2C,SPI等。

    2f4d8567af4f59ea9e879841832fa3d2.png

    异步串行接口

    该异步接口不具有外部时钟信号,并将其即依赖于四个参数

    1.波特率控制

    2.数据流控制

    3.传输和接收控制

    4.错误控制。

    异步协议适用于稳定通信。这些用于长距离应用。异步协议的示例是RS-232,RS-422和RS-485。

    300220916c4a5ed078c04b63667dba9a.png

    好了,以上内容就是帝特电子关于串行通信和并行通信的区别的详细介绍,希望能对大家有所帮助!感谢您的阅读与支持,欢迎关注与留言!

    展开全文
  • 并行传输数据和串行传输数据 计算机系统中的并行处理数据传输模式 (Parallel Processing and Data Transfer Modes in a Computer System) Instead of processing each instruction sequentially, a parallel ...

    并行传输数据和串行传输数据

    Instead of processing each instruction sequentially, a parallel processing system provides concurrent data processing to increase the execution time.

    并行处理系统不是顺序处理每个指令,而是提供并行数据处理以增加执行时间。

    In this the system may have two or more ALU's and should be able to execute two or more instructions at the same time. The purpose of parallel processing is to speed up the computer processing capability and increase its throughput.

    在这种情况下,系统可能具有两个或多个ALU,并且应该能够同时执行两个或多个指令。 并行处理的目的是加快计算机处理能力并提高其吞吐量。

    NOTE: Throughput is the number of instructions that can be executed in a unit of time.

    注意: 吞吐量是单位时间内可以执行的指令数。

    Parallel processing can be viewed from various levels of complexity. At the lowest level, we distinguish between parallel and serial operations by the type of registers used. At the higher level of complexity, parallel processing can be achieved by using multiple functional units that perform many operations simultaneously.

    可以从各种复杂度上查看并行处理。 在最低层次上,我们通过使用的寄存器类型区分并行操作和串行操作。 在较高的复杂度上,可以通过使用同时执行许多操作的多个功能单元来实现并行处理。

    Mapping and Concept of Virtual Memory

    计算机系统的数据传输模式 (Data Transfer Modes of a Computer System)

    According to the data transfer mode, computer can be divided into 4 major groups:

    根据数据传输方式,计算机可分为4大类:

    1. SISD

      可持续发展研究所

    2. SIMD

      SIMD

    3. MISD

      MISD

    4. MIMD

      MIMD

    SISD(单指令流,单数据流) (SISD (Single Instruction Stream, Single Data Stream))

    It represents the organization of a single computer containing a control unit, processor unit and a memory unit. Instructions are executed sequentially. It can be achieved by pipelining or multiple functional units.

    它代表了包含控制单元,处理器单元和存储单元的单个计算机的组织。 指令按顺序执行。 可以通过流水线或多个功能单元来实现。

    SIMD(单指令流,多数据流) (SIMD (Single Instruction Stream, Multiple Data Stream))

    It represents an organization that includes multiple processing units under the control of a common control unit. All processors receive the same instruction from control unit but operate on different parts of the data.

    它代表一个组织,在一个公共控制单元的控制下包括多个处理单元。 所有处理器都从控制单元接收相同的指令,但是对数据的不同部分进行操作。

    They are highly specialized computers. They are basically used for numerical problems that are expressed in the form of vector or matrix. But they are not suitable for other types of computations

    它们是高度专业的计算机。 它们基本上用于以向量或矩阵形式表示的数值问题。 但是它们不适合其他类型的计算

    MISD(多指令流,单数据流) (MISD (Multiple Instruction Stream, Single Data Stream))

    It consists of a single computer containing multiple processors connected with multiple control units and a common memory unit. It is capable of processing several instructions over single data stream simultaneously. MISD structure is only of theoretical interest since no practical system has been constructed using this organization.

    它由一台计算机组成,其中包含与多个控制单元和一个公共存储单元连接的多个处理器。 它能够同时在单个数据流上处理多个指令。 MISD结构仅具有理论意义,因为尚未使用该组织构建实用系统。

    MIMD(多指令流,多数据流 (MIMD (Multiple Instruction Stream, Multiple Data Stream)

    It represents the organization which is capable of processing several programs at same time. It is the organization of a single computer containing multiple processors connected with multiple control units and a shared memory unit. The shared memory unit contains multiple modules to communicate with all processors simultaneously. Multiprocessors and multicomputer are the examples of MIMD. It fulfills the demand of large scale computations.

    它代表能够同时处理多个程序的组织。 它是一台计算机的组织,其中包含与多个控制单元和一个共享存储单元连接的多个处理器。 共享内存单元包含多个模块,可同时与所有处理器通信。 多处理器和多计算机是MIMD的示例。 它满足了大规模计算的需求。

    翻译自: https://www.studytonight.com/computer-architecture/parallel-processing-and-data-transfer

    并行传输数据和串行传输数据

    展开全文
  • 串行通信可以采用多种形式,具体取决于传输模式和数据传输的类型。该传输模式被归类为单工,半双工和全双工。每种传输模式都有一个源(也称为发送器)和目的地(也称为接收器)。数据传输可以通过两种方式进行。它们是...

    在串行通信中,数据是二进制脉冲的形式。换句话说,我们可以说二进制1表示逻辑高电平或5伏特,零表示逻辑低电平或0伏特。串行通信可以采用多种形式,具体取决于传输模式和数据传输的类型。该传输模式被归类为单工,半双工和全双工。每种传输模式都有一个源(也称为发送器)和目的地(也称为接收器)。

    5fb7c77f02a2dc07a70980847795a63f.png

    数据传输可以通过两种方式进行。它们是串行通信和并行通信。

    串行通信是一种使用双线即发送器(发送器)和接收器逐位发送数据的技术。使用类似技术的通讯产品包括串口服务器,以太网模块等产品。

    例如,我想从发送器向接收器发送8位二进制数据11001110。但是,哪一点首先消失?最高有效位 - MSB(第 7 位)或最低有效位 - LSB(第 0 位)。我们不能说。在这里,我正在考虑LSB首先移动(对于小Endian)。

    并行通信一次移动8,16或32位数据。打印机和Xerox机器使用并行通信来加快数据传输速度。

    1c80cb8f5868ad98f9ae07c788761a31.png

    串行和并行通信之间的区别

    串行通信一次只发送一位。因此,这些需要更少的I / O(输入 - 输出)线。因此,占用更少的空间并且更能抵抗串扰。串行通信的主要优点是整个嵌入式系统的成本变得便宜并且可以长距离传输信息。串行传输用于DCE(数据通信设备)设备,如调制解调器。

    5cd4defb951de1f198ed3a6a893f6ae5.png

    在并行通信中,一次发送一块数据(8,16或32位)。因此,每个数据位都需要一个单独的物理I / O线。并行通信的优点是速度快但缺点是它使用了更多的I / O(输入 - 输出)线。并行传输用于PC(个人计算机),用于互连CPU(中央处理单元),RAM(随机存取存储器),调制解调器,音频,视频和网络硬件。

    注意:如果您的集成电路或处理器支持较少量的输入/输出引脚,则最好选择串行通信。

    b9f1a6d2b8bc3030e0d08fd971725de3.png

    时钟同步

    为了有效地处理串行设备,时钟是主要来源。时钟故障可能导致意外结果。每个串行设备的时钟信号不同,它分为同步协议和异步协议。

    同步串行接口

    同步串行接口上的所有设备都使用单CPU总线来共享时钟和数据。由于这个事实,数据传输更快。优点是波特率不会失配。此外,接口组件需要更少的I / O(输入 - 输出)线。例如I2C,SPI等。

    f4eaf4a84b774a91dd1ba933e3d190ef.png

    异步串行接口

    该异步接口不具有外部时钟信号,并将其即依赖于四个参数

    1.波特率控制

    2.数据流控制

    3.传输和接收控制

    4.错误控制。

    异步协议适用于稳定通信。这些用于长距离应用。异步协议的示例是RS-232,RS-422和RS-485。

    6d01c6ee025bbdb5aed0dde0cea53bb1.png

    好了,以上内容就是帝特电子关于串行通信和并行通信的区别的详细介绍,希望能对大家有所帮助!感谢您的阅读与支持,欢迎关注与留言!

    展开全文
  • 2.如何让他们并行执行,然后三个请求都执行完成后,再执行某个操作? 我觉得写三个$.ajax不就是并发执行了吗,然后遍历看是否都返回结果了,如果都返回结果了,再进行继续的操作,这么想对吗? 意义是什么呢? 经过...
  • 随着技术的成熟,越来越多的主板硬盘都开始支持SATA(串行ATA),SATA接口逐渐有取代传统的PATA(并行ATA)的趋势。那么SATAPATA在传输模式上有何区别,SATA相对PATA又有何优势呢?这就是本文的话题。 何谓并行ATA ...
  • ajax请求串行和并行的问题

    千次阅读 2017-05-30 23:48:57
    2.如何让他们并行执行,然后三个请求都执行完成后,再执行某个操作? //串行执行分两种。 //一是用同步模式async: false,三个ajax请求连着写就可以了。 $.ajax({ url: "ajax请求1", async: false,
  • 串行方式可能执行时间比较长(与批量的条数有关),而串行方式可能需要很多线程并行参与,需要线程切换同步比较多。对于一些性能要求比较高的推荐使用串行方式,对于一些要求返回结果比较快的推荐并行方式。一般...
  • 串行硬盘与并行硬盘 随着技术的成熟,越来越多的主板硬盘都开始支持SATA(串行ATA),SATA接口逐渐有取代传统的PATA(并行ATA)的趋势。那么SATAPATA在传输模式上有何区别,SATA相对PATA又有何优势呢?...
  • 任务61:AJAX中的串行和并行(回调地狱) 1.Promise简介 Promise是ES6中新增的一个内置类:它是一种“承诺“设计模式,主要是有效规划异步编程的代码, 尤其是再处理AJAX异步请求的“回调地狱”上有很大的帮助。 2....
  • 并行设计模式

    2018-11-06 18:44:18
    目录 一.Future模式 二.Master-Worker模式 ...因此合理的使用并行模式在多线程开发中更具有意义。在这里主要介绍Future、Master-Worker生产者-消费者模型。 一.Future模式 Future模式有点类似于商品订单。比如...
  • 摘要:串行和并行接口模式是A/D转换器诸多分类中的一种,但却是应用中器件选择的一个重要指标。在同样的转换分辨率及转换速度的前提下,不同的接口方式不但影响了电路结构,更重要的是将在高速数据采集的过程中对...
  • 因此,合理的使用并行模式在多线程开发中,更具有积极意义。并行程序设计模式主要有 Future模式 、Master-Worker模式、Guarded Suspeionsion模式、不变模式和生产者-消费者模式,本文主要讲解 Future模式 Future...
  • 摘要:串行和并行接口模式是A/D转换器诸多分类中的一种,但却是应用中器件选择的一个重要指标。在同样的转换分辨率及转换速度的前提下,不同的接口方式不但影响了电路结构,更重要的是将在高速数据采集的过程中对...
  • 因此,合理的使用并行模式在多线程开发中,更具有积极意义。并行程序设计模式主要有 Future模式 、Master-Worker模式、Guarded Suspension模式、不变模式和生产者-消费者模式,本文主要讲解 Future模式    ...
  • 并行设计模式属于设计优化的一部分,它是对一些常用...并行程序设计模式主要有 Future模式 、Master-Worker模式、Guarded Suspeionsion模式、不变模式和生产者-消费者模式,本文主要讲解 Master-Worker模式 Master
  • SerialDownloaderParallelDownloader,它们共用一个完成资源表,且串行下载集成了优先机制(DownloadPriority),并行下载也根据需要封装了并行队列模式(QueueParallelDownloader): DownloadBase /// <...
  • 随着技术的成熟,越来越多的主板硬盘都开始支持SATA(串行ATA),SATA接口逐渐有取代传统的PATA(并行ATA)的趋势。那么SATAPATA在传输模式上有何区别,SATA相对PATA又有何优势呢?这就正是本文需要讨论的话题。 ...
  • 并行设计模式属于设计优化的一部分,是对一些常用的多线程结构的总结抽象。与串行程序相比,并行程序的结构通常更加复杂 Future模式有些类似于外卖点单。用户下单之后便在家中等待外卖小哥将外卖配送至客户手中。...
  • 多媒体应用程序的一个最突出的特点就是其内在的并行性,要求同时对多个数据...得到显式的并行化中间表示,基于这种数据流图表示,采用改进的树模式匹配实现子字并行指令选择代码生成。实验测试表明了该方法的有效性。
  • 串行工作模式之同步移位寄存器的输入输出方式 主要用于扩展并行输入或输出口。数据有RXD(P3.0)引脚输入或输出,同步移位脉冲由TXD(P3.1)引脚输出。发送接受均为8位数据。低位在前,高位在后。 //串行口...
  • Master-Worker设计模式核心思想是将原来串行的逻辑并行化,并将逻辑拆分成很多独立模块并行执行,其中主要包含两个主要组件MasterWorker,Master主要讲逻辑进行查分,拆分为互相独立的部分,同时维护了Worker队列,...
  •  Master-Worker是将串行处理,变为并行处理。有很多的Worker处理串行任务获得子结果集,那么需要个Master来处理这些子结果集,获取和串行相同的结果集。  (2)、角色有  Worker:工作者,处理单个任务。  ...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 681
精华内容 272
关键字:

串行模式和并行模式