【数据结构和算法】5. 堆栈和队列
本文根据 数据结构和算法入门 视频记录
文章目录
- 1. 堆栈(Stack)
- 1.1 概念
- 1.2 数组栈实现
- 1.3 链式栈实现
- 2. 队列(Queue)
- 2.1 概念
- 2.2 数组队列实现
- 2.3 链式队列实现
在这一章我们来了解两个很特殊的数据结构:堆栈 (Stack) 和队列 (Queue)。这两个数据结构类似垃圾桶和队伍,栈是先进后出型,队列是先进先出型。
1. 堆栈(Stack)
1.1 概念
堆栈是一种常用的数据结构,这种数据结构的存储方式和垃圾桶一样,后面放进去的元素可以先取出来,而最早放入的元素会被压在最下面,最后才能被拿出来。我们也可以把栈的储存方式简单理解为堆盘子,后面加入的盘子会被堆到最上面,最早堆入的盘子在最下面:
所以栈是一种后进先出(Last In First Out)的数据结构,后入的元素先出,先入的元素后出。
堆栈主要支持以下两种操作:
- 入栈(Push):将一个元素放入栈,用来加入数据。
- 出栈(Pop):将一个元素弹出栈,用来删除数据。
还有以下两种辅助操作:
- Peek:查看最顶部的元素。
- isEmpty:查看栈是否为空。
1.2 数组栈实现
链表有两种实现方式,一种是数组,另一种是链表。数据的实现方式很简单,以下是数组栈的定义:
public class Stack {static final int CAPACITY = 1000;int top;int stack[];public Stack() {top = -1;stack = new int[CAPACITY];}
}
在数组栈中,我们使用数组来储存数据,其中包含一个CAPACITY来限制栈的容量,并使用指针top来记录最顶端元素的位置,top初始化为-1,代表数组栈没有任何元素。以下是push和pop方法的定义:
public boolean push(int val) {if (top >= (CAPACITY - 1)) {System.out.println("Stack Overflow.");return false;}stack[++top] = val;return true;
}public int pop() {if (top < 0) {System.out.println("Stack Underflow.");return 0;}int element = stack[top--];return element;
}
在push中,我们需要检查顶部元素是否达到容量限制,如果是,输出“溢出栈”错误。否则移动top指针,加入新的元素。在pop中,也要查看栈是否为空,如果是,那么输出“栈下溢”错误。否则将top指针减一。另外还有peek和isEmpty的实现:
public int peek() {if (top < 0) {System.out.println("Stack Underflow");return 0;}int element = stack[top];return element;
}public boolean isEmpty() {return top < 0;
}
peek也要查看栈是否为空,如果不是,直接返回top指向的元素。isEmpty只要查看top是否小于0即可。
1.3 链式栈实现
除了数组栈,我们也可以使用链表来实现栈,以下是链式栈的定义:
public class ListStack {static class StackNode {int val;StackNode next;StackNode(int val) {this.val = val;}}StackNode top;public ListStack() {top = null;}
}
在链式栈中,我们先定义节点StackNode,节点中包含数值和下一个节点的指针。在链式栈中,我们只需要记录top节点,在初始化时定义为null。以下是push和pop的定义:
public void push(int val) {StackNode newNode = new StackNode(val);if (top == null) {top = newNode;} else {StackNode temp = top;top = newNode;newNode.next = temp;}System.out.println(val + " is pushed to stack.");
}public int pop() {if (top == null) {System.out.println("Stack is Empty.");return Integer.MIN_VALUE;}int popped = top.val;top = top.next;return popped;
}
在push中,我们先创建新的节点newNode,如果栈为空,那么直接将newNode赋给top。如果不为空,就将新元素的下一节点指向当前的top,并将newNode更新为top节点。在pop中,也要先检查栈是否为空,不为空的话,记录下top的数据作为返回值,并将top更新为自己的下一个节点。以下是链式栈peek和isEmpty的定义:
public int peek() {if (top == null) {System.out.println("Stack is empty.");return Integer.MIN_VALUE;}return top.val;
}public boolean isEmpty() {return top == null;
}
在栈不为空的情况下,peek只需查看top的值即可,isEmpty也只要查看top是否是null就可以了。不管是用数组还是链表来实现栈,我们都只要处理头节点top,所以栈的所有操作都为O(1)。
2. 队列(Queue)
2.1 概念
队列是很好理解的一种数据结构,顾名思义,队列数据结构就和我们平时排队一样,先进入的元素先出,后进入的元素后出。队列的两端都是开的,一段负责插入新元素,另一端负责删除元素。
队列主要支持以下两种操作:
- 入队(enqueue):增加一个新的元素
- 出队(dequeue):删除一个元素
还支持其他辅助操作:
- peek – 查看队列最前端的元素
- isFull – 查看队列是否满了
- isEmpty – 查看队列是否为空
2.2 数组队列实现
队列和堆栈一样,也可以使用两种实现方式,一种是使用数组,叫做顺序队列,另一种是使用链表实现,叫做链式队列。以下我们会先实现一种更常见的数组队列,叫做循环队列,它和基础的顺序队列相比较,更能有效地利用数组空间。以下是循环队列的定义:
public class ArrayQueue {int front, rear, size;int capacity;int array[];public ArrayQueue(int capacity) {this.capacity = capacity;front = rear = size = 0;array = new int[capacity];}
}
在循环队列中,我们需要capacity来限制队列的长度,并创建两个指针front和rear,front用来指向队列的头部,而rear指向队列的尾部。队列总是从头部取出元素,从尾部插入新元素,在操作队列时,我们只需要移动front和rear两个指针即可。我们还需要一个额外的size变量来记录元素的数量,front,rear和size都初始化为0 。
以下是enqueue和dequeue的定义:
public void enqueue(int item) {if (isFull()) return;array[rear] = item;rear = (rear + 1) % capacity;size++;System.out.println(item + " is enqueued.");
}public int dequeue() {if (isEmpty()) return Integer.MIN_VALUE;int item = array[front];front = (front + 1) % capacity;size --;return item;
}
在新元素入队的时候,我们需要先判断队列是否已满(isFull的代码在下一段)。如果未满,那么就把元素插入rear的位置,并将rear加1,并与capacity取模,然后增加size。在出队的时候,先要检查队列是否为空(isEmpty的代码在下一段),记录下删除元素的值后,我们将front指针增加1,与capacity取模,然后将size减少1。以下是辅助操作的定义:
public int peek() {if (isEmpty()) return Integer.MIN_VALUE;return array[front];
}public boolean isFull() {return size == capacity;
}public boolean isEmpty() {return size == 0;
}
peek只要查看front指针指向的值即可,isFull要检查size是否和容量capacity相同,isEmpty直接查看size是否等于0。
2.3 链式队列实现
用链表实现队列也很简单,和数组实现相似,也需要两个指针(front和rear)来实现。以下是ListQueue和QueueNode的定义:
public class ListQueue {QueueNode front;QueueNode rear;static class QueueNode {int value;QueueNode next;public QueueNode(int value) {this.value = value;}}
}
在链式队列中,我们需要定义节点QueueNode,QueueNode中含有两个值:一个是节点的数值value,另一个是指向下一个节点的next指针。在链式队列ListQueue中,我们只需要两个节点front和rear,front用来指向队列最前端的节点,而rear用来指向尾节点。以下是两个重要操作enqueue和deuque的实现:
public void enqueue(int value) {QueueNode newNode = new QueueNode(value);if (this.rear == null) { // Queue is emptythis.front = this.rear = newNode;return;}this.rear.next = newNode;this.rear = newNode;
}public int dequeue() {if (this.front == null) {System.out.println("The queue is empty.");return Integer.MIN_VALUE;}QueueNode frontNode = this.front;this.front = this.front.next;if (this.front == null) {this.rear = null;}return frontNode.value;
}
在enqueue中,我们先创建一个新的节点,如果队列为空,那么将头节点和尾节点同时指向新节点,结束操作。如果队列不为空,只要尾节点的next指针指向新节点,然后将尾节点指向新节点。在dequeue中,如果头节点front为空,直接返回默认数值。队列不为空的情况下,记录下front的数值作为返回值,并将头节点更新为下一节点。
相关文章:
【数据结构和算法】5. 堆栈和队列
本文根据 数据结构和算法入门 视频记录 文章目录 1. 堆栈(Stack)1.1 概念1.2 数组栈实现1.3 链式栈实现 2. 队列(Queue)2.1 概念2.2 数组队列实现2.3 链式队列实现 在这一章我们来了解两个很特殊的数据结构:堆栈 (Stac…...
万字长文 | Apache SeaTunnel 分离集群模式部署 K8s 集群实践
文章作者:雷宝鑫 整理排版:白鲸开源 曾辉 Apache SeaTunnel官网链接: https://seatunnel.apache.org/ Apache SeaTunnel(以下简称SeaTunnel)是一款新一代高性能、分布式的数据集成同步工具,正受到业界广泛关注和应用。SeaTunnel支…...
逻辑回归:使用 S 型函数进行概率预测
逻辑回归:使用 S 型函数进行概率预测 摘要 本文章深入探讨了逻辑回归模型如何利用 S 型函数将线性回归的输出转换为概率值。文章详细阐述了 S 型函数的数学原理、在逻辑回归中的应用以及其在机器学习中的重要性。通过具体示例和练习,帮助读者理解如何使…...
马浩棋:产通链CT-Chain 破局不动产 RWA,引领数智金融新变革
全球不动产 RWA 数智金融高峰论坛上马浩棋先生致辞 在全球不动产 RWA 数智金融高峰论坛暨产通链 CT-Chain 上链首发会的现场,犀牛世纪集团(香港)有限公司董事会主席马浩棋成为众人瞩目的焦点。此次盛会汇聚了全球金融、区块链及不动产领域的…...
iscsi服务端安装及配置
1. 安装targetcli软件包 yum install -y targetcli 2. 启动target服务 systemctl start target systemctl enable target 3. 配置防火墙 firewall-cmd --add-port"3260/tcp" 3. 准备一个物理分区(或者逻辑分区)…...
常见的神经网络权重文件格式及其详细说明
常见的神经网络权重文件格式及其详细说明的表格: 扩展名所属框架/工具如何生成表示内容使用方法注意事项.pt, .pthPyTorchtorch.save(model.state_dict(), "model.pt")PyTorch模型的状态字典(权重和参数)或整个模型加载方式&#…...
帕金森发病类型和阶段
文章目录 直观认识帕金森综合症的类型一、原发性帕金森综合征二、继发性(获得性)帕金森综合征三、帕金森叠加综合征(Atypical Parkinsonism)四、遗传性帕金森综合征五、其他罕见类型推荐文献与资源 PD的病理分期理论(B…...
基于ssm的“安家”儿童福利院管理系统(源码+文档)
项目简介 “安家”儿童福利院实现了以下功能: “安家”儿童福利院管理系统的主要使用者分为管理员:儿童管理、申请领养管理、捐赠管理、楼栋管理、宿舍管理、分配信息管理、宿舍物品管理、报修管理、维修工管理、报修状态管理、留言管理、系统管理。 用…...
闲聊人工智能对媒体的影响
技术总是不断地改变信息的传播方式。互联网促进了社交媒体的蓬勃发展。 网络媒体成为主流。大语言模型为代表的人工智能的出现,又会对媒体传播带来怎样的改变呢?媒体的演变反映了社会和技术的演变。 人工智能(AI) 将继续对整个媒体行业产生变革性的影响。…...
健身房管理系统(springboot+ssm+vue+mysql)含运行文档
健身房管理系统(springbootssmvuemysql)含运行文档 健身房管理系统是一个全面的解决方案,旨在帮助健身房高效管理其运营。系统提供多种功能模块,包括会员管理、员工管理、会员卡管理、教练信息管理、解聘管理、健身项目管理、指导项目管理、健身器材管理…...
离散化区间和 java c++
文章目录 题面解题思路javacpp 题面 题目链接:点击传送 假定有一个无限长的数轴,数轴上每个坐标上的数都是 0。 现在,我们首先进行 n 次操作,每次操作将某一位置 x 上的数加 c。 接下来,进行 m 次询问,每…...
「数据可视化 D3系列」入门第十二章:树状图详解与实践
树状图深度解析与实现 一、核心API解析1. d3.hierarchy2. d3.tree3. 节点操作方法 二、完整实现解析三、高级技巧与优化四、常见问题解决小结下章预告:地图可视化 树状图是一种常见的层次结构可视化方式,它能够清晰地展示数据之间的父子关系。本文将详细…...
IDEA 创建Maven 工程(图文)
设置Maven 仓库 打开IDEA 开发工具,我的版本是2024.3.1(每个版本的位置不一样)。在【Customize】选项中,可以直接设置【语言】,在最下面选择【All setting】。 进入到熟悉的配置界面,选择配置的【setting…...
机器学习06-RNN
RNN(循环神经网络)学习笔记 一、RNN 概述 循环神经网络(Recurrent Neural Network,RNN)是一类以序列数据为输入,在序列的演进方向进行递归且所有节点(循环单元)按链式连接的递归神…...
Java常用正则表达式及使用方法
在 Java 中,Pattern 和 Matcher 类是 java.util.regex 包的核心,用于处理正则表达式。 Pattern 类 Pattern 类表示编译后的正则表达式,它提供了一种将正则表达式字符串编译成可执行对象的方式,以便后续用于匹配操作。 常用方法…...
新零售行业时代:如何用科技驱动传统零售的转型升级
新零售行业时代:如何用科技驱动传统零售的转型升级 “在变化的世界中,唯一不变的是变化本身。” 一、传统零售的困局:当“生存”成为一场鏖战 街角的便利店老板老王,每天凌晨4点起床进货,却在月…...
DeepSeek和Excel结合生成动态图表
文章目录 一、前言二、3D柱状图案例2.1、pyecharts可视化官网2.2、Bar3d-Bar3d_puch_card2.3、Deepseek2.4、WPS2.5、动态调整数据 一、前言 最近在找一些比较炫酷的动态图表,用于日常汇报,于是找到了 DeepseekExcel王牌组合,其等同于动态图…...
大模型学习笔记------Llama 3模型架构之分组查询注意力(GQA)
大模型学习笔记------Llama 3模型架构之分组查询注意力(GQA) 1、分组查询注意力(GQA)的动机2、 多头注意力(Multi-Head Attention, MHA)3、 多查询注意力 (Multi-Query Attention,MQA)4、 分组查…...
WordPress 只能访问html文件,不能访问php
部署WordPress 遇到的问题 说来惭愧,尝试了多次流程,输入ip能够访问到配置路径下面的html文件,但就是无法访问php文件,查来查去,最后在AI工具的逐一梳理下,是PHP-FPM配置下面出的问题,默认账号…...
Python 之 pyecharts 使用
要说绘制动态图表,echarts 肯定是有一席之地的,特别是像 flask 这种轻量级的 web 框架,在 html 中动态嵌入生成 echarts 无疑是很优的选择。pyecharts 简单来说就是以 python 的方式来生成对应的 echarts 图表。 安装 pip install pyechart…...
【第九章 Python学习之函数Ⅱ】
【2025】Python最新最完整教程,零基础看这一个就够了 第九章 Python学习之函数Ⅱ 文章目录 【2025】Python最新最完整教程,零基础看这一个就够了前言一、说两句二、定义函数函数定义规则函数的参数参数的类型及用途1. 必需参数(位置参数)2. 关键字参数3. 默认参数4. 可变参…...
传入的表格格式数据流(TDS)远程过程调用(RPC)协议流不正确。此 RPC 请求中提供了过多的参数。最多应为 2100。
### Error updating database. Cause: com.microsoft.sqlserver.jdbc.SQLServerException: 传入的表格格式数据流(TDS)远程过程调用(RPC)协议流不正确。此 RPC 请求中提供了过多的参数。最多应为 2100。 这是因为集合数据量过大,需要对集合进行拆分操作࿰…...
IDEA热加载
翻译:"你运行的应用程序 BfApplication 启动之后,它的一些类文件(通常是你修改过的 .java 文件被重新编译了)发生了变化。你想现在就重新加载这些更改过的类吗?" 解释: 热重载: 这是一种开发时非常有用的技术。当你…...
常用第三方库:dio网络库使用与封装
常用第三方库:dio网络库使用与封装 前言 dio是Flutter生态中最受欢迎的网络请求库之一,它提供了强大的功能和灵活的配置选项。本文将从实战角度深入介绍dio的使用技巧和最佳实践。 基础知识 1. dio简介 dio是一个强大的Dart Http请求库,…...
解决IntelliJ IDEA配置文件(application.properties)中文注释变成乱码的问题
文章目录 1. 问题呈现2. 问题产生的原因3. 解决方法 更多 IntelliJ IDEA 的使用技巧可查看 IntelliJ IDEA 专栏中的文章:IntelliJ IDEA 1. 问题呈现 在 IntelliJ IDEA 中打开配置文件(application.properties)时,文件中的中文注…...
linux基础14--dns和web+dns
DNS:域名系统(Domain Name System) DNS协议是用来将域名转换为IP地址或将IP地址转换为相应的域名 DNS使用TCP和UDP端口53,给用户提供解析时一般使用UDP53 对于每一级域名长度的限制是63个字符,域名总长度则不能超过2…...
Java 静态内部类面试题与高质量答案合集
本文整理了关于 Java 静态内部类(Static Nested Class)在面试中的高频问题及标准答案,帮助你理解其底层原理、内存表现以及实际应用。 1. 什么是静态内部类?和普通内部类有什么区别? 答: 静态内部类是定义…...
React.cloneElement的用法详解
React.cloneElement的用法详解 React.cloneElement 是 React 提供的一个 API,用于克隆现有的 React 元素,并在克隆的基础上添加或覆盖属性,同时保留原有的子元素。 语法 React.cloneElement(element: ReactElement, props?: Partial<P…...
【数学建模】孤立森林算法:异常检测的高效利器
孤立森林算法:异常检测的高效利器 文章目录 孤立森林算法:异常检测的高效利器1 引言2 孤立森林算法原理2.1 核心思想2.2 算法流程步骤一:构建孤立树(iTree)步骤二:构建孤立森林(iForest)步骤三:计算异常分数 3 代码实现…...
3.1 WPF使用MaterialDesign的介绍1
MaterialDesignInXAML Toolkit 是一个流行的开源 C# WPF 控件库,它实现了 Google 的 Material Design 规范,让开发者可以轻松创建现代化的 WPF 应用程序界面 Material Design 是一个流行的设计语言,由 Google 开发,旨在帮助开发者构建美观且一致的 UI 界面。对于使用 C# 的…...
多路转接select服务器
目录 select函数原型 select服务器 select的缺点 前面介绍过多路转接就是能同时等待多个文件描述符,这篇文章介绍一下多路转接方案中的select的使用 select函数原型 #include <sys/select.h> int select(int nfds, fd_set *readfds, fd_set *writefds, f…...
【算法】BFS-解决FloodFill问题
目录 FloodFill问题 图像渲染 岛屿数量 岛屿的最大面积 被围绕的区域 FloodFill问题 FloodFill就是洪水灌溉的意思,假设有下面的一块田地,负数代表是凹地,正数代表是凸地,数字的大小表示凹或者凸的程度。现在下一场大雨&…...
二叉树层序遍历技术解析与面试指南
文章目录 一、二叉树层序遍历技术解析1. 问题描述2. 层序遍历核心思想3. Java实现代码(带详细注释)4. 算法关键点解析5. 复杂度分析 二、资深后端面试深度指南1. 高频面试问题集Q1: 如何实现Z字形层序遍历(锯齿形遍历)?…...
软考软件设计师考试情况与大纲概述
文章目录 **一、考试科目与形式****二、考试大纲与核心知识点****科目1:计算机与软件工程知识****科目2:软件设计** **三、备考建议****四、参考资料** 这是一个系列文章的开篇 本文对2025年软考软件设计师考试的大纲及核心内容进行了整理,并…...
一款丰富的工作流自动化平台 | N8N 83.6K ⭐
N8N 介绍 N8N 是一个工作流自动化平台,为技术团队提供代码的灵活性和无代码的速度。n8n 具有 400 集成、原生 AI 功能和公平代码许可证,可让您构建强大的自动化功能,同时保持对数据和部署的完全控制。 🚢 项目地址 Github: https…...
Apache PDFBox
Apache PDFBox 是一个用于处理 PDF 文档的开源 Java 库,由 Apache 软件基金会开发和维护。它提供了丰富的功能,允许开发者在 Java 应用程序中创建、读取、修改和提取 PDF 文件中的信息。以下是关于 PDFBox 的详细介绍: 主要功能 创建 PDF 文…...
如何批量为多个 Word 文档添加水印保护
在日常办公中,Word文档添加水印是一项重要的操作,特别是在需要保护文件内容的安全性和版权时。虽然Office自带了添加水印的功能,但当需要一次性给多个Word文档添加水印时,手动操作显得非常繁琐且低效。为了提高效率,可…...
【MySQL】005.MySQL表的约束(上)
文章目录 表的约束1. 约束概念2. 空属性2.1 基本语法2.2 使用示例 3. 默认值3.1 基本概念3.2 使用示例 4. 列描述4.1 基本概念4.2 使用示例 5. zerofill5.1 基本功能5.2 使用示例5.3 注意事项 6. 主键6.1 基本概念6.2 使用示例 表的约束 1. 约束概念 真正约束字段的是数据类型…...
力扣刷题Day 27:环形链表(141)
1.题目描述 2.思路 创建一个结点集合,遍历链表,如果遇到已经加进集合的结点就说明链表有环。 3.代码(Python3) class Solution:def hasCycle(self, head: Optional[ListNode]) -> bool:node headnode_set set()while node…...
window上 elasticsearch v9.0 与 jmeter5.6.3版本 冲突,造成es 启动失败
[2025-04-22T11:00:22,508][ERROR][o.e.b.Elasticsearch ] [AIRUY] fatal exception while booting Elasticsearchjava.nio.file.NoSuchFileException: D:\Program Files\apache-jmeter-5.6.3\lib\logkit-2.0.jar 解决方案: 降低 es安装版本 ,选择…...
PDF转换Word深度评测 - ComPDFKit Conversion SDK V3.0
ComPDFKit PDF 转换 SDK 在V3.0 中有以下几个新功能: 使用百万级文档训练数据集对 PPYoloE AI 模型进行微调 全场景布局分析算法及下一代表格识别算法 重构数据结构、转换流程、PDF解析和输出模块 混合布局:将流式布局与固定布局相结合,以保持原始布局…...
Laravel 对接阿里云 OSS 说明文档
Laravel 对接阿里云 OSS 说明文档 一、 简介 将 Laravel 应用与阿里云对象存储服务 (OSS) 对接,可以利用 OSS 提供的高可用、高可靠、可扩展的存储能力来管理应用中的文件,例如用户上传的图片、视频、文档等。这有助于减轻应用服务器的存储压力&#x…...
嘻游电玩三端客户端部署实战:PC + Android + iOS 环境全覆盖教程
本篇文章将针对“网狐系列嘻游电玩组件”的三端客户端(PC端、安卓端、iOS端)进行详细部署实操讲解。文章将以实测部署为核心,提供资源结构说明、平台适配调整、打包配置、常见问题修复,并辅以必要的关键配置代码。 一、客户端资源…...
mockMvc构建web单元测试学习笔记
web应用本来需要依靠tomcat这个环境运行 现在用mockMvc是为了模拟这个web环境,简化测试 什么是mock(模拟) 模拟对象---mock object是以可控方式模拟真实对象行为的假对象,通过模拟输入数据,验证程序达到预期结果 为什么使用mock对象 因为…...
ffmpeg av_buffer_unref的逻辑实现; av_freep 和 av_freep函数的区别
av_buffer_unref 是 FFmpeg 中用于管理引用计数和内存释放的核心函数,其内部实现机制如下: 一、核心流程 引用计数递减 函数首先对 AVBufferRef 的 buffer->refcount 进行原子递减操作(通过 atomic_fetch_add_explicit 等机制保证…...
Flutter IOS 真机 Widget 错误。Widget 安装后系统中没有
错误信息: SendProcessControlEvent:toPid: encountered an error: Error Domaincom.apple.dt.deviceprocesscontrolservice Code8 "Failed to show Widget com.xxx.xxx.ServerStatus error: Error DomainFBSOpenApplicationServiceErrorDomain Code1 "T…...
Jenkins plugin 的用法和示例
今天介绍一下比较常见的Jenkins plugin 的使用方法 1. 通过AWS s3 upload 插件上传文件到AWS S3 存储桶 前提条件: 安装AWS pipeline step插件在Jenkins 中创建credentials,包含access_key_id和secret_key_id创建S3 存储桶 脚本: pipeli…...
利用java语言,怎样开发和利用各种开源库和内部/自定义框架,实现“提取-转换-加载”(ETL)流程的自动化
一、ETL 架构设计的核心要素 在企业级数据处理场景中,ETL(Extract-Transform-Load)流程自动化是数据仓库、数据湖建设的核心环节。基于 Java 生态的技术栈,我们可以构建分层解耦的 ETL 架构,主要包含以下四层结构&am…...
人工智能在PET-CT中的应用方向探析
人工智能(AI)在正电子发射断层扫描-计算机断层扫描(PET-CT)中的应用正逐步改变医学影像诊断的格局,其核心价值体现在提升诊断效率、优化成像质量、促进精准医疗等方面。近年来,随着深度学习、计算机视觉以及多模态数据融合技术的迅猛发展,AI技术在PET-CT全流程中的渗透愈…...
pod 创建私有库指南
步骤 参考:iOS Pod 私有库创建指南-百度开发者中心 下面主要是对参考链接里面的解释: 创建两个仓库: 一个叫podframe.git,用来存放自定义的framework,比如TestPodFrame.framework一个叫podspec.git,用来…...