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

Qt之QGraphicsEffect的简单使用(含源码+注释)

文章目录

  • 一、效果示例图
    • 1.效果演示图片
    • 3.弹窗演示图片
  • 二.问题描述
  • 三、源码
    • CFrame.h
    • CFrame.cpp
    • CMainWindow.h
    • CMainWindow.cpp
  • 总结

一、效果示例图

1.效果演示图片

在这里插入图片描述
在这里插入图片描述

3.弹窗演示图片

在这里插入图片描述

二.问题描述

(因为全是简单使用,毫无技巧,直接描述问题)

  1. 模糊效果:QGraphicsBlurEffect包含setBlurHints函数,其作用为设置模糊质量,但是更新它时我这边肉眼上是没有看出特别明显的效果,需考虑不同情况的状态。
  2. 阴影效果:使用QGraphicsDropShadowEffect时,当我作用到弹窗上,它不是作用在弹窗边缘之外,而是作用在弹窗边缘之内,所以需要为其预留部分空间显示阴影。
  3. 透明效果:文中是使用QLinearGradient设置其不透明蒙版,使用中我试图使用三种不同颜色操作蒙版但是失败;其次是我首次将其作用到弹窗中是有效的,但是二次过后就无效,这个我暂时没找到原因。

三、源码

CFrame.h

#ifndef CFRAME_H
#define CFRAME_H#include <QObject>
#include <QFrame>
#include <QLabel>
#include <QHBoxLayout>class CFrame : public QFrame
{Q_OBJECT
public:explicit CFrame(QWidget *parent = nullptr);~CFrame();/*** @brief setStyleSheet 重写样式设置* @param style 样式文本*/void setStyleSheet(const QString &style);// QWidget interface
protected:/*** @brief keyReleaseEvent 键盘释放事件* @param event 事件对象*/void keyReleaseEvent(QKeyEvent *event);/*** @brief mousePressEvent 鼠标按下事件* @param event 事件对象*/void mousePressEvent(QMouseEvent *event);/*** @brief mouseMoveEvent 鼠标移动事件* @param event 事件对象*/void mouseMoveEvent(QMouseEvent *event);private:QPoint  m_globalMousePos; // 全局鼠标位置QPoint  m_globalWindowPos;  // 全局窗口位置QHBoxLayout  *m_layout; // 水平布局器对象QLabel  *m_label;       // 图片样式label};#endif // CFRAME_H

CFrame.cpp

#include "CFrame.h"#include <QKeyEvent>CFrame::CFrame(QWidget *parent) : QFrame(parent)
{this->setToolTip(u8"按任意键关闭窗口");this->setWindowFlag(Qt::FramelessWindowHint, true);// 创建水平布局器对象m_layout = new QHBoxLayout;m_layout->setMargin(10);// 创建图片显示labelm_label = new QLabel;m_layout->addWidget(m_label);// 将布局器设置到当前类中this->setLayout(m_layout);
}CFrame::~CFrame()
{delete m_layout;delete m_label;
}void CFrame::setStyleSheet(const QString &style)
{// 样式设置到label上m_label->setStyleSheet(style);
}void CFrame::keyReleaseEvent(QKeyEvent *event)
{// 任意键释放都关闭窗口this->close();
}void CFrame::mousePressEvent(QMouseEvent *event)
{// 获取鼠标全局位置m_globalMousePos = event->globalPos();// 获取窗口左上角位置m_globalWindowPos = this->frameGeometry().topLeft();
}void CFrame::mouseMoveEvent(QMouseEvent *event)
{//获得鼠标移动的距离QPoint distance = event->globalPos() - m_globalMousePos;//改变窗口的位置this->move(m_globalWindowPos + distance);
}

CMainWindow.h

#ifndef CMAINWINDOW_H
#define CMAINWINDOW_H#include "CFrame.h"#include <QGraphicsBlurEffect>
#include <QGraphicsColorizeEffect>
#include <QGraphicsDropShadowEffect>
#include <QGraphicsOpacityEffect>
#include <QMainWindow>
#include <QLinearGradient>QT_BEGIN_NAMESPACE
namespace Ui { class CMainWindow; }
QT_END_NAMESPACEclass CMainWindow : public QMainWindow
{Q_OBJECTpublic:CMainWindow(QWidget *parent = nullptr);~CMainWindow();private:void connectSigSlot();/*** @brief getCurTypeEffect 获取效果对象* @param id 效果id* @return 效果对象指针*/QGraphicsEffect *getCurTypeEffect(int id);private slots:/*** @brief on_buttonGroup_buttonClicked 单选按钮组点击槽函数* @param id 点击按钮id*/void on_buttonGroup_buttonClicked(int id);/*** @brief on_doubleSpinValueChanged 浮点微调框槽函数* @param arg1 调整值*/void on_doubleSpinValueChanged(double arg1);/*** @brief on_spinValueChanged 整型微调框槽函数* @param arg1 调整值*/void on_spinValueChanged(int arg1);/*** @brief on_btnClicked 按钮点击槽函数*/void on_btnClicked();/*** @brief on_btnSelImg_clicked 图片选择槽函数*/void on_btnSelImg_clicked();/*** @brief on_btnBecomeDlg_clicked 弹窗按钮槽函数*/void on_btnBecomeDlg_clicked();// QWidget interface
protected:/*** @brief closeEvent 关闭事件* @param event 时间对象*/void closeEvent(QCloseEvent *event);private:Ui::CMainWindow             *ui;QLinearGradient             m_linearGradient;   // 透明效果的颜色梯度CFrame                      *m_dlgFrame;        // 弹窗对象
};
#endif // CMAINWINDOW_H

CMainWindow.cpp

#include "CMainWindow.h"
#include "ui_CMainWindow.h"#include <QDebug>
#include <QKeyEvent>
#include <QFileDialog>
#include <QColorDialog>CMainWindow::CMainWindow(QWidget *parent): QMainWindow(parent), ui(new Ui::CMainWindow)
{ui->setupUi(this);// 创建弹窗对象m_dlgFrame = new CFrame;// 设置单选按钮id值ui->buttonGroup->setId(ui->checkBoxNoEffect, 0);ui->buttonGroup->setId(ui->checkBoxBlurEffect, 1);ui->buttonGroup->setId(ui->checkBoxColorEffect, 2);ui->buttonGroup->setId(ui->checkBoxShadowEffect, 3);ui->buttonGroup->setId(ui->checkBoxOpacityEffect, 4);// 线性渐变对象颜色位置赋值m_linearGradient.setColorAt(0, Qt::transparent);m_linearGradient.setColorAt(0.5, Qt::black);m_linearGradient.setColorAt(1, Qt::transparent);connectSigSlot();
}CMainWindow::~CMainWindow()
{delete m_dlgFrame;delete ui;
}void CMainWindow::connectSigSlot()
{// 链接浮点型数值框信号槽connect(ui->doubleSpinColorStrength, SIGNAL(valueChanged(double)), this, SLOT(on_doubleSpinValueChanged(double)));connect(ui->doubleSpinBoxOpacity, SIGNAL(valueChanged(double)), this, SLOT(on_doubleSpinValueChanged(double)));// 链接整型数值框信号槽connect(ui->spinBoxBulrRadius, SIGNAL(valueChanged(int)), this, SLOT(on_spinValueChanged(int)));connect(ui->spinBoxHorOffset, SIGNAL(valueChanged(int)), this, SLOT(on_spinValueChanged(int)));connect(ui->spinBoxVerOffset, SIGNAL(valueChanged(int)), this, SLOT(on_spinValueChanged(int)));connect(ui->spinBoxShadowBlurRadius, SIGNAL(valueChanged(int)), this, SLOT(on_spinValueChanged(int)));// 链接按钮信号槽connect(ui->btnColorSel, &QPushButton::clicked, this, &CMainWindow::on_btnClicked);connect(ui->btnShadowColorSel, &QPushButton::clicked, this, &CMainWindow::on_btnClicked);
}QGraphicsEffect *CMainWindow::getCurTypeEffect(int id)
{QGraphicsEffect *effectTmp = Q_NULLPTR;//! 根据ID创建效果对象,并将对应的效果之更新到对象中switch (id) {case 1:{QGraphicsBlurEffect *blurEffect = new QGraphicsBlurEffect; // 模糊效果// 设置颜模糊半径blurEffect->setBlurRadius(ui->spinBoxBulrRadius->value());effectTmp = blurEffect;break;}case 2:{QGraphicsColorizeEffect *colorEffect = new QGraphicsColorizeEffect; // 颜色效果// 设置颜色强度colorEffect->setStrength(ui->doubleSpinColorStrength->value());// 设置颜色colorEffect->setColor(ui->btnColorSel->palette().color(QPalette::Button));effectTmp = colorEffect;break;}case 3:{QGraphicsDropShadowEffect *shadowEffect = new QGraphicsDropShadowEffect; // 阴影效果shadowEffect->setColor(ui->btnShadowColorSel->palette().color(QPalette::Button)); // 阴影颜色shadowEffect->setOffset(ui->spinBoxHorOffset->value(), ui->spinBoxVerOffset->value()); // 阴影偏移度shadowEffect->setBlurRadius(ui->spinBoxBulrRadius->value()); // 模糊半径effectTmp = shadowEffect;break;}case 4:{QGraphicsOpacityEffect *opacityEffect = new QGraphicsOpacityEffect;opacityEffect->setOpacity(ui->doubleSpinBoxOpacity->value()); // 透明度m_linearGradient.setStart(ui->label->geometry().topLeft()); //起始位置m_linearGradient.setFinalStop(ui->label->geometry().bottomLeft()); // 结束位置opacityEffect->setOpacityMask(m_linearGradient);effectTmp = opacityEffect;break;}default:{break;}}return effectTmp;
}void CMainWindow::on_buttonGroup_buttonClicked(int id)
{// 更新栈窗口ui->stackedWidget->setCurrentIndex(id);// 更新控件效果ui->label->setGraphicsEffect(getCurTypeEffect(id));
}void CMainWindow::on_doubleSpinValueChanged(double arg)
{//! 获取发送者类型属性值//! 不同值做不同操作switch (sender()->property("Type").toInt()){case 2:{// 设置颜色强度dynamic_cast<QGraphicsColorizeEffect*>(ui->label->graphicsEffect())->setStrength(arg);break;}case 4:{// 设置透明度dynamic_cast<QGraphicsOpacityEffect*>(ui->label->graphicsEffect())->setOpacity(arg);break;}default:break;}
}void CMainWindow::on_spinValueChanged(int arg)
{//! 获取发送者类型属性值//! 不同值做不同操作switch (sender()->property("Type").toInt()){case 1:{// 设置颜模糊半径dynamic_cast<QGraphicsBlurEffect*>(ui->label->graphicsEffect())->setBlurRadius(arg);break;}case 3:{int flag = sender()->property("WhatThis").toInt();if(0 == flag){// 设置颜模糊半径dynamic_cast<QGraphicsDropShadowEffect*>(ui->label->graphicsEffect())->setBlurRadius(arg);}else if(1 == flag){// 设置垂直偏移dynamic_cast<QGraphicsDropShadowEffect*>(ui->label->graphicsEffect())->setYOffset(arg);}else{// 设置水平偏移dynamic_cast<QGraphicsDropShadowEffect*>(ui->label->graphicsEffect())->setXOffset(arg);}break;}default:break;}
}void CMainWindow::on_btnClicked()
{QPushButton *btn = dynamic_cast<QPushButton *>(sender());// 获取按钮进入的palette对象QPalette palette(btn->palette());// 颜色对象先赋值为当前按钮颜色(防止重新获取颜色时拿到失效颜色)QColor color =  palette.color(QPalette::Button);// 然后重新获取颜色color =  QColorDialog::getColor();if(!color.isValid()){return;}//! 获取发送者类型属性值//! 不同值做不同操作switch (btn->property("Type").toInt()){case 2:{// 设置颜色dynamic_cast<QGraphicsColorizeEffect*>(ui->label->graphicsEffect())->setColor(color);break;}case 3:{// 设置阴影颜色dynamic_cast<QGraphicsDropShadowEffect*>(ui->label->graphicsEffect())->setColor(color);break;}default:break;}// 更新调色板对象按钮颜色palette.setColor(QPalette::Button, color);btn->setPalette(palette);btn->setFlat(true); // 设置按钮扁平化btn->setAutoFillBackground(true); // 设置自动填充背景
}void CMainWindow::on_btnSelImg_clicked()
{// 获取图片QString fileName = QFileDialog::getOpenFileName(this, u8"选择图片", "./", "*.png *.jpg *.svg");// 为空返回if(fileName.isEmpty()){return;}// 通过样式设置图片ui->label->setStyleSheet(QString("border-image:url(%1)").arg(fileName));
}void CMainWindow::on_btnBecomeDlg_clicked()
{// 设置大小为本类的label(图片显示控件)大小m_dlgFrame->setFixedSize(ui->label->size());// 当前样式图片更新到弹窗label中m_dlgFrame->setStyleSheet(ui->label->styleSheet());// 获取当前属性效果并设置m_dlgFrame->setGraphicsEffect(getCurTypeEffect(ui->buttonGroup->checkedId()));// 显示弹窗m_dlgFrame->show();
}void CMainWindow::closeEvent(QCloseEvent *event)
{// 当弹窗未关闭时进入关闭if(m_dlgFrame->isVisible()){m_dlgFrame->close();}
}

总结

效果使用较为简单,因此暂无强调;文中存在一些问题,后期有解决会更新(要是有大佬指点更好啦)。

友情提示——哪里看不懂可私哦,让我们一起互相进步吧
(创作不易,请留下一个免费的赞叭 谢谢 o/)

注:文章为作者编程过程中所遇到的问题和总结,内容仅供参考,若有错误欢迎指出。
注:如有侵权,请联系作者删除

相关文章:

Qt之QGraphicsEffect的简单使用(含源码+注释)

文章目录 一、效果示例图1.效果演示图片3.弹窗演示图片 二.问题描述三、源码CFrame.hCFrame.cppCMainWindow.hCMainWindow.cpp 总结 一、效果示例图 1.效果演示图片 3.弹窗演示图片 二.问题描述 &#xff08;因为全是简单使用&#xff0c;毫无技巧&#xff0c;直接描述问题&a…...

前端优化-css

1.css盒子模型 标准盒子模型&#xff0c;IE盒子模型 标准盒子模型&#xff1a;margin-border-padding-content IE盒子模型&#xff1a;margin-content(border-padding-content) 如何转换&#xff1a; box - sizing: border - box; // IE盒子模型 box - sizing: content - …...

第三方ipad笔哪个牌子好用?ipad触控笔推荐平价

至于选择苹果原装的电容笔&#xff0c;还是平替的电容笔&#xff0c;要看个人的需求而定&#xff0c;比如画图用的&#xff0c;可以用Apple Pencil&#xff1b;比如学习记笔记用的&#xff0c;可以用平替电容笔&#xff0c;目前的平替电容笔无论是品质还是性能&#xff0c;都非…...

windows10+detectron2完美安装教程

文章目录 前言下载detectron2安装Visual Studio 2019修改代码 前言 需要下载detectron2的github项目&#xff0c;安装vs2019 (强烈建议这个版本&#xff0c;其他的版本需要做更多地操作才能成功安装)&#xff0c;默认其他环境没问题。 下载detectron2 链接&#xff1a;https…...

串口与wifi模块

经过以下学习&#xff0c;我们掌握&#xff1a; AT指令与wifi模块的测试方法&#xff1a;通过CH340直接测试&#xff0c;研究各种AT指令下wifi模块的响应信息形式。编程&#xff0c;使用串口中断接收wifi模块对AT指令的响应信息以及透传数据&#xff0c;通过判断提高指令执行的…...

上财黄烨:金融科技人才的吸引与培养

“金融科技企业在吸引人才前&#xff0c;应先完善人才培养机制&#xff0c;建立员工画像&#xff0c;有针对性地培训提高成员综合素质。” ——上海金融智能工程技术研究中心上海财经大学金融科技研究院秘书长&院长助理黄烨老师 01.何为数字人才&#xff1f; 目前大多数研…...

利用MQ事务消息实现分布式事务

MQ事务消息使用场景 消息队列中的“事务”&#xff0c;主要解决的是消息生产者和消息消费者的数据一致性问题。 拿我们熟悉的电商来举个例子。一般来说&#xff0c;用户在电商 APP 上购物时&#xff0c;先把商品加到购物车里&#xff0c;然后几件商品一起下单&#xff0c;最后…...

C++面向对象设计:深入理解多态与抽象类实现技巧

面向对象的多态 一、概念二、实现1. 静态多态1.1 函数重载1.2 运算符重载 2. 动态多态2.1 虚函数2.2 纯虚函数 三、虚函数1. 定义2. 实现3. 注意 四、纯虚函数1. 定义2. 作用 五、虚析构函数1. 定义2. 作用 六、 抽象类七、实现多态的注意事项1. 基类虚函数必须使用 virtual 关…...

长三角生物医药产业加速跑,飞桨螺旋桨为创新药企、医药技术伙伴装上AI大模型引擎...

生物医药是国家“十四五”规划中明确的战略性新兴产业之一。长三角地区是中国生物医药产业的排头兵&#xff0c;也是《“十四五”生物经济发展规划》的“生物经济先导区”之一。据《上海市生物医药产业投资指南》显示&#xff0c;2022 年上海市生物医药产业在 I 类国产创新药数…...

orin Ubuntu 20.04 配置 Realsense-ROS

librealsense安装 sudo apt-get install libudev-dev pkg-config libgtk-3-dev sudo apt-get install libusb-1.0-0-dev pkg-config sudo apt-get install libglfw3-dev sudo apt-get install libssl-dev sudo apt-get install ros-noetic-ddynamic-reconfigure二进制安装libr…...

MyBatis基础知识点总结

MyBatis了解 MyBatis 是什么&#xff1f; MyBatis 是支持定制化 SQL、存储过程以及高级映射的优秀的持久层框架 MyBatis 避免了几乎所有的 JDBC 代码和手动设置参数以及获取结果集 MyBatis 可以使用简单的XML或注解用于配置和原始映射&#xff0c;将接口和Java的 POJO&#x…...

校园企业车辆维修报修管理系统设计与开发

本研究课题重点主要包括了下面几大模块&#xff1a;在本基于.net平台的车辆系统中分为管理员和用户2个模块&#xff0c;主要功能包括管理员信息管理&#xff0c;车辆信息管理&#xff0c;驾驶员信息管理&#xff0c;事故信息管理&#xff0c;维修信息管理&#xff0c;维修点管理…...

【企业信息化】第1集 免费开源ERP: Odoo 16 CRM客户关系管理系统

文章目录 前言一、概览二、使用功能1.加快销售速度2.销售线索3.机会4.客户5.高效沟通6.报告7.集成 三、总结 前言 世界排名第一的免费开源ERP: Odoo 16 CRM客户关系管理系统。真正以客户为中心的CRM。 一、概览 获得准确预测 使用可操作数据&#xff0c;以做出更好的决定。 获…...

Flink创建Hudi的Sink动态表

工厂类 HoodieTableFactory 提供的创建动态表接口 createDynamicTableSource 和 createDynamicTableSink&#xff0c;对应的源码文件为&#xff1a;https://github.com/apache/hudi/blob/master/hudi-flink-datasource/hudi-flink/src/main/java/org/apache/hudi/table/HoodieT…...

人脸识别技术的安全性及其应用探讨

随着科技的不断发展&#xff0c;人脸识别技术已经成为了一个热门话题。人脸识别系统的出现&#xff0c;给人们的生活带来了极大的便利&#xff0c;同时也为一些犯罪分子提供了方便。因此&#xff0c;人脸识别技术的安全性和可靠性一直备受关注。 一、人脸识别技术的原理 人脸识…...

老域名查询工具- 在线域名批量查询工具

域名批量查询工具 域名批量查询工具是一种帮助用户快速查询多个域名信息的工具&#xff0c;通常能够自动扫描一组域名的WHOIS信息、DNS、IP地址、服务器等各种信息&#xff0c;并提供快速的结果反馈。 以下是域名批量查询工具主要的优点&#xff1a; 提高工作效率&#xff1a…...

JimuReport - 积木报表(一款免费Web报表工具)

一款免费的数据可视化报表&#xff0c;含报表和大屏设计&#xff0c;像搭建积木一样在线设计报表&#xff01;功能涵盖&#xff0c;数据报表、打印设计、图表报表、大屏设计等&#xff01; Web 版报表设计器&#xff0c;类似于excel操作风格&#xff0c;通过拖拽完成报表设计。…...

01-数据操作+数据预处理

1.n维数组&#xff0c;也称为张量&#xff08;tensor&#xff09;&#xff1a;tensor和ndarray没有本质区别。tensor是有数学上的严格定义&#xff0c;ndarray是计算机描述的&#xff1b;张量表示一个由数值组成的数组&#xff0c;这个数组可能有多个维度&#xff1b; 无论使用…...

macOS本地python环境/vscode/导入python包/设置python解释器

查看macbook本地是否有python环境 输入python或者python3&#xff0c;退出python环境使用exit()&#xff0c;别忘了括号 没有的话去官网安装https://www.python.org/ 2. 安装vscode 官网https://code.visualstudio.com/ 3. 安装插件 点击左边的“插件”按钮&#xff0c;安装…...

【转存】Go语言设计模式

导语| 设计模式是针对软件设计中常见问题的工具箱&#xff0c;其中的工具就是各种经过实践验证的解决方案。即使你从未遇到过这些问题&#xff0c;了解模式仍然非常有用&#xff0c;因为它能指导你如何使用面向对象的设计原则来解决各种问题&#xff0c;提高开发效率&#xff0…...

第十一章 升级与定制

第十一章 升级与定制 一、 RPM 包安装操作 RPM&#xff08;Redhat Packet Manager&#xff09;。 ①安装 rpm –i rpm 文件名 &#xff08;注&#xff1a;⑴常见用法&#xff1a;-ivh 参数显示安装过程和 hash 符#&#xff1b; ⑵覆盖安装&#xff1a;使用- -force 选项。…...

代码随想录算法训练营第二十二天|235. 二叉搜索树的最近公共祖先、701.二叉搜索树中的插入操作、450.删除二叉搜索树中的节点

目录 235. 二叉搜索树的最近公共祖先 1、递归实现 2、迭代法实现 701.二叉搜索树中的插入操作&#xff08;递归实现&#xff09; 450.删除二叉搜索树中的节点&#xff08;递归实现&#xff09; 235. 二叉搜索树的最近公共祖先 相对于 二叉树的最近公共祖先 本题就简单一些了…...

hbase表出现RIT删除方案

1.删除zookeeper中对应表注册信息 cd /opt/cloudera/parcels/CDH/lib/zookeeper/bin ./zkCli.sh -server node2:2181 --node2为仿真节点&#xff0c;生产需改 deleteall /hbase/table/表名 2.删除hdfs对应表数据 hadoop dfs -rm -r /hbase/data/default/表名 3.删除hbase:met…...

SQL学习(3)

SELECT 语句用于从表中选取数据。 SELECT 列名称 FROM 表名称 SELECT * FROM 表名称关键词 DISTINCT 用于返回唯一不同的值 SELECT DISTINCT 列名称 FROM 表名称WHERE 子句用于规定选择的标准 如需有条件地从表中选取数据&#xff0c;可将 WHERE 子句添加到 SELECT 语句。 S…...

连接型CRM助力医疗企业把“成本中心”变成“利润中心”

在市场竞争日益加剧的情形下&#xff0c;企业获客成本大幅上涨&#xff0c;存量客户的维护和开发开始被重视&#xff0c;售后服务部门的职责在企业中发挥的价值越来越大。因为企业售后服务不仅能帮助客户解决问题的部门&#xff0c;还是客户与企业沟通的桥梁&#xff0c;将客户…...

《Vue.js 设计与实现》—— 03 Vue.js 3 的设计思路

1. 声明式地描述 UI Vue.js 3 是一个声明式的 UI 框架&#xff0c;即用户在使用 Vue.js 3 开发页面时是声明式地描述 UI 的。 编写前端页面涉及的内容如下&#xff1a; DOM 元素&#xff1a;例如是 div 标签还是 a 标签属性&#xff1a;如 a 标签的 href 属性&#xff0c;再…...

2023年湖北省建设厅特种作业操作证报名条件是什么?

建筑施工特种作业人员是指在房屋建筑和市政工程施工活动中&#xff0c;从事可能对本人、他人及周围设备设施的安全造成重大危害作业的人员。建筑施工特种作业人员必须经建设主管部门考核合格&#xff0c;取得建筑施工特种作业人员操作资格证书&#xff08;以下简称“资格证书”…...

Redis 进阶

&#x1f972; &#x1f978; &#x1f90c; &#x1fac0; &#x1fac1; &#x1f977; &#x1f43b;‍❄️&#x1f9a4; &#x1fab6; &#x1f9ad; &#x1fab2; &#x1fab3; &#x1fab0; &#x1fab1; &#x1fab4; &#x1fad0; &#x1fad2; &#x1fad1;…...

伙伴匹配系统笔记---02

Java 8特性 1. stream / parallelStream 流失处理 2. Optional 可选类 一. 前端整合路由 1. 路由:vue 路由组件库地址:安装 | Vue Router (vuejs.org) 安装:yarn add vue-router@4 2. 整合路由: // 1. 定义路由组件. // 也可以从其他文件导入 const Home = { templ…...

Redis学习——单机版安装

目录 1.解压 2.安装gcc 3.执行make命令 4.复制redis的配置文件到默认安装目录下 5.修改redis.conf文件 6.启动redis服务与客户端 7.查看redis进行是否启动 8.关闭redis服务 9.redis性能测试 注意&#xff1a;安装redis前要安装jdk。 1.解压 [rootlxm148 install]# t…...