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

深入浅出 C++ 核心基础:从语法特性到入门体系构建

一、C++ 的前世今生:从 C 语言到现代编程的进化之路

1. 起源与标准化历程(1979 年至今)

  • 诞生背景(1979-1983):Bjarne Stroustrup 在贝尔实验室因 C 语言在复杂系统开发中的不足,于 1983 年在 C 语言基础上引入类、封装、继承等面向对象特性,正式命名为 C++。
  • 标准化进程
    • 1998 年 C++98:首个正式标准,引入 STL(标准模板库),以模板重写标准库,奠定泛型编程基础。
    • 2011 年 C++11:革命性更新,新增 Lambda 表达式、右值引用、智能指针、范围 for 等,使 C++ 更现代高效。
    • 2020 年 C++20:引入协程(Coroutines)、概念(Concepts)、模块化(Modules),推动 C++ 向更复杂系统开发迈进。
    • 2023 年 C++23:小版本更新,完善现有特性,如if constevalflat_map,但备受期待的网络库因技术争议延迟至 C++26。

2. 版本特性对比(关键版本核心功能)

版本核心特性
C++98STL 容器 / 算法、模板、异常处理、IO 流
C++11Lambda、右值引用、移动语义、智能指针(unique_ptr/shared_ptr)、线程库
C++14泛型 Lambda、二进制字面量、auto返回值推导
C++17if constexpr、折叠表达式、文件系统库、std::any/optional/variant
C++20范围库(Ranges)、协程、概念、模块化
C++23if constevalflat_mapimport std导入标准库

二、第一个 C++ 程序:从 Hello World 开始

// C语言版本的hello world#include<stdio.h>int main(){printf("hello world\n");return 0;}
// C++版本Hello World
#include <iostream>
using namespace std;  // 简化命名空间访问(仅适用于练习)
int main() {cout << "Hello, C++!" << endl;  // 使用IO流输出return 0;
}

想要弄懂C++版本的hello world,来让我们一起学习下面的知识吧

三、核心语法特性:构建 C++ 编程的基石

1. 命名空间(Namespace):解决命名冲突的 “隔离区”

在C/C++中,变量、函数和后面要学到的类都是⼤量存在的,这些变量、函数和类的名称将都存在于全局作用域中,可能会导致很多冲突。使用命名空间的目的是对标识符的名称进⾏本地化,以避免命名冲突或名字污染,namespace关键字的出现就是针对这种问题的。

  • 作用:避免全局作用域中标识符冲突,将变量、函数、类封装在独立域中。

例如:

namespace num
{int a=10;
}
int main()
{printf("%d",num::a);//std::cout<<num::a<<endl;
}

namespace定义

  • 定义命名空间,需要使用到namespace关键字,后面跟命名空间的名字,然后接⼀对{}即可,{}中 即为命名空间的成员。命名空间中可以定义变量/函数/类型等。。
  • namespace本质是定义出⼀个域,这个域跟全局域各自独立,不同的域可以定义同名变量
  • namespace只能定义在全局,当然他还可以嵌套定义。
  • 项⽬⼯程中多⽂件中定义的同名namespace会认为是⼀个namespace,不会冲突。
  • C++标准库都放在⼀个叫std(standard)的命名空间中。

三种使用方式

  • 指定命名空间访问,项⽬中推荐这种方式。
  • using将命名空间中某个成员展开,项⽬中经常访问的不存在冲突的成员推荐这种方式。
  • 展开命名空间中全部成员,项目不推荐,冲突风险很大,日常小练习程序为了方便推荐使用。
using std::cout; // 仅展开需要的成员
using namespace std::literals; // 展开特定子命名空间(如字符串字面量)
using namespace std //展开std中的全部内容
int main()
{std::cout<<'a'<<endl;  //指定命名空间访问
}

2. 引用(Reference):变量的 “别名” 机制

引用不是新定义⼀个变量,用是给已存在变量取了⼀个别名,编译器不会为引用变量开辟内存空间, 它和它引用的变量共用同⼀块内存空间。

  • 核心特性
    • 定义时必须初始化,且一旦绑定不可更改:int& ref = x;
    • 与原变量共用内存,常用于传参和返回值以避免拷贝:
void Swap(int& x, int& y) 
{int tmp = x;   // 引用传参修改原数据x = y; y = tmp; 
} 
int main()
{int a=1;int b=2;Swap(a,b);
}
  • 注意
    • 引用在定义时必须初始化
    • 一个变量可以有多个引用
    • 引用一旦引用一个实体,再不能引用其他实体
  • const 引用
    可以引用⼀个const对象,但是必须用const引用。const引用也可以引用普通对象,因为对象的访问权限在引用过程中可以缩小,但是不能放大。
    const int& ref = 10 + 20;  // 绑定临时对象,临时对象具有常性
  • 别名本质:汇编层面与原变量地址相同,无独立存储空间。
  • 初始化约束
    int a = 10;
    int& ra = a; // 合法,绑定现有变量
    // int& rb; // 编译错误,引用必须初始化
    

进阶应用场景

  • 返回值优化:函数返回局部对象时,编译器自动将其绑定到引用,避免拷贝。(注意:在函数中用引用作为返回值时,需要确定引用对象不会随着函数的栈帧销毁而销毁)
  • 指针引用:替代二级指针,简化链表操作:
    void list_push_back(LNode*& head, int value) {// 通过引用修改指针本身,无需使用LNode**
    }
    

const 引用的深层语义

  • 临时对象绑定:允许绑定字面值或表达式结果(如const int& ref = 10 + 20;),临时对象生命周期延长至引用作用域。
  • 权限收缩原则const T&可绑定T对象,但禁止通过引用修改原对象。

3. 函数重载:静态多态的实现机制

C++⽀持在同⼀作用域中出现同名函数,但是要求这些同名函数的形参不同,可以是参数个数不同或者类型不同。这样C++函数调用就表现出了多态行为,使用更灵活。C语言是不支持同⼀作用域中出现同名函数的。

  • 重载条件:同一作用域内,函数名相同但参数类型、个数或顺序不同。
  • 参数类型不同
int Add(int, int);         // 参数类型int
double Add(double, double); // 参数类型double(合法重载)
    • 参数顺序不同
    void f(int, double); // 第一个参数int,第二个double
    void f(double, int); // 合法重载,通过参数顺序区分
    f(1, 2.0); // 调用f(int, double)
    f(1.0, 2); // 调用f(double, int)
    
    • 默认参数与重载冲突
    void f(int a, int b = 10);
    void f(int a); // 编译错误,二义性(f(5)可匹配两者)
    

    注意:返回值不同不能作为重载条件,编译器通过参数列表区分重载函数。

    4. inline 关键字:替代宏的高效方案

    用inline修饰的函数叫做内联函数,编译时C++编译器会在调用的地方展开内联函数,这样调用内联函数就需要建立栈帧了,就可以提高效率。

    建议编译器在调用处展开函数,减少栈帧开销,适用于短小高频调用的函数:

    inline int Add(int x, int y) 
    { return x + y; // 内联函数声明
    }  
    • 与宏的本质区别
      特性内联函数
      类型安全支持不支持
      调试支持可断点调试预处理阶段替换,难调试
      作用域受命名空间 / 类限制全局生效

    注意

    • 避免声明定义分离:内联函数需在头文件中完整定义,否则链接期报错(无函数符号)。
    • 递归函数处理:即使标记inline,递归函数通常不会被展开,需手动优化。
    • inline对于编译器而言只是⼀个建议,也就是说,你加了inline编译器也可以选择在调用的地方不展开,不同编译器关于inline什么情况展开各不相同,因为C++标准没有规定这个。inline适用于频繁调用的短小函数,对于递归函数,代码相对多⼀些的函数,加上inline也会被编译器忽略

    四、工程化特性:从语言特性到实战应用

    1. 输入输出流:类型安全的 IO 方案

    流缓冲区机制

    • cout << endl vs cout << '\n':前者刷新缓冲区(适合实时输出),后者仅换行(性能更优)。
    • 缓冲区刷新场景:程序结束、遇到endl、缓冲区满、手动调用cout.flush()

    自定义类型支持

    • 运算符重载:为自定义类实现<<>>,支持直接输入输出:
      std::ostream& operator<<(std::ostream& os, const MyClass& obj) {os << obj.x << "," << obj.y;return os;
      }
      

    2. nullptr:空指针的终极解决方案

    C++11中引入nullptr,nullptr是⼀个特殊的关键字,nullptr是⼀种特殊类型的自变量,它可以转换 成任意其他类型的指针类型。使用nullptr定义空指针可以避免类型转换的问题,因为nullptr只能被 隐式地转换为指针类型,而不能被转换为整数类型。

    • 仅转换为指针类型nullptr可赋值给int*void*等,但无法转换为整数(避免if (ptr == 0)的歧义)。
    • 函数重载解析:明确区分空指针和整数参数:
      void f(int*) 
      { cout << "nullptr passed" << endl; 
      }
      void f(int) 
      { cout << "integer passed" << endl; 
      }
      int main()
      {f(nullptr); // 调用f(int*),而非f(0)
      }

    3. 缺省参数:接口设计的灵活性

    • 缺省参数是声明或定义函数时为函数的参数指定⼀个缺省值。在调用该函数时,如果没有指定实参则采用该形参的缺省值,否则使用指定的实参,缺省参数分为全缺省和半缺省参数。(有些地方把缺省参数也叫默认参数)
    • 全缺省就是全部形参给缺省值,半缺省就是部分形参给缺省值。C++规定半缺省参数必须从右往左依次连续缺省,不能间隔跳跃给缺省值。
    • 带缺省参数的函数调用,C++规定必须从左到右依次给实参,不能跳跃给实参。
    • 函数声明和定义分离时,缺省参数不能在函数声明和定义中同时出现,规定必须函数声明给缺省值
    // 在头文件中声明
    void func(int a = 5); //缺省值只能在函数声明中指定,定义时不可重复。
    

    分类与规则

    • 全缺省
    void Func(int a=10, int b=20)
    
    • 半缺省
    void Func(int a, int b=10)//缺省参数需从右往左连续

      五、应用场景深度剖析:C++ 的技术护城河

      1. 高性能计算领域:效率为王

      游戏引擎开发

      • 内存管理:UE4 使用 C++ 的 placement new 定制内存分配器,降低 GC 开销。
      • 渲染管线:直接操作 GPU 底层接口(如 Vulkan),通过模板元编程优化数学计算。

      机器学习框架

      • 张量操作:TensorFlow 的 Tensor 核心由 C++ 实现,通过模板特化支持 CPU/GPU 异构计算。
      • 性能优化:使用 SIMD 指令(如 AVX)和多线程并行(OpenMP)加速矩阵运算。

      2. 系统级开发:底层控制的必备工具

      嵌入式设备

      • 资源受限环境:智能手表 / 车载系统中,C++ 的手动内存管理(避免 GC 停顿)和零成本抽象至关重要。
      • 硬件交互:直接操作寄存器地址,通过volatile关键字保证内存可见性。

      编译器开发

      • 词法分析:使用 C++ 的std::string_view高效处理字符串字面值。
      • 中间表示:通过模板类实现泛型 IR 节点,支持多种编程语言前端。

      3. 高并发服务:性能与稳定性平衡

      网络服务器

      • 异步 IO:基于 C++11 线程库实现线程池,配合 Epoll/Kqueue 实现高并发连接处理。
      • 内存池技术:自定义内存分配器减少new/delete开销,如 Nginx 的内存池设计。

      高频交易

      • 纳秒级优化:避免虚函数和动态分配,使用 POD 类型和栈上对象,确保指令流水线高效运行。

      六、学习路线与资源体系:从入门到专家

      1. 阶段化学习路径

      基础语法(1-3 个月)

      • 掌握变量、流程控制、函数、数组等基础,完成 “计算器”“学生信息管理系统” 等小项目。
      • 重点突破:指针与引用的本质区别,内存布局(栈 / 堆 / 全局区)。

      面向对象(2-3 个月)

      • 深入类与对象、封装 / 继承 / 多态,实现 “几何图形继承体系”“简易游戏角色系统”。
      • 关键概念:虚函数表、动态绑定、纯虚函数与接口设计。

      泛型与 STL(3-4 个月)

      • 模板语法(函数模板 / 类模板)、STL 容器源码分析(如 vector 的扩容策略、list 的双向链表实现)。
      • 实战:模仿实现std::vectorstd::sort,理解迭代器模式。

      高级主题(6 个月 +)

      • 内存管理(RAII、智能指针源码)、多线程编程(原子操作、锁机制)、模板元编程(编译期计算)。
      • 推荐项目:实现一个小型线程池、模板化的数据库连接池。

      2. 深度参考资源

      官方文档

      • C++ Standards:获取各版本标准草案,理解技术决策背景。
      • GCC/Clang 文档:学习编译器对 C++ 特性的实现细节。

      经典书籍拓展

      • 《C++ Templates: The Complete Guide》:深入模板元编程与高级技巧。
      • 《Professional C++》:覆盖内存管理、多线程、设计模式等工程实践主题。

      开源项目实践

      • 小型项目:Linux 命令行工具(如ls/grep仿写)、简易 Web 服务器(基于 asio)。
      • 大型框架:参与 Qt/OpenCV 源码阅读,理解工业级 C++ 代码规范。

      七、未来展望:C++ 的技术前沿

      1. 现代特性的工业应用

      • C++20 模块:微软 MSVC 已部分支持,未来将减少头文件依赖地狱,提升编译速度。
      • 协程(Coroutines):简化异步编程,在游戏网络模块和高并发服务中逐步落地。

      2. 生态系统演进

      • 包管理工具:vcpkg/conan 的普及,促进第三方库的标准化集成。
      • IDE 支持:CLion/VS Code 增强 C++20 特性提示,降低现代 C++ 的使用门槛。

      结语:掌握 C++ 的核心思维

      C++ 的魅力在于其 “零抽象层” 的控制力与 “泛型 + OOP” 的表现力。从基础语法到模板元编程,从内存管理到并发模型,每个知识点都需结合实践场景深入理解。建议学习者通过 “语法学习→项目实战→源码剖析” 的循环,逐步构建对 C++ 的系统性认知,最终实现从 “会用语法” 到 “精通设计” 的跨越。记住,C++ 的进阶之路没有捷径,但每一步都将夯实你对计算机科学的底层理解。

      相关文章:

      深入浅出 C++ 核心基础:从语法特性到入门体系构建

      一、C 的前世今生&#xff1a;从 C 语言到现代编程的进化之路 1. 起源与标准化历程&#xff08;1979 年至今&#xff09; 诞生背景&#xff08;1979-1983&#xff09;&#xff1a;Bjarne Stroustrup 在贝尔实验室因 C 语言在复杂系统开发中的不足&#xff0c;于 1983 年在 C …...

      【25软考网工】第二章(8)差错控制、奇偶校验、CRC、海明码

      目录 一、差错控制、奇偶校验 1、差错控制 1&#xff09;检错和纠错 2&#xff09;检错与纠错的比较: 2、奇偶校验 1&#xff09;例题1 2&#xff09;例题2(网工2018年11月第2题) 2&#xff09;例题3(网工2022年5月案例分析试题二/问题3) 知识小结 二、差错控制——CR…...

      嵌入式学习——opencv图像库编程

      环境配置 OpenCV&#xff08;Open Source Computer Vision Library&#xff09;是一个开源的计算机视觉和图像处理库&#xff0c;广泛用于各种计算机视觉任务&#xff0c;如图像处理、视频分析、人脸识别、物体检测、机器学习等。它提供了丰富的函数和工具&#xff0c;用于处理…...

      C++ MySQL数据库访问工具类设计与操作流程详解

      工具类设计背景 在C项目中直接使用MySQL C API存在三个核心痛点&#xff1a;连接流程复杂、错误处理冗余、资源管理易遗漏。本文将通过一个封装好的mysql_util类&#xff0c;结合流程图和代码解析&#xff0c;详解如何实现安全高效的MySQL操作。 核心代码实现 class mysql_u…...

      C++11常用新特性/使用场景

      C11常用新特性/使用场景 1. auto 类型推导 (Type Inference)2. 范围 for 循环 (Range-based for loop)3. Lambda 表达式 (Lambda Expressions)4. nullptr 空指针常量5. 智能指针 (std::unique_ptr, std::shared_ptr, std::weak_ptr)6. Rvalue 引用与移动语义 (Rvalue Reference…...

      React 自定义Hook之usePrevious

      概要 本文提供一个获取useState状态变化之前旧值的Hook方法usePrevious&#xff0c;以及该方法的基本实现思路&#xff0c; 实现包括TS版和普通JS版。 基本思路 usePrevious的核心原理&#xff0c;在于React Hooks的执行顺序和引用对象&#xff08;ref&#xff09;的持久化特…...

      LicheeRV Nano 与Ubuntu官方risc-v 镜像混合

      LicheeRV Nano 官方给的镜像并没有unbutu, unbutu官方有一个基于 LicheeRV Dock的镜像&#xff0c;想象能否将二者混合 &#xff08;1&#xff09;刷 LicheeRV Dock的镜像 nano无法启动 &#xff08;2&#xff09;将nano的boot分区替换掉 LicheeRV Dock的rootfs以外的分区也…...

      Eureka搭建

      1.注册中心server端 1.1.引入依赖 <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-security</artifactId> </dependency> <dependency><groupId>org.springframework.cloud</…...

      2025-2030:视频联网平台的六大技术演进趋势

      一、多模态感知融合&#xff1a;从二维图像到全息数字孪生 2025年的视频联网平台正突破传统视觉边界&#xff0c;向多物理场协同感知进化&#xff1a; 光谱维度&#xff1a;上海电力的"慧眼X"系统已集成可见光&#xff08;8K60fps&#xff09;红外&#xff08;6405…...

      软考高级系统架构设计师-第13章 软件可靠性基础知识

      【本章学习建议】 根据考试大纲,本章主要考查系统架构设计师单选题,预计考2分左右,案例分析偶尔会考到,对应第二版教材第9章,侧重于概念知识,考查知识点多来源于教材。 13.1 软件可靠性基本概念 13.1.1 软件可靠性定义 软件可靠性(Software Reliability)是软件产品在…...

      博客系统-RabbitMQ

      前言 RabbitMQ介绍 ⽤⼾注册完成之后,系统会给⽤⼾发送⼀封邮件通知 但是邮件发送成功失败并不影响我们⽤⼾注册成功.我们可以采⽤RabbitMQ来进⾏服务的解耦 RabbitMQ是⼀个开源的消息代理和队列服务器&#xff0c;⼴泛⽤于实现消息队列和事件通知.它⽀持多种消息 协议&#…...

      面试题:循环引用两个节点相互引用,如何判断哪个用 shared_ptr?哪个用 weak_ptr?

      目录 1.引言 2.原理 3.所有权模型与指针选择 4.复杂场景的决策策略 5.注意事项 6.总结 1.引言 当两个对象通过 shared_ptr 相互引用时&#xff0c;会产生循环引用问题&#xff0c;导致内存泄漏。因为这两个对象的引用计数永远不会变为 0&#xff0c;即使它们在程序的其他…...

      go语言优雅关机和优雅重启笔记

      一、优雅关机 生活化例子 餐馆关门&#xff1a;你去餐馆吃火锅&#xff0c;刚坐下点完菜&#xff08;客户端发请求&#xff09;&#xff0c;餐馆老板突然接到通知要停电&#xff08;收到关机指令&#xff09;。老板很贴心&#xff0c;先停止接待新客人&#xff08;停止接收新请…...

      Python赋能去中心化电子商务平台:重构交易生态的新未来

      Python赋能去中心化电子商务平台:重构交易生态的新未来 近年来,传统电子商务平台由于依赖中心化的服务器架构,面临数据隐私泄露、平台垄断、交易中介费用高昂以及信任危机等诸多挑战。而随着区块链和Web 3.0理念的快速普及以及零信任安全架构、边缘计算等新兴技术的不断成熟…...

      山东大学软件学院项目实训-基于大模型的模拟面试系统-Token过期重定向问题

      项目结构 ├── assets/ # 静态资源&#xff08;CSS/图片&#xff09; ├── components/ # Vue 组件 ├── layouts/ # 布局模板 ├── pages/ # 自动生成路由 ├── plugins/ # 插件&#xff08;如 axios 拦截器&#xff09; …...

      树莓派系统中设置固定 IP

      在基于 Ubuntu 的树莓派系统中&#xff0c;设置固定 IP 地址主要有以下几种方法&#xff1a; 方法一&#xff1a;使用 Netplan 配置&#xff08;Ubuntu 18.04 及以上版本默认使用 Netplan&#xff09; 查看网络接口名称 在终端输入ip link或ip a命令&#xff0c;查看当前所使…...

      JBoss + WildFly 本地开发环境完全指南

      JBoss WildFly 本地开发环境完全指南 本篇笔记主要实现在本地通过 docker 创建 JBoss 和 WildFly 服务器这一功能&#xff0c;基于红帽的禁制 EAP 版本的重新分发&#xff0c;所以我这里没办法放 JBoss EAP 的 zip 文件。WildFly 是免费开源的版本&#xff0c;可以在红帽官网找…...

      网络原理 - 应用层, 传输层(UDP 和 TCP) 进阶, 网络层, 数据链路层 [Java EE]

      目录 应用层 1. 应用层的作用 2. 自定义应用层协议 3. 应用层的 "通用协议格式" 3.1 xml 3.2 json 3.3 protobuffer (pd) 传输层 1. UDP 1.1 无连接 1.2 不可靠传输 1.3 面向数据报 1.4 全双工 1.5 缓冲区 1.6 UDP 数据报 2. TCP 2.1 有连接 …...

      百级Function架构集成DeepSeek实践:Go语言超大规模AI工具系统设计

      一、百级Function系统的核心挑战 1.1 代码结构问题 代码膨胀现象&#xff1a;单个文件超过2000行代码路由逻辑复杂&#xff1a;巨型switch-case结构维护困难依赖管理失控&#xff1a;跨Function依赖难以追踪 // 传统实现方式的问题示例 switch functionName { case "fu…...

      全同态加密医疗数据分析集python实现

      目录 摘要一、前言二、全同态加密与医疗数据分析概述2.1 全同态加密(FHE)简介2.2 医疗数据分析需求三、数据生成与预处理四、系统架构与流程4.1 系统架构图五、核心数学公式六、异步任务调度与(可选)GPU 加速七、PyQt6 GUI 设计八、完整代码实现九、自查测试与总结十、展望…...

      字节头条golang二面

      docker和云服务的区别 首先明确Docker的核心功能是容器化&#xff0c;它通过容器技术将应用程序及其依赖项打包在一起&#xff0c;确保应用在不同环境中能够一致地运行。而云服务则是由第三方提供商通过互联网提供的计算资源&#xff0c;例如计算能力、存储、数据库等。云服务…...

      关于进程状态

      目录 进程的各种状态 运行状态 阻塞状态 挂起状态 linux中的进程状态、 进程状态查看 S状态&#xff08;浅睡眠&#xff09; t 状态&#xff08;追踪状态&#xff09; T状态&#xff08;暂停状态&#xff09; ​编辑 kill命令手册 D状态&#xff08;深度睡眠&#…...

      操作系统是如何运行的?

      硬件中断 在我们使用键盘的时候&#xff0c;操作系统要怎么知道键盘上有数据了呢&#xff1f;硬件中断&#xff01; 硬件中断过程如图所示&#xff1a; 按照图中所示&#xff0c;外设直接与CPU进行交互&#xff0c;但是之前对于冯诺依曼体系架构的学习可知&#xff0c;外设要…...

      【智驾中的大模型 -3】VLA 在自动驾驶中的应用

      1.前言 在上一篇文章中&#xff0c;我们深入探讨了 VLM 模型在自动驾驶中的应用。VLA&#xff08;Very Large Architecture&#xff0c;大型架构&#xff09;和 VLM&#xff08;Very Large Model&#xff0c;非常大模型&#xff09;在 AI 领域皆指向超大规模的神经网络模型&am…...

      Go语言中的sync.Map与并发安全数据结构完全指南

      1. 引言 在Go语言的世界里&#xff0c;并发不是一个附加功能&#xff0c;而是语言的核心设计理念。那句广为人知的"Do not communicate by sharing memory; instead, share memory by communicating"&#xff08;不要通过共享内存来通信&#xff0c;而应该通过通信来…...

      ADVB协议

      ADVB:航空数字视频总线 ADVB协议是基于FC光纤通道协议和FC-AV光纤音频视频协议标准来制定 的一种新型的数字视频接口和协议。 FC协议&#xff0c;FC-AV协议&#xff0c;FC-ADVB协议。 协议层次结构&#xff0c;协议拓扑结构。 ADVB总线协议container容器是作为基本传输单元…...

      Vue3中provide和inject数据修改规则

      在 Vue3 中&#xff0c;通过 inject 接收到的数据是否可以直接修改&#xff0c;取决于 provide 提供的值的类型和响应式处理方式&#xff1a; 1. 若提供的是普通值&#xff08;非响应式数据&#xff09; javascript 复制 // 父组件 provide(staticValue, 123); 子组件修改行…...

      VuePress 使用教程:从入门到精通

      VuePress 使用教程&#xff1a;从入门到精通 VuePress 是一个以 Vue 驱动的静态网站生成器&#xff0c;它为技术文档和技术博客的编写提供了优雅而高效的解决方案。无论你是个人开发者、团队负责人还是开源项目维护者&#xff0c;VuePress 都能帮助你轻松地创建和管理你的文档…...

      Linux操作系统简介:从开源内核到技术生态

      一、Linux的起源与核心架构 1. 历史背景与发展 1991年&#xff0c;芬兰赫尔辛基大学学生林纳斯托瓦兹&#xff08;Linus Torvalds&#xff09;开发了首个Linux内核。这一开源项目与GNU工具链结合&#xff0c;形成完整的GNU/Linux操作系统。截至2023年&#xff0c;Linux内核贡…...

      iOS 应用性能测试工具对比:Xcode Instruments、克魔助手与性能狗

      iOS 应用性能测试工具对比&#xff1a;Xcode Instruments、克魔助手与性能狗 在移动应用开发领域&#xff0c;性能优化是确保用户体验流畅、留存率高的关键因素。对于 iOS 开发者而言&#xff0c;选择合适的性能测试工具能够帮助快速定位和解决应用中的性能瓶颈。本文将深入分…...

      CentOS 10 /root 目录重新挂载到新分区槽

      1 观察 ##观察目录/root 所占的磁盘空间大小 rootbogon:~# du -smh /root/ 1.6G /root/ rootbogon:~# du -smh /* |grep root du: 无法访问 /proc/19146/task/19146/fd/3: 没有那个文件或目录 du: 无法访问 /proc/19146/task/19146/fdinfo/3: 没有那个文件或目录 du: 无法访问…...

      【读书笔记·VLSI电路设计方法解密】问题64:什么是芯片的功耗分析

      低功耗设计是一种针对VLSI芯片功耗持续攀升问题的设计策略。随着工艺尺寸微缩&#xff0c;单颗芯片可集成更多元件&#xff0c;导致功耗相应增长。更严峻的是&#xff0c;现代芯片工作频率较二十年前大幅提升&#xff0c;而功耗与频率呈正比关系。因此&#xff0c;芯片功耗突破…...

      python爬虫复习

      requests模块 爬虫的分类 通用爬虫&#xff1a;将一整张页面进行数据采集聚焦爬虫&#xff1a;可以将页面中局部或指定的数据进行采集 聚焦爬虫是需要建立在通用的基础上来实现 功能爬虫&#xff1a;基于selenium实现的浏览器自动化的操作分布式爬虫&#xff1a;使用分布式机群…...

      深入解析主流数据库体系架构:从关系型到云原生

      数据库是现代信息系统的核心组件&#xff0c;其体系架构设计直接影响性能、扩展性和可靠性。本文将从传统关系型数据库到新兴云原生数据库&#xff0c;系统解析主流数据库的架构特点及适用场景。 目录 一、关系型数据库&#xff08;RDBMS&#xff09;架构 ​​典型代表​​&…...

      2026《数据结构》考研复习笔记四(第一章)

      绪论 前言时间复杂度分析 前言 由于先前笔者花费约一周时间将王道《数据结构》知识点大致过了一遍&#xff0c;圈画下来疑难知识点&#xff0c;有了大致的知识框架&#xff0c;现在的任务就是将知识点逐个理解透彻&#xff0c;并将leetcode刷题与课后刷题相结合。因此此后的过…...

      Mysql insert一条数据的详细过程

      以下是MySQL在接收到INSERT语句后存储数据的详细过程解析&#xff0c;结合存储引擎&#xff08;以InnoDB为例&#xff09;和物理存储机制分步说明。 一、SQL解析与事务启动 1.语法解析 MySQL首先解析INSERT语句&#xff0c;验证字段是否存在、数据类型是否匹配、约束&#xf…...

      流水灯右移程序(STC89C52单片机)

      #include <reg52.h> sbit ADDR0 P1^0; sbit ADDR1 P1^1; sbit ADDR2 P1^2; sbit ADDR3 P1^3; sbit ENLED P1^4; void main() { unsigned int i 0; //定义循环变量i&#xff0c;用于软件延时 unsigned char cnt 0; //定义计数变量cnt&#xff0c;用…...

      AI-Sphere-Butler之如何使用Llama factory LoRA微调Qwen2-1.5B/3B专属管家大模型

      环境&#xff1a; AI-Sphere-Butler WSL2 英伟达4070ti 12G Win10 Ubuntu22.04 Qwen2.-1.5B/3B Llama factory llama.cpp 问题描述&#xff1a; AI-Sphere-Butler之如何使用Llama factory LoRA微调Qwen2-1.5B/3B管家大模型 解决方案&#xff1a; 一、准备数据集我这…...

      智能体团队 (Agent Team)

      概述 智能体团队是一种多智能体协作模式&#xff0c;它将多个智能体组织成一个团队&#xff0c;共同解决复杂任务。与智能体监督模式不同&#xff0c;智能体团队中的成员通常具有平等的地位&#xff0c;通过相互交流和协作来达成目标。这种模式特别适合需要多种观点或多领域专…...

      AI日报 - 2025年04月19日

      &#x1f31f; 今日概览(60秒速览) ▎&#x1f916; AGI突破 | OpenAI与Google模型在复杂推理上展现潜力&#xff0c;但距AGI仍有距离&#xff1b;因果AI被视为关键路径。 模型如o3解决复杂迷宫&#xff0c;o4-mini通过棋盘测试&#xff0c;但专家预测AGI仍需30年。 ▎&#x1…...

      【实战中提升自己】内网安全部署之dot1x部署 本地与集成AD域的主流方式(附带MAC认证)

      1 dot1x部署【用户名密码认证&#xff0c;也可以解决私接无线AP等功能】 说明&#xff1a;如果一个网络需要通过用户名认证才能访问内网&#xff0c;而认证失败只能访问外网与服务器&#xff0c;可以部署dot1x功能。它能实现的效果是&#xff0c;当内部用户输入正常的…...

      算法—合并排序—js(场景:大数据且需稳定性)

      合并排序基本思想&#xff08;稳定且高效&#xff09; 将数组递归拆分为最小单元&#xff0c;合并两个有序数组。 特点&#xff1a; 时间复杂度&#xff1a;O(n log n) 空间复杂度&#xff1a;O(n) 稳定排序 // 合并排序-分解 function mergeSort(arr) {if (arr.length < …...

      绝对路径与相对路径

      绝对路径和相对路径是在计算机系统中用于定位文件或目录的两种方式&#xff0c;以下是具体介绍&#xff1a; 绝对路径 • 定义&#xff1a;是从文件系统的根目录开始到目标文件或目录的完整路径&#xff0c;它包含了从根目录到目标位置的所有目录和子目录信息&#xff0c;具有…...

      RabbitMQ,添加用户时,出现Erlang cookie不一致,导致添加用户失败的问题解决

      1. 问题现象 RabbitMQ 添加用户&#xff0c;出现以下报错 ./rabbitmgctl add user admin admin666*2. 问题原因和解决方法 安装的 RabbitMQ 里的 Erlang cookie&#xff0c;和 Erlang 环境的 cookie 不一致导致的 解决方法&#xff1a;将 Erlang 环境的 cookie &#xff0c…...

      阿拉丁神灯-第16届蓝桥第4次STEMA测评Scratch真题第2题

      [导读]&#xff1a;超平老师的《Scratch蓝桥杯真题解析100讲》已经全部完成&#xff0c;后续会不定期解读蓝桥真题&#xff0c;这是Scratch蓝桥真题解析第219讲。 第16届蓝桥第4次STEMA测评已于2025年1月12日落下帷幕&#xff0c;编程题一共有5题&#xff08;初级组只有前4道编…...

      常用的验证验证 onnxruntime-gpu安装的命令

      #工作记录 我们经常会遇到明明安装了onnxruntime-gpu或onnxruntime后&#xff0c;无法正常使用的情况。 一、强制重新安装 onnxruntime-gpu 及其依赖 # 强制重新安装 onnxruntime-gpu 及其依赖 pip install --force-reinstall --no-cache-dir onnxruntime-gpu1.18.0 --extra…...

      docker配置skywalking 监控springcloud应用

      在使用 Docker 配置 SkyWalking 监控 Spring Cloud 应用时&#xff0c;主要分为以下几个步骤&#xff1a; 1. 准备工作 确保你的开发环境已经安装了 Docker 和 Docker Compose。准备好 Spring Cloud 应用代码&#xff0c;并确保它支持 SkyWalking 的探针&#xff08;Agent&…...

      HBase安装与基本操作指南

      ## 1. 安装准备 首先确保您的系统已经安装了以下组件: - Java JDK 8或更高版本 - Hadoop(HBase可以运行在独立模式下,但建议配合Hadoop使用) ## 2. 下载与安装HBase ```bash # 下载HBase(以2.4.12版本为例) wget https://downloads.apache.org/hbase/2.4.12/hbase-2…...

      【Linux】Rhcsa复习5

      一、Linux文件系统权限 1、文件的一般权限 文件权限针对三类对象进行定义&#xff1a; owner 属主&#xff0c;缩写u group 属组&#xff0c; 缩写g other 其他&#xff0c;缩写o 每个文件针对每类访问者定义了三种主要权限&#xff1a; r&#xff1a;read 读 w&…...

      C++11特性补充

      目录 lambda表达式 定义 捕捉的方式 可变模板参数 递归函数方式展开参数包 数组展开参数包 移动构造和移动赋值 包装器 绑定bind 智能指针 RAII auto_ptr unique_ptr shared_ptr 循环引用 weak_ptr 补充 总结 特殊类的设计 不能被拷贝的类 只能在堆上创建…...