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

【QQMusic项目界面开发复习笔记】第二章

🌹 作者: 云小逸
🤟 个人主页: 云小逸的主页
🤟 motto: 要敢于一个人默默的面对自己,强大自己才是核心。不要等到什么都没有了,才下定决心去做。种一颗树,最好的时间是十年前,其次就是现在!学会自己和解,与过去和解,努力爱自己。希望春天来之前,我们一起面朝大海,春暖花开!

🥇 专栏:

  • 动态规划
  • C 语言
  • C++
  • Java 语言
  • Linux 编程
  • 算法
  • 待续…

文章目录

    • 📚 前言
    • 一、界面开发基础准备
      • 1. 创建工程
      • 2. 主窗口布局设计
        • 2.1 窗口基础设置
        • 2.2 背景容器布局
        • 2.3 划分head和body区域
    • 二、Head区域开发
      • 1. 区域功能与结构
      • 2. Logo区域实现
      • 3. 搜索框与功能按钮
    • 三、Body区域开发
      • 1. 区域划分与布局
        • 1.1 左侧功能按钮区
        • 1.2 右侧页面显示区
      • 2. 自定义按钮控件(BtForm)
    • 四、界面美化与细节处理
      • 1. QSS样式设置
        • 1.1 全局样式
        • 1.2 搜索框样式
      • 2. 阴影与透明效果
      • 3. 字体与图标优化
    • 五、核心技术总结
      • 1. 布局管理
      • 2. 自定义控件
      • 3. QSS应用
    • 六、内容总结
      • 1. 基础准备
      • 2. 界面布局
      • 3. 自定义控件
      • 4. 界面美化
      • 5. 核心技术
    • 📣 结语

📚 前言

在Qt项目开发中,界面设计是用户交互的基础。本文结合QQMusic项目文档,详细梳理界面开发的核心步骤、关键技术及实现逻辑,帮助读者系统掌握基于Qt Designer的界面布局、自定义控件和QSS样式美化等核心知识。

一、界面开发基础准备

1. 创建工程

目标:搭建基于Qt Widget的工程框架,为界面设计提供基础环境。

// qqmusic.h
#ifndef QQMUSIC_H
#define QQMUSIC_H#include <QWidget>class QQMusic : public QWidget
{Q_OBJECTpublic:QQMusic(QWidget *parent = nullptr);~QQMusic();private:void initUI(); // 界面初始化函数
};#endif // QQMUSIC_H
// qqmusic.cpp
#include "qqmusic.h"
#include "ui_qqmusic.h"QQMusic::QQMusic(QWidget *parent): QWidget(parent)
{initUI(); // 调用界面初始化函数
}QQMusic::~QQMusic()
{
}
  • 关键说明
    • 创建继承自QWidget的主窗口类QQMusic,通过initUI()统一管理界面初始化逻辑。
    • 使用Qt Designer生成ui_qqmusic.h,实现可视化界面设计与代码分离。

2. 主窗口布局设计

目标:定义窗口基本尺寸,划分head和body区域,实现整体布局框架。

2.1 窗口基础设置
// initUI()中设置窗口大小
this->setFixedSize(1040, 700); // 设置窗口固定大小为1040x700
2.2 背景容器布局
// 添加背景容器并设置垂直布局
QWidget *background = new QWidget(this);
background->setObjectName("background");
QVBoxLayout *mainLayout = new QVBoxLayout(background);
mainLayout->setContentsMargins(0, 0, 0, 0); // 边距设为0
mainLayout->setSpacing(0); // 子部件间距设为0
this->setLayout(mainLayout); // 设置主布局
2.3 划分head和body区域
// 创建head和body部件
QWidget *head = new QWidget(background);
QWidget *body = new QWidget(background);
head->setObjectName("head");
body->setObjectName("body");// 设置head固定高度为80
head->setMinimumSize(QSize(0, 80));
head->setMaximumSize(QSize(16777215, 80));// 添加到主布局
mainLayout->addWidget(head);
mainLayout->addWidget(body);
  • 布局逻辑
    • 使用QVBoxLayout垂直布局管理背景容器,确保head和body上下排列。
    • 通过setMinimumSizesetMaximumSize固定head高度,保证界面结构稳定。

二、Head区域开发

1. 区域功能与结构

功能:包含Logo、搜索框、功能按钮(皮肤、最小化、最大化、关闭)。
结构:分为headLeft(Logo)和headRight(搜索框+功能按钮)。

2. Logo区域实现

// headLeft布局
QWidget *headLeft = new QWidget(head);
headLeft->setObjectName("headLeft");
headLeft->setMinimumSize(QSize(200, 80)); // 固定宽度200QLabel *logo = new QLabel(headLeft);
logo->setObjectName("logo");
logo->setStyleSheet("border-image: url(:/images/Logo.png);"); // 设置Logo图片

3. 搜索框与功能按钮

// 搜索框
QWidget *searchBox = new QWidget(headRight);
QLineEdit *searchInput = new QLineEdit(searchBox);
searchInput->setObjectName("searchInput");
searchInput->setStyleSheet("background-color: #E3E3E3;""border-radius: 17px;""padding-left: 17px;"
);// 功能按钮
QPushButton *skinBtn = new QPushButton(settingBox);
skinBtn->setObjectName("skin");
skinBtn->setStyleSheet("border-image: url(:/images/skin.png);"); // 皮肤按钮图片
  • 关键技术
    • 使用QLineEdit实现搜索框,通过setStyleSheet设置圆角和背景色。
    • 功能按钮通过border-image属性设置自定义图标,去除默认边框。

三、Body区域开发

1. 区域划分与布局

结构:左侧功能按钮区(bodyLeft)和右侧页面显示区(bodyRight),采用水平布局。

1.1 左侧功能按钮区
// bodyLeft布局
QWidget *bodyLeft = new QWidget(body);
bodyLeft->setObjectName("bodyLeft");
bodyLeft->setMinimumSize(QSize(200, 0)); // 固定宽度200// 垂直布局管理按钮
QVBoxLayout *leftLayout = new QVBoxLayout(bodyLeft);
leftLayout->setContentsMargins(0, 0, 0, 0);// 添加按钮(推荐、电台、音乐馆等)
QPushButton *recommendBtn = new QPushButton("推荐", bodyLeft);
recommendBtn->setObjectName("recommendBtn");
leftLayout->addWidget(recommendBtn);
1.2 右侧页面显示区
// bodyRight布局
QWidget *bodyRight = new QWidget(body);
QStackedWidget *stackedWidget = new QStackedWidget(bodyRight);
stackedWidget->addPage(new RecommendPage()); // 添加推荐页面
stackedWidget->addPage(new LocalMusicPage()); // 添加本地音乐页面// 设置水平布局
QHBoxLayout *bodyRightLayout = new QHBoxLayout(bodyRight);
bodyRightLayout->addWidget(stackedWidget);
  • 核心逻辑
    • bodyLeft使用垂直布局排列功能按钮,bodyRight通过QStackedWidget实现页面切换。
    • QStackedWidget管理多个页面,通过索引切换显示内容(如推荐页、本地音乐页)。

2. 自定义按钮控件(BtForm)

目标:实现按钮悬停变色、动画效果的自定义控件。

// BtForm.h
class BtForm : public QWidget
{Q_OBJECTpublic:explicit BtForm(QWidget *parent = nullptr);void setIcon(const QString &iconPath, const QString &text); // 设置图标和文本private:Ui::BtForm *ui;QPropertyAnimation *lineAnimation; // 下划线动画
};// BtForm.cpp
void BtForm::setIcon(const QString &iconPath, const QString &text) {ui->iconLabel->setStyleSheet(QString("border-image: url(%1);").arg(iconPath));ui->textLabel->setText(text);
}// 悬停样式
QString style = "#btStyle:hover { background-color: #D8D8D8; }";
ui->btStyle->setStyleSheet(style);
  • 动画实现
    • 使用QPropertyAnimation实现按钮下划线的动态显示效果。
    • 通过setStyleSheet动态切换按钮背景色,实现悬停高亮。

四、界面美化与细节处理

1. QSS样式设置

目标:统一界面风格,提升视觉体验。

1.1 全局样式
// 主窗口背景
#background { background-color: #F0F0F0; }// 按钮通用样式
QPushButton {border: none;background-repeat: no-repeat;background-position: center center;
}
QPushButton:hover { background-color: rgba(230, 0, 0, 0.1); } // 半透明悬停效果
1.2 搜索框样式
#searchInput {background-color: #E3E3E3;border-radius: 17px;padding-left: 17px;
}

2. 阴影与透明效果

// 添加窗口阴影
QGraphicsDropShadowEffect *shadowEffect = new QGraphicsDropShadowEffect(this);
shadowEffect->setOffset(0, 3); // 阴影偏移
shadowEffect->setColor(QColor(0, 0, 0, 50)); // 半透明黑色
shadowEffect->setBlurRadius(10); // 模糊半径
this->setGraphicsEffect(shadowEffect);// 透明背景
this->setAttribute(Qt::WA_TranslucentBackground, true);
  • 技术要点
    • QGraphicsDropShadowEffect实现窗口阴影,提升立体感。
    • WA_TranslucentBackground属性使窗口背景透明,配合阴影实现悬浮效果。

3. 字体与图标优化

// 设置字体
QFont font("微软雅黑", 12); // 主字体为微软雅黑,大小12
searchInput->setFont(font);// 图标资源
QIcon recommendIcon(":/images/recommend.png"); // 加载推荐按钮图标
recommendBtn->setIcon(recommendIcon);
recommendBtn->setIconSize(QSize(24, 24)); // 图标大小

五、核心技术总结

1. 布局管理

  • 垂直布局(QVBoxLayout):用于head、bodyLeft等上下排列的区域。
  • 水平布局(QHBoxLayout):用于headRight、bodyRight等左右排列的区域。
  • 层叠布局(QStackedWidget):实现页面切换,如推荐页与本地音乐页的显示切换。

2. 自定义控件

  • BtForm:封装按钮图标、文本和动画逻辑,提高复用性。
  • RecBox:实现推荐页的轮播图效果,通过自定义布局和事件处理实现交互。

3. QSS应用

  • 样式分离:将界面样式通过QSS集中管理,便于维护和修改。
  • 状态选择器:利用:hover:pressed等伪状态实现按钮交互效果。

六、内容总结

1. 基础准备

创建基于Qt Widget的工程,定义主窗口类QQMusic,通过initUI函数初始化界面,使用Qt Designer实现可视化设计与代码分离。

2. 界面布局

  • 主窗口:设置固定大小,采用垂直布局划分headbody区域。
  • Head区域:分为headLeft(Logo)和headRight(搜索框、功能按钮),使用QLineEditQPushButton实现相应功能。
  • Body区域:左侧bodyLeft为功能按钮区,右侧bodyRight使用QStackedWidget管理多个页面,实现页面切换。

3. 自定义控件

创建BtForm自定义按钮控件,实现悬停变色和动画效果,封装图标、文本和动画逻辑,提高复用性。

4. 界面美化

  • QSS样式:通过全局和局部样式设置统一界面风格,利用伪状态实现交互效果。
  • 阴影与透明:使用QGraphicsDropShadowEffect添加窗口阴影,设置透明背景提升立体感。
  • 字体与图标:设置统一字体,合理加载和调整图标大小。

5. 核心技术

掌握QVBoxLayoutQHBoxLayoutQStackedWidget等布局管理器的使用,学会封装自定义控件和灵活运用QSS样式。

📣 结语

界面开发是Qt项目的核心环节,QQMusic项目通过合理的布局规划、自定义控件和QSS美化,实现了功能与视觉的统一。复习时需重点掌握:

  1. 布局管理器的选择与嵌套使用。
  2. 自定义控件的封装思路(如BtForm的动画实现)。
  3. QSS样式的灵活运用(背景、边框、悬停效果)。

通过实践这些知识点,可有效提升Qt界面开发的规范性和用户体验设计能力。后续可进一步扩展换肤功能、网络模块等,完善项目功能。

相关文章:

【QQMusic项目界面开发复习笔记】第二章

&#x1f339; 作者: 云小逸 &#x1f91f; 个人主页: 云小逸的主页 &#x1f91f; motto: 要敢于一个人默默的面对自己&#xff0c;强大自己才是核心。不要等到什么都没有了&#xff0c;才下定决心去做。种一颗树&#xff0c;最好的时间是十年前&#xff0c;其次就是现在&…...

并发编程【深度解剖】

并发介绍 谈到并发&#xff0c;随之而来的就是那几个问题。并发 并行 线程 进程 注意&#xff01;&#xff01;&#xff01;本篇文章更多用诙谐的语调讲解&#xff0c;为保证易于理解&#xff0c;不够官方正式&#xff0c;所以可以结合AI读本篇文章&#xff0c;并且本文是以 g…...

前端如何连接tcp 服务,接收数据

在传统的浏览器前端环境中&#xff0c;由于浏览器的同源策略和安全限制&#xff0c;无法直接建立 TCP 连接。不过&#xff0c;可以通过 WebSocket 或者使用 WebRTC 来间接实现与 TCP 服务的通信&#xff0c;另外在 Node.js 环境中可以直接使用 net 模块建立 TCP 连接。下面分别…...

用C语言实现——一个中缀表达式的计算器。支持用户输入和动画演示过程。

一、思路概要和知识回顾 1.思路概要 ①中缀表达式计算&#xff1a; 需要处理运算符的优先级&#xff0c;可能需要用到栈结构。 ❗❗如何将中缀表达式转换为后缀表达式&#xff1f;或者直接计算&#xff1f; 通常&#xff0c;中缀转后缀&#xff08;逆波兰式&#xff09;再…...

使用 Pandas 进行多格式数据整合:从 Excel、JSON 到 HTML 的处理实战

前言 在数据处理与分析的实际场景中&#xff0c;我们经常需要整合不同格式的数据&#xff0c;例如 Excel 表格、JSON 配置文件、HTML 报表等。本文以一个具体任务&#xff08;蓝桥杯模拟练习题&#xff09;为例&#xff0c;详细讲解如何使用 Python 的 Pandas 库结合其他工具&…...

常见游戏引擎介绍与对比

Unreal Engine (UE4/UE5) 主语言&#xff1a;C Unreal Engine 主要使用 C 作为开发语言。C 提供了高性能的底层控制&#xff0c;适用于需要精细调优的 AAA 级游戏。C 在 Unreal 中用于开发核心游戏逻辑、物理引擎等性能要求较高的部分。 脚本语言&#xff1a;蓝图&#xff08;B…...

第十一天 主菜单/设置界面 过场动画(Timeline) 成就系统(Steam/本地) 多语言支持

前言 对于刚接触Unity的新手开发者来说&#xff0c;构建完整的游戏系统往往充满挑战。本文将手把手教你实现游戏开发中最常见的四大核心系统&#xff1a;主菜单界面、过场动画、成就系统和多语言支持。每个模块都将结合完整代码示例&#xff0c;使用Unity 2022 LTS版本进行演示…...

vue3 使用 vite 管理多个项目,实现各子项目独立运行,独立打包

场景&#xff1a; 之前写过一篇 vite vue2 的配置&#xff0c;但是现在项目使用 vue3 较多&#xff0c;再更新一下 vue脚手架初始化之后的项目&#xff0c;每个项目都是独立的&#xff0c;导致项目多了之后&#xff0c;node依赖包过多&#xff0c;占用内存较多。想实现的效果…...

k8s(9) — zookeeper集群部署(亲和性、污点与容忍测试)

一、部署思路 1、前期设想 zookeeper集群至少需要运行3个pod集群才能够正常运行&#xff0c;考虑到节点会有故障的风险这个3个pod最好分别运行在&#xff13;个不同的节点上(为了实现这一需要用到亲和性和反亲和性概念)&#xff0c;在部署的时候对zookeeper运行的pod打标签加…...

Linux操作系统复习

Linux操作系统复习 一. Linux的权限和shell原理1. Linux从广义上讲是什么 从狭义上讲是什么&#xff1f;2. shell是什么&#xff1f;3. 为什么要设置一个shell外壳而不是直接和linux 内核沟通4. shell的原理是什么5. Linux中权限的概念6. 如何提升当前操作的权限7. 文件访问者的…...

深入解析 Linux 中动静态库的加载机制:从原理到实践

引言 在 Linux 开发中&#xff0c;动静态库是代码复用的核心工具。静态库&#xff08;.a&#xff09;和动态库&#xff08;.so&#xff09;的加载方式差异显著&#xff0c;直接影响程序的性能、灵活性和维护性。本文将深入剖析两者的加载机制&#xff0c;结合实例演示和底层原…...

总账主数据——Part 2 科目-1

本文主要介绍在S4 HANA OP中 总账主数据的后台配置及前台操作。 目录 1. 准备 1.1 科目表的定义(OB13) 1.2 给公司代码分配科目表(OB62) 1.3 定义科目组(OBD4) 1.4 定义留存收益科目(OB53) 1.5 维护科目表层“文本标识” (OBT6) 1.6 维护公司代码层“文本标识” (OBT…...

借助内核逻辑锁pagecache到内存

一、背景 内存管理是一个永恒的主题&#xff0c;尤其在内存紧张触发内存回收的时候。系统在通过磁盘获取磁盘上的文件的内容时&#xff0c;若不开启O_DIRECT方式进行读写&#xff0c;磁盘上的任何东西都会被缓存到系统里&#xff0c;我们称之为page cache。可以想象&#xff0…...

✨ Apifox:这玩意儿是接口界的“瑞士军刀”吧![特殊字符][特殊字符]

——全网最皮最全测评&#xff0c;打工人看了直呼“真香” &#x1f4e2; 友情提醒 还在用 Postman 测接口、Swagger 写文档、Mock.js 造假数据、脑细胞搞团队协作&#xff1f; 停&#xff01; 你仿佛在玩《工具人环游记》&#xff0c;而隔壁同事已经用 Apifox 「一杆清台」了…...

《普通逻辑》学习记录——性质命题及其推理

目录 一、性质命题概述 二、性质命题的种类 2.1、性质命题按质的分类 2.2、性质命题按量的分类 2.3、性质命题按质和量结合的分类 2.4、性质命题的基本形式归纳 三、四种命题的真假关系 3.1、性质命题与对象关系 3.2、四种命题的真假判定 3.3、四种命题的对当关系 四、四种命题…...

设备接入与APP(应用程序)接入华为云iotDA平台的路径元素有哪些不同?

目录 壹、设备接入华为云iotDA &#x1f3e2; 形象比喻&#xff1a;设备 员工&#xff0c;IoTDA 平台 安保森严的总部大楼 一、&#x1f4cd; 平台接入地址 总部大楼地址 二、&#x1f9fe; 接入凭证 出入证 / 门禁卡 / 工牌 1. 设备密钥或证书 2. 预置接入凭证密钥&a…...

【git#4】分支管理 -- 知识补充

一、bug 分支 假如我们现在正在 dev2 分支上进行开发&#xff0c;开发到一半&#xff0c;突然发现 master 分支上面有 bug&#xff0c;需要解决。 在Git中&#xff0c;每个 bug 都可以通过一个新的临时分支来修复&#xff0c;修复后&#xff0c;合并分支&#xff0c;然后将临…...

AXOP34062: 40V双通道运算放大器

AXOP34062是一款通用型高压双通道运算放大器&#xff0c;产品的工作电压为2.5V至40V&#xff0c;具有25MHz的带宽&#xff0c;压摆率为10V/μs&#xff0c;静态电流为650A。较高的耐压和带宽使其可以胜任绝大多数的高压应用场景。 主要特性 轨到轨的输入输出范围低输入失调电…...

OpenCv高阶(十)——光流估计

文章目录 前言一、光流估计二、使用步骤1、导库读取视频、随机初始化颜色2、初始化光流跟踪3、视频帧处理循环4、光流计算与可视化5、循环控制与资源释放完整代码 总结 前言 在计算机视觉领域&#xff0c;光流估计是捕捉图像序列中像素点运动信息的核心技术。它描述了图像中每…...

BS客户端的单点登录

1、参数类似于“XXXXX://?userIdsystem&time1696830378038&token38a8ea526537766f01ded33a6cdfa5bd” 2、在config里加一个LoginSecret参数可随意指定一个字符串 3、BS登录代码里会对“LoginSecret的参数值用户ID时间戳”进行MD5加密形成token&#xff0c;与传过来的…...

通讯录完善版本(详细讲解+源码)

目录 前言 一、使通讯可以动态更新内存 1、contact.h 2、contact.c 存信息&#xff1a; 删除联系人&#xff0c;并试一个不存在的人的信息&#xff0c;看看会不会把其他人删了 ​编辑 修改&#xff1a; ​编辑 排序&#xff1a; ​编辑 销毁&#xff1a; ​编辑 ​…...

第3讲:ggplot2完美入门与美化细节打磨——从基础绘制到专业级润色

目录 1. 为什么选择ggplot2? 2. 快速了解ggplot2绘图核心逻辑 3. 基础绘图示范:柱状图、折线图、散点图 (1)简单柱状图 (2)折线图示范 (3)高级散点图 + 拟合线 4. 精细美化:细节打磨决定专业感 5. 推荐的美化小插件(可选进阶) 6. 小练习:快速上手一幅美化…...

带宽?增益带宽积?压摆率?

一、带宽&#xff08;Bandwidth&#xff09; 1.科学定义&#xff1a; 带宽指信号或系统能够有效通过的频率范围&#xff0c;通常定义为信号功率下降到中频值的一半&#xff08;即 - 3dB&#xff09;时的最高频率与最低频率之差。对于运算放大器&#xff08;Op-Amp&#xff09…...

为什么栈内存比堆内存速度快?

博主介绍&#xff1a;程序喵大人 35- 资深C/C/Rust/Android/iOS客户端开发10年大厂工作经验嵌入式/人工智能/自动驾驶/音视频/游戏开发入门级选手《C20高级编程》《C23高级编程》等多本书籍著译者更多原创精品文章&#xff0c;首发gzh&#xff0c;见文末&#x1f447;&#x1…...

什么是非关系型数据库

什么是非关系型数据库&#xff1f; 引言 随着互联网应用的快速发展&#xff0c;传统的基于表格的关系型数据库&#xff08;如 MySQL、Oracle 等&#xff09;已经不能完全满足现代应用程序的需求。在这种背景下&#xff0c;非关系型数据库&#xff08;NoSQL 数据库&#xff09…...

制作一个简单的操作系统9

自定义 myprintf 函数实现解析 探索如何实现一个自定义的 printf 函数来处理任意 %d 和 %s 组合 (说实话,想不用任何库函数和头文件,纯C实现太难了,我放弃了,弄了一个简陋版本 对付用) 运行效果: Hello 123 World 456 Coding这样参数传递:(最多支持5个参数,按顺序…...

华为Pura X的智控键:让折叠机体验更上一层楼的设计

还记得Mate 70系列刚出那会&#xff0c;我体验了下智控键&#xff0c;那时候就觉得这个“把快捷方式做进电源键”的交互方式非常惊艳&#xff0c;没想到在Pura X上&#xff0c;这种便捷体验感更上了一层楼。 智控键&#xff1a;折叠屏手机的天选快捷方式&#xff1f; 传统折叠…...

打造高功率、高电流和高可靠性电路板的厚铜PCB生产

厚铜PCB生产是指制作一种具有较厚铜层的PCB&#xff08;Printed Circuit Board&#xff0c;印刷电路板&#xff09;。这种PCB通常用于高功率、高电流和高可靠性的电子设备中。厚铜PCB的生产过程包括以下几个 主要步骤&#xff1a; 1. 基材准备 厚铜PCB的基材通常采用FR4或CEM-…...

AI超级智能体教程(三)---程序调用AI大模型的四种方式(SpringAI+LangChain4j+SDK+HTTP)

文章目录 1.安装SDK&#xff08;查看文档&#xff09;2.创建API-key3.项目引入灵积大模型4.HTTP接入的方式5.SpringAI引入5.1添加依赖5.2添加配置5.3测试代码 6.LangChain4j引入6.1依赖引入6.2测试提问 1.安装SDK&#xff08;查看文档&#xff09; 安装阿里云百炼SDK_大模型服…...

JDBC连接数据库

一、查询 sqlserver数据库 private List<Map<String, String>> getPathList(String id) throws Exception {String driverName "com.microsoft.sqlserver.jdbc.SQLServerDriver";String dataBaseurl "jdbc:sqlserver://localhost:1433;SelectMeth…...

常见缓存淘汰算法(LRU、LFU、FIFO)的区别与实现

一、前言 缓存淘汰算法主要用于在内存资源有限的情况下&#xff0c;优化缓存空间的使用效率。以确保缓存系统在容量不足时能够智能地选择需要移除的数据。 二、LRU&#xff08;Least Recently Used&#xff09; 核心思想&#xff1a;淘汰最久未被访问的数据。实现方式&#x…...

深度学习--循环神经网络RNN

文章目录 前言一、RNN介绍1、传统神经网络存在的问题2、RNN的核心思想3、 RNN的局限性 二、RNN基本结构1、RNN基本结构2、推导3、注意4、循环的由来5、再谈RNN的局限 总结 前言 循环神经网络&#xff08;RNN&#xff09;的起源可以追溯到1982年&#xff0c;由Saratha Sathasiv…...

大学IP广播系统解决方案:构建数字化智慧化大学校园IP广播平台

大学IP广播系统解决方案:构建数字化智慧化大学校园IP广播平台 北京海特伟业科技有限公司任洪卓于2025年4月24日发布 随着教育信息化建设的深入推进&#xff0c;传统的模拟广播系统已无法满足现代化校园对智能化、场景化、融合化的管理需求。为此&#xff0c;海特伟业提出构建…...

#ifndef #else #endif条件编译

目录 一、#ifdef 1. 基本用法 2. 查看头文件 3. 目的 4. 常见用途 4. 取消定义 5.小结 二、#ifndef和#ifdef区别 1. #ifdef 2. #ifndef 3.结论 一、#ifdef 宏定义 #define H_PWM_L_ON 的作用是创建一个名为 H_PWM_L_ON 的宏。以下是这个宏定义的一些关键点&#xff…...

SystemVerilog语法之typedef与自定义结构

1.7 使用typedef创建新的类型 在Verilog中&#xff0c;你可以为操作数的位宽或者类型分别定义一个宏&#xff0c;但是你并没有创建新的数据类型&#xff0c;而是进行了文本的替换。在SystemVerilog中&#xff0c;可以使用typedef创建新的类型。可以将parameter和typedef语句放…...

【防火墙 pfsense】2配置

&#xff08;1&#xff09;接口配置和接口 IP 地址分配 ->配置广域网&#xff08;WAN&#xff09;和局域网&#xff08;LAN&#xff09;接口&#xff0c;分配设备标识符&#xff0c;如 eth0、eth1 等&#xff1b; ->如将WAN 接口将被分配到 eth0&#xff0c;而 LAN 接口将…...

数据结构之排序

排序 一.比较排序1.插入排序基本思想1.1直接插入排序1.2希尔排序 2.选择排序直接选择排序堆排序 3.交换排序冒泡排序快速排序hoare版本挖坑法lomuto前后指针非递归版本 4.归并排序非递归的归并排序 非比较排序1.计数排序 排序算法复杂度及稳定性分析 一.比较排序 1.插入排序 …...

cgroup sched_cfs_bandwidth_slice参数的作用及效果

一、背景 cgroup是一个非常重要的功能&#xff0c;其中cgroup cpu这块有不少功能&#xff0c;在之前的博客 CFS及RT调度整体介绍_rt调度器-CSDN博客 里&#xff0c;我们分析了cfs的组调度也就是cgroup cpu的这块内核逻辑的细节侧重于调度逻辑这块&#xff0c;在之前的博客 cgr…...

【C++指南】告别C字符串陷阱:如何实现封装string?

&#x1f31f; 各位看官好&#xff0c;我是egoist2023&#xff01; &#x1f30d; 种一棵树最好是十年前&#xff0c;其次是现在&#xff01; &#x1f4ac; 注意&#xff1a;本章节只详讲string中常用接口及实现&#xff0c;有其他需求查阅文档介绍。 &#x1f680; 今天通过了…...

液体神经网络LNN-Attention创新结合——基于液体神经网络的时间序列预测(PyTorch框架)

1.数据集介绍 ETT(电变压器温度)&#xff1a;由两个小时级数据集&#xff08;ETTh&#xff09;和两个 15 分钟级数据集&#xff08;ETTm&#xff09;组成。它们中的每一个都包含 2016 年 7 月至 2018 年 7 月的七种石油和电力变压器的负载特征。 traffic(交通) &#xff1a;描…...

kafka和Spark-Streaming2

Kafka 工作流程及文件存储机制 Kafka 中消息是以topic 进行分类的&#xff0c;生产者生产消息&#xff0c;消费者消费消息&#xff0c;都是面向topic 的。 “.log”文件存储大量的数据&#xff0c;“.index”文件存储偏移量索引信息&#xff0c;“.timeindex”存储时间戳索引文…...

MySQL日期函数的详细教程(包含常用函数及其示例)

概述 以下是一个关于MySQL日期函数的详细教程&#xff0c;包含常用函数及其示例内容以转换为PDF电子书&#xff0c;喜欢的朋友可以转存慢慢享用&#xff1a;https://pan.quark.cn/s/57d2e491bbbe 1. 获取当前日期和时间 • CURDATE() / CURRENT_DATE() 返回当前日期&#xf…...

P4017 最大食物链计数-拓扑排序

P4017 最大食物链计数 题目来源-洛谷 题意 要求最长食物链的数量。按照题意&#xff0c;最长食物链就是指有向无环图DAG中入度为&#xff10;到出度为&#xff10;的不同路径的数量&#xff08;链数&#xff09; 思路 在计算时&#xff0c;明显&#xff1a;一个被捕食者所…...

C语言——字串处理

C语言——字串处理 一、问题描述二、格式要求1.输入形式2.输出形式3.样例 三、实验代码 一、问题描述 现有两个字符串s1和s2&#xff0c;它们最多都只能包含255个字符。编写程序&#xff0c;将字符串s1中所有出现在字符串s2中的字符删去&#xff0c;然后输出s1。 二、格式要求…...

工业排风轴流风机:强劲动力与节能设计的完美融合

在工业生产中&#xff0c;通风换气是保障作业环境安全、维持设备正常运行的关键环节。工业排风轴流风机凭借其独特的设计&#xff0c;将强劲动力与节能特性完美融合&#xff0c;成为众多工业场景的首选通风设备&#xff0c;为企业高效生产与绿色发展提供了可靠支持。​ 工业排风…...

【Test】单例模式❗

文章目录 1. 单例模式2. 单例模式简单示例3. 懒汉模式4. 饿汉模式5. 懒汉式和饿汉式的区别 1. 单例模式 &#x1f427;定义&#xff1a;保证一个类仅有一个实例&#xff0c;并提供一个访问它的全局访问点。 单例模式是一种常用的软件设计模式&#xff0c;在它的核心结构中只包…...

3.3 Spring Boot文件上传

在 Spring Boot 项目中实现文件上传功能&#xff0c;首先创建项目并添加依赖&#xff0c;包括 Commons IO 用于文件操作。接着&#xff0c;创建文件上传控制器 FileUploadController&#xff0c;定义上传目录并实现文件上传逻辑&#xff0c;通过生成唯一文件名避免文件冲突。创…...

【玩泰山派】7、玩linux桌面环境xfce - (4)使用gstreamer

文章目录 前言gstreamergstreamer概述基本概念主要功能应用场景开发方式 安装gstreamer使用gstreamer使用gstreamer播放视频 前言 玩一下gstreamer&#xff0c;使用gstreamer去播放下音视频 gstreamer gstreamer概述 GStreamer是一个用于构建多媒体应用程序的开源库和框架&…...

cpu性能统计

cpu负载 top中avg&#xff0c;/proc/loadavg, 包括cpu密集型任务io型任务 统计流程 每cpu scheduler_tick ----calc_global_load_tick &#xff1a; 当前瞬时 cpu::this_rq:: nr_runningnr_inunterrupt->calc_load_tasks(全局变量) 全局 do_timer ----calc_global_load&a…...

Java对接企业微信实战笔记

Java对接企业微信实战笔记 微信开发文档 有关企业微信的服务商的一些配置参考企业微信创建的服务商配置信息 一 流程图 只要企业安装应用后&#xff0c;就可以获取到企业的信息 二 创建应用获取suite_ticket 1.创建应用 微信开发平台得是服务商角色才能进入服务商后台创建一…...