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

C++函数基础:定义与调用函数,参数传递(值传递、引用传递)详解

1. 引言

函数是C++编程中的核心概念之一,它允许我们将代码模块化,提高代码的可读性、复用性和可维护性。本文将深入探讨:

  • 函数的定义与调用
  • 参数传递方式(值传递 vs 引用传递)
  • 应用场景与最佳实践

2. 函数的定义与调用

2.1 函数的基本结构

一个C++函数由以下部分组成:

返回类型 函数名(参数列表) {// 函数体return 返回值; // 如果返回类型不是 void
}
  • 返回类型:可以是 intdoublestring 等,如果函数不返回任何值,则用 void
  • 函数名:遵循标识符命名规则(字母、数字、下划线,不能以数字开头)。
  • 参数列表:可以是零个或多个参数,用逗号分隔。
  • 函数体:包含具体的执行逻辑。
示例:计算两个数的和
#include <iostream>
using namespace std;// 函数定义
int add(int a, int b) {return a + b;
}int main() {int num1 = 5, num2 = 3;// 函数调用int result = add(num1, num2);cout << "5 + 3 = " << result << endl;return 0;
}

输出:

5 + 3 = 8

2.2 函数的声明与定义分离

在大型项目中,通常将函数声明放在头文件(.h),函数定义放在源文件(.cpp)。

示例:多文件组织

math_utils.h(声明)

#pragma once
int add(int a, int b); // 函数声明

math_utils.cpp(定义)

#include "math_utils.h"
int add(int a, int b) { // 函数定义return a + b;
}

main.cpp(调用)

#include <iostream>
#include "math_utils.h"
using namespace std;int main() {cout << "5 + 3 = " << add(5, 3) << endl;return 0;
}

3. 参数传递方式

C++支持两种主要的参数传递方式:

  1. 值传递(Pass by Value)
  2. 引用传递(Pass by Reference)

3.1 值传递(Pass by Value)

  • 特点:函数接收参数的副本,修改形参不影响实参。
  • 适用场景
    • 不需要修改原始数据
    • 传递小型数据(如 intdouble
示例:值传递
#include <iostream>
using namespace std;void increment(int x) {x++; // 只修改局部副本cout << "函数内 x = " << x << endl;
}int main() {int num = 5;increment(num);cout << "函数外 num = " << num << endl;return 0;
}

输出:

函数内 x = 6
函数外 num = 5  // 原始值未改变

3.2 引用传递(Pass by Reference)

  • 特点:函数直接操作原始变量,修改形参会影响实参。
  • 语法:在参数前加 &
  • 适用场景
    • 需要修改原始数据
    • 传递大型数据结构(如 vectorclass 对象)以避免拷贝开销
示例:引用传递
#include <iostream>
using namespace std;void increment(int &x) { // 引用传递x++; // 直接修改原始变量cout << "函数内 x = " << x << endl;
}int main() {int num = 5;increment(num);cout << "函数外 num = " << num << endl;return 0;
}

输出:

函数内 x = 6
函数外 num = 6  // 原始值被修改

3.3 常量引用(const Reference)

  • 特点:避免不必要的拷贝,同时防止函数修改原始数据。
  • 适用场景
    • 传递只读的大型数据(如 stringvector
示例:常量引用
#include <iostream>
#include <string>
using namespace std;void printString(const string &s) { // 常量引用cout << s << endl;// s[0] = 'A'; // 错误!不能修改 const 引用
}int main() {string str = "Hello";printString(str);return 0;
}

4. 高级函数特性

4.1 默认参数

  • 允许函数参数有默认值,调用时可省略。
  • 规则
    • 默认参数必须从右向左定义。
    • 通常在函数声明中指定默认值。
示例:默认参数
#include <iostream>
using namespace std;void greet(string name, string prefix = "Hello") {cout << prefix << ", " << name << "!" << endl;
}int main() {greet("Alice");       // 输出: Hello, Alice!greet("Bob", "Hi");   // 输出: Hi, Bob!return 0;
}

4.2 函数重载(Overloading)

  • 允许同一作用域内定义多个同名函数,但参数列表不同。
  • 适用场景
    • 提供多种方式调用同一功能(如 print(int) 和 print(double)
示例:函数重载
#include <iostream>
using namespace std;void print(int x) {cout << "整数: " << x << endl;
}void print(double x) {cout << "浮点数: " << x << endl;
}int main() {print(5);      // 调用 print(int)print(3.14);   // 调用 print(double)return 0;
}

5. 参数传递方式对比

特性值传递引用传递常量引用
语法void func(int x)void func(int &x)void func(const int &x)
是否修改实参
性能小型数据高效,大型数据拷贝开销大无拷贝开销无拷贝开销
适用场景基本数据类型需要修改的参数或大型数据结构只读访问大型数据

6. 最佳实践总结

  1. 优先使用引用传递

    • 对于大型数据(如 vector、自定义类),避免不必要的拷贝。
    • 如果不需要修改数据,用 const &
  2. 慎用全局变量

    • 尽量通过参数传递数据,而非依赖全局变量。
  3. 合理使用默认参数

    • 简化函数调用,但避免过度使用导致代码难以理解。
  4. 函数拆分原则

    • 一个函数只做一件事(单一职责原则)。
    • 函数长度建议不超过一屏(约50行)。
  5. 性能敏感场景

    • 频繁调用的小函数可声明为 inline(由编译器决定是否内联展开)。

7. 结语

函数是C++程序的基本构建块,掌握其定义、调用和参数传递方式是成为合格开发者的关键。本文涵盖了:

  • 函数的定义与调用
  • 值传递与引用传递的区别
  • 高级特性(默认参数、函数重载)
  • 性能优化建议

实践建议:尝试编写一个计算器程序,使用函数封装加法、减法等操作,并比较值传递和引用传递的性能差异。

相关文章:

C++函数基础:定义与调用函数,参数传递(值传递、引用传递)详解

1. 引言 函数是C编程中的核心概念之一&#xff0c;它允许我们将代码模块化&#xff0c;提高代码的可读性、复用性和可维护性。本文将深入探讨&#xff1a; 函数的定义与调用参数传递方式&#xff08;值传递 vs 引用传递&#xff09;应用场景与最佳实践 2. 函数的定义与调用 …...

深入解析Python中的Vector2d类:从基础实现到特殊方法的应用

引言 在Python面向对象编程中&#xff0c;特殊方法&#xff08;或称魔术方法&#xff09;是实现对象丰富行为的关键。本文将以Vector2d类为例&#xff0c;详细讲解如何通过特殊方法为自定义类添加多种表示形式和操作能力。 Vector2d类的基本行为 Vector2d类是一个二维向量类…...

【25软考网工】第六章(7)网络安全防护系统

博客主页&#xff1a;christine-rr-CSDN博客 ​​专栏主页&#xff1a;软考中级网络工程师笔记 ​​​ 大家好&#xff0c;我是christine-rr !目前《软考中级网络工程师》专栏已经更新三十多篇文章了&#xff0c;每篇笔记都包含详细的知识点&#xff0c;希望能帮助到你&#x…...

Mac下载bilibili视频

安装 安装 yt-dlp brew install yt-dlp安装FFmpeg 用于合并音视频流、转码等操作 brew install ffmpeg使用 下载单个视频 查看可用格式 yt-dlp -F --cookies-from-browser chrome "https://www.bilibili.com/video/BV15B4y1G7F3?spm_id_from333.788.recommend_more_vid…...

6个月Python学习计划:从入门到AI实战(前端开发者进阶指南)

作者&#xff1a;一名前端开发者的进阶日志 计划时长&#xff1a;6个月 每日学习时间&#xff1a;2小时 覆盖方向&#xff1a;Python基础、爬虫开发、数据分析、后端开发、人工智能、深度学习 &#x1f4cc; 目录 学习目标总览每日时间分配建议第1月&#xff1a;Python基础与编…...

批量处理 Office 文档 高画质提取图片、视频、音频素材助手

各位办公小能手们&#xff01;你们有没有遇到过想从 Office 文档里提取图片、音频和视频&#xff0c;却又搞得焦头烂额的情况&#xff1f;今天就给大家介绍一款超厉害的工具——OfficeImagesExtractor&#xff01; 这货的核心功能那可真是杠杠的&#xff01;首先是高画质提取&a…...

【甲方安全建设】Python 项目静态扫描工具 Bandit 安装使用详细教程

文章目录 一、工具简介二、工具特点1.聚焦安全漏洞检测2.灵活的扫描配置3.多场景适配4.轻量且社区活跃三、安装步骤四、使用方法场景1:扫描单个Python文件场景2:递归扫描整个项目目录五、结果解读六、总结一、工具简介 Bandit 是由Python官方推荐的静态代码分析工具(SAST)…...

【推荐】新准则下对照会计报表172个会计科目解释

序号 科目名称 对应的会计报表项目 序号 科目名称 对应的会计报表项目   一、资产类     二、负债类   1 1001 库存现金 货币资金 103 2001 短期借款 短期借款 2 1002 银行存款 货币资金 104 2101 交易性金融负债 易性金融负债 3 1012 其他货币资…...

IntelliJ IDEA设置编码集

在IntelliJ IDEA中设置Properties文件的编码格式&#xff0c;主要涉及以下步骤和注意事项&#xff1a; 1. ‌全局和项目编码设置‌ 打开设置界面&#xff1a;File -> Settings -> Editor -> File Encodings。在Global Encoding和Project Encoding下拉菜单中均选择UT…...

类魔方 :多变组合,灵活复用

文章目录 一、类的基础1. 类的基本结构与语法1. 类的定义与实例化2. 成员变量&#xff08;属性&#xff09;3. 构造函数&#xff08;Constructor&#xff09;4. 成员方法 2. 访问修饰符1. 基本访问规则2. 子类对父类方法的重写3. 构造函数的访问修饰符4. 参数属性与继承总结 3.…...

支持多方式拼接图片的软件

软件介绍 本文介绍一款名为 PicMerger 的图片拼接软件。 拼接亮点 PicMerger 这款软件最大的亮点在于&#xff0c;它能够将不同分辨率的图片完美地拼接在一起。拼接时会自动以分辨率最小的图片为标准&#xff0c;操作十分方便。 拼接方式与设置 该软件支持横向和纵向的拼接…...

Qt音视频开发过程中一个疑难杂症的解决方法/ffmpeg中采集本地音频设备无法触发超时回调

一、前言 最近在做实时音视频通话的项目中&#xff0c;遇到一个神奇的问题&#xff0c;那就是用ffmpeg采集本地音频设备&#xff0c;当音频设备拔掉后&#xff0c;采集过程会卡死在av_read_frame函数中&#xff0c;尽管设置了超时时间&#xff0c;也设置了超时回调interrupt_c…...

Android studio Could not move temporary workspace

Android studio Could not move temporary workspace 在Window上运行AS出现Could not move temporary workspace报错方法一&#xff08;有效&#xff09;方法二方法三方法四总结 在Window上运行AS出现Could not move temporary workspace报错 Could not move temporary workspa…...

深度估计中为什么需要已知相机基线(known camera baseline)?

在计算机视觉和立体视觉的上下文中&#xff0c;“已知相机基线”&#xff08;known camera baseline&#xff09;的解释 1. 相机基线的定义 相机基线是指两个相机中心之间的距离。在立体视觉系统中&#xff0c;通常有两个相机&#xff08;或一个相机在不同位置拍摄两张图像&a…...

Spring Cloud 技术实战

Spring Cloud 简介 Spring Cloud 是基于 Spring Boot 构建的微服务框架&#xff0c;提供了一套完整的微服务解决方案。它利用 Spring Boot 的开发便利性&#xff0c;并通过各种组件简化分布式系统的开发。 核心组件 Spring Cloud Netflix Eureka: 服务注册与发现Spring Clou…...

《云端共生体:Flutter与AR Cloud如何改写社交交互规则》

当Flutter遇上AR Cloud&#xff0c;一场关于社交应用跨设备增强现实内容共享与协作的变革正在悄然发生。 Flutter是谷歌推出的一款开源UI软件开发工具包&#xff0c;其最大的优势在于能够实现一套代码&#xff0c;多平台部署&#xff0c;涵盖iOS、Android、Web、Windows、macO…...

【数据结构】1-3 算法的时间复杂度

数据结构知识点合集&#xff1a;数据结构与算法 • 知识点 • 时间复杂度的定义 1、算法时间复杂度 事前预估算法时间开销T(n)与问题规模 n 的关系&#xff08;T 表示 “time”&#xff09; 2、语句频度 算法中语句的执行次数 对于以上算法&#xff0c;语句频度&#xff1a;…...

Science Robotics 封面论文:基于形态学开放式参数化的仿人灵巧手设计用于具身操作

人形机械手具有无与伦比的多功能性和精细运动技能&#xff0c;使其能够精确、有力和稳健地执行各种任务。在古生物学记录和动物王国中&#xff0c;我们看到了各种各样的替代手和驱动设计。了解形态学设计空间和由此产生的涌现行为不仅可以帮助我们理解灵巧的作用及其演变&#…...

Vue百日学习计划Day24-28天详细计划-Gemini版

总目标: 在 Day 24-27 熟练掌握 Vue.js 的各种模板语法&#xff0c;包括文本插值、属性绑定、条件渲染、列表渲染、事件处理和表单绑定&#xff0c;并能结合使用修饰符。 所需资源: Vue 3 官方文档 (模板语法): https://cn.vuejs.org/guide/essentials/template-syntax.htmlVu…...

C++_数据结构_哈希表(hash)实现

✨✨ 欢迎大家来到小伞的大讲堂✨✨ &#x1f388;&#x1f388;养成好习惯&#xff0c;先赞后看哦~&#x1f388;&#x1f388; 所属专栏&#xff1a;C学习 小伞的主页&#xff1a;xiaosan_blog 制作不易&#xff01;点个赞吧&#xff01;&#xff01;谢谢喵&#xff01;&…...

elasticsearch kibana ik 各版本下载

https://release.infinilabs.com/analysis-ik/stable/或者 https://github.com/infinilabs/analysis-ik/releases...

Uniapp 与 Uniapp X 对比:新手上手指南及迁移到 Uniapp X 的注意事项

文章目录 前言一、Uniapp 与 Uniapp X 核心区别二、Uniapp X 的核心优势三、新手学习 Uniapp X 必备技能栈3.1 基础技能要求3.2 平台相关知识3.3 工具链掌握 四、从 Uniapp 迁移到 Uniapp X 的注意事项4.1 语法转换&#xff1a;4.2 组件替换&#xff1a;4.3 状态管理&#xff1…...

SQL性能分析

查看数据库操作频次 使用SHOW GLOBAL STATUS LIKE Com_______; 指令&#xff0c;能查看当前数据库的INSERT、UPDATE、DELETE、SELECT访问频次 。若以查询为主&#xff0c;需重点优化查询相关性能&#xff0c;如索引&#xff1b;若以增删改为主&#xff0c;可考虑事务处理、批量…...

CANoe测试应用案例之A2L

写在前面 本系列文章主要讲解CANoe测试应用案例之A2L的相关知识&#xff0c;希望能帮助更多的同学认识和了解CANoe测试。 若有相关问题&#xff0c;欢迎评论沟通&#xff0c;共同进步。(*^▽^*) CANoe Option AMD/XCP支持加载A2L到CANoe中&#xff0c;方便ECU内部变量在功能验…...

H2数据库源码学习+debug, 数据库 sql、数据库引擎、数据库存储从此不再神秘

一、源码结构概览 H2源码采用标准Maven结构&#xff0c;核心模块在src/main/org/h2目录下&#xff1a; ├── command/ # SQL解析与执行 ├── engine/ # 数据库引擎核心&#xff08;会话、事务&#xff09; ├── table/ # 表结构定义与操作 ├── index/ # 索引实现&am…...

PopSQL:一个支持团队协作的SQL开发工具

PopSQL 是一款专为团队协作设计的现代化 SQL 编辑器&#xff0c;通过通团队过协作编写 SQL 查询、交互式可视化以及共享结果提升数据分析和管理效率。 PopSQL 提供了基于 Web 的在线平台以及跨系统&#xff08;Windows、macOS、Linux&#xff09;的桌面应用&#xff0c;包括免费…...

tomcat查看状态页及调优信息

准备工作 先准备一台已经安装好tomcat的虚拟机&#xff0c;tomcat默认是状态页是默认被禁用的 1.添加授权用户 vim /usr/local/tomcat/conf/tomcat-users.xml22 <role rolename"manager-gui"/>23 <user username"admin" password"tomcat&q…...

贝塞尔曲线原理

文章目录 一、 低阶贝塞尔曲线1.一阶贝塞尔曲线2. 二阶贝塞尔曲线3. 三阶贝塞尔曲线 一、 低阶贝塞尔曲线 1.一阶贝塞尔曲线 如下图所示&#xff0c; P 0 ​ P_0​ P0​​, P 1 ​ P_1​ P1​​ 是平面中的两点&#xff0c;则 B ( t ) B ( t ) B(t) 代表平面中的一段线段。…...

【MYSQL】笔记

&#x1f4da; 博主的专栏 &#x1f427; Linux | &#x1f5a5;️ C | &#x1f4ca; 数据结构 | &#x1f4a1;C 算法 | &#x1f152; C 语言 | &#x1f310; 计算机网络 在ubuntu中&#xff0c;改配置文件&#xff1a; sudo nano /etc/mysql/mysql.conf.d/mysq…...

构建 TypoView:一个富文本样式预览工具的全流程记录

我正在参加CodeBuddy「首席试玩官」内容创作大赛&#xff0c;本文所使用的 CodeBuddy 免费下载链接&#xff1a;腾讯云代码助手 CodeBuddy - AI 时代的智能编程伙伴 在一次和 CodeBuddy 的日常交流中&#xff0c;我提出了一个构想&#xff1a;能不能帮我从零构建一个富文本样式…...

使用conda创建python虚拟环境,并自定义路径

创建虚拟环境 conda create --prefixE:/ai-tools/Luoxuejiao/envs/Luo24 python3.8 此时虚拟环境没有名字&#xff0c;只有路径&#xff0c;下面将名字添加到配置中&#xff1a; conda config --append envs_dirs E:/ai-tools/Luoxuejiao/envs/...

【自然语言处理与大模型】向量数据库技术

向量数据库&#xff0c;是专门为向量检索设计的中间件&#xff01; 高效存储、快速检索和管理高纬度向量数据的系统称为向量数据库 一、向量数据库是什么有什么用&#xff1f; 向量数据库是一种专门用于高效存储和检索高维向量数据的系统。它通过嵌入模型将各类非结构化数据&am…...

Java中的伪共享(False Sharing):隐藏的性能杀手与高并发优化实战

引言 在高性能Java应用中&#xff0c;开发者通常会关注锁竞争、GC频率等显性问题&#xff0c;但一个更隐蔽的陷阱——伪共享&#xff08;False Sharing&#xff09;​——却可能让精心设计的并发代码性能骤降50%以上。伪共享是由CPU缓存架构引发的底层问题&#xff0c;常见于多…...

【数据结构】2-3-3单链表的查找

数据结构知识点合集 知识点 单链表的按位查找 GetElem(L,i)&#xff1a;按位查找操作。获取表L中第i个位置的元素的值。 /*查找L中的第i个节点并返回*/ LNode *GetElm(LinkList L,int i) { /*位置不合法返回NULL*/ if(i<0) return NULL; /*p指向当前节…...

从0开始学linux韦东山教程第四章问题小结(1)

本人从0开始学习linux&#xff0c;使用的是韦东山的教程&#xff0c;在跟着课程学习的情况下的所遇到的问题的总结,理论虽枯燥但是是基础。说实在的越看视频越感觉他讲的有点乱后续将以他的新版PDF手册为中心&#xff0c;视频作为辅助理解的工具。参考手册为嵌入式Linux应用开发…...

TYUT-企业级开发教程-第三章

JAVAWEB的三大组件 在 Spring Boot 项目中&#xff0c;会自动将 Spring 容器中的 Servlet 、 Filter 、 Listener 实例注册为 Web 服务器中对应的组件。因此&#xff0c;可以将自定义的 Java Web 三大组件作为 Bean 添加到 Spring 容器中&#xff0c;以实现组件的注册。使用 S…...

【数据结构】2-3-2 单链表的插入删除

数据结构知识点合集 知识点 按位序插入带头节点链表 ListInsert(&L,i,e)&#xff1a;插入操作。在表L中的第i个位置上插入指定元素e&#xff1b;找到第 i-1 个结点&#xff0c;将新结点插入其后 。 /*在带头节点的单链表L的第i个位置插入元素e*/ bool ListInsert(LinkList …...

spark-配置yarn模式

1.上传并解压spark-3.1.1-bin-hadoop3.2.tgz &#xff08;/opt/software) 解压的命令是&#xff1a;tar -zxvf spark-3.3.1-bin-hadoop3.tgz -C /opt/module (cd /opt/software 进入software&#xff09; 2.重命名 解压之后的目录为spark-yarn&#xff08;原为spark-3.1.1-…...

鸿蒙系统电脑:开启智能办公新时代

鸿蒙系统电脑&#xff1a;开启智能办公新时代 引言 2025 年 5 月 8 日&#xff0c;华为正式推出了鸿蒙系统电脑&#xff0c;这款具有里程碑意义的产品&#xff0c;不仅彰显了华为在智能设备领域的创新实力&#xff0c;也为用户带来了全新的智能办公体验。在数字化转型加速的背…...

Ubuntu---omg又出bug了

自用遇到问题的合集 250518——桌面文件突然消失 ANS&#xff1a;参考博文...

COCO数据集神经网络性能现状2025.5.18

根据当前搜索结果&#xff0c;截至2025年5月&#xff0c;COCO数据集上性能最佳的神经网络模型及其关键参数如下&#xff1a; 1. D-FINE&#xff08;中科大团队&#xff09; 性能参数&#xff1a; 在COCO数据集上以78 FPS的速度实现了59.3%的平均精度&#xff08;AP&#xff0…...

elementplus menu 设置 activeindex

<el-menu:default-active"defaultActive"> 更改当前激活的 index 可以 绑定:default-active"defaultActive" 改变 defaultActive 值 即会改变 index 但不会改变路径 watch(() > route.fullPath,(newPath: string) > {defaultActive.value…...

张 心理问题的分类以及解决流程

心理问题的分类以及解决流程 目录 心理问题的分类以及解决流程心理问题的分类**一、心理问题的分类与层次****1. 一般心理问题****2. 严重心理问题****3. 神经症性心理问题(神经症)****4. 精神障碍**轻度问题以心理咨询==判断:时间(3个月,1年,大于1年=神经质),社会功能(…...

网页 H5 微应用接入钉钉自动登录

ℹ️关于云审批 云审批&#xff08;cloud approve&#xff09; &#xff0c;一款专为小微企业打造&#xff0c;支持多租户的在线审批神器。它简化了申请和审批流程&#xff0c;让您随时随地通过手机或电脑完成请款操作。员工一键提交申请&#xff0c;审批者即时响应&#xff0c…...

接口——类比摄像

最近迷上了买相机&#xff0c;大疆Pocket、Insta Go3、大疆Mini3、佳能50D、vivo徕卡人像大师&#xff08;狗头&#xff09;&#xff0c;在买配件的时候&#xff0c;发现1/4螺口简直是神中之神&#xff0c;这个万能接口让我想到计算机设计中的接口&#xff0c;遂有此篇—— 接…...

java每日精进 5.18【文件存储】

1.文件存储思路 支持将文件上传到三类存储器&#xff1a; 兼容 S3 协议的对象存储&#xff1a;支持 MinIO、腾讯云 COS、七牛云 Kodo、华为云 OBS、亚马逊 S3 等等。磁盘存储&#xff1a;本地、FTP 服务器、SFTP 服务器。数据库存储&#xff1a;MySQL、Oracle、PostgreSQL、S…...

LeetCode 394. 字符串解码详解:Java栈实现与逐行解析

文章目录 1. 问题描述2. 解决思路核心问题栈的应用遍历逻辑 3. 完整代码实现4. 关键代码解析处理右括号 ]处理嵌套的示例 5. 复杂度分析6. 总结 1. 问题描述 给定一个经过编码的字符串&#xff0c;要求将其解码为原始字符串。编码规则为 k[encoded_string]&#xff0c;表示方括…...

基于STC89C52的红外遥控的电子密码锁设计与实现

一、引言 电子密码锁作为一种安全便捷的门禁系统,广泛应用于家庭、办公室等场景。结合红外遥控功能,可实现远程控制开锁,提升使用灵活性。本文基于 STC89C52 单片机,设计一种兼具密码输入和红外遥控的电子密码锁系统,详细阐述硬件选型、电路连接及软件实现方案。 二、硬…...

Android 性能优化入门(一)—— 数据结构优化

1、概述 一款 app 除了要有令人惊叹的功能和令人发指交互之外&#xff0c;在性能上也应该追求丝滑的要求&#xff0c;这样才能更好地提高用户体验&#xff1a; 优化目的性能指标优化的方向更快流畅性启动速度页面显示速度(显示和切换)响应速度更稳定稳定性避免出现 应用崩溃&…...

深入理解Docker和K8S

深入理解Docker和K8S Docker 是大型架构的必备技能&#xff0c;也是云原生核心。Docker 容器化作为一种轻量级的虚拟化技术&#xff0c;其核心思想&#xff1a;将应用程序及其所有依赖项打包在一起&#xff0c;形成一个可移植的单元。 容器的本质是进程&#xff1a; 容器是在…...