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

【Numpy核心编程攻略:Python数据处理、分析详解与科学计算】2.11 视图与副本:内存优化的双刃剑

在这里插入图片描述

2.11 视图与副本:内存优化的双刃剑

目录
《视图与副本:内存优化的双刃剑》
2.11.1 视图创建条件检测
2.11.2 副本深度拷贝机制
2.11.3 内存占用实时监控
2.11.4 内存泄漏预防
2.11.5 Dask集成案例
2.11.6 总结
2.11.7 参考文献
2.11.1 视图创建条件检测

在 NumPy 中,数组操作可以创建视图或副本。视图不创建新的数据副本,而是共享原始数组的数据,因此对内存占用较小。副本则会创建新的数据副本,占用更多的内存。了解视图和副本的创建条件对于优化内存使用至关重要。

  • 视图与副本的区别:视图和副本的基本概念。
  • 视图创建条件:哪些操作会创建视图。
  • 副本创建条件:哪些操作会创建副本。
  • 检测方法:如何检测视图和副本。
import numpy as np# 创建一个原始数组
a = np.array([1, 2, 3, 4, 5, 6])# 视图操作
b = a[1:4]  # 使用切片操作创建视图
print(f"b 是否是 a 的视图: {np.may_share_memory(a, b)}")  # 检测 b 是否是 a 的视图# 副本操作
c = a.copy()  # 使用 copy 方法创建副本
print(f"c 是否是 a 的副本: {np.may_share_memory(a, c)}")  # 检测 c 是否是 a 的副本
2.11.2 副本深度拷贝机制

副本的深度拷贝机制确保了数据的独立性,但在处理大数组时会消耗较多内存。了解深度拷贝的实现原理和优化方法可以提高代码性能。

  • 深度拷贝的实现原理copy 方法的实现原理。
  • 优化方法:如何优化深度拷贝操作。
  • 使用 np.ascontiguousarray:优化内存布局。
通过 copy 方法创建副本
ndarray
+int nd: 维度数
+npy_intp* dimensions: 形状数组
+npy_intp* strides: 步长数组
+void* data: 数据指针
+PyDataTypeObject* dtype: 数据类型
+PyObject* base: 基数组
+int flags: 标志位
copy
+ndarray* _copy: 拷贝后的数组
+void* _data: 新的数据指针
+npy_intp* _strides: 新的步长数组
+int _flags: 新的标志位
import numpy as np# 创建一个原始数组
a = np.array([[1, 2, 3], [4, 5, 6]])# 深度拷贝
b = a.copy()
b[0, 0] = 10  # 修改副本中的值
print(f"原始数组 a: \n{a}")  # 原始数组不受影响
print(f"副本数组 b: \n{b}")  # 副本数组被修改# 使用 np.ascontiguousarray 优化内存布局
c = np.ascontiguousarray(a)
print(f"优化后的数组 c: \n{c}")  # 确保内存连续
2.11.3 内存占用实时监控

实时监控内存占用可以帮助你及时发现并解决内存泄漏问题。使用 memory_profiler 工具可以方便地进行内存监控。

  • memory_profiler 安装:如何安装 memory_profiler
  • 内存监控方法:使用 memory_profiler 进行内存监控。
  • 内存泄漏检测:如何检测内存泄漏。
内存占用实时监控
memory_profiler 安装
使用 memory_profiler 进行内存监控
检测内存泄漏
# 使用 memory_profiler 进行内存监控
from memory_profiler import profile@profile
def memory_intensive_function():a = np.random.rand(10000, 10000)  # 创建一个大数组b = a.copy()  # 创建副本del a  # 删除原始数组c = b[1:1000, 1:1000]  # 创建视图del b  # 删除副本return cresult = memory_intensive_function()
print(f"结果数组: \n{result}")  # 输出结果数组
2.11.4 内存泄漏预防

内存泄漏是指程序在运行过程中未能释放不再使用的内存,导致内存占用不断增加。了解内存泄漏的原因和预防方法可以提高代码的稳定性和性能。

  • 内存泄漏的原因:常见的内存泄漏原因。
  • 预防方法:如何预防内存泄漏。
  • 使用 Dask 进行内存管理:Dask 的内存管理机制。
内存泄漏预防
内存泄漏的原因
未释放的内存
循环引用
隐式内存分配
预防方法
及时释放内存
避免循环引用
使用 Dask 进行内存管理
自动释放内存
分块处理数据
import numpy as np
import dask.array as da# 创建一个大数组
a = np.random.rand(10000, 10000)# 使用 Dask 进行内存管理
dask_a = da.from_array(a, chunks=(1000, 1000))  # 分块处理数组
print(f"Dask 数组: \n{dask_a}")  # 输出 Dask 数组# 计算平均值
mean_result = dask_a.mean().compute()  # 计算并释放中间结果
print(f"平均值: {mean_result}")  # 输出平均值
2.11.5 Dask集成案例

Dask 是一个并行计算库,可以与 NumPy 集成以处理大规模数据。通过 Dask,可以有效地管理内存,避免内存溢出。

  • Dask 基本概念:Dask 的基本概念和工作原理。
  • Dask 与 NumPy 集成:如何将 Dask 与 NumPy 集成。
  • 性能比较:Dask 与纯 NumPy 的性能比较。
Dask集成案例
Dask 基本概念
延迟计算
分块处理
Dask 与 NumPy 集成
创建 Dask 数组
执行计算
性能比较
计算时间
内存占用
import numpy as np
import dask.array as da
import time# 创建一个大数组
np_a = np.random.rand(10000, 10000)# 使用 Dask 创建分块数组
dask_a = da.from_array(np_a, chunks=(1000, 1000))# 计算平均值(NumPy)
start_time = time.time()
np_mean = np_a.mean()
np_time = time.time() - start_time
print(f"使用 NumPy 计算平均值: {np_mean}, 用时: {np_time:.2f}秒")# 计算平均值(Dask)
start_time = time.time()
dask_mean = dask_a.mean().compute()
dask_time = time.time() - start_time
print(f"使用 Dask 计算平均值: {dask_mean}, 用时: {dask_time:.2f}秒")# 比较内存占用
import tracemalloctracemalloc.start()
np_a = np.random.rand(10000, 10000)
np_current, np_peak = tracemalloc.get_traced_memory()
tracemalloc.stop()tracemalloc.start()
dask_a = da.from_array(np.random.rand(10000, 10000), chunks=(1000, 1000))
dask_mean = dask_a.mean().compute()
dask_current, dask_peak = tracemalloc.get_traced_memory()
tracemalloc.stop()print(f"使用 NumPy 的内存峰值: {np_peak / 1024 / 1024:.2f} MB")
print(f"使用 Dask 的内存峰值: {dask_peak / 1024 / 1024:.2f} MB")
2.11.6 总结
  • 关键收获:理解视图与副本的创建条件,掌握深度拷贝机制,学会内存占用实时监控方法。
  • 最佳实践:合理使用视图和副本,及时释放不再使用的内存,避免内存泄漏。
  • 工具和库:使用 memory_profiler 进行内存监控,使用 Dask 进行大规模数据处理。

通过本文,我们深入探讨了 NumPy 中视图与副本的创建条件,副本的深度拷贝机制,内存占用的实时监控方法,内存泄漏的预防技巧,以及 Dask 与 NumPy 的集成案例。希望这些内容能帮助你在实际开发中更好地优化内存使用,提高代码性能,避免常见的内存陷阱。

2.11.7 参考文献
参考资料链接
《NumPy Beginner’s Guide》NumPy Beginner’s Guide
《Python for Data Analysis》Python for Data Analysis
NumPy 官方文档NumPy Reference
Dask 官方文档Dask Documentation
Stack OverflowHow to detect memory leaks in NumPy
MediumUnderstanding NumPy Views and Copies
Python Memory ManagementPython Memory Management
SciPy 官方文档SciPy Memory Efficiency
WikipediaMemory Leaks
《高性能Python》High Performance Python
《Python数据科学手册》Python Data Science Handbook

这篇文章包含了详细的原理介绍、代码示例、源码注释以及案例等。希望这对您有帮助。如果有任何问题请随私信或评论告诉我。

相关文章:

【Numpy核心编程攻略:Python数据处理、分析详解与科学计算】2.11 视图与副本:内存优化的双刃剑

2.11 视图与副本:内存优化的双刃剑 目录 #mermaid-svg-OpelXRXip4Xj1A2e {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-OpelXRXip4Xj1A2e .error-icon{fill:#552222;}#mermaid-svg-OpelXRXip4Xj1A2e .…...

React 封装高阶组件 做路由权限控制

React 高阶组件是什么 官方解释∶ 高阶组件(HOC)是 React 中用于复用组件逻辑的一种高级技巧。HOC 自身不是 React API 的一部分,它是一种基于 React 的组合特性而形成的设计模式。 高阶组件(HOC)就是一个函数&…...

Python sider-ai-api库 — 访问Claude、llama、ChatGPT、gemini、o1等大模型API

目前国内少有调用ChatGPT、Claude、Gemini等国外大模型API的库。 Python库sider_ai_api 提供了一个完整的解决方案。通过调用 sider.ai 的API,开发者可以实现对这些大模型的访问。 众所周知,sider是一个Chrome,以及Edge的浏览器插件&#xf…...

深入解析 Linux 内核内存管理核心:mm/memory.c

在 Linux 内核的众多组件中,内存管理模块是系统性能和稳定性的关键。mm/memory.c 文件作为内存管理的核心实现,承载着页面故障处理、页面表管理、内存区域映射与取消映射等重要功能。本文将深入探讨 mm/memory.c 的设计思想、关键机制以及其在内核中的作用,帮助读者更好地理…...

git基础使用--3---git安装和基本使用

git基础使用–3–git-安装和基本使用 1. git工具安装 使用git如果不考虑开发工具我们一般需要关注三个点 1.1 git 本地化仓库管理的基础 打开https://git-scm.com/downloads地址下载安装 安装完成后,配置环境变量 配置完打开cmd,输入git --versio…...

Python 网络爬虫实战:从基础到高级爬取技术

📝个人主页🌹:一ge科研小菜鸡-CSDN博客 🌹🌹期待您的关注 🌹🌹 1. 引言 网络爬虫(Web Scraping)是一种自动化技术,利用程序从网页中提取数据,广泛…...

【PyQt】学习PyQt进行GUI开发从基础到进阶逐步掌握详细路线图和关键知识点

学习PyQt的必要性 PyQt是开发跨平台GUI应用的强大工具,适合需要构建复杂、高性能界面的开发者。无论是职业发展还是项目需求,学习PyQt都具有重要意义。 1. 跨平台GUI开发 跨平台支持:PyQt基于Qt框架,支持Windows、macOS、Linux…...

Web - CSS3基础语法与盒模型

概述 这篇文章是关于 Web 前端 CSS3 的基础语法与盒模型的讲解。包括 CSS3 层叠性及处理冲突规则、伪元素和新增伪类元素、属性选择器等。还介绍了文本与字体属性,如段落和行相关属性、字体文本属性。最后阐述了盒子模型,如元素隐藏、行内与块元素转换、…...

【开源免费】基于Vue和SpringBoot的公寓报修管理系统(附论文)

本文项目编号 T 186 ,文末自助获取源码 \color{red}{T186,文末自助获取源码} T186,文末自助获取源码 目录 一、系统介绍二、数据库设计三、配套教程3.1 启动教程3.2 讲解视频3.3 二次开发教程 四、功能截图五、文案资料5.1 选题背景5.2 国内…...

成绩案例demo

本案例较为简单,用到的知识有 v-model、v-if、v-else、指令修饰符.prevent .number .trim等、computed计算属性、toFixed方法、reduce数组方法。 涉及的功能需求有:渲染、添加、删除、修改、统计总分,求平均分等。 需求效果如下&#xff1a…...

【tiktok 国际版抖抖♬♬ __ac_signature算法】逆向分析

一开始的参数是没有X-Bogus和 __ac_signature的 先是加密请求参数得到乱码。最终得到X-Bogus 然后请求参数添加了X-Bogus之后再去生成__ac_signature __ac_signature的生成需要用到X-Bogus...

【Linux】动静态库

一、库 静态库 .a[Linux]、.lib[windows] 动态库 .so[Linux]、.dll[windows] 二、静态库使用 如果我们要做一个静态库的话,首先我们需要把我们源文件(.c/.cpp)隐藏起来,头文件(.h)必须暴露出来, 1.我们先要把我们所有的.c文件编译成.o文件…...

《手札·开源篇》从开源到商业化:中小企业的低成本数字化转型路径 ——以Odoo为数据中台低成本实现售前售中一体化

某机电设备有限公司数字化转型案例:以Odoo为数据中台实现售前售中一体化 一、企业背景某机电设备有限公司在机电设备领域历经多年发展,业务广泛,涵盖工业自动化设备、电力设备等产品的销售与服务。随着业务版图不断拓展,企业面临…...

携程Android开发面试题及参考答案

在项目中,给别人发的动态点赞功能是如何实现的? 数据库设计:首先要在数据库中为动态表添加一个点赞字段,用于记录点赞数量,同时可能需要一个点赞关系表,记录用户与动态之间的点赞关联,包括点赞时间等信息。界面交互:在 Android 界面上,为点赞按钮设置点击事件监听器。…...

Python-列表

3.1 列表是什么 在Python中,列表是一种非常重要的数据结构,用于存储一系列有序的元素。列表中的每个元素都有一个索引,索引从0开始。列表可以包含任何类型的元素,包括其他列表。 # 创建一个列表my_list [1, 2, 3, four, 5.0]…...

【LeetCode 刷题】回溯算法-子集问题

此博客为《代码随想录》二叉树章节的学习笔记,主要内容为回溯算法子集问题相关的题目解析。 文章目录 78.子集90.子集II 78.子集 题目链接 class Solution:def subsets(self, nums: List[int]) -> List[List[int]]:res, path [], []def dfs(start: int) ->…...

31.Word:科技论文的译文审交稿【31】

目录 NO1.2.3​ NO4.5.6 NO7.8样式应用和修改&多级列表​ NO9奇偶页页眉 NO10自动编号&交叉引用 NO11.12 NO1.2.3 另存为/F12:考生文件夹只保留译文内容、格式设置、修订批注,删除其他:删除表格的左列→删除第一行将表格转化成…...

Java序列化详解

1 什么是序列化、反序列化 在Java编程实践中,当我们需要持久化Java对象,比如把Java对象保存到文件里,或是在网络中传输Java对象时,序列化机制就发挥着关键作用。 序列化:指的是把数据结构或对象转变为可存储、可传输的…...

尝试ai生成figma设计

当听到用ai 自动生成figma设计时,不免好奇这个是如何实现的。在查阅了不少资料后,有了一些想法。参考了:在figma上使用脚本自动生成色谱 这篇文章提供的主要思路是:可以通过脚本的方式构建figma设计。如果我们使用ai 生成figma脚本…...

每日一题——包含min函数的栈

包含min函数的栈 题目数据范围:示例C语言代码实现解释1. push(value)2. pop()3. top()4. min() 总结大小堆GPT给的原始代码 题目 定义栈的数据结构,请在该类型中实现一个能够得到栈中所含最小元素的 min 函数,输入操作时保证 pop、top 和 mi…...

【最后203篇系列】004 -Smarklink

说明 这个用来替代nginx。 最初是希望用nginx进行故障检测和负载均衡,花了很多时间,大致的结论是:nginx可以实现,但是是在商业版里。非得要找替代肯定可以搞出来,但是太麻烦了(即使是nginx本身的配置也很烦…...

二分法模板

数组具有二段性,可以分为左右两边合法区和不合法区 如果选择左端点,右边区域不合法,选择 left mid ,right mid - 1; 如果选择右端点,左边区域不合法,选择 left mid 1 ,right mid ; 1.x 的平方根 LCR 072. x 的…...

基于SpringBoot的智慧康老疗养院管理系统的设计与实现(源码+SQL脚本+LW+部署讲解等)

专注于大学生项目实战开发,讲解,毕业答疑辅导,欢迎高校老师/同行前辈交流合作✌。 技术范围:SpringBoot、Vue、SSM、HLMT、小程序、Jsp、PHP、Nodejs、Python、爬虫、数据可视化、安卓app、大数据、物联网、机器学习等设计与开发。 主要内容:…...

LabVIEW无人机航线控制系统

介绍了一种无人机航线控制系统,该系统利用LabVIEW软件与MPU6050九轴传感器相结合,实现无人机飞行高度、速度、俯仰角和滚动角的实时监控。系统通过虚拟仪器技术,有效实现了数据的采集、处理及回放,极大提高了无人机航线的控制精度…...

STM32CUBEIDE编译的hex使用flymcu下载后不能运行

测试后确认,不论是1.10版本还是1.16版本,编译生成的hex下载后不能运行,需要更改boot 设置才能开始运行,flymcu下载后已经告知一切正常,跳转到8000 0000处开始运行,实际没有反应,而使用mdk编译生…...

final-关键字

一、final修饰的类不能被继承 当final修饰一个类时,表明这个类不能被其他类继承。例如,在 Java 中,String类就是被final修饰的,这保证了String类的不可变性和安全性,防止其他类通过继承来改变String类的行为。 final…...

在RHEL 8.10上安装开源工业物联网解决方案Thingsboard 3.9

在RHEL/CentOS/Rocky/AlmaLinux/Oracle Linux 8单节点上安装 备注: 适用于单节点 是否支持欧拉??? 前提条件 本指南描述了如何在RHEL/CentOS 7/8上安装ThingsBoard。硬件要求取决于所选的数据库和连接到系统的设备数量。要在单…...

deepseek+vscode自动化测试脚本生成

近几日Deepseek大火,我这里也尝试了一下,确实很强。而目前vscode的AI toolkit插件也已经集成了deepseek R1,这里就介绍下在vscode中利用deepseek帮助我们完成自动化测试脚本的实践分享 安装AI ToolKit并启用Deepseek 微软官方提供了一个针对AI辅助的插件,也就是 AI Toolk…...

k8s支持自定义field-selector spec.hostNetwork过滤

好久没写博客啦,年前写一个博客就算混过去啦😂 写一个小功能,对于 Pod,在没有 label 的情况下,支持 --field-selector spec.hostNetwork 查询 Pod 是否为 hostNetwork 类型,只为了熟悉 APIServer 是如何构…...

图像噪声处理技术:让图像更清晰的艺术

在这个数字化时代,图像作为信息传递的重要载体,其质量直接影响着我们的视觉体验和信息解读。然而,在图像采集、传输或处理过程中,难免会遇到各种噪声干扰,如高斯噪声、椒盐噪声等,这些噪声会降低图像的清晰…...

w186格障碍诊断系统spring boot设计与实现

🙊作者简介:多年一线开发工作经验,原创团队,分享技术代码帮助学生学习,独立完成自己的网站项目。 代码可以查看文章末尾⬇️联系方式获取,记得注明来意哦~🌹赠送计算机毕业设计600个选题excel文…...

【自学笔记】Java的重点知识点-持续更新

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 Java知识点概览一、Java简介二、Java基本语法三、面向对象编程(OOP)四、异常处理五、常用类库六、多线程编程七、网络编程 注意事项 总结 Ja…...

031.关于后续更新和指纹浏览器成品

关于后续更新 后续决定不再更新了,我低估了各种检测站的更新速度,我开源的一些源码修改方法,已经被个别检测网站加入了针对性检测。只要开源了,一段时间后就会有针对性反检测。这种东西根本就不能开源,开源了大家就一…...

013-51单片机红外遥控器模拟控制空调,自动制冷制热定时开关

主要功能是通过红外遥控器模拟控制空调,可以实现根据环境温度制冷和制热,能够通过遥控器设定温度,可以定时开关空调。 1.硬件介绍 硬件是我自己设计的一个通用的51单片机开发平台,可以根据需要自行焊接模块,这是用立创…...

UE5 蓝图学习计划 - Day 10:UI 系统(HUD 与 Widget)

在游戏开发中,UI(用户界面) 是玩家获取游戏信息、与游戏进行交互的重要部分。Unreal Engine 5 提供了 HUD(Head-Up Display) 和 Widget Blueprint(小部件蓝图) 来帮助开发者创建 血量条、得分系…...

QT简单实现验证码(字符)

0) 运行结果 1) 生成随机字符串 Qt主要通过QRandomGenerator类来生成随机数。在此之前的版本中,qrand()函数也常被使用,但从Qt 5.10起,推荐使用更现代化的QRandomGenerator类。 在头文件添加void generateRandomNumb…...

代码随想录刷题笔记

数组 二分查找 ● 704.二分查找 tips:两种方法,左闭右开和左闭右闭,要注意区间不变性,在判断mid的值时要看mid当前是否使用过 ● 35.搜索插入位置 ● 34.在排序数组中查找元素的第一个和最后一个位置 tips:寻找左右边…...

VSCode 中的 Git Graph扩展使用详解

VSCode 中的 Git Graph 详解 1. 什么是 Git Graph? Git Graph 是 VSCode 中的一款 Git 可视化扩展,它提供了一种 图形化方式 来查看 Git 提交历史、分支、合并记录等信息,使得 Git 版本管理更加直观和高效。 通过 Git Graph,你…...

Day07:缓存-数据淘汰策略

Redis的数据淘汰策略有哪些 ? (key过期导致的) 在redis中提供了两种数据过期删除策略 第一种是惰性删除,在设置该key过期时间后,我们不去管它,当需要该key时,我们再检查其是否过期,如果过期&…...

【自学嵌入式(8)天气时钟:天气模块开发、主函数编写】

天气时钟:天气模块开发、主函数编写 I2C协议和SPI协议I2C(Inter-Integrated Circuit)SPI(Serial Peripheral Interface) 天气模块心知天气预报使用HTTPClient类介绍主要功能常用函数注意事项 JSON介绍deserializeJson函…...

简单的SQL语句的快速复习

语法的执行顺序 select 4 字段列表 from 1 表名列表 where 2 条件列表 group by 3 分组前过滤 having 分组后过滤 order by 5 排序字段列表 limit 6 分页参数 聚合函数 count 统计数量 max 最大值 min 最小值 avg 平均 sum 总和 分组查询使…...

跟李沐学AI:视频生成类论文精读(Movie Gen、HunyuanVideo)

Movie Gen:A Cast of Media Foundation Models 简介 Movie Gen是Meta公司提出的一系列内容生成模型,包含了 3.2.1 预训练数据 Movie Gen采用大约 100M 的视频-文本对和 1B 的图片-文本对进行预训练。 图片-文本对的预训练流程与Meta提出的 Emu: Enh…...

Rust 所有权特性详解

Rust 所有权特性详解 Rust 的所有权系统是其内存安全的核心机制之一。通过所有权规则,Rust 在编译时避免了常见的内存错误(如空指针、数据竞争等)。本文将从堆内存与栈内存、所有权规则、变量作用域、String 类型、内存分配、所有权移动、Cl…...

基于人脸识别的课堂考勤系统

该项目是一个基于人脸识别的课堂考勤系统,使用Python开发,结合了多种技术实现考勤功能。要开发类似的基于人脸识别的考勤系统,可参考以下步骤: 环境搭建:利用Anaconda创建虚拟环境,指定Python版本为3.8&am…...

Deepseek R1 本地化部署指南:跨平台实战

引言 Deepseek R1 作为一款强大的本地化人工智能工具,支持在多种操作系统上部署,满足开发者和企业私有化运行的需求。本文将手把手教你如何在 Windows、Linux 和 macOS 系统上完成 Deepseek R1 的本地化部署,并附赠常见问题解决技巧! © ivwdcwso (ID: u012172506) 1…...

Nginx 运维开发高频面试题详解

一、基础核心问题 原文链接:https://blog.csdn.net/weixin_51146329/article/details/142963853 1、什么是Nginx? Nginx 是一个高性能的 HTTP 和反向代理服务器,它以轻量级和高并发处理能力而闻名。Nginx 的反向代理功能允许它作为前端服务…...

JVM运行时数据区域-附面试题

Java虚拟机在执行Java程序的过程中会把它所管理的内存划分为若干个不同的数据区域。这些区域 有各自的用途,以及创建和销毁的时间,有的区域随着虚拟机进程的启动而一直存在,有些区域则是 依赖用户线程的启动和结束而建立和销毁。 1. 程序计…...

DeepSeek本地部署详细指南

DeepSeek本地部署详细指南 随着人工智能技术的飞速发展,本地部署大模型的需求也日益增加。DeepSeek作为一款开源且性能强大的大语言模型,提供了灵活的本地部署方案,让用户能够在本地环境中高效运行模型,同时保护数据隐私。以下是…...

Debian 10 中 Linux 4.19 内核在 x86_64 架构上对中断嵌套的支持情况

一、中断嵌套的定义与原理 中断嵌套是指在一个中断处理程序(ISR)正在执行的过程中,另一个更高优先级的中断请求到来,系统暂停当前中断处理程序,转而处理新的高优先级中断。处理完高优先级中断后,系统返回到原来的中断处理程序继续执行。这种机制允许系统更高效地响应紧急…...

C语言:深入了解指针1

内存和地址 1. 酒店房间类比内存和地址 场景描述 把计算机的内存想象成一家酒店,每个房间就是一个内存单元,每个房间都有一个唯一的房间号,这个房间号就相当于内存地址。房间里可以存放客人的行李等物品,这些物品就好比存储在内…...