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

【QT面试题】(三)

文章目录

  • Qt信号槽的优点及缺点
  • Qt中的文件流和数据流区别?
  • Qt中show和exec区别
  • QT多线程使用的方法 (4种)
  • QString与基本数据类型如何转换?
  • QT保证多线程安全
  • 事件与信号的区别
  • connect函数的连接方式?
  • 信号与槽的多种用法
  • Qt的事件过滤器有哪些
  • 同步和异步的网络连接区别?
  • Qt网络模块中有那些类来执行异步操作?
  • Qt如何执行HTTP请求?
  • 什么是Qt Quick?

Qt信号槽的优点及缺点

信号槽为观察者模式。槽的本质为类成员函数,参数为任何数据类型,可以被重载,也可以是虚函数,也可以设置权限(public/private/protected)

1.Qt信号槽的优点

(1)灵活性好: 一个信号可以绑定多个槽,同时多个信号也可以关联同一个槽,提供了高度的灵活性
(2)类型安全: 信号和槽在关联时,必须确保它们的签名(包括参数类型和参数个数)完全一致,否则编译时会报错,这保证了类型的安全性。
(3)松散耦合: 信号和槽机制减弱了QT对象之间的耦合度,使得对象之间的交互更加灵活和独立。

2.Qt信号槽的缺点

执行速度慢: 信号和槽机制在执行时,特别是在多线程环境下,需要排队等待和定位接收信号的对象,因此执行速度相对较慢,效率较低。

Qt中的文件流和数据流区别?

1.Qt的文件流QTextStream

(1)文本展现方式:通过QTextStream写入文件的数据以文本方式展现,提供读写文本文件的接口
(2)操作对象:可以操作QIODevice、QString和QByteArray三种数据类型
(3)编码特性:内部使用Unicode编码处理文本数据
(4)读取模式
块读取:使用readLine()/readAll()函数进行整块数据读取
字符读取:使用QChar/char逐个字符读取(常用于文件解析场景)
(5)格式控制
通过setFileWidth()/setPadChar()设置文本宽度和填充字符
通过setFileAlignment()设置段落文本的对齐格式
(6)适用场景:特别适合处理字符、数字等文本数据的读写操作

2.Qt中的数据流QDataStream

(1)数据类型支持:可以操作各种数据类型,包括类对象等复杂数据结构
(2)数据持久化:保存到文件的数据可以完整还原至内存
(3)操作范围:
磁盘文件操作
内存数据信息处理
(4)构造函数
QDataStream():构造无IO设备的数据流
QDataStream(QIODevice *d):使用指定IO设备构造数据流
(5)关键控制参数
ByteOrder:控制读写字节顺序
FloatingPointPrecision:设置浮点数精度
(6)状态检测
通过Status检测流状态(正常/数据损坏/写入失败等)
使用atEnd()检测文件结尾

Qt中show和exec区别

1.show()针对显示非模态对话框

非模态特性: show()用于显示非模态对话框,不会阻塞程序线程,允许用户同时与其他窗口交互
对象生命周期: 若对话框创建在栈上,离开作用域后对象会被销毁,导致对话框仅短暂闪现

2.exec()针对显示填充对话框

模态特性: exec()用于显示模态对话框,会开启事件循环并阻塞线程, 模态对话框在关闭前,用户不能操作应用程序其他窗口
典型场景: 适用于必须立即处理的重要对话框,如文件保存确认

3.exec()的作用

执行流程:
进入事件循环(如return su.exec())
等待响应用户输入(Wait状态)
Qt系统处理并传递事件/消息到各窗口
退出机制: 当程序遇到exit()时,返回exec()的值终止循环

QT多线程使用的方法 (4种)

1… QRunnable和QThreadPool结合

实现方式: 继承QRunnable类并重写run()函数,然后通过QThreadPool来运行线程
限制条件: 该方法不能使用信号和槽机制进行线程间通信
适用场景: 适合不需要与主线程频繁交互的独立任务

  1. QtConcurrentRun类

特点: 无需继承类即可在另一个线程中执行函数
优势: 使用简单方便,适合快速实现多线程功能
应用场景: 特别适合在后台线程中执行单个函数的情况

  1. 继承QThread

核心操作: 通过继承QThread类并重写run()函数来实现多线程
实现要点: 需要完全重写run()函数来定义线程执行逻辑
注意事项: 这是最传统的QT多线程实现方式

  1. 继承QObject

关键技术: 继承QObject类后使用moveToThread()方法将对象移动到新线程
优势: 可以充分利用QT的信号槽机制
灵活性: 允许对象在不同线程间移动,适合复杂的线程交互场景

5.操作系统线程和进程区分

系统架构: 操作系统可同时执行多个任务(进程),每个进程又可包含多个任务(线程)
执行特性: 线程之间相互独立,采用抢占式执行方式
硬件影响:
单核CPU同一时刻只能执行一个线程
多核CPU可真正实现多线程并行
性能考量: 单核CPU上线程切换会降低执行效率,耗时操作应放在独立线程中防止界面卡死

6.阻塞和非阻塞

非阻塞定义: 一个线程的操作不会阻塞其他线程对事件的接收和处理
阻塞现象:
公共资源同时只能被一个线程访问
其他线程访问会被挂起直到当前访问结束
主线程界面刷新也可能因此被挂起
实际影响: 阻塞操作可能导致界面假死,应尽量避免在主线程中进行

7.同步和异步

同步执行: 必须等待操作完成才能继续执行后续代码
异步特点: 函数调用后不等待结果直接执行后续代码
关键区别:
同步:等待操作完成 → 顺序执行
异步:不等待结果 → 并行执行
应用建议: 耗时操作应采用异步方式避免阻塞主线程

QString与基本数据类型如何转换?

1.QString与数字之间转换

QString 转换为 int: toInt()
int 转换为 QString: QString::number(int)

    // 1: QString转换为int double floatQString qstr1("2980");int itemp1 = qstr1.toInt() + 700;qDebug()<<"itemp1="<<itemp1<<endl;// int-->QStringQString qstr2=QString::number(itemp1);qDebug()<<"qstr2="<<qstr2<<endl;

2.QDateTime与QString之间转换

QString 转换为 QDateTime: QDateTime::fromString(QString, QString)
QDateTime 转换为 QString: toString(QString)(需要指定格式)

    // 2: QString--->2: QDateTimeQString qstr3="2023-03-16 17:03:28";QDateTime qdatetime1=QDateTime::fromString(qstr3,"yyyy-MM-dd hh:mm:ss");qDebug()<<"qdatetime1="<<qdatetime1<<endl;// QDateTime -->QStringQDateTime qdatetime2=QDateTime::currentDateTime(); // 获取当前时间QString qstr4=qdatetime2.toString("yyyy-MM-dd hh:mm:ss");qDebug()<<"qstr4="<<qstr4<<endl;
  1. QString与QByteArray之间转换

QString 转换为 QByteArray: toUtf8()
QByteArray 转换为 QString: QByteArray可以直接赋值给QString

    // 3: QString--->QByteArrayQString qstr5("main qt creator");QByteArray bytes1=qstr5.toUtf8();qDebug()<<"bytes1="<<bytes1<<endl;// QByteArray--->QStringQByteArray bytes2("QString ByteArray");QString qstr6=bytes2;qDebug()<<"qstr6="<<qstr6<<endl;

4.QString与char*转换

QString 转换为 char*: toLatin1().data()
char* 转换为 QString: QString(QLatin1String(char*))

    // 4: QString--->char*QString qstr7("Analyze Qt Creator");char* char1;QByteArray qbt=qstr7.toLatin1(); // 这步必须操作char1=qbt.data();qDebug()<<"char1="<<char1<<endl;// char*--->QStringQString qstr8=QString(QLatin1String(char1));qDebug()<<"qstr8="<<qstr8<<endl;

QT保证多线程安全

1.QT如何保证多线程安全

(1)使用互斥锁:通过QMutex类实现资源访问的互斥性,避免数据竞争或死锁
(2)使用读写锁:当有线程需要写入时,其他所有线程(包括读取线程)都会被阻塞
(3)使用信号和槽机制:避免直接操作共享数据
(4)使用显式线程切换:通过QThread类显式创建和管理线程,禁止直接操作线程,依赖信号槽通信

事件与信号的区别

1.什么是信号

信号是一种抽象、用于实现对象异步通信机制(由QObject类所定义)

2.什么是事件

事件是由QEvent及相关子类所定义的消息,主要用于处理对象的事件。

3.区别是什么?

(1)事件与信号的实现机制不同:①事件处理则需要通过派生和覆盖QObject的event()函数来实现。②信号的实现由Qt框架负责。当信号被发射时,Qt的元对象系统会自动调用连接到该信号的槽函数。
(2)事件与信号的触发机制不同:①事件则需要对象本身通过事件驱动的方式来触发,是被动处理的。对象需要覆盖event()函数来处理特定类型的事件。②信号是由发送对象直接通知接收对象的,是一种主动发送的机制。当信号被发射时,Qt框架会自动调用连接到该信号的槽函数。③信号就像打电话,主动通知对方。例如,按钮点击后会发射一个信号,通知其他对象执行相应的操作;事件就像接收邮件,需要自己去查看和处理。例如,窗口需要处理鼠标移动事件,以响应用户的操作。
(3)事件与信号的消息类型不同:①事件有具体明确的消息类型,如单击、双击等。事件对象(如QEvent及其子类)携带了描述整个事件的数据和事件类型。②信号是一种抽象的消息,没有特定的类型。可以使用任意的参数来传递信息,使得信号非常灵活
(4)事件与信号的应用场景及时机不同:①在实现窗口部件时,我们必须考虑如何处理事件。事件更多地用于处理对象内部的具体行为,如鼠标移动、键盘输入等。②在编程中,特别是使用窗口部件时,我们经常要使用信号,并遵守信号与槽之间的机制。信号通常用于对象间的异步通信,如按钮点击后触发某个动作。

connect函数的连接方式?

五种类型:直接连接、自动连接、队列连接、保留连接、自动类型转换连接

(1)直接连接:当信号被发射时,槽函数会立即在发射信号的线程的当前执行上下文中被调用。信号发射和槽函数执行是同步的。语法如下:

QObject::connect(sender, &Sender::signal, receiver, &Receiver::slot, Qt::DirectConnection);

(2)自动连接:这是Qt的默认连接方式。Qt会根据发射信号的对象和接收槽的对象所在的线程来决定采用直接连接还是队列连接。
①同一线程: 如果发射信号的对象和接收槽的对象位于同一个线程,则自动采用直接连接 (Direct Connection)。
②不同线程: 如果发射信号的对象和接收槽的对象位于不同的线程,则自动采用队列连接 (Queued Connection)。

QObject::connect(sender, &Sender::signal, receiver, &Receiver::slot);

(3)队列连接:当信号被发射时,Qt不会立即执行槽函数。而是将一个包含信号信息和参数的事件(QEvent::MetaCall)放入接收槽的对象所在的线程的事件队列中。该线程的事件循环在后续某个时刻处理这个事件时,才会调用槽函数。信号发射和槽函数执行是异步的。

QObject::connect(sender, &Sender::signal, receiver, &Receiver::slot, Qt::QueuedConnection);

(4)保留连接: 用于确保信号和槽之间最多只有一个连接。如果尝试创建第二个连接,connect 会返回 false,并且不会创建新的连接。

QObject::connect(sender, &Sender::signal, receiver, &Receiver::slot, Qt::UniqueConnection);

(5)自动类型转换连接:为了向后兼容旧版本的Qt而设计的。

QObject::connect(sender, &Sender::signal, receiver, &Receiver::slot, Qt::AutoCompatConnection);

(6)核心区别
直接连接:立即执行,线程不安全但高效
自动连接:智能选择,默认推荐方式
队列连接:线程安全,适合跨线程
保留连接:特殊场景使用
类型转换:兼容旧代码

信号与槽的多种用法

信号与槽机制用于对象间通信,共有6种使用方法

1.普通方式
连接方法:直接使用connect函数将信号与槽连接
实现要点:通过函数建立标准连接关系
特点:最基本的信号槽连接方式,适用于简单的一对一通信场景

    connect(button, &QPushButton::clicked, label, &QLabel::setText);    

2.一个信号连接多个槽
执行机制:当信号被触发时,所有连接的槽函数都会被执行
注意事项:多个槽的执行顺序不确定,不应依赖执行顺序编写逻辑
应用场景:适用于需要广播通知多个接收者的情形

    connect(lineEdit, &QLineEdit::textChanged, statusBar, &QStatusBar::showMessage);connect(lineEdit, &QLineEdit::textChanged, logger, &Logger::logInput);connect(lineEdit, &QLineEdit::textChanged, displayWidget, &DisplayWidget::updateDisplay);

3.带参数的信号和槽
参数传递:信号可以携带参数传递给槽函数
类型匹配:连接信号和槽时,它们的参数类型必须完全匹配(或者可以隐式转换)。参数的个数也必须一致。
语法示例: 可以通过重载信号和槽函数来实现不同参数类型的连接。

    // 信号声明 (在头文件中)signals:void valueChanged(int newValue);void textChanged(const QString &newText);// 槽函数声明 (在头文件中)slots:void updateValue(int value);void updateText(const QString &text);// 连接示例connect(slider, &QSlider::valueChanged, this, &MyClass::updateValue);connect(lineEdit, &QLineEdit::textChanged, this, &MyClass::updateText);

4.断开连接
断开方法:使用 QObject::disconnect() 函数来断开之前建立的信号与槽的连接。
使用场景: 在对象的生命周期管理中,或者在需要动态改变对象间通信关系时使用。例如,当某个对象即将被销毁时,应该断开它发出的信号与其他对象的连接,以避免悬空指针或意外行为。
注意事项: 断开连接后,该信号将不再触发对应的槽函数,但其他未断开的连接仍然有效。

    // 断开特定的信号槽连接disconnect(button, &QPushButton::clicked, label, &QLabel::setText);// 断开 button 对象发出的所有信号与 label 对象的所有槽的连接disconnect(button, nullptr, label, nullptr);// 断开 button 对象发出的 clicked 信号与所有接收者的连接disconnect(button, &QPushButton::clicked, nullptr, nullptr);

5.信号连接信号 (Signal Connected to Signal)
别名: 也常被称为“信号转发”或“信号传递”。
工作机制: 当源信号被发射时,目标信号也会被自动发射。
特点: 实现了信号的链式传递。可以用于信号转发(一个对象接收信号后,将其转发给另一个对象)或信号预处理(在信号传递路径中加入处理逻辑)。
应用价值: 增强了信号处理的灵活性和模块化程度。可以构建复杂的信号处理链。

6.自定义信号及槽
声明方式:使用 signals:slots:关键字在类定义中声明
实现步骤
继承自QObject
使用signals关键字声明信号
使用slots关键字声明槽函数
使用emit关键字触发信号

Qt的事件过滤器有哪些

核心功能: 在一个对象接收到事件前进行拦截/处理/修改的机制
实现方式: 通过QObject的eventFilter()方法处理事件
用途:主要用于提高程序的可维护性和可扩展性

  1. QEvent类别
    监视范围: 仅监视特定类型事件
    典型示例: 鼠标事件
    特点: 事件类型针对性过滤,如键盘/鼠标等硬件事件
  2. QApplication级别
    监视范围: 整个QT应用程序的所有事件
    应用场景: 需要全局监控时使用
    特点: 可捕获应用启动/退出等系统级事件
  3. QObject级别
    监视范围: 任何QObject对象上的事件
    覆盖性: 包含但不限于QWidget对象
    灵活性: 可监控所有继承自QObject的类实例
  4. QWidget级别
    监视范围: 仅限QWidget及其子类对象
    典型应用: 窗口组件的事件处理
    区别点: 比QObject范围更专一,针对可视化组件
  5. QGraphicsItem级别
    监视范围: 仅限QWidget及其子类对象
    图形框架: 专用于图形视图框架中的图元
    特殊用途: 处理复杂图形交互场景

同步和异步的网络连接区别?

  1. 同步连接
    定义: 同步连接是一种阻塞式的网络连接方式。
    特点: 程序在执行同步操作的过程中会被暂停,直到网络请求完成并返回结果后才继续执行下一步操作。即当前线程会被阻塞,直到网络操作完成。
  2. 异步连接
    定义: 异步连接是一种非阻塞式的网络连接方式。
    特点:
    程序在执行异步操作的时候不会被暂停。当网络操作返回结果时,系统会发出一个信号通知应用程序,并且在另一个线程中处理网络数据。
    优势: 异步连接是一种更加高效的网络连接方式,它可以避免线程的阻塞,提升系统的并发性能。
    同步与异步的区别: 两者唯一的区别在于网络操作执行的时候,是否会阻塞当前线程

Qt网络模块中有那些类来执行异步操作?

在QT网络编程当中,直接使用QNetworkAccessManagerQNetworkReply来执行异步网络操作。

  1. QNetworkAccessManager
    用于管理网络请求的类,可以发出异步请求和接收服务器响应。提供对cookie的支持和多种网络功能,可通过Qt文档搜索获取详细信息。
    管理机制: 所有请求都会使用内部的QNetworkCookieJar进行cookie管理
  2. QNetworkRequest
    用于向URL发送请求的类,可指定用户代理字符串、可设置HTTP请求头、可包含请求数据等参数。
  3. QNetworkReply
    包含发送给QNetworkAccessManager的数据和首部信息
  4. QNetworkCookieJar
    专门用于管理HTTP cookie的类。可以存储和读取cookie,
    能够将cookie与请求一起发送。

Qt如何执行HTTP请求?

  1. 核心组件
    管理组件: 使用QNetworkAccessManager作为HTTP请求的核心管理器,负责协调网络操作。
    请求封装: QNetworkRequest用于封装HTTP请求的详细信息,包括URL和请求头等。
  2. 执行步骤
    (1)实例创建: 首先需要创建QNetworkAccessManager的实例,作为所有网络请求的入口点。
    (2)地址获取: 通过QUrl类获取目标URL地址,确保地址格式正确。
    (3)请求发送: 使用QNetworkRequest执行GET请求,并通过get()函数发送请求。
    (4)循环处理: 通过while循环确保应用程序不会被阻塞,直到网络操作完成。
    (5)数据读取: 操作完成后通过QNetworkReply实例读取响应数据。
    (6)内存管理: 操作完毕后需要及时清除内存,避免资源泄漏。

什么是Qt Quick?

Qt Quick 是一个用于创建现代用户界面(UI)的模块,它是Qt框架的一部分。Qt Quick 的主要目标是提供一种高效、灵活且易于使用的方式来开发动态的、具有丰富动画效果的界面。
基于QML和JS。能够创建自定义组件、动画、交互元素的工具及API。

相关文章:

【QT面试题】(三)

文章目录 Qt信号槽的优点及缺点Qt中的文件流和数据流区别&#xff1f;Qt中show和exec区别QT多线程使用的方法 (4种)QString与基本数据类型如何转换&#xff1f;QT保证多线程安全事件与信号的区别connect函数的连接方式&#xff1f;信号与槽的多种用法Qt的事件过滤器有哪些同步和…...

DeepSeek09-open-webui使用

Open WebUI 完全指南&#xff1a;从安装到知识库搭建与异常处理 最后更新&#xff1a;2025年6月7日 | 适用版本&#xff1a;Open WebUI v0.6.x 一、安装部署 1.1 系统要求 **Python 3.12 **&#xff08;严格版本要求&#xff0c;更高版本3.13不兼容&#xff09;Node.js 20.x内…...

HarmonyOS:Counter计数器组件

一、概述 计数器组件&#xff0c;提供相应的增加或者减少的计数操作。 说明 该组件从API Version 7开始支持。后续版本如有新增内容&#xff0c;则采用上角标单独标记该内容的起始版本。 二、属性 除支持通用属性外&#xff0c;还支持以下属性。 enableInc enableInc(value: b…...

数据类型 -- 字符

在C中&#xff0c;字符型&#xff08;char&#xff09;用于存储单个字符&#xff0c;如字母、数字、符号等。字符型是最基本的数据类型之一&#xff0c;常用于处理文本、字符数组&#xff08;字符串&#xff09;等场景。 1. 基本类型 • char&#xff1a;标准字符类型&#x…...

WordZero:让Markdown与Word文档自由转换的Golang利器

在日常工作中&#xff0c;我们经常需要在Markdown和Word文档之间进行转换。Markdown方便编写和版本控制&#xff0c;而Word文档更适合正式的商务环境。作为一名Golang开发者&#xff0c;我开发了WordZero这个库&#xff0c;专门解决这个痛点。 项目背景 GitHub仓库&#xff1…...

sqlsugar WhereIF条件的大于等于和等于查出来的坑

一、如下图所示&#xff0c;当我用 .WhereIF(input.Plancontroltype > 0, u > u.Plancontroltype (DnjqPlancontroltype)input.Plancontroltype) 这里面用等于的时候&#xff0c;返回结果一条数据都没有。 上图中生成的SQL如下&#xff1a; SELECT id AS Id ,code AS …...

Pandas 技术解析:从数据结构到应用场景的深度探索

序 我最早用Python做大数据项目时&#xff0c;接触最早的就是Pandas了。觉得对于IT技术人员而言&#xff0c;它是可以属于多场景的存在&#xff0c;因为它的本身就是数据驱动的技术生态中&#xff0c;对于软件工程师而言&#xff0c;它是快速构建数据处理管道的基石&#xff1…...

数据库系统概论(十七)超详细讲解数据库规范化与五大范式(从函数依赖到多值依赖,再到五大范式,附带例题,表格,知识图谱对比带你一步步掌握)

数据库系统概论&#xff08;十七&#xff09;超详细讲解数据库规范化与五大范式&#xff08;从函数依赖到多值依赖&#xff0c;再到五大范式&#xff0c;附带例题&#xff0c;表格&#xff0c;知识图谱对比带你一步步掌握&#xff09; 前言一、为什么需要规范化1. 我们先想一个…...

[c#]判定当前软件是否用管理员权限打开

有时一些软件的逻辑中需要使用管理员权限对某些文件进行修改时&#xff0c;那么该软件在执行或者打开的场合&#xff0c;就需要用使用管理员身份运行才能达到效果。那么在c#里&#xff0c;如何判定该软件是否是对管理员身份运的呢&#xff1f; 1.取得当前的windows用户。 2.取得…...

并发编程实战(生产者消费者模型)

在并发编程中使用生产者和消费者模式能够解决绝大多数的并发问题。该模式通过平衡生产线程和消费线程的工作能力来提高程序整体处理数据的速度。 生产者和消费者模式&#xff1a; 在线程的世界中生产者就是产生数据的线程&#xff0c;而消费者则是消费数据的线程。在多线程开…...

分布式微服务系统架构第144集:FastAPI全栈开发教育系统

加群联系作者vx&#xff1a;xiaoda0423 仓库地址&#xff1a;https://webvueblog.github.io/JavaPlusDoc/ https://1024bat.cn/ https://github.com/webVueBlog/fastapi_plus https://webvueblog.github.io/JavaPlusDoc/ 使用docker搭建常用开发环境 docker安装mysql docker ru…...

el-tabs 切换时数据不更新的问题

最近业务需求&#xff0c;需要在页面中使用tabs&#xff0c;使用过程中出现tabs切换&#xff0c;数据不更新的问题&#xff0c;以下是思路和解决办法。 Vue 会追踪你在模板中绑定的数据&#xff0c;并在数据发生变化时重新渲染相应的部分。但在使用 el-tabs 时&#xff0c;有时…...

git小乌龟不显示图标状态解决方案

第一步 在开始菜单的搜索处&#xff0c;输入regedit命令&#xff0c;打开注册表。 第二步 在注册表编辑器中&#xff0c;找到HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\ShellIconOverlayIdentifiers 这一项。 第三步 让Tortoise相关的项目排在前…...

获取 OpenAI API Key

你可以按照以下步骤来获取 openai.api_key&#xff0c;用于调用 OpenAI 的 GPT-4、DALLE、Whisper 等 API 服务&#xff1a; &#x1f9ed; 获取 OpenAI API Key 的步骤&#xff1a; ✅ 1. 注册或登录 OpenAI 账号 打开 https://platform.openai.com/ 使用你的邮箱或 Google/…...

【Android基础回顾】五:AMS(Activity Manager Service)

Android 的 AMS&#xff08;Activity Manager Service&#xff09;是 Android 系统中的核心服务之一&#xff0c;负责管理整个应用生命周期、任务栈、进程和四大组件&#xff08;Activity、Service、BroadcastReceiver、ContentProvider&#xff09;的运行。它运行在系统进程 s…...

pycharm中提示C++ compiler not found -- please install a compiler

1.最近用pycharm编译一个开源库,编译的依赖c compiler 2.单单使用pycharm编译&#xff0c;编译器报错C compiler not found – please install a compiler 3.需要在配置环境中引入对应库 4.从新编译后没有提示:C compiler not found – please install a compiler错误。...

类型别名与类型自动推导

类型别名与类型的自动推导 类型别名 为什么要引入类型别名&#xff1f; 为了给类型赋予特殊含义或便于使用 典型用途 &#xff08;1&#xff09;增强代码可移植性 例如&#xff1a;size_t &#xff08;在不同系统中可能是unsigned int 或 unsigned long&#xff09; 首先是…...

一站式直播工具:助力内容创作者高效开启直播新时代

近年来&#xff0c;随着互联网技术的不断进步和短视频、直播行业的爆发式增长&#xff0c;越来越多的企业和个人投入到直播电商、互动娱乐、在线教育等场景。直播运营过程中&#xff0c;涉及到数据统计、弹幕互动、流程自动化、内容同步等诸多环节。如何提升运营效率、减少人工…...

【学习笔记】Lamba表达式[匿名函数]

【学习笔记】Lamba表达式[匿名函数] Lamba表达式格式函数模板Lamba表达式例子 Lamba表达式格式 格式&#xff1a; [捕获列表](参数列表) -> 返回类型 { 函数体 }1、捕获列表&#xff1a;指定如何访问外部变量&#xff08;如 [&x] 引用捕获&#xff0c;[x] 值捕获&#…...

学习笔记(26):线性代数-张量的降维求和,简单示例

学习笔记(26)&#xff1a;线性代数-张量的降维求和&#xff0c;简单示例 1.先理解 “轴&#xff08;Axis&#xff09;” 的含义 张量的 “轴” 可以理解为 维度的方向索引 。对于形状为 (2, 3, 4) 的张量&#xff0c;3 个轴的含义是&#xff1a; 轴 0&#xff08;axis0&…...

以智能管理为基础,楼宇自控打造建筑碳中和新路径

在全球气候变化的严峻形势下&#xff0c;“碳中和”已成为各国发展的重要战略目标。建筑行业作为能源消耗与碳排放的“大户”&#xff0c;其运行阶段的能耗占全社会总能耗近40%&#xff0c;碳排放占比与之相当&#xff0c;实现建筑碳中和迫在眉睫。传统建筑管理模式下&#xff…...

81 实战一:给root目录扩容

添加一块100G硬盘 vgextend centos /dev/sdb1 /dev/sdc lvextend -L +120G /dev/centos/root xfs_growfs /dev/centos/root df -h 看是否扩容成功 82 实战二:给swap空间扩容 添加一块20G硬盘 fdisk -l 可以看到新添加的硬盘 vgextend centos /dev/sdd …...

1130 - Host ‘xxx.x.xx.xxx‘is not allowed to connect to this MySQL server

以下为本次问题的解决办法&#xff1a; 1、暂停mysql容器&#xff1a; docker stop mysql 2、删除mysql容器&#xff1a;docker rm mysql 3、查看mysql容器是否被删除&#xff1a;docker ps -a #没有mysql容器就是删除成功 4、run mysql容器&#xff1a; docker run -d --…...

HttpURLConnection实现

我有一个接口 http://ip:port/Others/airportnew/&#xff0c;采用post方法调用&#xff0c;采用body方式传值&#xff0c;其body内容为{"data": {"data": {"image": ""}} }&#xff0c;现在我需要在java中调用这个接口&#xff0c;帮…...

day029-Shell自动化编程-计算与while循环

文章目录 1. read 交互式初始化变量1.1 案例-安装不同的软件1.2 案例-比较大小 2. 计算2.1 bc2.2 awk2.3 expr2.4 let2.5 案例-计算内存的空闲率2.6 案例-检查域名过期时间和https整数过期时间 3. 循环3.1 循环控制语句3.2 for循环-c语言格式3.3 while循环3.3.1 案例-猜数字3.3…...

Linux命令基础(2)

su和exit命令 可以通过su命令切换到root账户 语法&#xff1a;su [-] 用户名 -符号是可选的&#xff0c;表示是否在切换用户后加载环境变量&#xff0c;建议带上 参数&#xff1a;用户名&#xff0c;表示要切换的用户&#xff0c;用户名可以省略&#xff0c;省略表示切换到ro…...

vue3 + vite实现动态路由,并进行vuex持久化设计

在后台管理系统中&#xff0c;如何根据后端返回的接口&#xff0c;来动态的设计路由呢&#xff0c;今天一片文章带你们解 1、在vuex中设置一个方法 拿到完整的路由数据 const state {routerList: []}; const mutations { dynameicMenu(state, payload) {// 第一步 通过glob…...

ThingsCloud事物云平台搭建-微信小程序

ThingsCloud云平台与微信小程序设计 本文主要是介绍ThingsCloud云平台的搭建及微信小程序与app的使用。 当前文章是作为一个通用案例,介绍如何快速使用 ThingsCloud云平台 以及 利用 ThingsCloud云平台平台的框架快速设计手机APP和微信小程序。 可以快速让硬件接入,实现硬件…...

为什么 uni-app 开发的 App 没有明显出现屏幕适配问题Flutter 开发的 App 出现了屏幕适配问题

&#x1f9e9; 一、为什么 uni-app 开发的 App 没有明显出现屏幕适配问题&#xff1f; ✅ 1. uni-app 是基于 H5 的运行环境&#xff08;或类 H5&#xff09; uni-app 默认使用的是 H5 的渲染引擎&#xff08;如 WebView 或小程序渲染引擎&#xff09;。在 H5 中&#xff0c;…...

学习路之php--性能优化

一、php周边优化 二、代码级优化 变量管理‌ 及时unset()释放大数组/对象&#xff0c;减少内存占用局部变量访问速度比全局变量快约2倍&#xff0c;优先使用局部变量大数组采用引用传递&#xff08;&$var&#xff09;避免内存 循环优化‌ 预计算循环次数&#xff1a; …...