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

动态内存分配

动态内存分配

  • 1. malloc
    • 1.1函数原型
    • 1.2参数
    • 1.3特点
    • 1.4注意事项
  • 2.calloc
    • 2.1函数原型
    • 2.2参数
    • 2.3特点
    • 2.4注意事项
  • 3.realloc
    • 3.1函数原型
    • 3.2参数
    • 3.3特点
    • 3.4注意事项
  • 4.free
    • 4.1 函数原型
    • 4.2参数
    • 4.3特点
  • 结语

在 C 语言中,主要使用标准库函数 <stdlib.h> 中的几个函数来进行动态内存分配和释放,这些函数包括 malloc、calloc、realloc 和 free。

1. malloc

malloc 是 C 语言中动态内存分配函数之一,用于在程序运行时分配一块指定大小的内存空间。

1.1函数原型

void* malloc(size_t size);

1.2参数

  1. size:表示要分配的内存大小,单位是字节。
  2. 返回值:
    成功时,返回一个指向分配的内存块的指针,该指针指向分配的内存空间的起始地址。
    如果分配失败(例如内存不足),则返回 NULL。

1.3特点

  1. 动态分配:malloc 分配的内存是在堆区动态分配的,其大小由程序运行时决定,而不是在编译时确定。
  2. 未初始化:malloc 分配的内存块内容是未初始化的,即内存中的值是随机的,可能包含垃圾数据。
  3. 需要手动释放:使用 malloc 分配的内存必须通过 free 函数手动释放,否则会导致内存泄漏。

1.4注意事项

  1. 检查返回值:在使用 malloc 后,必须检查返回值是否为 NULL,以避免使用未成功分配的内存。
  2. 释放内存:使用完 malloc 分配的内存后,必须调用 free 函数释放内存,避免内存泄漏。
  3. 类型转换:要将类型强转为所需赋值相对应的指针.

2.calloc

calloc 是 C 语言中另一个动态内存分配函数,与 malloc 类似,但它在分配内存的同时会自动初始化内存为零。这使得 calloc 在某些场景下比 malloc 更安全和方便。

2.1函数原型

void* calloc(size_t num, size_t size);

2.2参数

  • num:要分配的元素数量。
  • size:每个元素的大小(以字节为单位)。
  • 返回值
    成功时,返回一个指向分配的内存块的指针,该指针指向的内存空间已被初始化为零。
    如果分配失败(例如内存不足),则返回 NULL。

2.3特点

  • 自动初始化:calloc 分配的内存会被初始化为零,这意味着分配的内存中所有字节的值都是 0。
  • 动态分配:与 malloc 一样,calloc 分配的内存位于堆区,其大小由程序运行时决定。
  • 需要手动释放:使用 calloc 分配的内存也必须通过 free 函数手动释放,否则会导致内存泄漏。

2.4注意事项

注意事项处与malloc大致相同,参考malloc;
如此,什么时候使用malloc什么时候使用calloc呢?

  • 当你需要分配一块内存并确保其内容为零时,calloc 是更好的选择。
  • 如果你只需要分配内存而不关心初始值,malloc 可能更高效。

3.realloc

realloc 是 C 语言中用于重新分配动态内存的函数。它可以在运行时调整之前分配的内存块的大小,同时保留原有内存中的数据(如果可能)。这使得 realloc 非常适合在程序运行过程中动态调整内存需求。

3.1函数原型

void* realloc(void* ptr, size_t new_size);

3.2参数

  1. ptr:指向之前通过 malloc、calloc 或 realloc 分配的内存块的指针。
  2. new_size:新的内存块大小(以字节为单位)。
  3. 返回值
  • 如果重新分配成功,返回指向新分配内存块的指针。
  • 如果 new_size 为零,realloc 会释放原内存块并返回 NULL。
  • 如果内存重新分配失败(例如内存不足),realloc 会返回 NULL,但原内存块保持不变。

3.3特点

  1. 动态调整大小:realloc 可以增大或减小内存块的大小。
  2. 数据保留:
    如果新大小大于原大小,原内存块中的数据保持不变,新增部分的内容未定义(可能包含垃圾数据)。
    如果新大小小于原大小,原内存块中的数据会被截断,但保留的部分内容保持不变。
  3. 内存移动:如果无法在原内存块的位置进行扩展或收缩,realloc 会分配一个新的内存块,并将原数据复制到新内存块中。此时,原内存块会被释放。
  4. 需要手动释放:如果 realloc 返回的指针被赋值给原指针变量,且重新分配失败(返回 NULL),原内存块会被释放,导致数据丢失。因此,使用 realloc 时需要特别小心。

3.4注意事项

  1. 检查返回值:realloc 的返回值必须检查是否为 NULL,以避免使用无效指针。
  2. 避免内存泄漏:
    如果 realloc 返回 NULL,原内存块仍然有效,必须手动释放。
    如果 realloc 成功,原指针变量必须更新为返回的新指针。
  3. 内存移动:如果 realloc 分配了新的内存块,原内存块中的数据会被复制到新内存块中,原内存块会被释放。
  4. new_size 为零:如果 new_size 为零,realloc 会释放原内存块并返回 NULL。这种行为类似于 free,但需要特别注意,因为原指针不再有效。
    使用场景
    当你需要动态调整内存大小时,例如在读取文件内容时,根据文件大小动态调整缓冲区大小。
    在实现动态数据结构(如动态数组、链表等)时,realloc 可以方便地调整内存大小。

4.free

free 是 C 语言中用于释放动态分配的内存的函数。它与 malloc、calloc 和 realloc 配合使用,用于释放这些函数分配的内存,从而避免内存泄漏。

4.1 函数原型

void free(void* ptr);

4.2参数

ptr:指向要释放的内存块的指针。该指针必须是之前通过 malloc、calloc 或 realloc 分配的内存块的起始地址。

4.3特点

  1. 释放内存:free 用于释放动态分配的内存。释放后,该内存块可以被系统重新分配给其他用途。
  2. 避免重复释放:如果尝试释放一个已经被释放的指针,可能会导致未定义行为(如程序崩溃或数据损坏)。因此,释放内存后,通常将指针设置为 NULL,以避免悬挂指针问题。
  3. 释放空指针:free(NULL) 是安全的,不会导致错误。这是一个有用的特性,可以在释放内存之前不检查指针是否为 NULL。
  4. 不改变指针值:free 只释放指针指向的内存,但不会改变指针本身的值。因此,释放内存后,必须手动将指针设置为 NULL,以防止后续误用。

结语

总的来说,动态内存分配malloc是申请内存但不初始化,而calloc比malloc多了一个初始化数据的过程,并且两者申请内存的参数是不一样的.而realloc主要是用来来修改内存空间的大小.三者在使用完之后,都要将所申请的空间给释放掉,以免造成内存空间泄露等一系列问题.并且要将指针置空,不要造成野指针之一问题.

相关文章:

动态内存分配

动态内存分配 1. malloc1.1函数原型1.2参数1.3特点1.4注意事项 2.calloc2.1函数原型2.2参数2.3特点2.4注意事项 3.realloc3.1函数原型3.2参数3.3特点3.4注意事项 4.free4.1 函数原型4.2参数4.3特点 结语 在 C 语言中&#xff0c;主要使用标准库函数 <stdlib.h> 中的几个函…...

物联网设备数据割裂难题:基于OAuth2.0的分布式用户画像系统设计!格行代理是不是套路?2025有什么比较好的副业?低成本的创业好项目有哪些?

一、行业基本面&#xff1a;双赛道增长逻辑验证 1.1 随身WiFi市场&#xff1a;场景红利与技术博弈 移动办公、户外直播等场景推动随身WiFi需求持续增长&#xff0c;格行核心的三网切换技术&#xff08;移动/联通/电信自动择优&#xff09;有效解决单一运营商信号覆盖盲区问题&…...

17.10 LangSmith Evaluation 深度实战:构建智能评估体系驱动大模型进化

LangSmith Evaluation 深度实战:构建智能评估体系驱动大模型进化 关键词:LangSmith 评估体系, 大模型质量评估, 自动化评测流水线, 多维度指标分析, 生产环境模型监控 1. 评估体系设计哲学 LangSmith Evaluation 采用 规则评估+模型评估+人工反馈 三位一体的评估框架: #me…...

Gravitino SparkConnector 实现原理

Gravitino SparkConnector 实现原理 本文参考了官网介绍&#xff0c;想看官方解析请参考 官网地址 本文仅仅介绍原理 文章目录 Gravitino SparkConnector 实现原理背景知识-Spark Plugin 介绍(1) **插件加载**(2) **DriverPlugin 初始化**(3) **ExecutorPlugin 初始化**(4) *…...

前端开发好用的AI工具介绍

以下是前端开发中提升效率的 AI 工具 推荐&#xff0c;涵盖代码生成、UI设计、调试优化等场景&#xff1a; 一、代码生成与辅助工具 工具名称特点适用场景GitHub Copilot基于 OpenAI&#xff0c;智能代码补全&#xff08;支持 JS/TS/React/Vue&#xff09;快速生成代码片段、函…...

Linux的用户与权限--第二天

认知root用户&#xff08;超级管理员&#xff09; root用户用于最大的系统操作权限 普通用户的权限&#xff0c;一般在HOME目录内部不受限制 su与exit命令 su命令&#xff1a; su [-] 用户名 -符号是可选的&#xff0c;表示切换用户后加载环境变量 参数为用户名&#xff0c…...

COUNT(CASE WHEN ... THEN ... END)详解

在 SQL 查询中&#xff0c;COUNT(CASE WHEN ... THEN ... END) 是一种常见的用法&#xff0c;用于统计满足特定条件的记录数。具体例子&#xff1a; # sexType 2表示女生 COUNT(CASE WHEN h_employee.sexType 2 THEN 1 END) AS 女员工人数解释 CASE WHEN ... THEN ... END&a…...

音视频入门基础:RTP专题(14)——FFmpeg源码中,对H.264的各种RTP有效载荷结构的解析

一、引言 由《音视频入门基础&#xff1a;RTP专题&#xff08;10&#xff09;——FFmpeg源码中&#xff0c;解析RTP header的实现》可以知道&#xff0c;FFmpeg源码的rtp_parse_packet_internal函数的前半部分实现了解析某个RTP packet的RTP header的功能。而在解析完RTP head…...

FPGA——4位全加器及3-8译码器的实现

文章目录 一、全加器1、Verilog实现四位全加器2、下载测试 二、3-8译码器1、Verilog实现3-8译码器2、7段数码管显示3-8译码器 三、总结四、参考资料 一、全加器 全加器的定义&#xff1a; 全加器英语名称为full-adder&#xff0c;是用门电路实现两个二进制数相加并求出和的组合…...

软考中级-数据库-3.4 数据结构-图

图的定义 一个图G(Graph)是由两个集合:V和E所组成的&#xff0c;V是有限的非空顶点(Vertex)集合&#xff0c;E是用顶点表示的边(Edge)集合&#xff0c;图G的顶点集和边集分别记为V(G)和E(G)&#xff0c;而将图G记作G(V&#xff0c;E)。可以看出&#xff0c;一个顶点集合与连接这…...

软考中级-数据库-3.3 数据结构-树

定义:树是n(n>=0)个结点的有限集合。当n=0时称为空树。在任一非空树中,有且仅有一个称为根的结点:其余结点可分为m(m>=0)个互不相交的有限集T1,T2,T3...,Tm…,其中每个集合又都是一棵树,并且称为根结点的子树。 树的相关概念 1、双亲、孩子和兄弟: 2、结点的度:一个结…...

Win11被背刺,官方泄露免费激活方法

AI已经成为科技圈的主旋律了&#xff0c;在PC圈的龙头微软也不例外。 但最近喜欢背刺用户、极力推崇AI的微软被自家产品背刺了一把。 罪魁祸首就是Microsoft Copilot&#xff0c;如果向Microsoft Copilot提问&#xff0c;是否可以帮忙提供激活Windows11的脚本。 Copilot会立马…...

第十天-字符串:编程世界的文本基石

在编程的广阔领域中&#xff0c;字符串是极为重要的数据类型&#xff0c;它就像一座桥梁&#xff0c;连接着人类的自然语言和计算机能够理解与处理的数字信息。下面&#xff0c;让我们深入探索字符串的世界。 一、字符串简介 字符串是由零个或多个字符组成的有序序列&#xff…...

CentOS7 安装Redis 6.2.6 详细教程

本文主要介绍CentOS7系统下安装Redis6.2.6的详细教程。 1.安装依赖 redis是基于C语言开发&#xff0c;因此想要在服务器上运行redis需要验证是否安装了gcc&#xff0c;没有安装gcc则需先安装 查看是否安装gcc gcc -v如果没有安装gcc&#xff0c;则通过如下命令安装 yum in…...

VsCode使用

vscode前端vue项目启动&#xff1a;Vue项目的创建启动及注意事项-CSDN博客 vscode使用教程&#xff1a;史上最全vscode配置使用教程 - 夏天的思考 - 博客园 vscode如何从git拉取代码&#xff1a;vscode如何从git拉取代码 • Worktile社区...

mac上最好的Python开发环境之Anaconda+Pycharm

文章目录 一、前言 1. Anaconda介绍2. Pycharm介绍 编码协助项目代码导航代码分析Python重构支持Django框架集成版本控制 二、下载Anaconda和Pycharm 1. 下载Anaconda2. 下载Pycharm 三、安装Anaconda和Pycharm 1. 安装Anaconda2. 安装Pycharm 一、前言 1. Anaconda介绍 …...

防火墙旁挂组网双机热备负载均衡

一&#xff0c;二层交换网络&#xff1a; 使用MSTPVRRP组网形式 VLAN 2--->SW3为主,SW4 作为备份 VLAN 3--->SW4为主,SW3 作为备份 MSTP 设计 --->SW3 、 4 、 5 运行 实例 1 &#xff1a; VLAN 2 实例 2 &#xff1a; VLAN 3 SW3 是实例 1 的主根&#xff0c;实…...

Docker 学习(三)——数据管理

容器中的管理数据主要有两种方式&#xff1a; 数据卷 &#xff08;Data Volumes&#xff09;&#xff1a; 容器内数据直接映射到本地主机环境&#xff1b; 数据 卷容器&#xff08; Data Volume Containers&#xff09;&#xff1a; 使用特定容器维护数据卷 1.数据卷 数据卷…...

中间件专栏之MySQL篇——MySQL缓存策略

本文所说的MySQL缓存策略与前文提到的buffer pool不同&#xff0c;那是MySQL内部自己实现的&#xff0c;本问所讲的缓存策略是使用另一个中间件redis来缓存MySQL中的热点数据。 一、为什么需要MySQL缓存方案 缓存用户定义的热点数据&#xff0c;用户可以直接从缓存中获取热点…...

高频 SQL 50 题(基础版)_196. 删除重复的电子邮箱

高频 SQL 50 题&#xff08;基础版&#xff09;_196. 删除重复的电子邮箱 思路 思路 DELETE p1 FROM Person p1,Person p2 WHEREp1.Email p2.Email AND p1.Id > p2.Id...

github进不去,一直显示错误

1、进入网址Dns检测|Dns查询 - 站长工具 2、复制检测出来的任意一个ip 3、打开电脑的文件夹&#xff1a;C:\Windows\System32\drivers\etc 下的hosts文件下复制这个ip地址 20.205.243.166 4、winr 打开cmd&#xff0c;输入ipconfig/flushdns ipconfig/flushdns出现这个就可以…...

MWC 2025|美格智能发布基于高通®X85 5G调制解调器及射频的新一代5G-A通信模组SRM819W

3月3日&#xff0c;在MWC 2025世界移动通信大会上&#xff0c;美格智能正式推出基于高通X85调制解调器及射频的新一代5G-A通信模组SRM819W&#xff0c;集5G-A、毫米波、AI加持的网络优化等最前沿的通信技术&#xff0c;成为行业首批搭载高通X85的5G通信模组产品&#xff0c;将助…...

【零基础到精通Java合集】第十集:List集合框架

课程标题:List集合框架(15分钟) 目标:掌握List接口核心实现类(ArrayList/LinkedList)的使用与场景选择,熟练操作有序集合 0-1分钟:List概念引入 以“购物清单”类比List特性:元素有序(添加顺序)、可重复、支持索引访问。说明List是Java集合框架中最常用的数据结构…...

《今日-AI-编程-人工智能日报》

一、AI行业动态 荣耀发布“荣耀阿尔法战略” 荣耀在“2025世界移动通信大会”上宣布&#xff0c;将从智能手机制造商转型为全球领先的AI终端生态公司&#xff0c;并计划未来五年投入100亿美元建设AI设备生态。荣耀展示了基于GUI的个人移动AI智能体&#xff0c;并推出多款AI终端…...

在 MyBatis 中,若数据库字段名与 SQL 保留字冲突解决办法

在 MyBatis 中&#xff0c;若数据库字段名与 SQL 保留字冲突&#xff0c;可通过以下方法解决&#xff1a; 目录 一、使用转义符号包裹字段名二、通过别名映射三、借助 MyBatis-Plus 注解四、全局配置策略&#xff08;辅助方案&#xff09;最佳实践与注意事项 一、使用转义符号…...

从基础到实践(十):MOS管的全面解析与实际应用

MOS管&#xff08;金属-氧化物半导体场效应晶体管&#xff09;是现代电子技术的基石&#xff0c;凭借高输入阻抗、低功耗和易集成特性&#xff0c;成为数字电路、电源管理和信号处理的核心元件。从微处理器到新能源汽车电驱系统&#xff0c;其高效开关与放大功能支撑了计算机、…...

电源测试系统有哪些可以利用AI工具的科技??

AI技术的发展对电源模块测试系统的影响是深远的&#xff0c;不仅协助系统提升了测试效率和精度&#xff0c;还推动了测试方法的创新和智能化。那么在电源测试系统中哪些模块可以利用AI工具实现自动化测试? 1. 自动化测试与效率提升 智能测试流程优化 AI算法可以自动优化测试…...

RabbitMQ 最新版:安装、配置 与Java 接入详细教程

目录 一、RabbitMQ 简介二、RabbitMQ 的安装1. 安装 Erlang下载 Erlang安装 Erlang2. 安装 RabbitMQ下载 RabbitMQ安装 RabbitMQ3. 配置环境变量4. 启用管理插件三、RabbitMQ 的配置1. 创建用户和设置权限2. 配置文件四、Java 接入 RabbitMQ1. 添加依赖2. 创建连接3. 创建通道4…...

股市现期驱动因子

在股票投资中&#xff0c;我们把驱动股市收益的基本元素称为基本因素&#xff1a; 例如资产负债、现金流量 从短期来看&#xff0c;股市的上涨和下跌基于市场情绪&#xff0c;它更依赖于投资者的期望&#xff0c;投它涨的人多&#xff0c;它就涨。从长期来看&#xff0c;股市…...

物联网中的气象监测设备具备顶级功能

物联网中的气象监测设备具备顶级功能时&#xff0c;通常集成GPS、数据上报和预警系统&#xff0c;以确保精准监测和及时响应。以下是这些功能的详细说明&#xff1a; 1. GPS定位 精准定位&#xff1a;GPS模块提供设备的精确地理位置&#xff0c;确保数据与具体位置关联&#…...

算法1-4 凌乱的yyy / 线段覆盖

题目描述 现在各大 oj 上有 n 个比赛&#xff0c;每个比赛的开始、结束的时间点是知道的。 yyy 认为&#xff0c;参加越多的比赛&#xff0c;noip 就能考的越好&#xff08;假的&#xff09;。 所以&#xff0c;他想知道他最多能参加几个比赛。 由于 yyy 是蒟蒻&#xff0c…...

gn学习存档

以下答案均由deepseek提供&#xff0c;仅作学习存档。 1. 举例说明action和action_foreach区别 场景设定 假设需要处理一组文件&#xff1a; 输入文件&#xff1a;src/data/file1.txt, src/data/file2.txt, src/data/file3.txt处理逻辑&#xff1a;将每个 .txt 文件转换为 …...

SQL注入练习场:PHPStudy+SQLI-LABS靶场搭建教程(零基础友好版)

注意&#xff1a;文中涉及演示均为模拟测试&#xff0c;切勿用于真实环境&#xff0c;任何未授权测试都是违法行为&#xff01; 一、环境准备 下载PHPStudy 官网下载地址&#xff1a;https://www.xp.cn/php-study&#xff08;选择Windows版&#xff09; 安装时建议选择自定…...

python学习笔记——Thread常用方法

Thread对象中的一些方法&#xff1a; 以前说过多线程&#xff0c;用到threading模块中的Thread对象&#xff0c;其中的start和run方法比较熟悉了&#xff0c;start&#xff08;&#xff09;是重载了Thread对象中的run方法&#xff0c;其实作用还是&#xff0c;当执行这个start…...

2024年数学SCI2区TOP:雪雁算法SGA,深度解析+性能实测

目录 1.摘要2.算法原理3.结果展示4.参考文献5.代码获取 1.摘要 本文提出了一种雪雁算法&#xff08;SGA&#xff09;&#xff0c;该算法借鉴了雪鹅的迁徙行为&#xff0c;并模拟了其迁徙过程中常见的“人字形”和“直线”飞行模式。 2.算法原理 雪雁以其卓越的长途迁徙能力和…...

Kubernetes 指令备忘清单

文章目录 查看资源信息节点容器组命名空间无状态服务守护进程集事件服务帐户日志副本集角色保密字典配置项路由持久卷持久卷声明存储类多个资源 变更资源属性污点标签维护/可调度清空节点节点/容器组无状态/命名空间服务守护进程集服务账号注释 添加资源创建容器组创建服务创建…...

servlet tomcat

在spring-mvc demo程序运行到DispatcherServlet的mvc处理 一文中&#xff0c;我们实践了浏览器输入一个请求&#xff0c;然后到SpringMvc的DispatcherServlet处理的整个流程. 设计上这些都是tomcat servlet的处理 那么究竟这是怎么到DispatcherServlet处理的&#xff0c;本文将…...

在 Ubuntu 系统 22.04 上安装 Docker

在 Ubuntu 系统 22.04 上安装 Docker 在 Ubuntu 系统 22.04 上安装 Docker1. 更新系统包2. 安装依赖工具3. 添加 Docker 官方 GPG 密钥4. 添加 Docker 的 APT 仓库5. 安装 Docker Engine6. 启动并设置 Docker 服务7. 验证安装8. 配置非 Root 用户权限&#xff08;可选&#xf…...

一分钟理解Mybatis 里面的缓存机制

​ MyBatis 是一个流行的 Java 持久层框架&#xff0c;它简化了数据库操作。MyBatis 提供了强大的缓存机制&#xff0c;用于提升性能&#xff0c;减少数据库的访问次数。MyBatis 的缓存机制分为一级缓存和二级缓存。 ​ 该图展示了用户通过 SqlSession 发起查询请求&#xff0c…...

【我的Android进阶之旅】如何使用NanoHttpd在Android端快速部署一个HTTP服务器?

文章目录 开篇:程序员的"摸鱼神器"?一、为什么选择NanoHttpd?二、五分钟极速上车指南2.1 ▶ 第一步:引入依赖的哲学2.2 ▶ 第二步:创建服务器类:继承大法好2.3 ▶ 第三步:启动服务的仪式感三、高级玩法:让服务器不再单调3.1 🔥 场景1:变身文件服务器3.2 �…...

PyCharm 无法识别 Conda 环境的解决方案

一、问题分析 当在最新版 PyCharm (2024.3) 中配置 Conda 环境时&#xff0c;可能会出现以下典型错误&#xff1a; 找不到 Conda 可执行文件 我在网上找了很多解决办法&#xff0c;都没有有效解决这个问题&#xff0c;包括将环境路径替换为 .bat 文件和查找 python.exe 文件…...

AutoGen学习笔记系列(一)Tutorial - Model

这个系列文章记录了学习微软 AutoGen 的过程&#xff0c;与 smolagents 学习笔记系列一样&#xff0c;仍然以官方教程自己的理解为主线&#xff0c;中间可能穿插几个番外支线的形式写博客。 【注意】&#xff1a;在阅读这篇文章之前需要确保已经按照其 Installation 小节完成必…...

利用Git和wget批量下载网页数据

一、Git的下载&#xff08;参考文章&#xff09; 二. wget下载&#xff08;网上很多链接&#xff09; 三、git和wget结合使用 1.先建立一个文本&#xff0c;将代码写入文本&#xff08;代码如下&#xff09;&#xff0c;将txt后缀改为sh&#xff08;download_ssebop.sh&#xf…...

多线程JUC(一)

目录 前言一、多线程的三种实现方式1.继承Thread类2.实现Runnable接口3.利用Callable接口和Future接口4.三种方式对比 二、常见的成员方法1.getName、setName、currentThread、sleep2.线程的优先级3.守护线程4.插入线程 三、线程安全1.线程的生命周期2.同步代码块3.同步方法4.l…...

夸父工具箱(安卓版) 手机超强工具箱

如今&#xff0c;人们的互联网活动日益频繁&#xff0c;导致手机内存即便频繁清理&#xff0c;也会莫名其妙地迅速填满&#xff0c;许多无用的垃圾信息悄然占据空间。那么&#xff0c;如何有效应对这一难题呢&#xff1f;答案就是今天新推出的这款工具软件&#xff0c;它能从根…...

2025系统架构师(一考就过):案例之五:典型架构、架构演化、人工智能、云计算、大数据

六、中间件技术、典型架构 ◆中间件:在一个分布式系统环境中处于操作系统和应用程序之间的软件&#xff0c;可以在不同的技术之间共享资源&#xff0c;将不同的操作系统、数据库、异构的网络环境以及若干应用结合成一个有机的协同工作整体。 ◆中间件位于客户机/服务器的操作系…...

【随手笔记】利尔达NB模组

1.名称 移芯EC6263GPP 参数 指令备注 利尔达上电输出 [2025-03-04 10:24:21.379] I_AT_WAIT:i_len2 [2025-03-04 10:24:21.724] LI_AT_WAIT:i_len16 [2025-03-04 10:24:21.724] [2025-03-04 10:24:21.733] Lierda [2025-03-04 10:24:21.733] [2025-03-04 10:24:21.745] OK移…...

Mybatis 中#{} 和${} 的区别是什么?

在 MyBatis 中&#xff0c;#{} 和 ${} 都是用于动态 SQL 语句中的占位符&#xff0c;但是它们的作用和使用方式是不同的。下面是它们的区别&#xff1a; 1. #{} —— 用于防止 SQL 注入和自动类型处理 #{} 是用来将参数安全地传递到 SQL 语句中&#xff0c;它会将传递的参数值…...

nginx+keepalived负载均衡及高可用

1 项目背景 keepalived除了能够管理LVS软件外&#xff0c;还可以作为其他服务的高可用解决方案软件。采用nginxkeepalived&#xff0c;它是一个高性能的服务器高可用或者热备解决方案&#xff0c;Keepalived主要来防止服务器单点故障的发生问题&#xff0c;可以通过其与Nginx的…...

数据结构理论

目录 基本概念和术语 数据 数据元素 数据项 数据对象 数据结构 数据的结构 逻辑结构 存储结构&#xff08;物理结构&#xff09; 数据类型 定义 原子数据类型 结构数据类型 抽象数据类型&#xff08;Abstract Data Type&#xff0c;ADT&#xff09; 算法和算法分…...