当前位置: 首页 > news >正文

C语言 栈 的 描述 和 详解

什么是栈?

栈是一种特殊的线性数据结构。

定义及特点

- 栈是一种只能在一端进行插入和删除操作的特殊线性表。它按照后进先出(Last In First Out,LIFO)的原则存储数据,就像一个只能从顶部取放物品的箱子,最后放入的物品会最先被取出。

相关操作

- 入栈(Push):将元素添加到栈的顶部。

- 出栈(Pop):从栈的顶部移除元素。

- 获取栈顶元素(Top):查看栈顶元素,但不将其从栈中移除。

- 判断栈空(IsEmpty):检查栈中是否没有元素。

- 获取栈大小(Size):返回栈中元素的数量。

实现方式

- 栈可以用数组或链表来实现。用数组实现时,通常用一个变量来记录栈顶元素的位置。用链表实现时,栈顶指针指向链表的头节点,入栈和出栈操作主要在链表头部进行。

最常见的栈为数组栈和链表栈

数组栈

#include <stdio.h>#include <stdlib.h>#define MAX_SIZE 100// 定义栈结构typedef struct {int data[MAX_SIZE];int top;} Stack;// 初始化栈void initStack(Stack *s) {s->top = -1;}// 判断栈是否为空int isEmpty(Stack *s) {return s->top == -1;}// 判断栈是否已满int isFull(Stack *s) {return s->top == MAX_SIZE - 1;}// 入栈操作void push(Stack *s, int value) {if (isFull(s)) {printf("栈已满,无法入栈\n");return;}s->data[++(s->top)] = value;}// 出栈操作int pop(Stack *s) {if (isEmpty(s)) {printf("栈为空,无法出栈\n");return -1;}return s->data[(s->top)--];}// 获取栈顶元素int peek(Stack *s) {if (isEmpty(s)) {printf("栈为空,无栈顶元素\n");return -1;}return s->data[s->top];}

数组栈采用静态连续内存,有一定的内存局限性,也有代码量小带来的方便性

链表栈

#include <stdio.h>#include <stdlib.h>// 定义链表节点结构typedef struct Node {int data;struct Node *next;} Node;// 定义栈结构typedef struct {Node *top;} Stack;// 初始化栈void initStack(Stack *s) {s->top = NULL;}// 判断栈是否为空int isEmpty(Stack *s) {return s->top == NULL;}// 入栈操作void push(Stack *s, int value) {Node *newNode = (Node *)malloc(sizeof(Node));if (newNode == NULL) {printf("内存分配失败\n");return;}newNode->data = value;newNode->next = s->top;s->top = newNode;}// 出栈操作int pop(Stack *s) {if (isEmpty(s)) {printf("栈为空,无法出栈\n");return -1;}Node *temp = s->top;int value = temp->data;s->top = s->top->next;free(temp);return value;}// 获取栈顶元素int peek(Stack *s) {if (isEmpty(s)) {printf("栈为空,无栈顶元素\n");return -1;}return s->top->data;}

链表栈内存分配灵活,不受限制。

你可以在上述代码基础上添加 main 函数来测试栈的各种操作

int main() {Stack stack;initStack(&stack);push(&stack, 10);push(&stack, 20);printf("栈顶元素: %d\n", peek(&stack));printf("出栈元素: %d\n", pop(&stack));printf("栈是否为空: %d\n", isEmpty(&stack));return 0;}

接下来用一串我写的描述清晰的代码

来解释链式栈如何构建和使用。

#include<stdio.h>
#include<stdlib.h>
typedef struct node{
int data;//数据域
struct node *next;//指针域存储下一个节点的位置,末节点的next为空
}Node;//栈节点结构体
typedef struct h{
Node *top; //栈头指向的节点
}Head;//栈头结构体Head * creat_head()//栈头的创建
{
Node *newhead=(Node *)malloc(sizeof(Node));//为创建栈头分配内存
newhead->next=NULL;//栈头初始指向空
return newhead;//返回创建的地址返回给所需栈头
}Node *creat_node(int data)//节点的创建
{
Node *newnode=(Node *)malloc(sizeof(Node));//为新创建的节点分配内存
newnode->data=data; //新节点数据域存储用户输入数据
newnode->next=NULL; //新节点默认指向空
return newnode;//返回创造新节点的地址
}
int isNULL(Head *head) {//判断栈是否为空return head->top == NULL;
}
void in(Head *head,int data)//in 数据入栈
{
Node *N = creat_node(data);
N->next = head->top;//将新建的节点插入栈顶,成为新的栈顶
head->top = N;//刷新栈头指针指向新的栈顶元素
}int out(Head *head) //out 数据出栈
{
if(isNULL(head))
{
printf("栈空了");
return -1;
}
int N = head->top->data;//获取节点数据域数值
Node *huan = head->top->next;//存储下一节点的地址
free(head->top);//释放掉当前访问的节点内存
head->top = huan;//将栈头指针指向下一个节点
return N;//返回该节点数据域数值
}
void freehead(Head *head)//释放未访问的栈内存
{
Node *temp = head->top; //获取栈头指针地址
while(temp!=NULL)
{
Node *huan = temp->next; //反复储存下一节点,释放当前节点内存
free(temp);
temp = huan;//刷新指针指向下一节点
}
free(head);//最后释放栈头指针,此步骤之后,栈内存已经被全部释放
}int peek(Head *head) {//访问栈顶元素if (isNULL(head)) {printf("栈为空,无栈顶元素\n");return -1;}return head->top->data;
}int main()//主函数使用栈
{
Head *head = creat_head();//创建栈头
int data;
scanf("%d",&data);//获取用户存储的数据
int ctr=1;
while(ctr)//循环存储栈元素
{
in(head,data);//数据存入栈内
printf("继续向栈内存储请输入 1 \n结束并输出栈请输入 0\n您的输入:");
scanf("%d",&ctr);
if(!ctr)//判断是否继续存储数据
break;
printf("请继续存储数值:");
scanf("%d",&data);
}
printf("\n栈顶元素:%d",peek(head));//访问前访问栈顶元素
printf("\n\n");
while(!isNULL(head))//遍历访问出栈输出
printf("%d\n",out(head));printf("\n\n\n%d",peek(head));//全访问后访问栈顶元素freehead(head);//释放未访问空间//该函数如果只访问一部分栈元素,可用于剩余未访问栈元素的内存释放return 0;}

栈的一些运用方面

迷宫求解
 
- 可以用栈来记录路径。从起点开始,将当前位置压入栈,然后探索相邻的未访问过的位置。如果遇到死胡同,就从栈中弹出当前位置,回溯到上一个位置,继续尝试其他路径,直到找到出口或遍历完整个迷宫。
 
汉诺塔问题
 
- 汉诺塔问题是经典的递归问题,也可以用栈来辅助解决。通过将圆盘的移动过程模拟为栈的操作,用栈来记录每个柱子上圆盘的状态,从而实现对汉诺塔问题的求解。
 
树的遍历
 
- 例如二叉树的深度优先遍历(先序、中序、后序遍历),可以借助栈来实现非递归算法。以先序遍历为例,先将根节点入栈,然后每次取出栈顶节点进行访问,并将其右孩子和左孩子(如果存在)依次入栈,重复这个过程,直到栈为空。
 
状态机实现
 
- 在状态机中,栈可以用来存储状态信息。当状态发生转换时,将当前状态压入栈,以便在需要时可以回溯到之前的状态。例如,在编译器的词法分析器中,用栈来保存扫描到的单词的状态,以实现对输入字符流的正确解析。

 函数调用和递归

在程序执行过程中,函数调用会使用栈来管理调用上下文。当一个函数被调用时,系统会将当前函数的状态(如局部变量、返回地址等)压入栈中,形成一个栈帧。当函数执行完毕后,再从栈中弹出栈帧,恢复之前的执行状态。递归调用也是基于栈来实现的,每一次递归调用都会在栈上创建一个新的栈帧,直到满足终止条件后,再依次从栈中弹出栈帧返回结果

表达式求值

在编译器和解释器中,栈可以用于计算算术表达式的值。例如,对于中缀表达式转后缀表达式(逆波兰表达式),以及后缀表达式的求值过程,栈都起着关键作用。在计算后缀表达式时,遇到操作数就将其压入栈中,遇到运算符则从栈中弹出相应数量的操作数进行计算,并将结果压入栈中。

括号匹配检查

在编写代码或处理文本时,需要检查括号是否匹配。可以使用栈来实现这个功能,遍历字符串,遇到左括号时将其压入栈中,遇到右括号时从栈中弹出一个左括号进行匹配,如果不匹配或栈为空则说明括号不匹配。

 路径简化问题

在文件系统里,路径可能包含 .(当前目录)、..(上级目录)等特殊符号。栈可用于简化这些路径,去除不必要的符号。遍历路径中的每个目录部分,若遇到 . 则忽略;若遇到 .. 且栈不为空,就从栈中弹出一个目录;若遇到普通目录名,则将其压入栈。

深度优先搜索(DFS)

在图和树的遍历算法中,深度优先搜索是一种常用的算法。栈可用于实现非递归的深度优先搜索。从起始节点开始,将其压入栈,接着不断从栈中弹出节点并访问,同时把该节点的未访问邻接节点压入栈。

浏览器的后退和前进功能

浏览器的后退和前进功能可以用两个栈来实现。访问新页面时,将当前页面压入后退栈,同时清空前进栈;点击后退按钮时,将当前页面压入前进栈,从后退栈中弹出一个页面并显示;点击前进按钮时,将当前页面压入后退栈,从前进栈中弹出一个页面并显示。

相关文章:

C语言 栈 的 描述 和 详解

什么是栈&#xff1f; 栈是一种特殊的线性数据结构。 定义及特点 - 栈是一种只能在一端进行插入和删除操作的特殊线性表。它按照后进先出&#xff08;Last In First Out&#xff0c;LIFO&#xff09;的原则存储数据&#xff0c;就像一个只能从顶部取放物品的箱子&#xff0c;…...

.NET MCP 示例

服务器端示例 基础服务器 以下是一个基础的 MCP 服务器示例&#xff0c;它使用标准输入输出&#xff08;stdio&#xff09;作为传输方式&#xff0c;并实现了一个简单的回显工具&#xff1a; using Microsoft.Extensions.DependencyInjection; using Microsoft.Extensions.H…...

【论文阅读】MOE奠基论文《Adaptive Mixtures of Local Experts》

《Adaptive Mixtures of Local Experts》 前言一、让协同学习竞争1.1 方案1.2 方案演变的由来 二、让竞争学习协同2.1 竞争学习2.2 竞争学习协同 三、案例验证3.1 任务背景3.2 实验结果3.3 后续工作 (Future Work) 前言 论文提出了一个基于多个分离网络的有监督学习方案,该方案…...

MATLAB中replace函数用法

目录 语法 说明 示例 替换字符串数组中的子字符串 替换匹配模式的子字符串 替换多个子字符串 replace函数的功能是查找并替换一个或多个子字符串。 语法 newStr replace(str,old,new) 说明 newStr replace(str,old,new) 将所有出现的子字符串 old 替换为 new。如果 …...

MATLAB基本数据类型

1. ‌数值类型‌ ‌整数类型‌&#xff1a; 有符号整数&#xff08;如 int8, int16, int32, int64&#xff09;和无符号整数&#xff08;如 uint8, uint16, uint32, uint64&#xff09;。 这些类型分别占用 1、2、4、8 个字节&#xff0c;表示不同范围的整数值。 ‌浮点数类…...

LeetCode 热题 100_单词拆分(86_139_中等_C++)(动态规划)

LeetCode 热题 100_单词拆分&#xff08;86_139&#xff09; 题目描述&#xff1a;输入输出样例&#xff1a;题解&#xff1a;解题思路&#xff1a;思路一&#xff08;动态规划&#xff09;&#xff1a; 代码实现代码实现&#xff08;思路一&#xff08;动态规划&#xff09;&a…...

Spring Boot 集成spring-boot-starter-data-elasticsearch

第一步&#xff0c;添加Maven依赖 <!--es--><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-data-elasticsearch</artifactId></dependency> 第二步&#xff0c;配置yml spring:elastic…...

【Linux】Linux下的gcc/g++编译器与动静态库

目录 对程序的认知&&初识gcc逐步分析程序的编译步骤预编译【进行宏替换】gcc需要执行的指令 ⭐ 编译【C语言——>汇编语言】gcc要执行的指令⭐ 汇编【汇编语言——>可重定位目标二进制文件】gcc需要执行的指令 链接【生成可执行文件或库文件】gcc需要执行的指令 …...

从暴力到动态规划再到双指针:使用 Java 探索接雨水问题的不同解法

文章目录 一、问题描述二、暴力法&#xff08;Brute Force&#xff09;思路实现代码 三、动态规划法&#xff08;Dynamic Programming&#xff09;思路实现代码 四、双指针法&#xff08;Two Pointers&#xff09;思路实现代码 五、方法对比 在本文中&#xff0c;我们将探讨经典…...

CI/CD(十) Jenkins共享库与k8s集成

一、创建k8skey&#xff08;v1.28.2版本&#xff09; 1、查看k8s集群名称 rootk8s-master:~# kubectl config get-contexts CURRENT NAME CLUSTER AUTHINFO NAMESPACE * kubernetes-adminkubernetes kubernetes kuber…...

5.Elasticsearch - Spring Data 框架

一、Kibana 介绍 Kibana 是一个免费且开放的用户界面&#xff0c;能够让你对 Elasticsearch 数据进行可视化&#xff0c;并让你在 Elastic Stack 中进行导航。你可以进行各种操作&#xff0c;从跟踪查询负载&#xff0c;到理解请求如何流经你的整个应用&#xff0c;都能轻松完…...

如何通过技术手段降低开发成本

通过技术手段降低开发成本的关键在于&#xff1a; 自动化工具的使用、优化开发流程、云计算资源的利用、开发技术栈的精简与创新、团队协作平台的高效管理。 其中&#xff0c;自动化工具的使用是最为有效的技术手段之一。自动化工具通过减少人工干预和重复性工作&#xff0c;大…...

java android持久化数据

1. SQLite 数据库&#xff08;Android 内置&#xff09; 1.1 创建数据库帮助类 public class DatabaseHelper extends SQLiteOpenHelper {private static final String DATABASE_NAME "MyDatabase.db";private static final int DATABASE_VERSION 1;// 表名和列名…...

Chromium 134 编译指南 macOS篇:系统环境准备(一)

1. 引言 在当今浏览器领域&#xff0c;开源项目Chromium的地位举足轻重。作为众多现代浏览器的技术基础&#xff0c;Chromium不仅驱动着Google Chrome&#xff0c;还为Microsoft Edge、Opera等众多知名浏览器提供了核心引擎。对于热衷于浏览器技术研究&#xff0c;或希望开发自…...

性能优化-Spring参数配置、数据库连接参数配置、JVM调优

SpringBoot配置参数 server:tomcat:#线程池配置max-threads: 200 # 最大工作线程数&#xff08;建议&#xff1a;2~4倍CPU核心数&#xff0c;如16核设200-400&#xff09;min-spare-threads: 20 # 最小空闲线程&#xff08;应对突发流量&#xff0c;…...

【2025年泰迪杯数据挖掘挑战赛】B题 数据预处理+问题建模与求解

目录 2025年泰迪杯数据挖掘挑战赛 B题数据预处理 问题一、二建模与求解三、数据预处理3.1 基于多核并行的协同处理方法的数据读取3.2 基于多核并行协同处理的数据聚合 四、问题一五、问题一技术文档与matlab代码 2025年泰迪杯数据挖掘挑战赛 B题 数据预处理 问题一、二建模与求…...

git怎么使远程分支回退到指定的节点处

git使远程分支回退到指定的节点 引言场景描述步骤 引言 最近提交代码的时候&#xff0c;总将分支合并错&#xff0c;原本要合到A分支&#xff0c;结果合并到了B分支&#xff0c;这样就导致b分支需要回退到我没有合并之前的节点处。 本文记录下怎么将远程分支回退到指定的节点。…...

Spring Boot 使用 QQ 企业邮箱发送邮件的完整指南(含 535 错误排查)

在 Spring Boot 项目中集成邮件功能非常常见,尤其是用户注册通知、异常报警、定期报告等场景。但如果你使用的是 QQ 企业邮箱(smtp.exmail.qq.com),可能会遇到如下典型错误: 535 Error: authentication failed, system busy这篇博客将详细解析出现该问题的原因、排查路径…...

MySQL联合查询||多表查询

mysql中如何注释...

java 递归遍历JSON字符串获取某个字段的值

在 Java 中&#xff0c;若要递归遍历 JSON 字符串并获取特定字段的值&#xff0c;可借助 Jackson 库。以下是一个示例代码&#xff0c;它能实现递归遍历 JSON 字符串并获取指定字段的值。 import com.fasterxml.jackson.databind.JsonNode; import com.fasterxml.jackson.data…...

OceanBase4.0社区版 单机快速部署

以下内容结合OceanBase官方文档进行安装部署测试 官方文档地址&#xff1a;https://www.oceanbase.com/docs/common-oceanbase-database-cn-1000000002012693 一.部署方式 OceanBase 企业版&#xff1a; • 使用 OCP 部署 OceanBase 集群 • 使用 OBD 部署 OceanBase 集群 •…...

CExercise_05_1伪随机数_2编写程序模拟掷骰子的游戏(每一次投掷,都投掷两个骰子)

题目&#xff1a; 编写程序模拟掷骰子的游戏&#xff08;每一次投掷&#xff0c;都投掷两个骰子&#xff09;。每局游戏的规则如下&#xff1a; 第一次掷的时候&#xff1a; 如果点数之和为 7 或 11 则获胜&#xff1b; 如果点数之和为2、3或12则落败&#xff1b; 其他情况下的…...

【更新至2023年】2000-2023年中国气候政策不确定性指数(全国、省、市三个层面)

【更新至2023年】2000-2023年中国气候政策不确定性指数&#xff08;全国、省、市三个层面&#xff09; 1.时间&#xff1a;2000-2023年 2.来源&#xff1a;使用人工审计和深度学习算法MacBERT模型&#xff0c;基于中国《人民日报》《光明日报》《经济日报》《环球时报》《科技…...

机器学习中 提到的张量是什么?

在机器学习中, 张量(Tensor) 是一个核心数学概念,用于表示和操作多维数据。以下是关于张量的详细解析: 一、数学定义与本质 张量在数学和物理学中的定义具有多重视角: 多维数组视角 传统数学和物理学中,张量被定义为多维数组,其分量在坐标变换时遵循协变或逆变规则。例…...

【Python爬虫】简单案例介绍3

本文继续接着我的上一篇博客【Python爬虫】简单案例介绍2-CSDN博客 目录 3.3 代码开发 3.3 代码开发 编写代码的步骤&#xff1a; request请求科普中国网站地址url&#xff0c;解析得到类名为"list-block"的div标签。 for循环遍历这个div列表里的每个div&#xff0…...

对于客户端数据存储方案——SQLite的思考

SQLite 比较适合进行本地小型数据的存储&#xff0c;在功能丰富性和并发能力上不如 MySQL。 数据类型差异 SQLite 使用动态类型系统&#xff1a;只有 5 种基本存储类 (NULL, INTEGER, REAL, TEXT, BLOB) 类型亲和性&#xff1a;SQLite 会将声明的列类型映射到最接近的存储类 …...

基于Nacos+动态线程池的分布式系统弹性设计:投行交易与风控场景实战

业务痛点和需求分析 在投行高频交易系统和对公贷款风控计算引擎中&#xff0c;我们面临两大核心挑战&#xff1a; 流量洪峰波动剧烈 交易时段TPS可达10万/秒&#xff0c;非交易时段下降80%风控模型计算存在突发性批量任务&#xff08;如月末集中评审&#xff09; 架构设计与…...

高并发内存池(定长内存池基础)

定长内存池的设计 定长内存池定长内存池的原理讲解代码实现定义对象New对象的主要逻辑delete对象的主要逻辑完整代码 定长内存池 为什么我们要设计这个定长内存池呢&#xff1f;首先malloc是c标准库中向堆申请空间的接口&#xff0c;变相的说malloc是普遍性&#xff0c;而我们…...

element-ui plus 中 filter-method 函数多次触发问题解决

前情提要 点进这个文章的小伙伴&#xff0c;应该都是为了解决一个需求&#xff0c;把原本的前端过滤改为后端过滤&#xff0c;但是将filter-method修改为后端取数据后&#xff0c;发现其触发了很多次。博主也是在修改表格过滤时用到了这个坑&#xff0c;本篇文章为大家解决一下…...

物联网场景实战:智能电表数据管理与分析(一)

智能电表与物联网的融合 在当今数字化时代&#xff0c;随着物联网&#xff08;IoT&#xff09;技术的飞速发展&#xff0c;各行业都在积极探索如何利用这一技术实现转型升级 。电力行业也不例外&#xff0c;智能电表作为电力系统与物联网融合的关键节点&#xff0c;正发挥着越来…...

网络中的基本概念

这篇文章主要介绍我们在学习网络的过程中&#xff0c;会碰到的一系名词&#xff0c;对其概念进行解释&#xff0c;让大家知道这些都是干什么的。 网络&#xff1a;若干个节点和连接这些节点的链路组成的&#xff0c;用于实现信息交换资源共享。 节点&#xff1a;网络中各种接地…...

行锁(Row Locking)和MVCC(多版本并发控制)

在数据库系统中&#xff0c;**行锁&#xff08;Row Locking&#xff09;和MVCC&#xff08;多版本并发控制&#xff09;**是两种不同的并发控制机制&#xff0c;它们的使用场景和原理有显著区别。以下是详细对比和适用场景分析&#xff1a; 一、行锁&#xff08;Row Locking&am…...

AlexNet神经网络详解及VGGNet模型和

AlexNet模型细节 一共8层&#xff0c;5个卷积层&#xff0c;3个全连接层 AlexNet工程技巧 多GPU训练&#xff0c;ReLU激活函数&#xff0c;LRN归一化&#xff0c;Dropout&#xff0c;重叠池化&#xff0c;数据增强等 多GPU训练 除了将模型的神经元进行了并行&#xff0c;还使…...

【Linux网络】Socket 编程TCP

&#x1f308;个人主页&#xff1a;秦jh__https://blog.csdn.net/qinjh_?spm1010.2135.3001.5343 &#x1f525; 系列专栏&#xff1a;https://blog.csdn.net/qinjh_/category_12891150.html 目录 TCP socket API 详解 socket(): bind(): listen(): accept(): connect V0…...

代码训练day27贪心算法p1

贪心的本质是选择每一阶段的局部最优&#xff0c;从而达到全局最优 贪心算法一般分为如下四步&#xff1a; 将问题分解为若干个子问题找出适合的贪心策略求解每一个子问题的最优解将局部最优解堆叠成全局最优解 1.分发饼干 先将饼干数组和小孩数组排序。 然后从后向前遍历…...

基于RV1126开发板的车辆检测算法开发

1. 车辆检测简介 车辆检测是一种基于深度学习的对人进行检测定位的目标检测&#xff0c;能广泛的用于园区管理、交通分析等多种场景&#xff0c;是违停识别、堵车识别、车流统计等多种算法的基石算法。 人脸检测算法mAP0.5CAR0.78029 基于EASY-EAI-Nano硬件主板的运行效率&…...

Leetcode——137 260找出只出现一次的数

文章目录 找出只出现一次的数引入Leetcode 260Leetcode 137 找出只出现一次的数 对于数组中有一类题&#xff0c;即某些数据在数组中只出现一遍&#xff0c;需要我们找出&#xff0c;今天我们来看看这个类型的题。 引入 想必大家应该见过这么一道题&#xff1a; 现给定一个数…...

【多线程-第四天-自己模拟SDWebImage的下载图片功能-看SDWebImage的Demo Objective-C语言】

一、我们打开之前我们写的异步下载网络图片的项目,把刚刚我们写好的分类拖进来 1.我们这个分类包含哪些文件: 1)HMDownloaderOperation类, 2)HMDownloaderOperationManager类, 3)NSString+Sandbox分类, 4)UIImageView+WebCache分类, 这四个文件吧,把它们拖过来…...

【5G学习】基本概念之多频资源以及子载波和信道

在5G通信中&#xff0c;子载波、信道以及时域、频域、码域、空域是构建无线传输系统的核心概念。它们共同定义了信号的传输方式、资源分配和多维复用技术。以下是详细解释及其相互关系&#xff1a; 一、核心概念定义 1. 子载波&#xff08;Subcarrier&#xff09; 定义&#…...

鸿蒙动画与交互设计:ArkUI 3D变换与手势事件详解

大家好&#xff0c;我是 V 哥。 在鸿蒙 NEXT 开发中&#xff0c;ArkUI 提供了丰富的 3D 变换和手势事件功能&#xff0c;可用于创建生动且交互性强的用户界面。下面详细介绍 ArkUI 的 3D 变换和手势事件&#xff0c;并给出相应的 ArkTS 案例代码。 1. ArkUI 3D 变换 ArkUI 支…...

敏感数据触发后怎么保障安全?

当敏感数据被触发或泄露时&#xff0c;需立即采取系统化措施控制风险。以下为分阶段应对策略&#xff0c;结合技术与管理手段&#xff1a; 一、即时响应阶段 阻断扩散 隔离受影响系统&#xff1a;立即断开网络连接、暂停服务或关闭相关端口。 终止可疑进程&#xff1a;通过华…...

【CVE-2024-10929】ARM CPU漏洞安全通告

安全之安全(security)博客目录导读 目录 一、概述 二、CVE详情 三、受影响产品 四、建议措施 五、致谢 六、版本历史 一、概述 在部分基于Arm架构的CPU中发现了一个潜在安全问题&#xff0c;称为Spectre-BSE&#xff08;Branch Status Eviction&#xff0c;分支状态驱逐…...

高级java每日一道面试题-2025年4月06日-微服务篇[Nacos篇]-如何诊断和解决Nacos中的常见问题?

如果有遗漏,评论区告诉我进行补充 面试官: 如何诊断和解决Nacos中的常见问题&#xff1f; 我回答: 在Java高级面试中诊断和解决Nacos常见问题的综合回答 在Java高级面试中&#xff0c;当被问及如何诊断和解决Nacos中的常见问题时&#xff0c;可以从以下几个方面进行详细阐述…...

【模块化拆解与多视角信息3】教育背景:学历通胀时代的生存法则

教育背景:学历通胀时代的生存法则 写在最前 作为一个中古程序猿,我有很多自己想做的事情,比如埋头苦干手搓一个低代码数据库设计平台(目前只针对写java的朋友),比如很喜欢帮身边的朋友看看简历,讲讲面试技巧,毕竟工作这么多年,也做到过高管,有很多面人经历,意见还算…...

无人机3S与4S电池技术对比!

一、基础参数对比 1. 电芯与电压 3S电池&#xff1a;由3节锂电芯串联组成&#xff0c;标称电压为11.1V&#xff08;单节3.7V3&#xff09;&#xff0c;满电电压约12.6V。 4S电池&#xff1a;由4节电芯串联&#xff0c;标称电压14.8V&#xff08;3.7V4&#xff09;&#…...

linux电源管理(二),内核的CPUFreq(DVFS)和ARM的SCPI

更多linux系统电源管理相关的内容请看&#xff1a;https://blog.csdn.net/u010936265/article/details/146436725?spm1011.2415.3001.5331 1 简介 CPUFreq子系统位于drivers/cpufreq目录下&#xff0c;负责进行运行过程中CPU频率和电压的动态调整&#xff0c;即DVFS (Dynami…...

短波红外高光谱相机:高光谱成像在塑料分选中的应用

随着塑料工业的迅猛发展&#xff0c;塑料包装制品需求量增长迅速&#xff0c;消耗量不断上升&#xff0c;废塑料产生量也急剧增加。由于塑料化学结构稳定&#xff0c;难以自然降解&#xff0c;不当使用和处置及累积会造成严重的环境污染和资源浪费。因此&#xff0c;快速、精准…...

通过OBD部署OceanBase社区版集群v4.3.5

以下内容结合OceanBase官方文档进行安装部署测试 官方文档地址&#xff1a;https://www.oceanbase.com/docs/common-oceanbase-database-cn-1000000002016072 一.环境准备 准备三台虚拟机&#xff0c;配置信息如下 192.168.232.8 centos7.9 4c16g 硬盘100g 192.168.232.9 …...

【Java学习笔记】注释

注释 为什么要写注释&#xff1f; 养成良好的编程习惯&#xff0c;方便后续阅读和查看&#xff0c;理顺思路&#xff0c;增加可读性 对自己的代码负责&#xff0c;对别人负责 说明 1. 被注释的文字&#xff0c;不会被 JVM&#xff08;虚拟机&#xff09;解释执行 2. 多行注…...

Python 调用 YOLO ONNX

Python 调用 YOLO ONNX 1 下载ONNX文件2 Python代码 1 下载ONNX文件 ONNX下载地址 2 Python代码 import cv2 from ultralytics import YOLO# 加载 YOLOv11 model YOLO(./yolo11n.pt)# 读取图片 image_path ./11.png img cv2.imread(image_path)# 推理&#xff08;可以传…...