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

【C++重载操作符与转换】纯虚函数

目录

一、纯虚函数的基本概念

1.1 定义与语法

1.2 抽象类

1.3 派生类的实现要求

二、纯虚函数的使用场景

2.1 定义接口

2.2 实现多态

2.3 设计框架

三、纯虚函数的特性

3.1 纯虚函数可以有实现

3.2 抽象类的构造函数和析构函数

3.3 纯虚函数与接口继承

四、纯虚函数与普通虚函数的对比

五、纯虚函数的应用实例

5.1 图形库设计

5.2 游戏角色系统

5.3 工厂模式实现

六、纯虚函数的注意事项

6.1 避免在构造函数和析构函数中调用纯虚函数

6.2 纯虚函数与默认参数

6.3 纯虚函数与多重继承

七、总结


在 C++ 面向对象编程中,纯虚函数(Pure Virtual Function)是一个核心概念。它允许我们定义一个接口,而不需要实现具体的功能,从而实现多态性。

一、纯虚函数的基本概念

1.1 定义与语法

纯虚函数是在基类中声明的虚函数,它在基类中没有具体实现,而是要求任何派生类都必须提供自己的实现。纯虚函数的声明语法是在函数原型后加= 0

class Shape {
public:// 纯虚函数virtual double area() const = 0;
};

1.2 抽象类

包含至少一个纯虚函数的类称为抽象类(Abstract Class)。抽象类不能实例化,只能作为基类被继承。

// 错误:无法实例化抽象类
// Shape s; // 编译错误// 正确:可以定义抽象类的指针或引用
Shape* ptr;

1.3 派生类的实现要求

任何继承抽象类的派生类必须实现所有纯虚函数,否则派生类也会被视为抽象类。 

class Circle : public Shape {
private:double radius;
public:Circle(double r) : radius(r) {}// 实现纯虚函数double area() const override {return 3.14 * radius * radius;}
};

二、纯虚函数的使用场景

2.1 定义接口

纯虚函数最常见的用途是定义接口,强制派生类实现特定的功能。

class Drawable {
public:virtual void draw() const = 0;virtual ~Drawable() {}
};class Rectangle : public Drawable {
public:void draw() const override {std::cout << "Drawing a rectangle." << std::endl;}
};

2.2 实现多态

通过纯虚函数,可以实现运行时多态,使基类指针能够根据实际对象类型调用相应的函数。 

void render(const Drawable& obj) {obj.draw();
}int main() {Rectangle rect;render(rect); // 输出: Drawing a rectangle.
}

2.3 设计框架

在框架设计中,纯虚函数可以定义框架的扩展点,允许用户通过继承实现自定义功能。 

class Application {
public:virtual void initialize() = 0;virtual void run() = 0;virtual void shutdown() = 0;void execute() {initialize();run();shutdown();}
};

三、纯虚函数的特性

3.1 纯虚函数可以有实现

虽然纯虚函数在基类中没有声明体,但可以为其提供定义。不过,派生类仍需提供自己的实现。

class Base {
public:virtual void func() = 0; // 纯虚函数声明
};// 纯虚函数的定义
void Base::func() {std::cout << "Base::func() implementation" << std::endl;
}class Derived : public Base {
public:void func() override {std::cout << "Derived::func() implementation" << std::endl;Base::func(); // 可以调用基类的实现}
};

3.2 抽象类的构造函数和析构函数

抽象类可以有构造函数和析构函数。构造函数用于初始化抽象类的成员,析构函数通常声明为虚函数,以确保正确释放派生类对象。 

class Base {
protected:int value;
public:Base(int v) : value(v) {}virtual ~Base() {}virtual void print() const = 0;
};class Derived : public Base {
public:Derived(int v) : Base(v) {}void print() const override {std::cout << "Value: " << value << std::endl;}
};

3.3 纯虚函数与接口继承

纯虚函数实现了接口继承(Inheritance of Interface),而不是实现继承(Inheritance of Implementation)。派生类只继承函数的接口,而不继承实现。 

四、纯虚函数与普通虚函数的对比

特性纯虚函数普通虚函数
声明语法virtual void func() = 0;virtual void func();
是否必须在基类实现
能否实例化包含它的类否(抽象类)是(具体类)
派生类是否必须实现否(可继承基类实现)
典型用途定义接口实现多态行为

、纯虚函数的应用实例

5.1 图形库设计

设计一个图形库,使用纯虚函数定义各种图形的公共接口。

#include <iostream>
#include <vector>class Shape {
public:virtual double area() const = 0;virtual void draw() const = 0;virtual ~Shape() {}
};class Circle : public Shape {
private:double radius;
public:Circle(double r) : radius(r) {}double area() const override {return 3.14 * radius * radius;}void draw() const override {std::cout << "Drawing a circle with radius " << radius << std::endl;}
};class Rectangle : public Shape {
private:double width, height;
public:Rectangle(double w, double h) : width(w), height(h) {}double area() const override {return width * height;}void draw() const override {std::cout << "Drawing a rectangle with width " << width<< " and height " << height << std::endl;}
};int main() {std::vector<Shape*> shapes;shapes.push_back(new Circle(5.0));shapes.push_back(new Rectangle(4.0, 6.0));for (const auto& shape : shapes) {std::cout << "Area: " << shape->area() << std::endl;shape->draw();delete shape;}return 0;
}

5.2 游戏角色系统

设计一个游戏角色系统,使用纯虚函数定义角色的行为。

#include <iostream>class Character {
public:virtual void attack() = 0;virtual void defend() = 0;virtual ~Character() {}
};class Warrior : public Character {
public:void attack() override {std::cout << "Warrior uses sword!" << std::endl;}void defend() override {std::cout << "Warrior uses shield!" << std::endl;}
};class Mage : public Character {
public:void attack() override {std::cout << "Mage casts fireball!" << std::endl;}void defend() override {std::cout << "Mage uses magic barrier!" << std::endl;}
};void simulateBattle(Character& attacker, Character& defender) {attacker.attack();defender.defend();
}int main() {Warrior warrior;Mage mage;simulateBattle(warrior, mage);simulateBattle(mage, warrior);return 0;
}

5.3 工厂模式实现

使用纯虚函数实现工厂模式,创建不同类型的产品。 

#include <iostream>
#include <string>// 产品接口
class Product {
public:virtual void use() = 0;virtual ~Product() {}
};// 具体产品
class ConcreteProductA : public Product {
public:void use() override {std::cout << "Using Product A" << std::endl;}
};class ConcreteProductB : public Product {
public:void use() override {std::cout << "Using Product B" << std::endl;}
};// 工厂接口
class Factory {
public:virtual Product* createProduct() = 0;virtual ~Factory() {}
};// 具体工厂
class ConcreteFactoryA : public Factory {
public:Product* createProduct() override {return new ConcreteProductA();}
};class ConcreteFactoryB : public Factory {
public:Product* createProduct() override {return new ConcreteProductB();}
};int main() {Factory* factoryA = new ConcreteFactoryA();Product* productA = factoryA->createProduct();productA->use();Factory* factoryB = new ConcreteFactoryB();Product* productB = factoryB->createProduct();productB->use();delete productA;delete factoryA;delete productB;delete factoryB;return 0;
}

六、纯虚函数的注意事项

6.1 避免在构造函数和析构函数中调用纯虚函数

在基类的构造函数或析构函数中调用纯虚函数是不安全的,因为此时派生类部分可能尚未完全构造或已被销毁。

6.2 纯虚函数与默认参数

纯虚函数可以有默认参数,但调用时使用的参数值由调用点的静态类型决定,而非动态类型。 

class Base {
public:virtual void func(int x = 10) = 0;
};class Derived : public Base {
public:void func(int x = 20) override {std::cout << "x = " << x << std::endl;}
};int main() {Base* ptr = new Derived();ptr->func(); // 输出 x = 10,使用基类的默认参数delete ptr;return 0;
}

6.3 纯虚函数与多重继承

在多重继承中,一个类可以从多个抽象类继承纯虚函数,必须实现所有纯虚函数才能成为具体类。

七、总结

纯虚函数是 C++ 面向对象编程中的重要工具,它允许我们定义抽象接口,实现多态性,并强制派生类提供特定功能的实现。通过合理使用纯虚函数,可以设计出灵活、可扩展的类层次结构。


相关文章:

【C++重载操作符与转换】纯虚函数

目录 一、纯虚函数的基本概念 1.1 定义与语法 1.2 抽象类 1.3 派生类的实现要求 二、纯虚函数的使用场景 2.1 定义接口 2.2 实现多态 2.3 设计框架 三、纯虚函数的特性 3.1 纯虚函数可以有实现 3.2 抽象类的构造函数和析构函数 3.3 纯虚函数与接口继承 四、纯虚函…...

面向具身智能的视觉-语言-动作模型(VLA)综述

具身智能被广泛认为是通用人工智能&#xff08;AGI&#xff09;的关键要素&#xff0c;因为它涉及控制具身智能体在物理世界中执行任务。在大语言模型和视觉语言模型成功的基础上&#xff0c;一种新的多模态模型——视觉语言动作模型&#xff08;VLA&#xff09;已经出现&#…...

车用CAN接口芯片:汽车神经系统的沉默构建者

车用CAN接口芯片&#xff1a;汽车神经系统的沉默构建者 在汽车电子系统的复杂架构中&#xff0c;CAN总线如同人体的神经系统&#xff0c;而CAN接口芯片则扮演着神经突触的角色。这些指甲盖大小的芯片&#xff0c;默默承担着整车超过70%的通信任务&#xff0c;却鲜少成为技…...

AI日报 · 2025年5月14日|Android 生态大型更新与多端 Gemini 集成

1、Google “Android Show: I/O Edition” 汇总&#xff1a;设计、安全、Gemini 三线并进 北京时间 5 月 14 日凌晨&#xff08;原文标注 5 月 13 日 PDT&#xff09;&#xff0c;Google 在 I/O 前夕举办的 Android Show 一口气公布四大方向更新&#xff1a;① Mater…...

QT+opencv实现卡尺工具找圆、拟合圆

QT Opencv 实现卡尺工具找圆 找圆工具是自己从其他项目里面单独整理出来&#xff0c;可直接引用到新项目中。 程序中提供了函数接口&#xff0c;其他文件直接传入参数就能获取圆心和半径信息。次工具全采用QT和opencv&#xff0c;全部源码可随需求更改。 以下是实现效果&am…...

养生:拥抱健康生活的实用之道

在忙碌的现代生活中&#xff0c;养生逐渐成为人们追求健康的重要方式。从饮食、运动到睡眠与心态&#xff0c;各个养生环节相辅相成&#xff0c;共同构建起健康生活的大厦。以下为你详细介绍养生的关键要点&#xff0c;助你开启健康生活之旅。 饮食养生&#xff1a;科学搭配&a…...

Llama:开源的急先锋

Llama:开源的急先锋 Llama1&#xff1a;开放、高效的基础语言模型 Llama1使用了完全开源的数据&#xff0c;性能媲美GPT-3&#xff0c;可以在社区研究开源使用&#xff0c;只是不能商用。 Llama1提出的Scaling Law 业内普遍认为如果要达到同一个性能指标&#xff0c;训练更…...

使用大语言模型从零构建知识图谱(中)

从零到一&#xff1a;大语言模型在知识图谱构建中的实操指南 ©作者|Ninja Geek 来源|神州问学 还没有看过上篇的读者可以阅读《使用大语言模型从零构建知识图谱&#xff08;上&#xff09;》了解整个系列的内容 通过创建一个自定义流程来自动上传业务数据 在这一节&#…...

深度强化学习 | 图文详细推导软性演员-评论家SAC算法原理

目录 0 专栏介绍1 最大熵贝尔曼方程2 SAC算法原理推导2.1 参数化动作-价值函数2.2 参数化策略2.3 参数化温度 3 算法流程 0 专栏介绍 本专栏以贝尔曼最优方程等数学原理为根基&#xff0c;结合PyTorch框架逐层拆解DRL的核心算法(如DQN、PPO、SAC)逻辑。针对机器人运动规划场景…...

大数据开发 hadoop集群 3.Hadoop运行环境搭建

一、配置虚拟机 1.1 下载VMware虚拟机 1.下载地址&#xff1a;VMware Workstation下载_VMware Workstation官方免费下载_2024最新版_华军软件园 1.2 创建虚拟机 简易安装信息 1.3. 命名虚拟机 标题一 指定磁盘容量大小&#xff08;推荐大小&#xff09; 1.4. 语言和时区设…...

【​​HTTPS基础概念与原理​】​​HTTPS vs HTTP:为什么现代网站必须用HTTPS?

以下是关于 HTTPS vs HTTP 的详细对比分析&#xff0c;涵盖安全性、性能差异及SEO影响&#xff0c;帮助您全面理解为何现代网站必须采用HTTPS&#xff1a; 一、安全性对比&#xff1a;HTTPS 如何解决 HTTP 的致命缺陷 1. HTTP 的安全隐患 • 明文传输&#xff1a;HTTP 数据以明…...

【springcloud学习(dalston.sr1)】Eureka单个服务端的搭建(含源代码)(三)

该系列项目整体介绍及源代码请参照前面写的一篇文章【springcloud学习(dalston.sr1)】项目整体介绍&#xff08;含源代码&#xff09;&#xff08;一&#xff09; 这篇文章主要介绍单个eureka服务端的集群环境是如何搭建的。 通过前面的文章【springcloud学习(dalston.sr1)】…...

榕壹云打车系统:基于Spring Boot+MySQL+UniApp的开源网约车解决方案

传统出租车行业的数字化痛点与破局 近年来,随着网约车市场的爆发式增长,传统出租车企业面临数字化转型的迫切需求。传统出租车行业存在以下核心痛点: 1. 运营效率低下:手工调度、纸质单据导致资源浪费。 2. 乘客体验不足:无法实时查看车辆位置、支付不便。 3. 安全监管…...

第5章 运算符、表达式和语句

目录 5.1 循环简介5.2 基本运算符5.3 其他运算符5.4 表达式和语句5.5 类型转换5.6 带有参数的函数5.7 一个实例程序5.11 编程练习 5.1 循环简介 5.2 基本运算符 赋值运算符&#xff1a; 几个术语&#xff1a;数据对象、左值、右值和操作数 数据对象&#xff1a;泛指数据存储区…...

全流量解析:让安全防御从“被动挨打”升级为“主动狩猎”

在网络安全领域&#xff0c;攻击者就像“隐形小偷”&#xff0c;总想悄无声息地入侵你的网络。而全流量解析&#xff0c;就是一套能“看清每一辆网络货车里装了什么”的技术。它通过采集并分析网络中的全部原始流量数据&#xff0c;帮助安全团队发现威胁、溯源攻击&#xff0c;…...

bfs-最小步数问题

最小步长模型 特征&#xff1a; 主要是解决权值为1且状态为字符串类型的最短路问题&#xff0c;实质上是有向图的最短路问题&#xff0c;可以简化为bfs求最短路问题。 代表题目&#xff1a; acwing 845 八数码问题&#xff1a; 八数码题中由于每次交换的状态是由x进行上下左右…...

机器学习 Day17 朴素贝叶斯算法-----概率论知识

1.简介 朴素贝叶斯&#xff08;Naive Bayes&#xff09;是一类基于贝叶斯定理&#xff08;之后讲&#xff09;并假设特征之间相互独立的概率分类算法 &#xff0c;是机器学习中应用广泛的分类模型。以下为您详细介绍&#xff1a; 核心原理 贝叶斯定理&#xff1a;描述后验概…...

Selenium-Java版(环境安装)

Selenium自动化环境安装 前言 安装 安装客户端库 安装Chrome浏览器 安装Chrome浏览器驱动 安装Edge浏览器驱动 配置环境变量 示例 前言 参考教材&#xff1a;Python Selenium Web自动化 2024版 - 自动化测试 爬虫_哔哩哔哩_bilibili 安装 安装客户端库 <dep…...

【华为HCIP | 华为数通工程师】821—多选解析—第二十四页

980、以下关于BGP路由等价负载分担的描述,正确的是哪些项? A、公网中到达同一目的地的IBGP和EBGP路由不能形成负载分担。 B、在设备上使能BGP负载分担功能后,只有满足条件的多条BGP路由才会成为等价路由,进行负载分担。 C、默认情况下设备只会对AS Path长度相同的路由进…...

如何用Jsoup库提取商品名称和价格?

使用 Jsoup 库提取商品名称和价格是一个常见的任务&#xff0c;尤其是在爬取电商网站的商品详情时。Jsoup 是一个非常强大的 HTML 解析库&#xff0c;可以方便地从 HTML 文档中提取数据。以下是如何使用 Jsoup 提取商品名称和价格的详细步骤和代码示例。 一、环境准备 确保你…...

一文掌握六个空转数据库

写在前面 在实际的空转分析&#xff0c;尤其是细胞注释环节中&#xff0c;我们需要依赖大量的文献/数据库来对结果进行参考、校验&#xff0c;此时空间转录数据库能够快速帮助我们找到合适的参考数据集/信息。此外&#xff0c;现存的很多空转数据库收集了大量可供挖掘的数据&a…...

基于Qt的OSG三维建模

以下是一个基于Qt和OpenSceneGraph&#xff08;OSG&#xff09;实现三维模型交互的示例代码&#xff0c;包含模型高亮、文本标注等功能。代码采用Qt5和OSG 3.6版本开发。 一、核心类设计&#xff08;C&#xff09; 1. 主窗口类&#xff08;继承QMainWindow&#xff09; #inc…...

Spring Cloud:构建云原生微服务架构的最佳工具和实践

&#x1f325;️ 1. 引言 一、背景介绍&#xff1a;为什么需要微服务&#xff1f; 随着互联网技术的发展&#xff0c;企业级应用的功能日益复杂&#xff0c;传统的单体架构&#xff08;Monolithic Architecture&#xff09;逐渐暴露出一系列问题&#xff1a; 项目庞大&#…...

云图库和黑马点评的项目学习经验

捷优商超 我这个项目我主要实现了三个点&#xff0c;第一个是博主推送&#xff0c;就是用户进行消息的推送&#xff0c;拱用户进行商品的评价。第二个就是用户的签到。第三个就是优惠券秒杀了。 首先是博主推送&#xff0c;我们获取到前端信息以后直接把消息放到数据库里面&…...

苍穹外卖 - Day02 学习笔记

一、核心功能&#xff1a;新增员工 在实现新增员工功能时&#xff0c;有几个关键的技术点和设计考量需要我们掌握。 1.1 数据传输对象 (DTO) 的应用 核心概念&#xff1a; 数据传输对象&#xff08;Data Transfer Object, DTO&#xff09;是在应用程序不同分层之间传递数据的…...

设计模式(9)——创建型模式之工厂方法

设计模式(9)——创建型模式之工厂方法 工厂方法作用结构伪代码适用场景工厂方法 作用 工厂方法是一种创建型设计模式,其在父类中提供一个创建对象的方法,允许子类决定实例化对象的类型。 结构 产品(Product)将会对接口进行声明。对于所有由创建者及其子类构建的对象,…...

机器学习基础课程-6-课程实验

目录 6.1 实验介绍 实验准备 贷款审批结果预测 6.2 数据读取 6.3 数据处理 6.4 特征处理 有序型特征处理 类别型特征处理 数值型特征归一化 6.5 建立机器学习模型 建立测试模型 结果可视化 6.1 实验介绍 贷款审批结果预测 银行的放贷审批&#xff0c;核心要素为风险控制。因此&…...

IP SSL怎么签发使用

IP证书的签发首先是需要有一个可供绑定的IP地址&#xff0c;作为常用数字证书之一&#xff0c;IP证书也因为其广泛的应用范围而深得用户的青睐和喜欢。 部署IP证书后&#xff0c;可以实现该IP地址的https访问&#xff0c;过程和域名证书相差不多。 IP证书和域名证书的区别 很…...

QMK键盘编码器(Encoder)(理论部分)

QMK键盘编码器(Encoder)(理论部分) 前言 作为一名深耕机械键盘DIY多年的老司机,我发现很多键盘爱好者对QMK编码器的配置总是一知半解。今天我就把多年积累的经验毫无保留地分享给大家,从硬件接线到软件配置,从基础应用到高阶玩法,一文全搞定!保证看完就能让你的编码…...

AI编程:使用Trae + Claude生成原型图,提示词分享

最近在学习AI编程相关的东西&#xff0c;看到了有人分享的提示词&#xff0c;做了两个APP原型图&#xff0c;分享给大家。 成果 第一个是依据B站的 探索者-子默 的视频&#xff0c;照着生成的AI改写原型图 第二个是我修改了一下提示词让AI生成做视频解析链接的APP原型图。 整体…...

计算机操作系统(七)详细讲解进程的组成与特性,状态与转换

计算机操作系统&#xff08;七&#xff09;进程的组成与特性&#xff0c;状态与转换 前言一、进程的组成1. 什么是“进程”&#xff1f;2. 进程的三个核心组成部分2.1 PCB&#xff08;进程控制块&#xff09;—— 进程的“身份证户口本”2.2 程序段—— 进程的“任务清单”2.3 …...

【2025.5.12】视觉语言模型 (更好、更快、更强)

【2025.5.12】Vision Language Models (Better, Faster, Stronger)&#xff1a; https://huggingface.co/blog/vlms-2025 【2024.4.11】Vision Language Models Explained【先了解视觉语言模型是什么】&#xff1a; https://huggingface.co/blog/vlms nanoVLM: https://github.…...

数据清洗ETL

ETL介绍 “ETL&#xff0c;是英文Extract-Transform-Load的缩写&#xff0c;用来描述将数据从来源端经过抽取&#xff08;Extract&#xff09;、转换&#xff08;Transform&#xff09;、加载&#xff08;Load&#xff09;至目的端的过程。ETL一词较常用在数据仓库&#xff0c…...

STM32 实时时钟(RTC)详解

一、RTC 简介 RTC&#xff08;Real Time Clock&#xff09;即实时时钟&#xff0c;本质上是一个 32 位的秒级计数器&#xff1a; 最大计数值为 4294967295 秒&#xff0c;约合 136 年&#xff1a; 复制编辑 4294967295 / 60 / 60 / 24 / 365 ≈ 136 年 RTC 初始化时&#x…...

Java中的异常机制

目录 Error&#xff08;错误&#xff09; Exception&#xff08;异常&#xff09; 受检异常&#xff08;Checked Exception&#xff09; 非受检异常&#xff08;Unchecked Exception&#xff09; 图示总结&#xff1a; 异常处理机制 try-catch-finally throws关键字 图…...

计算机网络:怎么理解调制解调器的数字调制技术?

数字调制技术详解 数字调制技术是将数字比特流转换为适合在物理信道(如电缆、光纤、无线信道)传输的模拟信号的核心技术。通过改变载波(通常是正弦波)的幅度、频率或相位(或组合),将二进制数据映射到模拟波形上。其目标是高效利用频谱资源、提升抗干扰能力,并适应不同…...

【MySQL】自适应哈希详解:作用、配置以及如何查看

&#x1f4e2;博客主页&#xff1a;https://blog.csdn.net/2301_779549673 &#x1f4e2;博客仓库&#xff1a;https://gitee.com/JohnKingW/linux_test/tree/master/lesson &#x1f4e2;欢迎点赞 &#x1f44d; 收藏 ⭐留言 &#x1f4dd; 如有错误敬请指正&#xff01; &…...

【sql】按照数据的日期/天 ,对入库数据做数量分类

我今天写SQL&#xff0c;发现我的时间的写法是“年-月-日 时:分:秒 ”&#xff0c; 我想要按照“年-月-日”分类&#xff0c;看看我每一天的入库数据量是多少&#xff0c;然后做出一个报表出来。 sql对时间的处理&#xff1a; SELECT DATE(update_time) AS date_only,COUNT(*…...

【PostgreSQL数据分析实战:从数据清洗到可视化全流程】附录-A. PostgreSQL常用函数速查表

&#x1f449; 点击关注不迷路 &#x1f449; 点击关注不迷路 &#x1f449; 点击关注不迷路 文章大纲 PostgreSQL常用函数速查表&#xff1a;从数据清洗到分析的全场景工具集引言一、字符串处理函数1.1 基础操作函数1.2 模式匹配函数&#xff08;正则表达式&#xff09; 二、数…...

【软件测试】:推荐一些接口与自动化测试学习练习网站(API测试与自动化学习全攻略)

一、API测试练习平台 Postman Learning Center &#xff08;https://learning.postman.com/&#xff09; 特点&#xff1a;Postman官方学习中心&#xff0c;提供API测试完整教程&#xff08;含视频、文档、沙盒环境&#xff09; 练习场景&#xff1a;请求构造、环境变量、自动…...

iOS Safari调试教程

iOS Safari调试 本教程将指导您如何使用WebDebugX调试iOS设备上的Safari浏览器。通过本教程&#xff0c;您将学习如何连接iOS设备、调试Safari中的网页、分析性能问题以及解决常见的调试挑战。 准备工作 在开始调试iOS Safari之前&#xff0c;请确保您已经&#xff1a; 安装…...

Java 大视界——Java 大数据在智慧交通智能停车诱导系统中的数据融合与实时更新

面对城市停车资源错配导致的30%以上交通拥堵问题&#xff0c;本文以某新一线城市智慧交通项目为蓝本&#xff0c;深度解析Java大数据技术如何实现多源停车数据融合、动态路径规划与诱导策略优化。通过构建“感知-计算-决策”全链路系统&#xff0c;实现车位状态更新延迟<200…...

KUKA库卡焊接机器人智能气阀

在工业焊接的大舞台上&#xff0c;成本把控与环保考量愈发重要。KUKA 库卡焊接机器人智能气阀&#xff0c;作为前沿科技结晶&#xff0c;成为实现库卡焊接机器人节气的关键 “利器”&#xff0c;助力企业在降本增效与绿色发展之路上大步迈进。​ 智能气阀融合先进传感与智能调…...

react中安装依赖时的问题 【集合】

目录 依赖升级/更新 1、 npm install --save-dev 与 npm install 的区别 1. ‌安装位置&#xff08;依赖类型&#xff09;‌ 2. ‌package.json 中的区别‌ 3. ‌示例 4. ‌何时使用哪种方式‌ 2、npm install 和 yarn add 有什么不一样吗 ‌命令语法‌&#xff1a; …...

【网络实验】-BGP-EBGP的基本配置

实验拓扑 实验要求&#xff1a; 使用两种方式建立不同AS号的BGP邻居&#xff0c;不同AS号路由器之间建立的邻居称为EBGP邻居 实验目的&#xff1a; 熟悉使用物理口和环回口建立邻居的方式 IP地址规划&#xff1a; 路由器接口IP地址AR1G0/0/012.1.1.1/24AR1Loopback 01.1.1…...

【嵌入式开发-按键扫描】

嵌入式开发-按键扫描 ■ 1. 按键■ 按键队列发送后在读取队列处理■ 定时器30ms扫描一次&#xff0c;并通过MsgAdd(msg); 发送出去。 ■ 2. 触摸屏处理■■ ■ 1. 按键 ■ 按键队列发送后在读取队列处理 // key queue #define KEY_QUEUE_MAX 5typedef enum {KEY_TYPE_IR 0,K…...

NineData 社区版 V4.1.0 正式发布,新增 4 条迁移链路,本地化数据管理能力再升级

NineData 社区版 V4.1.0 正式更新发布。本次通过新增 4 条迁移链路扩展、国产数据库深度适配、敏感数据保护增强‌等升级&#xff0c;进一步巩固了其作为高效、安全、易用的数据管理工具的定位。无论是开发测试、数据迁移&#xff0c;还是多环境的数据管理&#xff0c;NineData…...

TypeScript装饰器:从入门到精通

TypeScript装饰器&#xff1a;从入门到精通 什么是装饰器&#xff1f; 装饰器&#xff08;Decorator&#xff09;是TypeScript中一个非常酷的特性&#xff0c;它允许我们在不修改原有代码的情况下&#xff0c;给类、方法、属性等添加额外的功能。想象一下装饰器就像给你的代码…...

R语言学习--Day02--实战经验反馈

最近在做需要用R语言做数据清洗的项目&#xff0c;在网上看再多的技巧与语法&#xff0c;都不如在项目中实战学习的快&#xff0c;下面是我通过实战得来的经验。 判断Rstudio是否卡死 很多时候&#xff0c;我们在运行R语言代码时&#xff0c;即使只是运行框选的几行代码&#…...

《AI驱动的智能推荐系统:原理、应用与未来》

一、引言 在当今信息爆炸的时代&#xff0c;用户面临着海量的信息选择&#xff0c;从购物平台上的商品推荐到流媒体服务中的影视推荐&#xff0c;智能推荐系统已经成为我们日常生活中不可或缺的一部分。AI驱动的智能推荐系统通过分析用户的行为和偏好&#xff0c;为用户提供个性…...