队列Queue和栈Stack

news2024/11/29 22:50:30
什么是队列queue?

先进先出表,是一种受限制的线性表.其限制是仅允许在表的队尾进行插入数据和表的队头进行删除数据.

队列的使用场景: 线程池ThreadPoolExecutor
  1. ThreadPoolExecutor源码中核心变量(前面3个是重点)
  • corePoolSize线程池维护的最小线程数量,哪怕是空闲的
  • BlockQueue<Runnable> workQueue阻塞队列
  • maximumPoolSize线程池维护的最大线程数量
  • ReentrantLock mainLock互斥锁
  • HashSet<Worker> workers线程集合,一个Worker对应一个线程
  • Condition termination终止条件
  • largestPoolSize线程池中线程数量曾经达到过的最大值
  • completedTaskCount已完成任务数量
  • ThreadFactory threadFactoryThreadFactory对象,用于创建线程
  • RejectedExecutionHandler handler拒绝策略的处理句柄
  • keepAliveTime线程池维护线程所允许的空闲时间
  • allowCoreThreadTimeOut
  1. ThreadPoolExecutor执行流程图如下:
    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-3qxyVm9h-1684035004552)(evernotecid://3A22127D-0425-400F-9B33-054BC6B3328D/appyinxiangcom/40619816/ENResource/p5)]

扩展知识:

  • 队列假溢出、循环队列、双端队列(概念: 插入和删除操作在表的两端进行. 例如: LinkedList ArrayQueue RedisQueue)、优先级队列(概念: 队列中每个元素都有一个优先级. 例如:MessageQueue)
stack

后进先出表,是一种受限制的线性表.其限制是仅允许在表的栈顶进行插入和删除数据.

方法:

  • push(E item) 新增
  • pop() 删除
  • peek() 查询栈顶元素
  • empty() 栈的非空判断
  • search(Object o) 查询元素在栈中的索引

栈的面试题
Java中的栈Stack是通过Vector来实现的,这种设计被认为是不良的设计,说说你的看法?

因为Vector中可以在指定位置index添加和删除元素,而栈stack的特性是只能在栈顶添加和删除元素,所以Stack继承自Vector有些不符.

栈的经典应用-逆波兰表达式法

JVM虚拟机

Java编译器和操作系统平台之间的虚拟处理器

StackOverFlowError

出现的情况,递归调用造成的死循环

OutOfMemoryError

创建的对象占用内存超过了我们设备的内存大小时报这个错

拓展知识:
JVM栈的每一个栈帧(slot)大小都是4bytes(4字节),一个对象的引用刚好占一个栈帧4字节

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/523684.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Carla仿真三:Traffic Manager交通管理器详解

CARLA Traffic Manager 一、什么是Traffic Manager1、Traffic Manager简介2、Traffic Manager框架3、Traffic Manager模块 二、Traffic Manager控制方法1、TM控制交通参与者的自动驾驶的规则2、TM控制交通参与者行为的API摘要3、TM控制交通参与者行为的API 三、Traffic Manager…

力扣sql中等篇练习(十九)

力扣sql中等篇练习(十九) 1 苹果和桔子的个数 1.1 题目内容 1.1.1 基本题目信息1 1.1.2 基本题目信息2 1.1.3 示例输入输出 a 示例输入 b 示例输出 1.2 示例sql语句 # 没有使用group by也可以使用sum函数,因为默认是所有数据行自成一组 SELECT SUM(b.apple_countIFNULL(c.…

[LeetCode周赛复盘] 第 104 场双周赛20230513

[LeetCode周赛复盘] 第 104 场双周赛20230513 一、本周周赛总结6366. 老人的数目1. 题目描述2. 思路分析3. 代码实现 6367. 矩阵中的和1. 题目描述2. 思路分析3. 代码实现 6369. 最大或值1. 题目描述2. 思路分析3. 代码实现 6423. 英雄的力量1. 题目描述2. 思路分析3. 代码实现…

C:sh: 总是爆出:1: pause: not found

在linux平台下应该使用&#xff1a;pause() 导入&#xff1a;#include unistd.h 也就是unix下的标准函数&#xff0c;而不是代码不跨平台&#xff0c;从其他语言转来的新手很不舒服 参考&#xff1a;sh: 1: pause: not found_yjyn1的博客-CSDN博客

mysql数据库的表约束

表的约束 5.1&#xff1a;表的约束的概念 定义&#xff1a; 数据库表约束是用于定义和实施数据完整性的规则或条件。它们被应用于数据库表中的列&#xff0c;以确保数据的一致性、有效性和准确性。表约束可以强制执行特定的规则&#xff0c;限制数据的插入、更新或删除操作&…

ChatGPT的诞生和发展

ChatGPT的诞生和发展 ChatGPT是一种基于GPT模型的聊天机器人。GPT模型是一种基于深度学习的自然语言处理模型&#xff0c;由OpenAI团队开发&#xff0c;可以生成与输入文本相关的连续文本。ChatGPT的诞生和发展&#xff0c;可以追溯到GPT模型的开发与应用。 一、GPT模型的开…

jdk与tomcat的安装-----linux软件的安装与配置

安装方式 jdk的安装 上传jdk压缩包解压 tar -zxvf jdk压缩包名字 -C 解压地址配置环境变量 vi /etc/profileJAVA_HOMEjdk解压地址 PATH$JAVA_HOME/bin:$PATY重新加载profile文件&#xff0c;使更改的配置生效 source /etc/profile 查看是否安装成功 java -verisontomcat的…

Android MMKV - 性能强悍的存储工具(腾讯出品)

MMKV 是基于 mmap 内存映射的 key-value 组件&#xff0c;底层序列化/反序列化使用 protobuf 实现&#xff0c;性能高&#xff0c;稳定性强。从 2015 年中至今在微信上使用&#xff0c;其性能和稳定性经过了时间的验证. 起源 微信作为一个即时通讯项目,需要记录数据比较多.需…

基于Android studio学生考勤签到系统app

功能详细介绍 客户端 签到&#xff1a;用户再登录软件后&#xff0c;可以点击签到&#xff0c;进行在线签到&#xff0c;以记录当天的考勤信息。 请假&#xff1a;用户点击请假后&#xff0c;可以在线申请请假&#xff0c;等待教师的查看审核。 我的班级&#xff1a;可以查看个…

软考A计划-真题-分类精讲汇总-第七章(项目管理)

点击跳转专栏>Unity3D特效百例点击跳转专栏>案例项目实战源码点击跳转专栏>游戏脚本-辅助自动化点击跳转专栏>Android控件全解手册点击跳转专栏>Scratch编程案例 &#x1f449;关于作者 专注于Android/Unity和各种游戏开发技巧&#xff0c;以及各种资源分享&am…

解决爬虫工程师的烦心事,【淘宝1688京东】API接口封装系列,商品详情页的采集,可高并发运行

API是应用程序的开发接口&#xff0c;在开发程序的时候&#xff0c;我们有些功能可能不需要从到到位去研发&#xff0c;我们可以拿现有的开发出来的功能模块来使用&#xff0c;而这个功能模块&#xff0c;就叫做库(libary)。比如说&#xff1a;要实现数据传输的安全&#xff0c…

手写自己的Springboot-2-从Servlet容器选择彻底理解自动配置

文章目录 在Springboot工程中怎样对Servlet容器进行切换底层原理猜想,需要做哪些事情1.pom依赖2.判断注入哪个bean3.让使用者能够加载到自动配置类目前问题及通用处理方式真实Springboot处理方式 进行测试关键点总结 如果还没有看第一篇文章的伙伴,建议先看第一篇文章 手写自己…

C++ OpenMesh拉普拉斯光顺平滑网格模型

程序示例精选 C OpenMesh拉普拉斯光顺平滑网格模型 如需安装运行环境或远程调试&#xff0c;见文章底部个人QQ名片&#xff0c;由专业技术人员远程协助&#xff01; 前言 这篇博客针对<<C OpenMesh拉普拉斯光顺平滑网格模型>>编写代码&#xff0c;代码整洁&#x…

【HTML5系列】第一章 · HTML5新增语义化标签

写在前面 Hello大家好&#xff0c; 我是【麟-小白】&#xff0c;一位软件工程专业的学生&#xff0c;喜好计算机知识。希望大家能够一起学习进步呀&#xff01;本人是一名在读大学生&#xff0c;专业水平有限&#xff0c;如发现错误或不足之处&#xff0c;请多多指正&#xff0…

面试题打卡30天-day28

1、什么是 Git 的 fork 命令&#xff1f;它和 clone 命令有什么区别&#xff1f; 回答一&#xff1a; 在 Git 中&#xff0c;fork 命令是指将其他用户的代码仓库完全复制一份到当前用户自己的账户下&#xff0c;成为一个新的独立代码仓库。与此相对&#xff0c;clone 命令是指…

【CNN】深度卷积神经网络(AlexNet)是什么?如何实现AlexNet?

系列文章目录 第二章 深度学习 CNN中的深度卷积神经网络&#xff08;AlexNet&#xff09; 目录 系列文章目录 文章目录 前言 一、深度卷积神经网络&#xff08;AlexNet&#xff09;是什么&#xff1f; 二、AlexNet的网络结构 三、实现AlexNet模型 总结 前言 本文主要是…

在autoDL上运行github的代码

大佬们的教程&#xff1a;(249条消息) AutoDL使用教程&#xff1a;1&#xff09;创建实例 2&#xff09;配置环境上传数据 3&#xff09;PyCharm2021.3专业版下载安装与远程连接完整步骤 4&#xff09;实时查看tensorboard曲线情况_孟孟单单的博客-CSDN博客 (227条消息) 「炼丹…

智能的本质人工智能与机器人领域的64个问题

以艾伦纽厄尔&#xff08;Allen Newell&#xff09;和赫伯特西蒙&#xff08;Herbert Simon&#xff09;为代表&#xff0c;他们基本上倾向于智能已经达到数理逻辑的最高形式&#xff0c;并将符号处理作为研究重点&#xff0c;他们共同发表了著名论文《逻辑理论家》&#xff08…

“灵光一现”的动态特征:EEG研究

导读 尤里卡效应(Eureka effect&#xff1b;灵光一现)是指突然解决问题的常见经验。在这里&#xff0c;本文以一种模式识别范式来研究这种效应&#xff0c;该范式要求在格式塔规则和先验知识的基础上分割复杂场景和识别物体。受试者必须在模糊的场景中检测物体&#xff0c;并通…

【刷题】栈与队列:滑动窗口的最大值

题目 首先先来看题目描述&#xff1a; 这是一道栈与队列相关的题&#xff0c;给定我们一个整型数组&#xff0c;有一个长度为k的滑动窗口&#xff0c;让我们计算每次窗口的最大值。 我们的想法可以是得到一队列数据结构&#xff0c;让进入这个队列的第一个数据一定是最大的&a…