数据结构之线性数据结构(学习笔记)

数组:

    随机访问,连续空间对cpu的缓存机制友好

链表:

    易于动态扩展,无法随机访问,空间分散

栈:

    后进先出,push,pop

    应用场景:

        浏览器的回退和前进

        检查符号是否成对出现

        反转字符串

        维护函数调用:嵌套调用函数时最后一个调用的函数必须先完成执行

    栈的实现:

        数组:

        链表:

队列:

    先进先出,可用数组或者链表来实现

    队列分类:

        单队列:

            ("假溢出")

            顺序队列:数组实现

            链式队列:链表实现

        循环队列:

            头尾相连,没有"假溢出"

            当front==rear时,有两种情况,一是队列为空,二是队列为满

            解决方法:

                设置一个标志位

                当还剩一个位置的时候就认为满了

        双端队列:

                在队列的两端都可以插入和删除

        优先队列:

                基于堆实现

    应用场景:

        线程池:

        阻塞队列:为空的时候出队阻塞,满的时候入队阻塞

        栈:双端队列可以实现栈

        消息队列(Message Queue)

            是一种在分布式系统中用于传递消息的异步通信机制。它允许应用程序或服务之间通过发送和接收消息进行通信,而不需要直接进行点对点的连接。

            消息队列的基本思想是,发送者将消息放入队列中,然后接收者从队列中获取消息进行处理。这种方式解耦了发送者和接收者之间的关系,使得它们可以独立地进行工作。发送者只需关心将消息发送到队列中,而无需关心消息被谁接收;接收者只需从队列中获取消息进行处理,而无需关心消息是由谁发送的。

            消息队列具有以下特点:

  1. 异步性:发送者和接收者可以独立地进行工作,不需要实时等待彼此的响应。发送者将消息放入队列后即可继续执行其他任务,接收者则可以按自己的节奏从队列中获取消息。
  2. 解耦性:发送者和接收者之间的联系通过队列来建立,它们不需要直接知道彼此的存在。这样可以提高系统的灵活性和可扩展性,允许新增或删除发送者和接收者而不会对整个系统产生影响。
  3. 可靠性:消息队列通常提供持久化机制,确保即使在系统故障或重启后,消息仍然可靠地存储和传递。
  4. 缓冲能力:消息队列可以作为缓冲区,用于处理发送者和接收者之间的流量不平衡。如果接收者处理速度较慢,消息将在队列中等待被处理;如果接收者处理速度较快,消息将被快速消费。

常见的消息队列系统包括 RabbitMQ、Apache Kafka、ActiveMQ 等。它们提供了各种功能和特性,如多种消息模式(点对点、发布-订阅)、消息持久化、消息过滤、消息事务等,以满足不同场景下的需求。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值