以加减法计算器为例,了解C++命名作用域与函数调用
*************
C++
topic: 命名作用域与函数调用
*************
![]() |
The concept is fully introducted in the last artical. Please refer to 抽象:C++命名作用域与函数调用-CSDN博客
And let's make a calculator to review the basic structure in c++.
1、全局函数
A good habit to name the global function is using global_XXX.
#include <iostream>int global_add(int a, int b) // 全局函数的名字是global_add
{return a + b; // 返回a和b的和
}
2、命名空间
Like a villa, a space to name the variables.
#include <iostream>int global_add(int a, int b) // 全局函数的名字是global_add
{return a + b; // 返回a和b的和
}namespace calculate
{// do sth. here
}
call global function in namespace.
#include <iostream>int global_add(int a, int b) // 全局函数的名字是global_add
{return a + b; // 返回a和b的和
}namespace calculate
{// 调用全局函数int add(int a, int b) // 函数的名字是add{return global_add(a, b); // 返回全局函数的结果}
}
and of course you can add a function directly in namespace calculate.
#include <iostream>// 全局加法函数
int global_add(int a, int b)
{return a + b;
}namespace calculate
{// 1. 直接定义在命名空间中的加法函数(独立实现)int add_in_class(int a, int b) {return a + b; // 直接实现加法}// 2. 调用全局加法函数的版本(复用全局实现)int add_by_global(int a, int b) {return global_add(a, b); // 调用全局函数}
}
Extend add class.
#include <iostream>// 全局加法函数
int global_add(int a, int b)
{return a + b;
}namespace calculate
{// 定义一个类addclass add{public:// 1. 直接定义在类中的加法函数(独立实现)int add_in_class(int a, int b) {return a + b; // 直接实现加法}// 2. 调用全局加法函数的版本(复用全局实现)int add_by_global(int a, int b) {return global_add(a, b); // 调用全局函数}};
}
call the add functions in the add class is easy.
namespace calculate
{// 定义一个类addclass add{public:// 1. 直接定义在类中的加法函数(独立实现)int add_in_class(int a, int b){return a + b; // 直接实现加法}// 2. 调用全局加法函数的版本(复用全局实现)int add_by_global(int a, int b){return global_add(a, b); // 调用全局函数}// 调用加法函数void call_add(int a, int b){int result1 = add_in_class(a, b); // 调用类内的加法函数int result2 = add_by_global(a, b); // 调用全局加法函数}};
extend suntract class
namespace calculate
{// 定义一个类addclass add{public:// 1. 直接定义在类中的加法函数(独立实现)int add_in_class(int a, int b){return a + b; // 直接实现加法}// 2. 调用全局加法函数的版本(复用全局实现)int add_by_global(int a, int b){return global_add(a, b); // 调用全局函数}// 调用加法函数void call_add(int a, int b){int result1 = add_in_class(a, b); // 调用类内的加法函数int result2 = add_by_global(a, b); // 调用全局加法函数}};// 拓展减法的类class subtract{public:// 1. 直接定义在类中的减法函数(独立实现)int subtract_in_class(int a, int b){return a - b; // 直接实现减法}// 2. 调用全局加法函数的版本(复用全局实现)int subtract_by_global(int a, int b){return global_add(a, -b); // 调用全局函数}};
}
extend an auto calculating calss, so that program can do the adding and subtracting at the same time.
#include <iostream>// 全局加法函数
int global_add(int a, int b)
{return a + b;
}namespace calculate
{// 定义一个类addclass add{public:// 1. 直接定义在类中的加法函数(独立实现)int add_in_class(int a, int b){return a + b; // 直接实现加法}// 2. 调用全局加法函数的版本(复用全局实现)int add_by_global(int a, int b){return global_add(a, b); // 调用全局函数}// 调用加法函数void call_add(int a, int b){int result1 = add_in_class(a, b); // 调用类内的加法函数int result2 = add_by_global(a, b); // 调用全局加法函数}};// 拓展减法的类class subtract{public:// 1. 直接定义在类中的减法函数(独立实现)int subtract_in_class(int a, int b){return a - b; // 直接实现减法}// 2. 调用全局加法函数的版本(复用全局实现)int subtract_by_global(int a, int b){return global_add(a, -b); // 调用全局函数}};// 执行同时调用加法和减法class autoCalculate{};
Create an object to call the function in other classes. If you want to call functions of other class, make sure to creating an object from the class which is refreed. Do have to create an object when global function is called.
#include <iostream>// 全局加法函数
int global_add(int a, int b)
{return a + b;
}namespace calculate
{// 定义一个类addclass add{public:// 1. 直接定义在类中的加法函数(独立实现)int add_in_class(int a, int b){return a + b; // 直接实现加法}// 2. 调用全局加法函数的版本(复用全局实现)int add_by_global(int a, int b){return global_add(a, b); // 调用全局函数}// 调用加法函数void call_add(int a, int b){int result1 = add_in_class(a, b); // 调用类内的加法函数int result2 = add_by_global(a, b); // 调用全局加法函数}};// 拓展减法的类class subtract{public:// 1. 直接定义在类中的减法函数(独立实现)int subtract_in_class(int a, int b){return a - b; // 直接实现减法}// 2. 调用全局加法函数的版本(复用全局实现)int subtract_by_global(int a, int b){return global_add(a, -b); // 调用全局函数}};// 执行同时调用加法和减法class autoCalculate{public:add autoAdd; // 创建一个add类的对象autoAddsubtract autoSubtract; // 创建一个subtract类的对象autoSubtractvoid call_add_subtract(int a, int b){autoAdd.add_in_class(a, b); // 调用类内的加法函数autoSubtract.subtract_in_class(a, b); // 调用类内的减法函数autoAdd.add_by_global(a, b); // 调用全局加法函数global_add(a, b); // 调用全局加法函数时不需要创建对象}};
}
Main code is compulsory. In the program, main code is the start of the system. All codes start from mian code.
#include <iostream>// 全局加法函数
int global_add(int a, int b)
{return a + b;
}namespace calculate
{// 定义一个类addclass add{public:// 1. 直接定义在类中的加法函数(独立实现)int add_in_class(int a, int b){return a + b; // 直接实现加法}// 2. 调用全局加法函数的版本(复用全局实现)int add_by_global(int a, int b){return global_add(a, b); // 调用全局函数}// 调用加法函数void call_add(int a, int b){int result1 = add_in_class(a, b); // 调用类内的加法函数int result2 = add_by_global(a, b); // 调用全局加法函数}};// 拓展减法的类class subtract{public:// 1. 直接定义在类中的减法函数(独立实现)int subtract_in_class(int a, int b){return a - b; // 直接实现减法}// 2. 调用全局加法函数的版本(复用全局实现)int subtract_by_global(int a, int b){return global_add(a, -b); // 调用全局函数}};// 执行同时调用加法和减法class autoCalculate{public:add autoAdd; // 创建一个add类的对象autoAddsubtract autoSubtract; // 创建一个subtract类的对象autoSubtractvoid call_add_subtract(int a, int b){autoAdd.add_in_class(a, b); // 调用类内的加法函数autoSubtract.subtract_in_class(a, b); // 调用类内的减法函数autoAdd.add_by_global(a, b); // 调用全局加法函数global_add(a, b); // 调用全局加法函数时不需要创建对象}};// 主函数是程序的入口,所有的程序都从这里开始执行int main(){int a = 13;int b = 38;global_add(a, b); // 调用全局加法函数,return 51// 调用calculate命名空间中的add类calculate::add myAdd; // 创建一个add类的对象myAddmyAdd.add_in_class(a, b); // 调用类内的加法函数,return 51myAdd.add_by_global(a, b); // 调用全局加法函数,return 51// 调用calculate命名空间中的subtract类calculate::subtract mySubtract; // 创建一个subtract类的对象mySubtractmySubtract.subtract_in_class(a, b); // 调用类内的减法函数,return -25mySubtract.subtract_by_global(a, b); // 调用全局加法函数,return -25// 调用calculate命名空间中的autoCalculate类calculate::autoCalculate myAutoCalculate; // 创建一个autoCalculate类的对象myAutoCalculatemyAutoCalculate.call_add_subtract(a, b); // 调用类内的加法和减法函数, return 51和-25return 0; // 返回0表示程序正常结束}
}
Head file is a good way to tear the code apart. In the file, too much code puzzles angineer. So one file does only one thing. Head file difine the functions and variables. Source files declare the functions.
头文件 calculator.h
:
#ifndef CALCULATOR_H
#define CALCULATOR_H#include <iostream>// 全局加法函数
int global_add(int a, int b);namespace calculate
{// 定义一个类addclass add{public:// 1. 直接定义在类中的加法函数(独立实现)int add_in_class(int a, int b);// 2. 调用全局加法函数的版本(复用全局实现)int add_by_global(int a, int b);// 调用加法函数void call_add(int a, int b);};// 拓展减法的类class subtract{public:// 1. 直接定义在类中的减法函数(独立实现)int subtract_in_class(int a, int b);// 2. 调用全局加法函数的版本(复用全局实现)int subtract_by_global(int a, int b);};// 执行同时调用加法和减法class autoCalculate{public:add autoAdd; // 创建一个add类的对象autoAddsubtract autoSubtract; // 创建一个subtract类的对象autoSubtractvoid call_add_subtract(int a, int b);};
}#endif // CALCULATOR_H
源文件 calculator.cpp
:
#include "calculator.h"// 全局加法函数实现
int global_add(int a, int b)
{return a + b;
}namespace calculate
{// add类方法实现int add::add_in_class(int a, int b){return a + b;}int add::add_by_global(int a, int b){return global_add(a, b);}void add::call_add(int a, int b){int result1 = add_in_class(a, b);int result2 = add_by_global(a, b);}// subtract类方法实现int subtract::subtract_in_class(int a, int b){return a - b;}int subtract::subtract_by_global(int a, int b){return global_add(a, -b);}// autoCalculate类方法实现void autoCalculate::call_add_subtract(int a, int b){autoAdd.add_in_class(a, b);autoSubtract.subtract_in_class(a, b);autoAdd.add_by_global(a, b);global_add(a, b);}
}
主程序 main.cpp
:
#include "calculator.h"int main()
{int a = 13;int b = 38;global_add(a, b); // 调用全局加法函数,return 51// 调用calculate命名空间中的add类calculate::add myAdd; // 创建一个add类的对象myAddmyAdd.add_in_class(a, b); // 调用类内的加法函数,return 51myAdd.add_by_global(a, b); // 调用全局加法函数,return 51// 调用calculate命名空间中的subtract类calculate::subtract mySubtract; // 创建一个subtract类的对象mySubtractmySubtract.subtract_in_class(a, b); // 调用类内的减法函数,return -25mySubtract.subtract_by_global(a, b); // 调用全局加法函数,return -25// 调用calculate命名空间中的autoCalculate类calculate::autoCalculate myAutoCalculate; // 创建一个autoCalculate类的对象myAutoCalculatemyAutoCalculate.call_add_subtract(a, b); // 调用类内的加法和减法函数, return 51和-25return 0; // 返回0表示程序正常结束
}
相关文章:
以加减法计算器为例,了解C++命名作用域与函数调用
************* C topic: 命名作用域与函数调用 ************* The concept is fully introducted in the last artical. Please refer to 抽象:C命名作用域与函数调用-CSDN博客 And lets make a calculator to review the basic structure in c. 1、全局函数 A…...
MySQL EXPLAIN 使用详解与执行计划分析优化
MySQL EXPLAIN 使用详解与执行计划分析优化 一、什么是 EXPLAIN? EXPLAIN 是 MySQL 提供的 SQL 语句分析工具,可以显示 SQL 语句在执行时的执行计划,包括表的访问顺序、使用的索引、连接类型、扫描行数等。通过分析 EXPLAIN 的输出结果&…...
Arthas:Java诊断利器实战指南
在Java应用开发和运维中,线上问题排查往往是一场与时间的赛跑。传统的日志分析、重启大法或JVM工具(如jstack、jmap)虽然有效,但存在操作复杂、无法实时追踪等问题。Arthas作为阿里巴巴开源的Java诊断工具,凭借无需重启…...
一文读懂迁移学习:从理论到实践
在机器学习和深度学习的快速发展历程中,数据和计算资源成为了制约模型训练的关键因素。当我们面对新的任务时,重新训练一个从头开始的模型往往耗时耗力,而且在数据量不足的情况下,模型的性能也难以达到理想状态。这时,…...
ElasticSearch安装
ElasticSearch 脑图知识图谱地址:ProcessOn Mindmap|思维导图 简介 ES是一个开源的分布式搜索和分析引擎,基于 Apache Lucene 构建,专为处理海量数据设计,支持实时搜索、分析和可视化。 排行第一的搜索引擎 官网地址࿱…...
c#中添加visionpro控件(联合编程)
vs添加vp控件 创建窗体应用 右键选择项 点击确定 加载CogAcqfifoTool工具拍照 设置参数保存.vpp 保存为QuickBuild或者job, ToolBlock 加载保存的acq工具 实例化相机工具类 //引入命名空间 using Cognex.VisionPro; //实例化一个相机工具类 CogAcqFifoTool cogAcqFifoTool n…...
MySQL主键与外键详解:数据关系的基石与守护者
引言 在数据库设计中,主键(Primary Key)和外键(Foreign Key)是构建数据关系模型的核心工具。它们不仅保障了数据的唯一性和完整性,还实现了跨表数据关联的逻辑闭环。本文将通过实例解析这两大关键概念&…...
Go语言打造:超高性能分布式唯一ID生成工具
一、简介 这是一个超高性能唯一ID生成工具,支持docker一键部署,提供API接入功能支持高性能生成Snowflake ID、Sonyflake ID、UUID v1、UUID v4、XID、KSUID以及自定义ID的服务可以用来生成订单编号、学号、高标准唯一标识、有序ID等等开源地址参考&#…...
列表计量单位显示
列表计量单位显示 E:\javaDev\tender-project-vben5\apps\web-antd\src\views\tender\material\data.ts import type { FormSchemaGetter } from #/adapter/form; import type { VxeGridProps } from #/adapter/vxe-table;import { getDictOptions } from #/utils/dict; impor…...
RAG系统的现实困境与突破:数据泥潭到知识自由
一、当前RAG系统的核心痛点 1. 数据处理的阿喀琉斯之踵 知识形态的暴力归一化:将PDF、视频、数据库等异构数据强行转化为统一文本,导致: 纸质文献中的数学公式OCR错误率高达37%(ICDAR2023数据)流程图/思维导图等非连续…...
项目执行中缺乏问题记录和总结,如何改进?
要有效改进项目执行中的问题记录与总结机制,应采取建立标准化问题记录流程、引入专业管理工具、定期开展问题复盘、设立知识库系统、强化团队总结意识等措施。其中,建立标准化问题记录流程是核心。没有统一流程,问题易被忽视、重复发生&#…...
docker中使用openresty
1.为什么要使用openresty 我这边是因为要使用1Panel,第一个最大的原因,就是图方便,比较可以一键安装。但以前一直都是直接安装nginx。所以需要一个过度。 2.如何查看openResty使用了nginx哪个版本 /usr/local/openresty/nginx/sbin/nginx …...
红杉资本2025 AI 峰会之Cybersecurity
红杉资本2025年AI峰会中,三位合伙人分享中与security相关的观点。 1、Pat Grady认为需要在AI 时代的价值累积将主要发生在应用层,在举例当前的空白领域时,展示了在security领域目前还没产生巨头; 2、Sonia 认为垂直领域agent将是创业者的重大机遇,通过强化学习、合成数据…...
高并发架构设计之限流
一、引言 再强大的系统,也怕流量短事件内集中爆发,就像银行怕挤兑一样,所以,高并发另一个必不可少的模块就是限流。限流是一种通过控制请求的速率或数量来保护系统免受过载的技术。流控的精髓是限制单位时间内的请求量࿰…...
PostgreSQL中通过查询数据插入到表的几种方法( SELECT INTO和INSERT INTO ... SELECT)
使用 SELECT INTO 创建新表 在PostgreSQL中,SELECT INTO语法有两种主要用途:创建新表和将查询结果存储到变量中(在PL/pgSQL函数或存储过程中)。以下是详细介绍: 1. 创建新表并复制数据(类似SQL标准) SELECT * INTO new_table FROM existing_table WHERE condition;说…...
大语言模型 16 - Manus 超强智能体 Prompt分析 原理分析 包含工具列表分析
写在前面 Manus 是由中国初创公司 Monica.im 于 2025 年 3 月推出的全球首款通用型 AI 智能体(AI Agent),旨在实现“知行合一”,即不仅具备强大的语言理解和推理能力,还能自主执行复杂任务,直接交付完整成…...
Windows逆向工程提升之IMAGE_FILE_HEADER
公开视频 -> 链接点击跳转公开课程博客首页 -> 链接点击跳转博客主页 目录 IMAGE_FILE_HEADER 介绍 IMAGE_FILE_HEADER 结构 核心字段解析 Machine(目标平台架构) NumberOfSections(节数目) TimeDateStamp&…...
基于Matlab建立不同信道模型
在MATLAB中建立不同的信道模型是无线通信系统仿真的重要组成部分。信道模型用于模拟信号在传输过程中受到的各种影响,如衰减、多径效应、噪声等。以下是一些常见的信道模型及其在MATLAB中的实现方法: 1. 理想信道模型 理想信道假设信号在传输过程中不受…...
苍穹外卖05 Redis常用命令在Java中操作Redis_Spring Data Redis使用方式店铺营业状态设置
2-8 Redis常用命令 02 02-Redis入门 ctrlc :快捷结束进程 配置密码: 以后再启动客户端的时候就需要进行密码的配置了。使用-a 在图形化界面中创建链接: 启动成功了。 03 03-Redis常用数据类型 04 04-Redis常用命令_字符串操作命令 05 05-Redis常用命令…...
JS 应用安全案例泄漏云配置接口调试代码逻辑框架漏洞自检
在 Javascript 中也存在变量和函数,当存在可控变量及函数调用即可参数漏洞。 JS 开发应用和 PHP , JAVA 等区别在于即没源代码,也可通过浏览器查看源代码。 获取 URL ,获取 JS 敏感信息,获取代码传参等&…...
嵌入式八股,空闲任务
空闲任务是FreeRTOS内核创建的一个默认任务,其优先级是系统中最低的。它在系统初始化时自动创建,并且始终处于就绪状态。当系统中没有任何其他任务可以运行时,调度器会选择空闲任务运行。 一句话总结,为了让系统不重启࿰…...
wd软件安装
* wd软件安装 * 磁盘读取数据的基本原理 * 分区软件使用 * 磁盘格式化/挂载的方式任务背景某天接到短信报警提示,显示某主机的根分区空间使用率超过85%,该主机用于影评(MySQL)和报表数据库(Oracle)。经查看…...
Redis数据库-消息队列
一、消息队列介绍 二、基于List结构模拟消息队列 总结: 三、基于PubSub实现消息队列 (1)PubSub介绍 PubSub是publish与subscribe两个单词的缩写,见明知意,PubSub就是发布与订阅的意思。 可以到Redis官网查看通配符的书写规则: …...
使用脚本备份和还原Windows环境变量
使用脚本备份和还原Windows环境变量 你是否遇到过这样的场景?为什么环境变量如此脆弱?全量备份及还原全量备份系统环境变量全量恢复系统环境变量PATH变量份及还原备份PATH变量精准还原PATH变量环境变量实时刷新器必看注意事项Windows环境变量误删别抓狂!用好 脚本 免重启「时…...
卫星互联网:构建全球无缝通信网络的未来
随着全球数字化进程的加速,人们对通信网络的需求越来越高。传统的地面通信网络虽然在城市和发达地区表现良好,但在偏远地区、海洋和空中等场景中仍存在覆盖不足的问题。卫星互联网作为一种新兴的通信技术,正在逐渐成为解决全球通信覆盖问题的…...
VS2022离线安装包
这是VS2022离线安装包下载链接 ▶ 夸克网盘 下载解压后,双击vs_setup.exe即可安装...
PDF 文档结构化工具对比:Marker 与 MinerU
模型训练数据-MinerU一款Pdf转Markdown软件 https://codeyuan.blog.csdn.net/article/details/144315141 在当前大模型(LLM)和自然语言处理(NLP)应用快速发展的背景下,如何高效地将 PDF 等非结构化文档转换为结构化数…...
【优秀三方库研读】在 quill 开源库 LogMarcos.h 中知识点汇总及讲解
以下是LogMarcos.h中的主要知识点汇总及详细讲解: 大纲目录 编译时日志级别过滤预处理宏与条件编译可变参数处理技巧格式化字符串生成日志宏的分发机制线程本地存储(TLS)零成本抽象设计动态日志级别支持结构化日志标签日志频率限制机制1. 编译时日志级别过滤 核心宏:QUILL…...
第14天-Matplotlib实现数据可视化
一、Matplotlib简介 Matplotlib是Python最基础的数据可视化库,提供类似MATLAB的绘图接口,支持2D/3D图形绘制。其核心特点: 丰富的图表类型(折线图/柱状图/饼图/散点图等) 高度可定制化(颜色/字体/刻度/标注) 矢量图输出(PDF/SVG)支持 与Jupyter无缝集成 二、环境准备…...
快速刷机Android10+Root
说明:仅供学习使用,请勿用于非法用途,若有侵权,请联系博主删除 作者:zhu6201976 一、下载android10源码 1.确认手机可刷机范围 比如我的Piexel3机型,支持刷android9-android12 Android源码。 https://de…...
文章相似度对比
from transformers import AutoTokenizer, AutoModel import torch import torch.nn.functional as F # 加载中文句向量模型(BGE) model_name "BAAI/bge-large-zh-v1.5" tokenizer AutoTokenizer.from_pretrained(model_name) model AutoM…...
认知计算:迈向人类级智能的 AI 新范式
一、认知计算:定义与核心技术架构 1.1 超越传统 AI 的 “类人智能” 新维度 认知计算的本质是构建具备感知、推理、学习和交互能力的智能系统,其核心特征包括: 多模态理解:处理文本、图像、语音等非结构化数据(如分…...
数据被泄露了怎么办?
数据泄露是严重的网络安全事件,需立即采取行动以降低风险。以下是关键应对步骤: 1. 确认泄露范围 核实泄露内容:确定泄露的是密码、财务信息、身份证号还是其他敏感数据。 评估来源:检查是个人设备被入侵、某平台漏洞,…...
从 CANopen到 PROFINET:网关助力物流中心实现复杂的自动化升级
使用 CANopen PLC 扩展改造物流中心的传送带 倍讯科技profinet转CANopen网关BX-601-EIP将新的 PROFINET PLC 系统与旧的基于 CANopen 的传送带连接起来,简化了物流中心的自动化升级。 新建还是升级?这些问题通常出现在复杂的内部物流设施中,…...
关于收集 Android Telephony 网络信息的设计思考2
需求: 目标1: Android Telephony data(数据模块)侧收集多源(ServiceStateTracker/ImsService/其他)网络状态信息。目标2: 收集的数据需统一上报/存储到外部App的Provider。字段分散,不方便只在ServiceStateTracker中收集和插入。多触发点/多场景,需要统一插入。一、架构…...
android RecyclerView列表DiffCallback说明
一 代码 private class DiffCallback : DiffUtil.ItemCallback<xxxVolumeInfo>() {override fun areItemsTheSame(oldItem: xxxVolumeInfo,newItem: xxxVolumeInfo): Boolean {return oldItem.uuid newItem.uuid}override fun areContentsTheSame(oldItem: xxxVolumeIn…...
Day123 | 灵神 | 二叉树 | 找树左下角的值
Day123 | 灵神 | 二叉树 | 找树左下角的值 513.找树左下角的值 513. 找树左下角的值 - 力扣(LeetCode) 思路: 初学者可以看灵神视频二叉树的层序遍历【基础算法精讲 13】_哔哩哔哩_bilibili 我的思路就是在每层的循环前加个判断…...
流式优先架构:彻底改变实时数据处理
近年来,随着现代组织的数据环境日趋复杂且高速流动,传统数据库系统已难以满足实时分析、物联网应用以及即时决策的需求。围绕批处理和静态数据模型设计的 RDBMS(关系型数据库管理系统)在架构层面缺乏实时处理能力,而流…...
5月21日星期三今日早报简报微语报早读
5月21日星期三,农历四月廿四,早报#微语早读。 1、中国首次当选联合国教科文组织1970年《公约》缔约国大会主席国; 2、上海普陀:探索1岁以下托育服务的保育内容、人员配备等关键要素; 3、浙江:将智能家居…...
一文详解并查集:从基础原理到高级应用
一文详解并查集:从基础原理到高级应用 前言一、基本概念1.1 定义与作用1.2 直观理解 二、并查集的基本实现2.1 数据结构定义2.2 查找操作实现2.3 合并操作实现 三、经典优化策略3.1 路径压缩(Path Compression)3.2 按秩合并(Union by Rank&am…...
二叉树的半线性
二叉树的半线性结构体现在以下方面: 非线性拓扑与线性次序的结合 二叉树的节点通过父子关系形成分叉结构(非线性),但通过遍历规则(如先序、中序、后序、层次遍历)可将其映射为线性序列。例如:…...
深入浅出理解时间复杂度和空间复杂度
目录 一、基本概念 时间复杂度 空间复杂度 二、常见复杂度分类 时间复杂度常见情况 空间复杂度常见情况 三、如何分析复杂度 时间复杂度分析步骤 空间复杂度分析步骤 四、复杂度对比图表 时间复杂度增长趋势 常见算法复杂度汇总 五、实际应用中的注意事项 一、基本…...
【Java基础笔记vlog】Java中常见的几种数组排序算法汇总详解
Java中常见的几种排序算法: 冒泡排序(Bubble Sort)选择排序(Selection Sort)插入排序(Insertion Sort)希尔排序(Shell Sort)归并排序(Merge Sort)…...
flink 提交流程
flink 提交流程 基础架构并行度算子链任务槽 基础架构 上图是普通的 standalone 架构,就是独立模式,会话模式部署,客户端在接受 job 时,会生成逻辑流图,这里只是按照业务生成对应的执行图,到了 JobManager …...
使用Pandoc实现Markdown和Word文档的双向转换
前言 Word文档是老牌的文档工具,Markdown是新兴的势力。Csdn发文章就是支持Markdown文件的导入,而并不支持Word文件的导入。相反的,今日头天发文章就是支持Word文件的导入,而不支持Markdown文件的导入。 所以,这两种…...
【Python零基础入门系列】第3篇:什么是 Python 的变量、数据类型和输入输出?
欢迎来到【Python 零基础入门系列】第3篇! 前两篇我们已经学会了如何安装 Python 使用编程工具 IDE,并写出了人生第一个程序 print("Hello, world!"),是不是有点成就感了?今天我们就继续深入一点点,来聊聊编程的“灵魂三问”: 什么是变量?什么是数据类型?如…...
破解充电安全难题:智能终端的多重防护体系构建
随着智能终端的普及,充电安全问题日益凸显。从电池过热到短路起火,充电过程中的安全隐患不仅威胁用户的生命财产安全,也制约了行业的发展。如何构建一套高效、可靠的多重防护体系,成为破解充电安全难题的关键。通过技术创新和系统…...
无人机桥梁巡检
无人机桥梁巡检 防护墙巡查 路面巡查 主梁巡查 桥墩路基巡查 支座巡查 周边环境检查...
Android Binder线程池饥饿与TransactionException:从零到企业级解决方案(含实战代码+调试技巧)
简介 在Android系统中,Binder作为进程间通信(IPC)的核心机制,承载着大量跨进程调用任务。然而,当Binder线程池资源耗尽时,可能导致严重的线程饥饿问题,最终引发TransactionException异常,甚至导致应用崩溃或系统卡顿。本文将从零开始,系统讲解Binder线程池的工作原理…...
138. Copy List with Random Pointer
目录 题目描述 方法一、使用哈希表 方法二、不使用哈希表 题目描述 问题的关键是,random指针指向的是原链表的结点,这个原链表的结点对应哪一个新链表的结点呢?有两种办法。一是用哈希表。另一种是复制原链表的每一个结点,并将…...