队列

4月11日栈和队列

栈与队列与之前的类都有所不同,他们类似于一个适配器,他们的实现时给一个给定的表加一定的限制或属性使其成为队列或者栈, 可以看到他们里面的成员变量就是一个容器,而插入和删除也都是对里面容器的尾删和插入等,但是要注意的是因为顺序表效率原因不支持头插,所以队列的容器也不能支持vector类。 在queue ......
队列

RabbitMQ 11 死信队列

死信队列 概述 消息队列中的数据,如果迟迟没有消费者来处理,就会一直占用消息队列的空间。 比如抢车票的场景,用户下单高铁票之后,会进行抢座,然后再进行付款,但是如果用户下单之后并没有及时的付款,这张票不可能一直让这个用户占用着,因为这样别人就买不到这张票了,所以会在一段时间后超时,让这张票可以继续被 ......
死信 队列 RabbitMQ 11

Python queue (队列)

import threading import time import queue def producer(): count = 1 while 1: q.put('No.%i' % count) print('Producer put No.%i' % count) time.sleep(1) ......
队列 Python queue

消息队列常见的问题

消息队列的用途 概要的说有三点 解耦 异步 错峰,但使用了消息队列会导致系统可用性降低和复杂性的增加。 常见的消息队列的特点 1、吞吐量 kafka和RocketMQ要比ActiveMQ和RabbitMQ高一个数量级。 2、时效性 RabbitMQ是基于erlang设计,并发能力很强,性能和延时都很 ......
队列 常见 消息 问题

消息队列kafka及zookeeper机制

一、zookeeper1、zookeeper简介Zookeeper:开源分布式的服务,为分布式框架提供协调服务的apache项目 2、zookeeper特点①、zookper是一个领导者,多个跟随着组成 ②、集群中有半数以上节点存活,集群正常服务,奇数台最小3台 ③、全局数据一致,每个server保 ......
队列 zookeeper 机制 消息 kafka

线程和队列应用--消费者和生产者

1、用一个队列存储商品 2、创建一个专门生产商品的线程类,当商品数量少于50时,开始生产商品,每次生产200个商品,每生产一轮,暂停1s 3、创建一个专门消费商品的线程类,当商品数量大于10时就开始消费,循环消费,每次消费3个,当商品数量少于10的时候,暂停2s ......
生产者 队列 线程 消费者

4、循环队列

1、循环队列 我们上次基于动态数组实现的队列,出队是 O(n) 级别的,非常的 low,这里我用另外一种思路来实现队列 我们使用两个变量 front 和 tail,分别代表数组第一个元素的索引和最后一个元素的后一个索引 使用 data[front] 出队,data[tail] 入队 队列为空:siz ......
队列

spfa求最短路——BFS,数组实现邻接表,数组实现队列

题目描述 题目来源 AcWing 给定一个 n 个点 m 条边的有向图,图中可能存在重边和自环, 边权可能为负数。 请你求出 1 号点到 n 号点的最短距离,如果无法从 1 号点走到 n 号点,则输出impossible。 数据保证不存在负权回路。 输入格式 第一行包含整数 n 和 m。 接下来 m ......
数组 队列 spfa BFS

【Java 并发】【十】【JUC数据结构】【六】SynchronousQueue同步阻塞队列原理

1 前言 看过了LinkedBlockingQueue、ArrayBlockingQueue、DelayQueue等阻塞队列,这节我们又要看一个不一样的队列,SynchronousQueue同步阻塞队列。 2 SynchronousQueue是什么 SynchronousQueue的同步队列,使用的 ......

【Java 并发】【十】【JUC数据结构】【五】DelayQueue延迟阻塞队列原理

1 前言 前两节我们看了BlockingQueue阻塞队列的两个子类,LinkedBlockingQueue、ArrayBlockingQueue,它们都是使用了ReentrantLock、Condition的来实现的,在进行插入操作、拉取数据操作之前为了并发安全都需要进行加锁;然后插入时候在容量满 ......
数据结构 队列 DelayQueue 原理 结构

【Java 并发】【十】【JUC数据结构】【三】LinkedBlockingQueue阻塞队列原理

1 前言 这节我们就来看看LinkedBlockingQueue内部实现的原理。 2 LinkedBlockingQueue的使用 在看原理之前我们先来用一用LinkedBlockingQueue,来体验一下: 2.1 插入数据 public class LinkedBlockingQueueTes ......

js异步——事件循环和消息队列

前言 上篇文章中介绍了多进程的浏览器基本架构,现在,我们来谈谈单线程的 JS 代码、消息队列、事件循环、微任务和宏任务。 单线程的 JavaScript 什么是单线程 js? 如果你已经仔细阅读过上一篇文章,那么答案是显而易见的:由于浏览器是由渲染进程的主线程来执行 js 代码的,换句话说,js的运 ......
队列 消息 事件

【Java 并发】【十】【JUC数据结构】【二】BlockingQueue阻塞队列原理

1 前言 这节我们就来看看BlockingQueue阻塞队列是什么都有哪些具体实现。 2 BlockingQueue阻塞队列是什么 BlockingQueue阻塞队列,它是一个提供阻塞功能的队列容器。首先它是一个队列容器,能够存储东西,提供数据入队功能,进行数据存入;提供数据取出功能,进行出队,如下 ......

笔记2. 堆(优先队列)

堆(优先队列) 堆的概念 堆是满二叉树:从左到右依次变满(一般用数组下标存储) 父节点和左右节点的位置 节点i位置对应的父子节点位置 父节点: (i - 1) / 2; 左子节点: 2 * i + 1 右子节点: 2 * i + 2 大根堆和小根堆 大根堆:每棵子树的头节点为当前树的最大值 小根堆: ......
队列 笔记

【算法数据结构专题】「延时队列算法」史上手把手教你针对层级时间轮(TimingWheel)实现延时队列的开发实战落地(下)

承接上文 承接上一篇文章【算法数据结构专题】「延时队列算法」史上手把手教你针对层级时间轮(TimingWheel)实现延时队列的开发实战落地(上)】我们基本上对层级时间轮算法的基本原理有了一定的认识,本章节就从落地的角度进行分析和介绍如何通过Java进行实现一个属于我们自己的时间轮服务组件,最后,在 ......

数组模拟单向队列的思路及代码

JAVA实现数组模拟单向队列的思路及代码 一、什么是队列? 队列是一种特殊的线性表 ,特殊之处在于它只允许在表的前端(front)进行删除操作,而在表的后端(rear)进行插入操作,和栈一样,队列是一种操作受限制的线性表。 进行插入操作的端称为队尾,进行删除操作的端称为队头。 队列中没有元素时,称为 ......
队列 数组 单向 思路 代码

数组模拟环形队列的思路及代码

JAVA实现数组模拟环形队列的思路及代码 前言 在对Java实现数组模拟队列零了解的情况下,建议先去阅读《JAVA实现数组模拟单向队列的思路及代码》一文,可以辅助理解本文核心思想。 一、环形数组队列 实现:让数组达到复用的效果,即:当我们从数组队列中取出了数据,那取出数据后后这个空间可以再次使用。 ......
环形 队列 数组 思路 代码

【LeetCode剑指offer 01】数组中重复的数字、两个栈实现队列

数组中重复的数字 数组中重复的数字 找出数组中重复的数字。 在一个长度为 n 的数组 nums 里的所有数字都在 0~n-1 的范围内。数组中某些数字是重复的,但不知道有几个数字重复了,也不知道每个数字重复了几次。请找出数组中任意一个重复的数字。 示例 1: 输入: [2, 3, 1, 0, 2, ......
队列 数组 LeetCode 两个 数字

Redis 在消息队列中的应用

1.Redis 的 List 数据类型 1.1 List 数据类型的特点 List 列表是 Redis 提供的一种重要的数据类型。它是由若干个字符串元素组成的集合,并且每个字符串元素都是按照插入顺序排序的。也可以将列表理解为多个字符串组成的一个集合对象,并按照链表(Link List)的插入顺序排序 ......
队列 消息 Redis

【算法数据结构专题】「延时队列算法」史上手把手教你针对层级时间轮(TimingWheel)实现延时队列的开发实战落地(上)

承接上文 承接之前的【精华推荐 |【算法数据结构专题】「延时队列算法」史上非常详细分析和介绍如何通过时间轮(TimingWheel)实现延时队列的原理指南】,让我们基本上已经知道了「时间轮算法」原理和核心算法机制,接下来我们需要面向于实战开发以及落地角度进行分析如何实现时间轮的算法机制体系。 前言回 ......

强引用、软引用、弱引用、虚引用、引用队列、WeakHashMap

从JDK1.2版本开始,把对象的引用分为四种级别,从而使程序能更加灵活的控制对象的生命周期。这四种级别由高到低依次为:强引用、软引用、弱引用和虚引用。 Java中提供这四种引用类型主要有两个目的: 第一是可以让程序员通过代码的方式决定某些对象的生命周期; 第二是有利于JVM进行垃圾回收。 1.强引用 ......
队列 WeakHashMap

单机最快的队列Disruptor解析和使用

前言 介绍高性能队列Disruptor原理以及使用例子。 Disruptor是什么? Disruptor是外汇和加密货币交易所运营商 LMAX group 建立高性能的金融交易所的结果。用于解决生产者、消费者及其数据存储的设计问题的高性能队列实现。可以对标JDK中的ArrayBlockingQueu ......
队列 单机 Disruptor

消息队列面试题

为什么要使用消息队列? 主要有三点原因:解耦、异步、削峰。 (1)解耦。比如,用户下单后,订单系统需要通知库存系统,假如库存系统无法访问,则订单减库存将失败,从而导致订单操作失败。订单系统与库存系统耦合,这个时候如果使用消息队列,可以返回给用户成功,先把消息持久化,等库存系统恢复后,就可以正常消费减 ......
队列 消息

Domino (贪心,多个位置排序,优先队列) 第二十届浙大城市学院程序设计竞赛

题目大意: 给出2个队列A,B 选 K 个 ai 和 在从里面选L个 bi 问权值最大时多少 思路: 排序预处理 有多个元素的时候, 对那个元素首先排序,以至于可以处理这个问题是很重要的 当不能一步直接贪心出来,可以 先贪部分,然后利用DP的思想慢慢加入点去更新即可 先对ai 排序, 然后选bi个最 ......
队列 程序设计 多个 位置 程序

单调队列与滑动窗口一

单调队列--滑动窗口最值问题 显然O(n^2)的时间复杂度是无法接受的 我们先考虑滑动窗口滑动过程中最大值的问题 过程即为我们想要维护每个滑动区间的最大值,当新插入一个元素前,我们把这个区间的第一个元素移除,插入新元素,并想在尽可能贴近O(1)的时间内得到该区间的最大值。 这里是十分美妙的想法,借助 ......
队列

滑动窗口【单调队列模板题】【数组模拟双端队列】

滑动窗口 /【模板】单调队列【双端队列】 题目描述 有一个长为 $n$ 的序列 $a$,以及一个大小为 $k$ 的窗口。现在这个从左边开始向右滑动,每次滑动一个单位,求出每次滑动后窗口中的最大值和最小值。 例如: The array is $[1,3,-1,-3,5,3,6,7]$, and $k ......
队列 数组 模板

进程间通信 消息队列

System V IP IPC : Inter-Process Communication (进程间通讯) System V 是早期的unix 系统,曾经被称为 AT & T System ,是 unix 操作系统中比较重要的一个分支,现在Linux 系统一般都支持 System V IPC Sys ......
队列 进程 消息

PHP消息队列实现及应用

目前对消息队列并不了解其原理,本篇文章主要是通过慕课网学习归纳的一些笔记,为后续学习打下基础。 众所周知在对网站设计的时候,会遇到给用户“群发短信”,“订单系统有大量的日志”,“秒杀设计”等,服务器没法处理这种瞬间迸发的压力,这种情况要保证系统正常有效的使用,就需要“消息队列”的帮助。本篇主要通过消 ......
队列 消息 PHP

rabbitmq消息队列之持久化

在生产过程中,难免会发生服务器宕机的事情,RabbitMQ也不例外,可能由于某种特殊情况下的异常而导致RabbitMQ宕机从而重启,那么这个时候对于消息队列里的数据,包括交换机、队列以及队列中存在消息恢复就显得尤为重要了。RabbitMQ本身带有持久化机制,包括交换机、队列以及消息的持久化。持久化的 ......
队列 rabbitmq 消息

进程间通信-消息队列

System V IPC IPC : Inter-Process Communication(进程间通讯) System V 是早期的unix 系统,曾经被称为 AT &T System ,是 unix 操作系统中比较重要的一个分支,现在0Linux 系统一般都支持 System V IPC Sys ......
队列 进程 消息