目 录1 队列2 实现定容量队列(底层是数组)3 实现定容量队列(底层是双向链表)1 队列队列是一种线性的数据结构。它有两个主要的功能方法:一个是存入(put),一个是取出(take)。存入就是把元素存入队列中。取出就是从队列中拿走这个元素,拿走后队列中就不存在这个元素了。队列的存入和取出受FIFO(先进先出)原则限制,即最先存入队列的元素一定最先被取出。与此相对应的一种数据结构是栈,最先存入栈的
前阵子开发了公司领劵中心的项目,这个项目是以redis作为关键技术落地的。
转载 2022-03-29 17:18:21
280阅读
第八章 发布-订阅模式发布—订阅模式描述发布—订阅模式又叫观察者模式,它定义对象间的一种一对多的依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都将得到通知。发布—订阅模式可以广泛应用于异步编程中,这是一种替代传递回调函数的方案。发布—订阅模式可以取代对象之间硬编码的通知机制,一个对象不用再显地调用另外一个对象的某个接口。发布—订阅模式让两个对象松耦合地联系在一起,虽然不太清楚彼此的细节
MQ的相关概念什么是 MQMQ(message queue),从字面意思上看,本质是个队列,FIFO 先入先出,只不过队列中存放的内容是message 而已,还是一种跨进程的通信机制,用于上下游传递消息。在互联网架构中,MQ 是一种非常常见的上下游“逻辑解耦+物理解耦”的消息通信服务。使用了 MQ 之后,消息发送上游只需要依赖 MQ,不用依赖其他服务。为什么要用 MQ1.流量消峰在高峰期,如果有两
# 实时日志记录的Redis订阅实现 ## 介绍 在开发过程中,我们经常会遇到需要实时记录日志的场景。为了实现实时日志记录,我们可以使用Redis的发布-订阅机制。本文将详细介绍如何使用Redis订阅实现实时日志记录,并教会刚入行的小白如何进行实现。 ## 流程 下面是实现实时日志记录的Redis订阅的整体流程: | 步骤 | 描述 | | ------|-----| | 1. 创建Redi
原创 2023-11-13 04:49:01
92阅读
目录阻塞队列简介:介绍阻塞队列的特性与应用场景java中的阻塞队列:介绍java实现的供开发者使用的阻塞队列 BlockQueue中方法:介绍阻塞队列的API接口阻塞队列实现原理:具体的例子说明阻塞队列实现原理总结阻塞队列简介阻塞队列(BlockingQueue)首先是一个支持先进先出的队列,与普通的队列完全相同; 其次是一个支持阻塞操作的队列,即:当队列满时,会阻塞执行插入操作的线程,直到
转载 2023-06-03 23:42:20
299阅读
作者:我是林林 www.cnblogs.com/linlinismine/p/9214299.html 前阵子开发了公司领劵中心的项目,这个项目是以redis作为关键技术落地的。 先说一下领劵中心的项目吧,这个项目就类似京东app的领劵中心,当然图是截取京东的,公司的就不截了。。。 其中有一个功能叫
转载 2021-05-25 14:31:40
120阅读
在 Redis 中提供了专门的类型:Publisher(发布者)和 Subscriber(订阅者)来实现消息队列。在文章开始之前,先来介绍消息队列中有几个基础概念,以便大家更好的理解本文的内容。首先,发布消息的叫做发布方或发布者,也就是消息的生产者,而接收消息的叫做消息的订阅方或订阅者,也就是消费者,用来处理生产者发布的消息。除了发布和和订阅者,在消息队列中还有一个重要的概念:channel 意为
# Java实现实时系统的探索 在现代软件开发中,实时系统通常用于要求极高响应速度的应用场景,如金融交易系统、车载系统、医疗监控等。Java作为一种广泛使用的编程语言,其稳定性和跨平台特性,使其在开发实时系统方面也有了许多尝试。本文将通过具体示例探讨如何用Java实现实时系统,并提供相应的代码示例与流程图。 ## 1. 实时系统的定义 实时系统是指对响应时间有严格要求的系统,通常分为硬实时和
原创 2024-10-19 05:04:57
79阅读
RabbitMQ消息处理失败,我们会让失败消息进入重试队列等待执行,因为在重试队列距离真正执行还需要定义的时间间隔,因此,我们可以将重试队列设置成延时处理。今天参考网上其他人的实现,简单梳理下消息延时重试执行的思路。 消费失败后,自动延时将消息重新投递,当达到一定的重试次数后,将消息投递到失败消息队 ...
转载 2021-09-09 17:18:00
229阅读
2评论
通过发布/订阅者模式实现异步并发异步意味着我们期望得到的结果不会像同步那样顺序或串行拿到结果,什么时候得到结果是未知的 发布订-阅者模式实现异步并发非常简单,它的关键在于: 每次程序调用都会去执行(即发布)已经被订阅过的所有方法,在订阅的方法中去判断是否满足条件,满足条件则执行接下来的其它操作..实现流程定义对象, 该对象具有订阅方法、发布方法、用于存放订阅方法的集合let obj = { //
首先,这个聊天室是公司产品里的一个功能模块,期间经过了多次改造,最终成型,在速度和性能上都有很大的提升。借此,感谢一下领导的信任和技术支持。废话不多说,进入正题。 :D 完成的功能点: 1、能支持单聊和群聊功能 2、单聊时应该提供新消息提醒及聊天用户在线提示 3、用户登录实时刷新列表 4、提供简单的表情输入 5、单聊支持多人同时聊天
转载 2024-08-29 11:45:41
67阅读
RabbitMQ消息处理失败,我们会让失败消息进入重试队列等待执行,因为在重试队列距离真正执行还需要定义的时间间隔,因此,我们可以将重试队列设置成延时处理。今天参考网上其他人的实现,简单梳理下消息延时重试执行的思路。 消费失败后,自动延时将消息重新投递,当达到一定的重试次数后,将消息投递到失败消息队 ...
转载 2021-09-09 17:18:00
236阅读
2评论
java 观察这模式(发布订阅模式) 观察者设计模式定义了对象间的一种一对多的组合关系,以便一个对象的状态发生变化时,所有依赖于它的对象都得到通知并自动刷新。发布者发布信息,订阅者获取信息,订阅了就能收到信息,没订阅就收不到信息。抽象被观察者角色:也就是一个抽象主题,它把所有对观察者对象的引用保存在一个集合中,每个主题都可以有任意数量的观察者。抽象主题提供一个接口,可以增加和删除观察者角
转载 2023-07-10 21:27:59
180阅读
实现“异步队列”这点上,有人采用MySQL表或者redis来存放待发送的邮件,然后,每分钟定时读取待发送列表,然后处理。这便是定时异步任务队列
转载 2021-06-23 17:21:10
281阅读
/* bin_heap.h */#ifndef _BIN_HEAP_H#define _BIN_HEAP_Hstruct heap_struct;typedef struct heap_struct *priority_queue;priority_queue initialize(int max_elements);void destroy(priority_queue h);void m...
转载 2014-04-08 08:10:00
93阅读
2评论
假如要发100封邮件,for循环100遍,用户直接揭竿而起,什么破网站!但实际上,我们很可能有超过1万的邮件。怎么处理这个延迟的问题?答案就是用异步。把“发邮件”这个操作封装,然后后台异...
转载 2021-07-16 09:35:57
513阅读
什么是消息队列: 消息队列提供了从一个进程向另一个进程发送一个有类型数据块的方法。用这种方法可以避免命名管道的同步和阻塞问题。消息队列是基于消息的,而管道是基于字节流的,并且消息队列的读取不一定是先入先出。 消息队列的操作: 消息队列的创建或者获取: int msgget(key_t key, int msgflg); 参数描述: k
深切怀念传智播客张孝祥老师,特将其代表作——Java并发库视频研读两遍,受益颇丰,记以后阅18.java5阻塞队列的应用       队列包含固定长度的队列和不固定长度的队列,先进先出固定长度的队列往里放数据,如果放满了还要放,阻塞队列就会等待,直到有数据取出,空出位置后才继续放;非阻塞队列不能等待就只能报错了。 &nbsp
实现分布消息队列的延时消息之前,我们想想我们平时是如何在自己的应用程序上实现一些延时功能的?在Java中可以通过下面的方式来完成我们延时功能
转载 2023-03-11 21:30:05
602阅读
  • 1
  • 2
  • 3
  • 4
  • 5