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

C++进阶----多态

目录

  • 引言
    • 1.多态的概念
    • 2.多态的定义及实现
      • 2.1 多态的构成条件
      • 2.2虚函数
      • 2.3 虚函数的重写
      • 2.4 关键字override和final
      • 2.5 重载、覆盖(重写)、隐藏对比
    • 3.抽象类
      • 3.1 抽象类概念
    • 4.多态的原理
      • 4.1 虚函数表
      • 4.2虚函数表的底层
      • 4.3多态的原理
      • 4.4 动态绑定和静态绑定
    • 5.单继承和多继承关系中的虚函数表
      • 5.1 单继承中的虚函数表
      • 5.2 多继承中的虚函数表
    • 6.总结

引言

C++的三大的特性:封装、继承、多态
多态是一种面向对象编程的特性,它允许不同类的对象对同一消息做出响应。
在C++中,多态主要通过虚函数和抽象类来实现。虚函数允许派生类重写基类的方法,而抽象类则可以定义一个接口,强制派生类实现特定的方法。这样,基类指针或引用可以指向派生类对象,从而在运行时实现多态行为。

1.多态的概念

1.1概念

多态(Polymorphism)是面向对象编程(OOP)的一个基本概念,它允许同一个接口接受不同的数据类型。(简单来说就是去完成某个行为,当不同的对象去完成时会产生出不同的状态,比如火车票,成人买成人全价票,儿童买半票,学生买票享有学生的专属折扣票军人买票可以优先买票)

2.多态的定义及实现

2.1 多态的构成条件

多态是在不同继承关系的类对象,在这个前提下构成多态的俩个条件:

  1. 必须通过基类指针或者引用调用虚函数
  2. 被调用的函数必须是虚函数

在这里插入图片描述

2.2虚函数

虚函数:被virtual修饰的类成员函数称为虚函数,无法通过自己本身来实例化

class Person{
public:virtual void BuyTicket(){cout<<"买票-全价"<<endl;}
};

2.3 虚函数的重写

虚函数的重写(覆盖):派生类中有一个跟基类完全相同的虚函数(即派生类虚函数与基类虚函数的返回值类型、函数名字、参数列表完全相同),称子类的虚函数重写了基类的虚函数.

#include<iostream>
using namespace std;
class father
{
public:virtual void Buysth(){ cout << "dad will take you shoping" << endl; }
};class son:public father
{
public:virtual void Buysth(){ cout << "I will go shoping by meself" << endl; }
};void fun(father& f)
{f.Buysth();
}int main()
{father f;son s;f.Buysth();s.Buysth();fun(f);fun(s);//s的切片return 0;
}

在这里插入图片描述

虚函数重写的俩个例

  1. 协变(基类与派生类虚函数返回值类型不同)

基类虚函数返回基类对象的指
针或者引用,派生类虚函数返回派生类对象的指针或者引用时,称为协变

  1. 析构函数的重写

如果基类的析构函数为虚函数,此时派生类析构函数只要定义,无论是否加virtual关键字,
都与基类的析构函数构成重写,虽然基类与派生类析构函数名字不同。虽然函数名不相同,
看起来违背了重写的规则,其实不然,这里可以理解为编译器对析构函数的名称做了特殊处
理,编译后析构函数的名称统一处理成destructor

2.4 关键字override和final

  1. find

关键字override用于显式指定派生类函数覆盖了基类的虚函数;final关键字则用于阻止一个虚函数在其派生类中被覆盖,或者阻止一个类被继承。

class D{
public:
virtual void d() final{}//基类
}
  1. override

override关键字主要用于检查派生类的函数是否真正的重写了基类的虚函数,如果没有则会报错。调用覆盖的函数时,会调用派生类的版本,而不是基类的版本。

class D{
publicvirtual void d ()voerride{}//派生类
}

2.5 重载、覆盖(重写)、隐藏对比

在这里插入图片描述

3.抽象类

3.1 抽象类概念

在虚函数的后面写上 =0 ,则这个函数为纯虚函数。

抽象类是一个特殊的类,它是为了表示一种抽象的概念而设立的,不能被实例化。抽象类通常作为一种基本形态,由它派生出各种具体类。抽象类至少包含一个纯虚函数。

class father
{
public:virtual void Buysth() =0 { cout << "dad will take you shoping" << endl; } 
};class son:public father
{
public:virtual void Buysth(){ cout << "I will go shoping by meself" << endl; }
};

4.多态的原理

4.1 虚函数表

虚函数表是C++中的一个概念,用于支持多态性。每个具有虚函数的对象都有一个指向虚函数表的指针,虚函数表中包含了对象的虚函数的地址。

class father
{
public:virtual void Buysth() { cout << "dad will take you shoping" << endl; }
private:int _x;
};
class A
{
public:void a(){}
private:int _x;
};
int main()
{father f;A a;return 0;
}

在这里插入图片描述

可以看出存在虚函数的类中,大小和普通类的大小是不一样的。

除了_x成员,还多一个__vfptr放在对象的前面(注意有些平台可能会放到对象的最后面,这个跟平台有关),对象中的这个指针我们叫做虚函数表指针(v代表virtual,f代表function

4.2虚函数表的底层

class Base
{
public:virtual void fun1() { cout << "fun1()" << endl; }virtual void fun2() { cout << "fun2()" << endl; }
private:int _B = 0;
};
class A:public Base
{
public:void fun1() { cout << "A::fun1()" << endl; }
private:int _a = 1;
};class B :public Base
{
public:void fun1() { cout << "B::fun1()" << endl; }void fun2() { cout << "B::fun2()" << endl; }
private:int _b = 2;
};int main()
{Base base;A a;B b;return 0;
}

在这里插入图片描述

可以看出每个实例类的虚函数表的地址和所包括的虚函数都不一样,构成重写的会生成新的虚函数,而没有构成重写的会继承基类的虚函数

4.3多态的原理

多态的实现原理基于两个关键概念:虚函数表和虚函数表指针。每个多态类都有一张虚函数表,这张表中存储了该类的虚函数地址。每个多态类的对象都有一个虚函数表指针,该指针指向该类的虚函数表。当我们通过基类的指针调用虚函数时,程序会根据这个指针指向的虚函数表中的地址去调用对应的函数,从而实现了多态。

通过调用基类的引用和指针,派生类的指针和引用,来区别不继承类和基类的虚函数调用。满足多态以后的函数调用,不是在编译时确定的,是运行起来以后到对象的中取找的。不满足多态的函数调用时编译时确认好的

4.4 动态绑定和静态绑定

  1. 静态绑定又称为前期绑定(早绑定),在程序编译期间确定了程序的行为也称为静态多态

比如:函数重载

  1. 动态绑定又称后期绑定(晚绑定),是在程序运行期间,根据具体拿到的类型确定程序的具体行为,调用具体的函数,也称为动态多态

5.单继承和多继承关系中的虚函数表

5.1 单继承中的虚函数表

在4.2中的虚函数表底层中就是常见的单继承

在这里插入图片描述

5.2 多继承中的虚函数表

class Base
{
public:virtual void fun1() { cout << "fun1()" << endl; }virtual void fun2() { cout << "fun2()" << endl; }
private:int _B = 0;
};class More
{
public:virtual void fun1(){}virtual void fun2(){}
private:int _M = 0;
};class A:public Base,public More
{
public:void fun1() { cout << "A::fun1()" << endl; }
private:int _a = 1;
};int main()
{Base base;A a;return 0;
}

在这里插入图片描述

可以看出,多继承虚函数的派生类也会有多应多个的虚函数表(虚函数指针表)

6.总结

在C++中,多态性是一种允许不同类型的对象对同一消息做出不同响应的特性。通过虚函数和继承,我们可以实现运行时多态。运行时多态是面向对象编程的三大特性之一,它极大地增强了程序的可扩展性。但是,我们也要注意虚函数会带来一些性能开销,因此在使用时需要权衡利弊。

相关文章:

C++进阶----多态

目录 引言1.多态的概念2.多态的定义及实现2.1 多态的构成条件2.2虚函数2.3 虚函数的重写2.4 关键字override和final2.5 重载、覆盖&#xff08;重写&#xff09;、隐藏对比 3.抽象类3.1 抽象类概念 4.多态的原理4.1 虚函数表4.2虚函数表的底层4.3多态的原理4.4 动态绑定和静态绑…...

银发科技:AI健康小屋如何破解老龄化困局

随着全球人口老龄化程度的不断加深&#xff0c;如何保障老年人的健康、提升他们的生活质量&#xff0c;成为了社会各界关注的焦点。 在这场应对老龄化挑战的战役中&#xff0c;智绅科技顺势而生&#xff0c;七彩喜智慧养老系统构筑居家养老安全网。 而AI健康小屋作为一项创新…...

【黑马 微服务面试篇】

分布式事务 cap定理-Availability CAP定理-Partition tolerance BASE理论 BASE理论是对CAP的一种解决思路&#xff0c;包含三个思想&#xff1a; BasicallyAvailable&#xff08;基本可用&#xff09;&#xff1a;分布式系统在出现故障时&#xff0c;允许损失部分可用性&#…...

斗鱼娱乐电玩平台源码搭建实录

在本篇文章中&#xff0c;我们将以技术人的角度详细拆解一款风格接近850平台的斗鱼娱乐电玩系统源码&#xff0c;包含完整服务器端、前台补全资源和双端APP构建流程。基于七月最新更新内容&#xff0c;本教程将突出技术关键点、实战配置与代码示范&#xff0c;旨在为开发者和搭…...

缓存与数据库一致性深度解析与解决方案

缓存与数据库一致性深度解析与解决方案 一、一致性问题本质与挑战 1. 核心矛盾分析 缓存与数据库一致性问题源于数据存储的异步性与分布性&#xff0c;核心挑战包括&#xff1a; 读写顺序不确定性&#xff1a;并发场景下写操作顺序可能被打乱&#xff08;如先写缓存后写数据…...

Flutter 弹窗队列管理:支持优先级的线程安全通用弹窗队列系统

在复杂的 Flutter 应用开发中&#xff0c;弹窗管理是一个常见难题。手动管理弹窗的显示顺序和条件判断不仅繁琐&#xff0c;还容易出错。为此&#xff0c;我们实现了一个支持优先级的线程安全通用弹窗队列管理系统。它能够自动管理弹窗的显示顺序&#xff0c;支持条件判断&…...

【Langchain】RAG 优化:提高语义完整性、向量相关性、召回率--从字符分割到语义分块 (SemanticChunker)

RAG 优化&#xff1a;提高语义完整性、向量相关性、召回率–从字符分割到语义分块 (SemanticChunker) 背景&#xff1a;提升 RAG 检索质量 在构建基于知识库的问答系统&#xff08;RAG&#xff09;时&#xff0c;如何有效地将原始文档分割成合适的文本块&#xff08;Chunks&a…...

Linux 官方蓝牙协议栈 BlueZ 第一篇:入门与架构概览

Linux 官方蓝牙协议栈 BlueZ,包含内核驱动、用户态守护进程和 DBus 接口,支持 Classic Bluetooth 和 BLE。本篇将从协议栈演进、架构组件、安装调试、核心流程和开发入门五个角度,结合 PlantUML 图、C/Python 代码示例,帮助你全面掌握 BlueZ 基础。 目录 协议栈演进与概念 …...

多层级的对象如何修改、或json格式

场景&#xff1a; 对象有多层级&#xff0c;一层套一层&#xff0c;list套对象&#xff0c;对象套list。 现在需要修改期中一个list的内容&#xff0c;怎么弄呢? 注&#xff1a;每一层都new一个新list再set不可取&#xff0c;太麻烦&#xff0c;看起来乱而且还容易错。 最好…...

产品动态|千眼狼sCMOS科学相机捕获单分子荧光信号

单分子荧光成像技术&#xff0c;作为生物分子动态研究的关键工具&#xff0c;对捕捉微弱信号要求严苛。传统EMCCD相机因成本高昂&#xff0c;动态范围有限&#xff0c;满阱容量低等问题&#xff0c;制约单分子研究成果产出效率。 千眼狼精准把握科研需求与趋势&#xff0c;自研…...

VsCode如何使用默认程序打开word Excel pdf等文件

如何使用在VsCode使用默认程序打开文件? 1.在插件市场里搜open插件并安装 2.安装完后,右键文件打开,点击Open with default application,就可以了 是不是非常方便!!!...

【T-MRMSM】文本引导多层次交互多尺度空间记忆融合多模态情感分析

在特征提取的部分用了k-means abstract (背景) 近年来,随着多模态数据量的迅速增加,多模态情感分析(MSA)越来越受到关注.该方法通过整合不同数据模态间的信息,提高了情感极性提取的准确性,从而实现了信息的全面融合,提高了情感分析的精度。 (针对创新处的不足) …...

python pymysql如何保证数据库更新成功

python pymysql如何保证数据库更新成功 在使用Python的PyMySQL库与MySQL数据库交互时,确保数据库更新操作成功执行,可以通过以下几种方式: 使用execute()和commit() 当执行一个更新(UPDATE)、插入(INSERT)或删除(DELETE)操作时,你需要调用execute()方法来执行SQL语句…...

Redis是单线程的,如何提高多核CPU的利用率?

一句话回答&#xff1a; Redis 是单线程处理客户端命令&#xff0c;但可以通过 多实例部署、I/O 多路复用、后台线程 Redis 6 的 I/O Thread 支持&#xff0c;来充分利用多核 CPU。 一、Redis 单线程 ≠ 整个 Redis 都是单线程&#xff01; Redis 主要的 网络事件 命令执行 …...

01.oracle SQL基础

SQL是结构化查询语言 SQL分类 数据定义语言&#xff08;DDL --- create/alter/drop&#xff09; sysdate --- 可以拿到当前系统时间 案例&#xff1a;创建学生表&#xff0c;教师表&#xff0c;课程表 -- 学生表 create table t_student(sid number(11) primary key,sname n…...

BEVPoolv2:A Cutting-edge Implementation of BEVDet Toward Deployment

背景 该论文是在BEVDet的基础上进行了一个调整优化&#xff0c;传统的方法是将特征图与深度预测进行外积得到视椎特征图&#xff0c;再将它与预处理好的体素索引结合&#xff0c;将每个视椎特征分类到每个voxel中进行累加和的操作。BEVFusion与BEVDepth等方法是避免了累加和&a…...

FreeRTOS学习笔记【10】-----任务上下文切换

1 概念性内容 开机到调度需要经历的步骤有&#xff1a; 系统初始化任务创建启动调度器上下文切换时间分片任务执行 1.1 任务本质 FreeRTOS 的 任务&#xff08;Task&#xff09;本质上就是一个运行在任务自己的栈区中无限循环的函数 一段上下文&#xff08;context&#x…...

PDFMathTranslate:基于LLM的PDF文档翻译及双语对照的工具【使用教程】

1.简介 PDFMathTranslate 是一个用于科学 PDF 文档翻译及双语对照的工具&#xff0c;是一个功能强大且灵活的科学文档翻译工具&#xff0c;适合科研人员、学生和专业人士使用&#xff0c;能够有效提高文档翻译的效率和质量。其具有以下特点和功能&#xff1a; 核心功能 保留格…...

CSS 入门全解析

CSS 入门全解析&#xff1a;从选择器到布局的全面教学 一、CSS 是什么&#xff1f;二、CSS 的基本语法结构三、常见选择器讲解四、盒模型讲解&#xff08;重点&#xff09;五、字体与颜色样式六、布局方式6.1 浮动布局&#xff08;了解&#xff09;6.2 Flex 弹性布局&#xff0…...

用户案例--慧眼科技

作者&#xff1a;算力魔方创始人/英特尔创新大使刘力 每个行业都有其独特的需求&#xff0c;算力魔方推出了全面的定制化服务&#xff0c;从概念到产品化&#xff0c;满足各行各业&#xff0c;用户可以根据具体应用需求定制更多接口或更强图形处理的需求&#xff0c;且算力魔方…...

面试中被问到mybatis与jdbc有什么区别怎么办

1. 核心区别 维度JDBCMyBatis抽象层级底层API&#xff0c;直接操作数据库高层持久层框架&#xff0c;封装JDBC细节代码量需要手动编写大量样板代码&#xff08;连接、异常处理等&#xff09;通过配置和映射减少冗余代码SQL管理SQL嵌入Java代码&#xff0c;维护困难SQL与Java代…...

科技与商业动态简报

睿创咨询 聚焦与深耕IPD领域长达20年&#xff0c;联合多名企业经营实战专家和前高管&#xff0c;睿创咨询借力IPD&#xff0c;为企业全方面提高产品竞争力&#xff0c;让增长从偶然变为必然&#xff01;...

Flutter Dart中的类 对象

Dart 基本特征 私有属性/私有方法 import test88.dart;main() {var home new MainHome();home.execRun(); //间接的调用私有方法 }class MainHome {String _name "张三";//私有属性int age 10;main() {_run();print(_name);}void _run() {print("私有方法&qu…...

4G卡的DTU固件TCP通讯

4G卡DTU固件的TCP通讯 概述TCP通讯测试软硬件准备上网步骤 总结 概述 银尔达的DTU固件的4G卡可以应用到很多领域。我用的是YED-M780-B. 主要特点&#xff1a; 1、5~12V供电 2、工作环境为-35℃-75℃&#xff1b; 3、 支持1路TTL 串口&#xff0c;兼容3.3V电平和5V电平&#x…...

Spring Boot 读取配置文件的几种方式

Spring Boot 提供了灵活多样的方式来读取配置文件&#xff08;如 application.yml 或 application.properties&#xff09;&#xff0c;本文介绍几种常见的读取方式。 1. 配置文件位置与加载顺序 Spring Boot 默认从以下位置加载配置文件&#xff08;优先级从高到低&#xff0…...

Winform(1.Winform控件学习)

使用的控件有&#xff1a;Button,Label,TextBox button:表示一个按钮,用户点击按钮触发事件 click事件最常用 label:标签,用于显示文本 Name属性&#xff1a;变量名称 textBox:输入框 Form1代码&#xff1a; using System; using System.Collections.Generic; using Sy…...

解读《数据资产质量评估实施规则》:企业数据资产认证落地的关键指南

随着“数据要素市场”建设加速&#xff0c;数据资产逐步成为企业核心资产之一。2024年4月&#xff0c;由中国质量认证中心&#xff08;CQC&#xff09;发布的《数据资产质量评估实施规则》&#xff08;编号&#xff1a;CQC96-831160-2024&#xff09;正式实施&#xff0c;为企业…...

Python Transformers 库介绍

Hugging Face 的 Transformers 库是一个用于自然语言处理(NLP)的强大 Python 库,它提供了对各种预训练模型的访问和使用接口。该库具有以下特点和功能: 主要特点 丰富的预训练模型:Transformers 库包含了大量的预训练模型,如 BERT、GPT - 2、RoBERTa、XLNet 等。这些模型…...

防火墙技术深度解析:从包过滤到云原生防火墙的部署与实战

防火墙技术深度解析&#xff1a;从包过滤到云原生防火墙的部署与实战 在网络安全防御体系中&#xff0c;防火墙是第一道物理屏障&#xff0c;承担着“网络流量守门人”的核心角色。从早期基于IP地址的包过滤设备到如今集成AI威胁检测的云原生防火墙&#xff0c;其技术演进始终…...

58、微服务保姆教程(一)

一、 微服务架构概述 1、微服务架构的核心概念 微服务架构是一种软件开发架构风格,它将一个应用程序划分为多个小型、独立的服务。每个服务负责一个特定的业务功能,并能够通过轻量级的通信方式(如HTTP RESTful API、消息队列等)相互通信。在设计上,每个服务都是独立的、…...

C 语言内存分配方法及优缺点

在 C 语言开发中&#xff0c;内存分配的方式主要有三种&#xff1a;静态内存分配、栈内存分配和堆内存分配。每种分配方式都有其独特的特点、适用场景以及优缺点。 静态内存分配 静态内存分配是在编译时就确定好内存的分配&#xff0c;它主要用于定义全局变量和静态局部变量。…...

通过模仿学习实现机器人灵巧操作:综述(下)

25年4月来自天津大学、山东大学、瑞士ETH、南方科技大学、通用 AI 国家重点实验室、爱丁堡大学和中科院自动化所的论文“Dexterous Manipulation through Imitation Learning: A Survey”。 灵巧操作是指机械手或多指末端执行器通过精确、协调的手指运动和自适应力调制&#x…...

uni-app 引入高德地图

一、准备工作&#xff1a;申请密钥与环境配置​ 1. 申请高德地图 API 密钥​ 注册并登录高德开放平台​ 创建「Web 端 (JS API)」类型应用&#xff0c;获取API 密钥&#xff08;Key&#xff09;✅ 注意&#xff1a;需在「安全设置」中添加域名&#xff08;如https://*.yourd…...

开源项目实战学习之YOLO11:ultralytics-cfg-datasets-Objects365、open-images-v7.yaml文件(六)

&#x1f449; 点击关注不迷路 &#x1f449; 点击关注不迷路 &#x1f449; 点击关注不迷路 medical - pills.yaml 通常用于配置与医学药丸检测任务相关的参数和信息 Objects365.yaml 用于配置与 Objects365 数据集相关信息的文件。Objects365 数据集包含 365 个不同的物体类别…...

Windows环境下常用网络命令使用

ipconfig命令使用&#xff1a; ipconfig可用于显示当前的TCP/IP配置的设置值&#xff0c;通常是用来检验人工配置的TCP/IP设置是否正确。在网络连接出现问题时&#xff0c;可以使用ipconfig /release和ipconfig /renew命令来刷新IP地址&#xff0c;这通常能解决因IP地址冲突或…...

RS232“变形记”,Profinet如何让电力通信设备“改头换面”

在现代电力系统中&#xff0c;随着自动化和智能化技术的不断发展&#xff0c;通信协议的转换成为实现设备互联互通的关键环节。VING微硬创新RS232转Profinet技术为电力设备的升级和优化提供了有效的解决方案&#xff0c;本文将详细介绍这一技术的背景、原理、应用及意义。 一、…...

WordPress AI 原创文章自动生成插件 24小时全自动生成SEO原创文章 | 多语言支持 | 智能配图与排版

为什么选择Linkreate AI内容生成插件&#xff1f; ✓ 全自动化工作流程 - 从关键词挖掘到文章发布一站式完成 ✓ 多语言支持 - 轻松覆盖全球市场&#xff08;中/英等多语种&#xff09; ✓ 智能SEO优化 - 自动生成搜索引擎友好的内容结构 ✓ AI智能配图 - 每篇文章自动匹配高质…...

弹性布局--Flexbox

CSS3 的弹性盒子布局&#xff08;Flexbox&#xff09;是一种强大的布局模型&#xff0c;用于更轻松地创建复杂的布局&#xff0c;尤其适合响应式设计。以下是其详细介绍&#xff1a; 基本概念 Flex 容器&#xff08;Flex Container&#xff09;&#xff1a; 通过将display属性…...

更新GNS3

更新GNS3 有时&#xff0c;我们需要更新GNS3&#xff08;Graphical Network Simulator-3&#xff0c;图形化网络模拟器3&#xff09;——一款用于模拟网络的学习软件&#xff0c;类似于Cisco Packet Tracer。然而&#xff0c;GNS3主要由两部分组成——GNS3客户端和GNS3虚拟机&…...

c#接口_抽象类_多态学习

c#接口_抽象类_多态学习 学习日志 关于&#xff1a;c#接口_抽象类_多态的学习记录。 一、概念 1. 多态&#xff08;Polymorphism&#xff09; 定义&#xff1a;同一操作作用于不同对象时&#xff0c;表现出不同的行为。实现方式&#xff1a; 继承 方法重写&#xff08;ov…...

BGE-M3模型深度技术分析

以下是针对 BGE-M3 模型的深度技术分析&#xff0c;综合其架构设计、核心能力、性能表现及实际应用场景&#xff1a; 一、模型概览 BGE-M3&#xff08;Beijing General Embedding M3&#xff09;是北京智源研究院&#xff08;BAAI&#xff09;推出的多语言通用向量模型&#x…...

光谱相机如何提升目标检测与识别精度

光谱相机&#xff08;多光谱/高光谱&#xff09;通过捕捉目标在多个波段的光谱特征&#xff0c;能够揭示传统RGB相机无法感知的材质、化学成分及物理特性差异。以下是提升其目标检测与识别精度的核心方法&#xff1a; ‌1. 硬件优化&#xff1a;提升数据质量‌ ‌(1) 光谱分辨…...

漏洞管理体系:从扫描评估到修复验证的全生命周期实践

漏洞管理体系&#xff1a;从扫描评估到修复验证的全生命周期实践 在网络安全防御体系中&#xff0c;漏洞管理是“攻防博弈”的核心战场。据NVD&#xff08;国家漏洞数据库&#xff09;统计&#xff0c;2023年新增漏洞超21万个&#xff0c;平均每天披露575个&#xff0c;其中32…...

资深程序员进阶设备分享,专业编程显示器RD280U

前言 在软件开发行业多年&#xff0c;长时间在电脑前工作常让我眼花、眼困、脊椎不舒服。曾尝试很多方法、买过不少产品&#xff0c;像显示器护眼挂灯、机械臂等&#xff0c;效果不佳还麻烦。直到我用上明基 RD280U 专业编程显示器&#xff0c;它上下可调高度&#xff0c;适配…...

云+AI双轮驱动,亚马逊云科技加速中国企业出海新浪潮

导读&#xff1a;全球化就是本地化 作者 | 小葳 图片来源 | 摄图 近年来&#xff0c;中国企业出海步伐不断加快&#xff0c;“不出海&#xff0c;就出局”成为很多企业的共识。 据沙利文统计&#xff0c;2024年上半年&#xff0c;超过2000家中国上市企业布局海外市场&#xff…...

不同ECU(MCU/ZCU/CCU)其部署(实现)的功能存在差异

我是穿拖鞋的汉子&#xff0c;魔都中坚持长期主义的汽车电子工程师。 老规矩&#xff0c;分享一段喜欢的文字&#xff0c;避免自己成为高知识低文化的工程师&#xff1a; 周末洗了一个澡&#xff0c;换了一身衣服&#xff0c;出了门却不知道去哪儿&#xff0c;不知道去找谁&am…...

施工安全巡检二维码制作

进入新时代以来&#xff0c;人们对安全的重视程度越来越高。特别在建筑施工行业&#xff0c;安全不仅是关乎着工人的性命&#xff0c;更是承载着工人背后家庭的幸福生活。此时就诞生了安全巡检的工作&#xff0c;而巡检过程中内容庞杂&#xff0c;安全生产检查、隐患排查、施工…...

Linux 权限修改详解:chmod 命令与权限数字的秘密

在 Linux 系统的使用过程中&#xff0c;权限控制就像是一把神奇的钥匙&#xff0c;它决定了谁能在系统中对文件和文件夹进行何种操作。今天我们来深入了解一下如何使用 chmod 命令来修改文件和文件夹的权限&#xff0c;让你在系统管理时更加得心应手。 一、chmod 命令&#xf…...

git 的基本使用

文章目录 一、创建仓库并初始化1、操作步骤2、注意事项 二、工作区与版本库1、Git 管理文件类型2、Git 保存文件方式3、工作区与版本库概念及操作 三、命令小结四、版本回退与前进1、相关概念2、版本回退3、版本前进4、总结 五、撤销修改1、场景 12、场景 23、场景 34、注意事项…...

Android 编译问题 prebuilts/clang/host/linux-x86

Android 编译问题 prebuilts/clang/host/linux-x86工具被破环了&#xff0c;用打包的方式替换调工具&#xff0c;不能拷贝&#xff0c;会破坏工具的链接。 FAILED: out\_odm/soong/build.ninja cd "$(dirname "out\_odm/host/linux-x86/bin/soong\_build")&quo…...