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

Qt/C++面试【速通笔记一】

Qt 信号与槽机制

什么是信号(Signal)和槽(Slot)?

在Qt中,信号(Signal)和槽(Slot)是实现对象之间通信的一种机制。信号是对象在某些事件发生时发出的通知,而槽是响应这些通知的函数。信号和槽之间是松耦合的,意味着你不需要直接调用某个函数来响应事件,只需要连接信号和槽即可。

  • 信号(Signal):
    信号是一个事件,当某个条件满足时,它会被触发。例如,用户点击按钮时,按钮会发出clicked()信号。信号本身不包含任何行为,它只是表示某个特定的事件发生了。

  • 槽(Slot):
    槽是一个普通的成员函数,用来响应信号。当信号被触发时,槽会被自动调用,执行特定的逻辑。槽可以在对象内部定义,并且与一个或多个信号关联。信号和槽的连接是自动的,无需手动调用。

  • 如何工作:
    通过Qt的connect()函数,我们将一个信号与一个槽连接起来。当信号发出时,连接的槽函数会被调用。信号和槽之间的连接不依赖于它们的对象类型和层级结构,甚至可以跨线程使用。
    举个例子,如果按钮被点击了,就会发出一个信号,点击按钮的操作会触发与之连接的槽函数,执行一些操作。

示例代码:

#include <QApplication>
#include <QPushButton>class MyWindow : public QWidget {Q_OBJECTpublic:MyWindow() {QPushButton *button = new QPushButton("Click me", this);connect(button, &QPushButton::clicked, this, &MyWindow::onButtonClick);}public slots:void onButtonClick() {qDebug() << "Button clicked!";}
};int main(int argc, char *argv[]) {QApplication app(argc, argv);MyWindow window;window.show();return app.exec();
}

在上面的例子中,当点击按钮时,QPushButton::clicked信号被发出,它与onButtonClick()槽函数连接,因此会输出“Button clicked!”。

QObject类是如何实现了信号与槽机制的?

QObject是Qt的基类,几乎所有的Qt对象都继承自QObject。Qt的信号与槽机制是通过QObject类实现的。QObject提供了一个connect()函数,用来连接信号和槽。

底层实现依赖于Qt的元对象系统(Meta-Object System),通过QMetaObjectQMetaMethod来动态查找并连接信号和槽。QObject还提供了一个signalsslots的声明,用来标识哪些成员是信号或槽。

实现过程:

  1. QObject类:
    QObject类是Qt中所有对象的基类,提供了信号与槽机制的基础功能。QObject类中的connect()函数是建立信号与槽连接的核心方法。

  2. Q_OBJECT宏:
    要使用Qt的信号与槽机制,类必须包含Q_OBJECT宏。这会告诉Qt的元对象系统,类中的信号与槽需要被处理。Q_OBJECT宏会使得类能够使用元对象特性,包括信号与槽的管理。

  3. moc(元对象编译器):
    在编译过程中,Qt使用moc工具对包含Q_OBJECT宏的类进行预处理。moc会生成额外的代码,包括信号与槽的声明和实现。具体来说,moc生成的代码包括信号的声明,以及一个名为qt_static_metacall的函数,这个函数用于动态调用信号和槽。

  4. connect函数:
    QObject::connect()函数用于将信号和槽进行绑定。它接受发送者对象、信号、接收者对象和槽函数作为参数。当信号被触发时,connect()会确保相应的槽函数被调用。

Qt的信号与槽的底层实现是什么?原理是什么?

底层原理基于Qt的元对象系统。每个继承自QObject的类都会自动包含一个元对象信息(QMetaObject),它包含了类的信号和槽的相关信息。信号与槽机制的工作过程大致如下:

  • 当信号被发出时,Qt通过QMetaObject查找连接到该信号的槽函数。
  • 信号和槽连接后,Qt会将信号的参数传递给槽函数。
  • 底层通过事件循环机制和队列来传递信号和槽,确保它们异步触发。

信号与槽机制原理

Qt的信号与槽机制依赖于事件系统,信号是通过QObject::connect函数连接的,当信号发出时,Qt会自动将信号传递给与之连接的槽。Qt实现了信号和槽的解耦,这意味着对象可以不直接互相调用函数,而是通过信号和槽进行通信。

  • 信号是事件,而槽是响应事件的函数
  • 信号与槽是松耦合的,减少了代码之间的依赖。

底层原理:

  1. 信号和槽的函数指针:
    每个信号和槽都对应一个函数指针,信号的发出实际上是通过调用一个函数来通知所有连接的槽。信号与槽的连接过程实际上是将信号与槽的函数指针进行绑定。

  2. 元对象和QMetaObject:
    每个QObject派生的对象都有一个对应的QMetaObject对象,它包含了该类的元数据,包括信号、槽函数的名称、参数类型等。QMetaObject提供了查询和管理信号与槽的功能。

  3. connect函数:
    QObject::connect()函数用于建立信号和槽之间的连接。当调用connect()时,它将信号与槽函数的ID(由QMetaObject管理)绑定在一起,确保信号能够正确触发相应的槽函数。

  4. 信号发射:
    信号的发射是通过QObject::active_signal()函数触发的,它会查找与该信号相连接的槽,并调用相应的槽函数。

  5. 信号和槽的传递:
    信号与槽的传递是通过调用QObject::connect()函数中实现的内部接口connectInternal()来完成的。connectInternal()通过查询信号和槽的元对象信息,完成槽函数的调用。

信号与槽机制的优势和不足

优势:

  • 松耦合:信号与槽的机制使得对象之间的耦合度非常低。对象只关心信号的发出,而不关心接收信号的槽函数。
  • 易于维护:信号与槽机制使得代码结构清晰,避免了复杂的函数调用。
  • 线程安全:Qt的信号与槽机制支持跨线程通信。可以在一个线程中发出信号,而在另一个线程中接收并处理这个信号。

缺点:

  1. 运行速度较慢:
    与直接调用函数相比,信号和槽机制的运行速度较慢,可能慢10倍左右。原因包括:

    • 需要在运行时动态查找接收信号的对象。
    • 需要遍历所有槽函数。
    • 参数需要进行封装和解封装。
    • 在多线程中,信号需要排队等待。

    但是:
    这种性能损失通常对于实时应用程序是可以忽略的,而对于复杂的UI应用来说,这些性能开销是可以接受的。

信号与槽与函数指针的比较

信号与槽机制与函数指针有一些相似之处,因为它们都允许动态调用函数。区别在于:

  • 松耦合:信号与槽机制是一种松耦合的设计,信号与槽的连接是在运行时进行的,而函数指针通常在编译时就已经确定。
  • 自动类型安全:Qt的信号与槽机制提供了自动的类型检查,只有匹配的信号和槽才能连接,而函数指针需要手动进行类型匹配。
  • 跨线程支持:Qt的信号与槽机制原生支持跨线程的通信,而函数指针通常无法直接实现这一点。
  1. 回调函数和函数指针:
    回调函数通常使用函数指针来实现,多个类需要监听一个类的变化时,需要维护一个函数指针列表,手动管理类之间的关系。这种方法较为冗长和不灵活。

  2. Qt的信号与槽机制:
    Qt使用信号与槽来简化回调函数的管理。一个类只需声明自己的信号和槽,并通过connect()函数将它们连接起来。Qt框架会自动管理信号和槽的调用关系。

  3. 优势:

    • 清晰简洁:
      信号与槽机制使得代码逻辑更清晰,易于管理和扩展。
    • 降低耦合度:
      发出信号的对象不需要知道哪个对象会处理信号,而槽也不需要知道哪个信号发出,降低了对象之间的耦合度。
    • 灵活性:
      一个信号可以连接多个槽函数,多个信号也可以连接同一个槽。

QT中connect函数的第五个参数是什么?有什么作用?

connect()函数的第五个参数是Qt::ConnectionType,它用来指定信号和槽连接的方式。这个参数控制信号发射时槽的执行时机。常见的值有:

  • Qt::AutoConnection(默认值):
    根据信号发出的线程和槽所在的线程,自动选择最合适的连接方式。如果信号和槽在同一线程,直接调用槽;如果信号和槽在不同线程,使用事件队列传递信号。

  • Qt::DirectConnection
    无论信号和槽是否在同一线程,信号发出时直接调用槽函数。适用于在同一线程内的连接。

  • Qt::QueuedConnection
    如果信号和槽在不同线程中,信号会被排入接收线程的事件队列,等到事件循环运行时调用槽函数。这样可以避免在不同线程间直接调用,减少线程同步的问题。

  • Qt::BlockingQueuedConnection
    这个连接类型在信号和槽在不同线程时使用,信号发出后,发送者线程会被阻塞,直到槽执行完毕。

Qt 信号槽机制的优势和不足

优点:

  1. 类型安全:
    信号和槽的签名必须匹配,即信号的参数类型和个数必须与槽的参数一致。如果不一致,编译器会报错,避免运行时错误。

  2. 松散耦合:
    信号和槽机制减少了对象之间的耦合。发出信号的对象不需要知道哪个对象的哪个槽函数接收信号,只需发出信号即可。即使接收槽的对象在运行时被删除,也不会导致崩溃。

  3. 灵活性:
    一个信号可以连接多个槽函数,多个信号也可以连接同一个槽。这使得信号和槽的使用变得非常灵活。

缺点:

  1. 运行速度较慢:
    与直接调用函数相比,信号和槽机制的运行速度较慢,可能慢10倍左右。原因包括:

    • 需要在运行时动态查找接收信号的对象。
    • 需要遍历所有槽函数。
    • 参数需要进行封装和解封装。
    • 在多线程中,信号需要排队等待。

    但是:
    这种性能损失通常对于实时应用程序是可以忽略的,而对于复杂的UI应用来说,这些性能开销是可以接受的。

总结

信号与槽机制是Qt最重要的特性之一,它为开发者提供了一个高效、灵活的事件处理模型。通过信号和槽,Qt能实现松耦合、跨线程通信等特性,这使得Qt成为非常适合GUI开发的框架。

相关文章:

Qt/C++面试【速通笔记一】

Qt 信号与槽机制 什么是信号&#xff08;Signal&#xff09;和槽&#xff08;Slot&#xff09;&#xff1f; 在Qt中&#xff0c;信号&#xff08;Signal&#xff09;和槽&#xff08;Slot&#xff09;是实现对象之间通信的一种机制。信号是对象在某些事件发生时发出的通知&…...

RoCBert:具有多模态对比预训练的健壮中文BERT

摘要 大规模预训练语言模型在自然语言处理&#xff08;NLP&#xff09;任务上取得了最新的最优结果&#xff08;SOTA&#xff09;。然而&#xff0c;这些模型容易受到对抗攻击的影响&#xff0c;尤其是对于表意文字语言&#xff08;如中文&#xff09;。 在本研究中&#xff0…...

DeepSeek入门到大师 清华大学[1-5版]全集

1、文件概览 1、清华大学《DeepSeek:从入门到精通》 2、清华大学《Deepseek如何赋能职场应用?》 3、清华大学《普通人如何抓住DeepSeek红利》 4、清华大学《DeepSeekDeepResearch让科研像聊天一样简单》 5、清华大学《DeepSeek与AI幻觉》 6、天津大学《深度解读Deepseek:原理…...

Debezium:实时数据捕获与同步的利器

一、什么是 Debezium Debezium 是一个开源的分布式平台&#xff0c;专门用于捕获数据库中的数据变更。它通过读取数据库的事务日志&#xff0c;能够以非侵入性的方式捕获数据库中发生的所有变化&#xff0c;并将这些变化转化为事件流&#xff0c;实时推送到像 Kafka 这样的消息…...

【蓝桥杯】第十五届省赛大学真题组真题解析

【蓝桥杯】第十五届省赛大学真题组真题解析 一、智能停车系统 1、知识点 &#xff08;1&#xff09;flex-wrap 控制子元素的换行方式 属性值有&#xff1a; no-wrap不换行wrap伸缩容器不够则自动往下换行wrap-reverse伸缩容器不够则自动往上换行 &#xff08;2&#xff0…...

AI助力下的PPT革命:DeepSeek 与Kimi的高效创作实践

清华大学出品《DeepSeek&#xff1a;从入门到精通》分享 在忙碌的职场中&#xff0c;制作一份高质量的PPT往往需要投入大量时间和精力&#xff0c;尤其是在临近截止日期时。今天&#xff0c;我们将探索如何借助 AI 工具 —— DeepSeek 和 Kimi —— 让 PPT 制作变得既快捷又高…...

【MySQL篇】持久化和非持久化统计信息的深度剖析(含analyze命令和mysqlcheck工具两种收集方式)

&#x1f4ab;《博主介绍》&#xff1a;✨又是一天没白过&#xff0c;我是奈斯&#xff0c;从事IT领域✨ &#x1f4ab;《擅长领域》&#xff1a;✌️擅长阿里云AnalyticDB for MySQL(分布式数据仓库)、Oracle、MySQL、Linux、prometheus监控&#xff1b;并对SQLserver、NoSQL(…...

C++ 手撕定时器

C 手撕定时器 思路与知识调用场景类声明 参考 思路与知识 1. 为了支持相同时间戳下多个任务&#xff0c;需要考虑到支持重复key的std::mutimap, 以及成员函数equal_range 2. 工具函数Timer::GetTick 返回一个uint64_t毫秒时间戳作为multimap的key&#xff0c;需要会使用chrono…...

邮件安全之发件人伪造

电子邮件工作原理 电子邮件传输过程中主要涉及到SMTP、IMAP、POP3三种协议&#xff0c;具体功能如下&#xff1a; SMTP:全称Simple Mail Transfer Protocol&#xff0c;即简单邮件传输协议&#xff0c;主要用于发送邮件&#xff0c;使用端口号25。 IMAP:全称Internet Mail Acce…...

前端八股——JS+ES6

前端八股&#xff1a;JSES6 说明&#xff1a;个人总结&#xff0c;用于个人复习回顾&#xff0c;将持续改正创作&#xff0c;已在语雀公开&#xff0c;欢迎评论改正。...

Qt QTreeWidget 总结

Qt QTreeWidget 总结 1. 概述 QTreeWidget 是 Qt 中用于显示树形结构的控件&#xff0c;继承自 QTreeView&#xff0c;但提供了更简单的接口。适合展示层级数据&#xff08;如文件目录、组织结构&#xff09;。每个节点是 QTreeWidgetItem 对象&#xff0c;支持文本、图标、复…...

Python常见面试题的详解16

1. 如何强行关闭客户端和服务器之间的连接&#xff1f; 在网络编程中&#xff0c;有时需要强行中断客户端和服务器之间的连接。对于基于 TCP 协议的连接&#xff0c;由于其面向连接的特性&#xff0c;需要采取特定的步骤来确保连接被正确关闭&#xff1b;而 UDP 是无连接协议&a…...

前端设计模式面试题及参考答案

目录 如何用闭包实现单例模式?列举两种实现方式 工厂模式与构造函数创建对象的核心区别是什么? 抽象工厂模式如何解决多平台 UI 组件兼容问题? 原型模式在前端框架中如何优化对象创建性能? 建造者模式如何实现复杂表单配置的链式调用? 单例模式在全局状态管理中的典型…...

Python Django系列—入门实例(二)

数据库配置 现在&#xff0c;打开 mysite/settings.py 。这是个包含了 Django 项目设置的 Python 模块。 默认情况下&#xff0c;​ DATABASES 配置使用 SQLite。如果你是数据库新手&#xff0c;或者只是想尝试 Django&#xff0c;这是最简单的选择。SQLite 包含在 Python 中…...

STM32-智能台灯项目

一、项目需求 1. 红外传感器检测是否有人&#xff0c;有人的话实时检测距离&#xff0c;过近则报警&#xff1b;同时计时&#xff0c;超过固定时间则报警&#xff1b; 2. 按键 1 切换工作模式&#xff1a;智能模式、按键模式、远程模式&#xff1b; 3. 智能模式下&#xff0c;根…...

HTML之JavaScript DOM操作元素(2)

HTML之JavaScript DOM操作元素&#xff08;2&#xff09; 4.增删元素var element document.createElement("元素名") 创建新元素父元素.appendChild(子元素) 在父元素中追加子元素父元素.insertBefore(新元素,参照元素) 在特定元素之前新增元…...

智能优化算法:莲花算法(Lotus flower algorithm,LFA)介绍,提供MATLAB代码

一、 莲花算法 1.1 算法原理 莲花算法&#xff08;Lotus flower algorithm&#xff0c;LFA&#xff09;是一种受自然启发的优化算法&#xff0c;其灵感来源于莲花的自清洁特性和授粉过程。莲花的自清洁特性&#xff0c;即所谓的“莲花效应”&#xff0c;是由其叶片表面的微纳…...

【复习】计算机网络

网络模型 OSI 应用层&#xff1a;给应用程序提供统一的接口表示层&#xff1a;把数据转换成兼容另一个系统能识别的格式会话层&#xff1a;负责建立、管理、终止表示层实体之间的通信会话传输层&#xff1a;负责端到端的数据传输网络层&#xff1a;负责数据的路由、转发、分片…...

【R语言】读取CSV数据时,显示[1] PK...<0 行> (或0-长度的row.names)

一、问题 当我使用以下代码读取CSV数据后&#xff0c;发现使用head(data)显示[1] PK...<0 行> (或0-长度的row.names)&#xff0c;如下截图所示。 # 尝试读取文件 data <- read.csv("C:\\Users\\11300\\Desktop\\test.csv", header TRUE) # 检查数据 hea…...

CentOS环境变量配置+解析

环境变量的作用就是让系统快速通过你的命令找到你的可执行程序&#xff0c;windows系统里也同理&#xff0c;也就是你每次输入个命令&#xff0c;系统就会找环境变量里到底有没有叫这个命令进程的 一、环境变量配置 1.编辑配置文件 vim /etc/profile export PATH$PATH:$JAVA…...

最新版本Exoplayer扩展FFmpeg音频软解码保姆级教程

ExoPlayer 是一个开源的 Android 媒体播放库&#xff0c;由 Google 开发和维护&#xff0c;用于替代 Android 系统自带的 MediaPlayer。它提供了更强大的功能、更好的性能和更高的灵活性&#xff0c;适用于各种复杂的媒体播放场景。所以被广泛用于各种播放器场景。 最近项目中…...

【蓝桥杯集训·每日一题2025】 AcWing 6134. 哞叫时间II python

6134. 哞叫时间II Week 1 2月20日 农夫约翰正在试图向埃尔茜描述他最喜欢的 USACO 竞赛&#xff0c;但她很难理解为什么他这么喜欢它。 他说「竞赛中我最喜欢的部分是贝茜说『现在是哞哞时间』并在整个竞赛中一直哞哞叫」。 埃尔茜仍然不理解&#xff0c;所以农夫约翰将竞赛…...

HTML/CSS中子代选择器

1.作用:选中指定元素中,符合要求的子元素. 子代选择器又称:子元素选择器,子选择器. 2.语法:选择器1>选择器2>选择器3>......选择器n 3.实例 <style>/* div中子代选择器 */div>a{color: red;}</style><div><a href"#">张三</…...

计算机毕业设计SpringBoot+Vue.jst网上购物商城系统(源码+LW文档+PPT+讲解)

温馨提示&#xff1a;文末有 CSDN 平台官方提供的学长联系方式的名片&#xff01; 温馨提示&#xff1a;文末有 CSDN 平台官方提供的学长联系方式的名片&#xff01; 温馨提示&#xff1a;文末有 CSDN 平台官方提供的学长联系方式的名片&#xff01; 作者简介&#xff1a;Java领…...

EasyRTC:全平台支持与自研算法驱动的智能音视频通讯解决方案

在智能硬件的浪潮中&#xff0c;设备之间的互联互通已成为提升用户体验的核心需求。无论是智能家居、智能办公&#xff0c;还是工业物联网&#xff0c;高效的音视频通讯和交互能力是实现智能化的关键。然而&#xff0c;传统音视频解决方案往往面临平台兼容性差、交互体验不佳以…...

C#: 日志函数

背景&#xff1a; 1.常见的官方日志模块项目过于复杂&#xff0c;且配置过于繁琐&#xff0c;针对这种现象&#xff0c;实现在大型项目中快速定位错误问题&#xff1b; 实现思路&#xff1a; 1.设置当前日志文件路径&#xff08;获取到当前文件应用程序路径 \ErrorLog) 2.判…...

PyTorch 是如何进行机器学习的

1. 机器学习的核心流程 机器学习的核心是通过数据训练模型&#xff0c;让模型学会从输入数据中提取规律&#xff0c;并对新数据做出预测。整个过程可以分为以下几个步骤&#xff1a; 准备数据&#xff1a;收集并整理数据&#xff0c;分为输入&#xff08;特征&#xff09;和输…...

Java中的Stream API:从入门到实战

引言 在现代Java开发中&#xff0c;Stream API 是处理集合数据的强大工具。它不仅让代码更加简洁易读&#xff0c;还能通过并行处理提升性能。本文将带你从基础概念入手&#xff0c;逐步深入Stream API的使用&#xff0c;并通过实战案例展示其强大功能。 1. 什么是Stream API…...

【蓝桥杯单片机】客观题

一、第十三届省赛&#xff08;一&#xff09; 二、第十三届省赛&#xff08;二&#xff09;...

Spring Boot 中使用 @Transactional 注解配置事务管理

事务管理是应用系统开发中必不可少的一部分。Spring 为事务管理提供了丰富的功能支持。Spring 事务管理分为编程式和声明式的两种方式。编程式事务指的是通过编码方式实现事务&#xff1b;声明式事务基于 AOP,将具体业务逻辑与事务处理解耦。声明式事务管理使业务代码逻辑不受污…...

嵌入式八股文(五)硬件电路篇

一、名词概念 1. 整流和逆变 &#xff08;1&#xff09;整流&#xff1a;整流是将交流电&#xff08;AC&#xff09;转变为直流电&#xff08;DC&#xff09;。常见的整流电路包括单向整流&#xff08;二极管&#xff09;、桥式整流等。 半波整流&#xff1a;只使用交流电的正…...

《论多源数据集成及应用》审题技巧 - 系统架构设计师

论多源数据集成及应用写作框架 一、考点概述 本论题“论多源数据集成及应用”主要考察的是计算机软件测试工程师在数据管理和集成方面的专业知识与实践能力。论题聚焦于信息爆炸时代企业、组织和个人所面临的数据挑战&#xff0c;特别是如何有效地收集、整理和清洗来自不同渠…...

怎么在Github上readme文件里面怎么插入图片?

环境&#xff1a; Github 问题描述&#xff1a; 怎么在Github上readme文件里面怎么插入图片&#xff1f; https://github.com/latiaoge/AI-Sphere-Butler/tree/master 解决方案&#xff1a; 1.相对路径引用 上传图片到仓库 将图片文件&#xff08;如 .png/.jpg&#xff…...

【NLP 31、预训练模型的发展过程】

人的行为&#xff0c;究竟是人所带来的思维方式不同还是与机器一样&#xff0c;刻在脑海里的公式呢&#xff1f; 只是因为不同的人公式不同&#xff0c;所以人的行为才不同&#xff0c;可这又真的是人引以为傲的意识吗&#xff1f; 人脑只是相当于一个大型、驳杂的处理器&#…...

【计算机网络】传输层TCP协议

传输层 - layer4 - TCP协议 传输层&#xff1a;位于ISO模型的第四层 ——>L4 tcp协议意为传输控制协议&#xff08;Transmission Control Protocol&#xff09; 提供端到端的连接 端口号范围&#xff1a;0-65535 &#xff08;2^16次方&#xff09; 一个应用程序(服务)会占用…...

vscode settings(二):文件资源管理器编辑功能主题快捷键

参考资料 Visual Studio Code权威指南 by 韩骏 一. 文件资源管理器 1.1 文件资源管理器隐藏文件夹 默认情况下&#xff0c;Visual Studio Code会在文件资源管理器中隐藏一些文件夹&#xff08;如.git文件夹&#xff09;​。可以通过files.exclude来配置要被隐藏的文件和文件…...

halcon机器视觉深度学习对象检测,物体检测

目录 效果图操作步骤软件版本halcon参考代码本地函数 get_distinct_colors()本地函数 make_neighboring_colors_distinguishable() 效果图 操作步骤 首先要在Deep Learning Tool工具里面把图片打上标注文本&#xff0c; 然后训练模型&#xff0c;导出模型文件 这个是模型 mod…...

go 反射 interface{} 判断类型 获取值 设置值 指针才可以设置值

内容包括 1. 用interface{}接收值 2. 判断interface{}的类型 switch 3. 打印interface{}的类型 4. 通过字符串对结构体&#xff0c;interface{}等进行设置值、获取值处理 示例代码 package mainimport ("fmt""log""reflect" )type Student…...

单臂路由

单臂路由&#xff08;Router on a Stick&#xff09;是一种网络配置方式&#xff0c;主要用于在单个物理接口上实现多个VLAN之间的路由。它通常用于交换机与路由器之间的连接&#xff0c;适用于VLAN间通信需求较小的情况。 工作原理 VLAN划分&#xff1a;交换机上配置多个VLAN…...

SpringBoot【实用篇】- 测试

文章目录 目标&#xff1a; 1.加载测试专用属性3.Web环境模拟测试2.加载测试专用配置4.数据层测试回滚5.测试用例数据设定 目标&#xff1a; 加载测试专用属性加载测试专用配置Web环境模拟测试数据层测试回滚测试用例数据设定 1.加载测试专用属性 我们在前面讲配置高级的…...

NutUI内网离线部署

文章目录 官网拉取源代码到本地仓库修改源代码打包构建nginx反向代理部署访问内网离线地址 在网上找了一圈没有写NutUI内网离线部署的文档&#xff0c;花了1天时间研究下&#xff0c;终于解决了。 对于有在内网离线使用的小伙伴就可以参考使用了 如果还是不会联系UP主:QQ:10927…...

【深度学习】Adam和AdamW优化器有什么区别,以及为什么Adam会被自适应学习率影响

Adam 和 AdamW 的主要区别在于 权重衰减&#xff08;Weight Decay&#xff09; 的实现方式&#xff0c;具体如下&#xff1a; 1. 权重衰减&#xff08;Weight Decay&#xff09;处理方式 Adam&#xff1a;采用 L2 正则化&#xff0c;通过在梯度更新时手动添加 weight_decay 项…...

Pytorch的F.cross_entropy交叉熵函数

参考笔记&#xff1a;pytorch的F.cross_entropy交叉熵函数和标签平滑函数_怎么给crossentropyloss添加标签平滑-CSDN博客 先来讲下基本的交叉熵cross_entropy&#xff0c;官网如下&#xff1a;torch.nn.functional.cross_entropy — PyTorch 1.12 documentation torch.nn.fun…...

一文讲解Redis为什么读写性能高以及I/O复用相关知识点

Redis为什么读写性能高呢&#xff1f; Redis 的速度⾮常快&#xff0c;单机的 Redis 就可以⽀撑每秒十几万的并发&#xff0c;性能是 MySQL 的⼏⼗倍。原因主要有⼏点&#xff1a; ①、基于内存的数据存储&#xff0c;Redis 将数据存储在内存当中&#xff0c;使得数据的读写操…...

[特殊字符] Elasticsearch 双剑合璧:HTTP API 与 Java API 实战整合指南

&#x1f680; Elasticsearch 双剑合璧&#xff1a;HTTP API 与 Java API 实战整合指南 一、HTTP API 定义与用途 Elasticsearch 的 HTTP API 是基于 RESTful 接口设计的核心交互方式&#xff0c;支持通过 URL 和 JSON 数据直接操作索引、文档、集群等资源。适用于快速调试、…...

某手sig3-ios算法 Chomper黑盒调用

Chomper-iOS界的Unidbg 最近在学习中发现一个Chomper框架&#xff0c;Chomper 是一个模拟执行iOS可执行文件的框架&#xff0c;类似于安卓端大名鼎鼎的Unidbg。 这篇文章使用Chomper模拟执行某手的sig3算法&#xff0c;初步熟悉该框架。这里只熟悉模拟执行步骤以及一些常见的…...

蓝桥杯之阶段考核

&#x1f4d6; Day 7&#xff1a;阶段考核 - 蓝桥杯官方模拟赛&#xff08;限时 4 小时&#xff09; &#x1f4d6; 一、如何高效完成模拟赛&#xff1f; 模拟赛是一种接近真实竞赛的训练方式。要高效完成模拟赛&#xff0c;需要掌握以下策略&#xff1a; 1. 赛前准备 ✅ 环…...

DeepSeek掘金——VSCode 接入DeepSeek V3大模型,附使用说明

VSCode 接入DeepSeek V3大模型,附使用说明 由于近期 DeepSeek 使用人数激增,服务器压力较大,官网已 暂停充值入口 ,且接口响应也开始不稳定,建议使用第三方部署的 DeepSeek,如 硅基流动 或者使用其他模型/插件,如 豆包免费AI插件 MarsCode、阿里免费AI插件 TONGYI Lin…...

华为昇腾服务器(固件版本查询、驱动版本查询、CANN版本查询)

文章目录 1. **查看固件和驱动版本**2. **查看CANN版本**3. **其他辅助方法**注意事项 在华为昇腾服务器上查看固件、驱动和CANN版本的常用方法如下&#xff1a; 1. 查看固件和驱动版本 通过命令行工具 npu-smi 执行以下命令查看当前设备的固件&#xff08;Firmware&#xff0…...

红帽7基于kickstart搭建PXE环境

Kickstart 文件是一种配置文件&#xff0c;用于定义 Linux 系统安装过程中的各种参数&#xff0c;如分区、网络配置、软件包选择等。system-config-kickstart 提供了一个图形界面&#xff0c;方便用户快速生成这些配置文件。 用户可以通过图形界面进行系统安装的详细配置&…...