QT3学习之进阶理解信号和槽:如何自定义一个类信号,供其它类调用槽函数
下面是QWidget源码,定义了两个事件
/*!This event handler can be reimplemented in a subclass to receivewidget enter events.An event is sent to the widget when the mouse cursor enters thewidget.\sa leaveEvent(), mouseMoveEvent(), event()
*/void QWidget::enterEvent( QEvent * )
{
}/*!This event handler can be reimplemented in a subclass to receivewidget leave events.A leave event is sent to the widget when the mouse cursor leavesthe widget.\sa enterEvent(), mouseMoveEvent(), event()
*/void QWidget::leaveEvent( QEvent * )
{
}/*!This event handler can be reimplemented in a subclass to receivepaint events.A paint event is a request to repaint all or part of the widget.It can happen as a result of repaint() or update(), or because thewidget was obscured and has now been uncovered, or for many otherreasons.Many widgets can simply repaint their entire surface when askedto, but some slow widgets need to optimize by painting only therequested region: QPaintEvent::region(). This speed optimizationdoes not change the result, as painting is clipped to that regionduring event processing. QListView and QCanvas do this, forexample.Qt also tries to speed up painting by merging multiple paintevents into one. When update() is called several times or thewindow system sends several paint events, Qt merges these eventsinto one event with a larger region (see QRegion::unite()).repaint() does not permit this optimization, so we suggest usingupdate() when possible.When the paint event occurs, the update region has normally beenerased, so that you're painting on the widget's background. Thereare a couple of exceptions and QPaintEvent::erased() tells youwhether the widget has been erased or not.The background can be set using setBackgroundMode(),setPaletteBackgroundColor() or setBackgroundPixmap(). Thedocumentation for setBackgroundMode() elaborates on thebackground; we recommend reading it.\sa event(), repaint(), update(), QPainter, QPixmap, QPaintEvent
*/
1. 与内置事件处理机制的关联问题
在 Qt 3 里,对于像鼠标进入、移出这类事件,框架本身期望开发者通过重写对应的虚函数来处理,例如重写 QWidget
类中的 enterEvent(QEvent *)
和 leaveEvent(QEvent *)
虚函数。而你定义的 onMouseEnter
和 onMouseLeave
只是普通的成员函数,它们并没有自动与鼠标进入、移出的实际事件触发关联起来。也就是说,当鼠标真正进入或移出按钮这个 QWidget
派生类对象时,Qt 3 的事件处理系统并不知道要去调用你这两个函数,所以无法按预期响应鼠标相关行为并发射信号。
2. 信号与槽连接机制的差异
Qt 3 使用的信号与槽连接语法和方式与后续版本不同,遵循的是宏 SIGNAL
和 SLOT
的语法形式,像这样:
connect(senderObject, SIGNAL(signalName()), receiverObject, SLOT(slotName()));
仅仅定义了 onMouseEnter
和 onMouseLeave
这两个槽函数,但没有在代码中展示出它们是如何通过正确的 connect
语句与对应的能反映鼠标进入、移出的内置信号(例如 QWidget
发出的相关鼠标事件信号)建立连接的。没有这个连接,即使函数逻辑本身没问题,在运行时也不会被触发执行,导致无法响应相应事件。
3. 缺少必要的头文件包含(可能)
虽然从之前你整体代码的展示来看有一些必要的头文件包含了,但就这两个函数所在的代码片段单独看,如果涉及到一些例如信号与槽相关的宏定义或者 QEvent
类型(假设在更完整代码里 enterEvent
和 leaveEvent
等处理中会用到)等使用时,不清楚是否有完整包含对应的头文件。在 Qt 3 中如果缺少必要头文件,编译阶段就可能出现找不到对应定义等错误,导致代码无法通过编译,也就不能正确运行了。
4. 缺少对父类事件处理的调用(可能影响行为)
当重写事件处理相关函数时(虽然你这里目前写法不是标准的重写方式,但假设要改成符合规范的方式),为了保证原有的事件处理逻辑链条完整,通常需要在重写的函数中合适的地方调用父类的对应事件处理函数。比如在重写 enterEvent
或者 leaveEvent
函数时,在完成自定义的信号发射等操作后,调用 QPushButton::enterEvent(event)
或 QPushButton::leaveEvent(event)
(取决于具体重写的函数),不然可能会破坏原有的一些默认行为,例如界面更新等操作可能无法正常进行,影响整个按钮在界面中的表现以及与其他部件交互的逻辑一致性。
以下是一种修改为符合 Qt 3 规范的示例代码,来正确处理鼠标进入、移出事件并发射相应信号:
#ifndef CUSTOMSTYLEDBUTTON_H
#define CUSTOMSTYLEDBUTTON_H#include <qpushbutton.h>
#include <qobject.h>
#include <qevent.h>class CustomStyledButton : public QPushButton
{Q_OBJECT
public:CustomStyledButton(QWidget* parent = 0);~CustomStyledButton();signals:void mouseEntered();void mouseLeft();protected:void enterEvent(QEvent *event); // 重写鼠标进入事件处理函数void leaveEvent(QEvent *event); // 重写鼠标移出事件处理函数private:bool m_mouseInside;
};#endif // CUSTOMSTYLEDBUTTON_H
源文件(CustomStyledButton.cpp
):
#include "CustomStyledButton.h"CustomStyledButton::CustomStyledButton(QWidget* parent): QPushButton(parent),m_mouseInside(false)
{
}CustomStyledButton::~CustomStyledButton()
{
}// 重写鼠标进入事件处理函数
void CustomStyledButton::enterEvent(QEvent *event)
{if (!m_mouseInside) {m_mouseInside = true;emit mouseEntered();}QPushButton::enterEvent(event); // 调用父类的进入事件处理函数,确保原有逻辑延续
}// 重写鼠标移出事件处理函数
void CustomStyledButton::leaveEvent(QEvent *event)
{if (m_mouseInside) {m_mouseInside = false;emit mouseLeft();}QPushButton::leaveEvent(event); // 调用父类的移出事件处理函数,确保原有逻辑延续
}
在上述代码中:
- 通过在类中重写
enterEvent
和leaveEvent
这两个虚函数,使其能够被 Qt 3 的事件处理系统在相应鼠标事件发生时自动调用,符合 Qt 3 处理这类事件的标准流程。 - 在重写的函数里根据
m_mouseInside
的状态来决定是否发射mouseEntered
和mouseLeft
信号,以此实现了想要的在鼠标进入、移出时通知外部的功能。 - 同时调用了父类对应的事件处理函数,保证了原有事件处理逻辑(例如可能涉及到界面显示相关的默认操作等)能够继续执行,维持了整个按钮行为的完整性和正确性。
你可以根据实际需求进一步扩展这些函数中的逻辑,比如在信号发射后,外部连接这些信号的槽函数里可以进行改变按钮样式等更多与业务相关的操作。
在 Qt 3 中,要调用上述处理鼠标进入和移出事件并发射信号的代码,可以按照以下方式进行操作:
1. 在其他类中连接信号与槽
假设你有一个包含 CustomStyledButton
实例的窗口类(例如继承自 QWidget
或者 QMainWindow
等的类),以下是在这个窗口类的构造函数中连接 CustomStyledButton
的鼠标相关信号到对应的槽函数的示例代码(这里的槽函数是你在窗口类中自定义的用于响应按钮鼠标进入、移出的处理函数):
#include "your_window_header.h" // 替换为你实际的窗口类头文件
#include "CustomStyledButton.h"YourWindowClass::YourWindowClass(QWidget *parent): QWidget(parent)
{CustomStyledButton *customButton = new CustomStyledButton(this);// 使用Qt 3的信号与槽连接语法进行连接connect(customButton, SIGNAL(mouseEntered()), this, SLOT(onButtonMouseEntered()));connect(customButton, SIGNAL(mouseLeft()), this, SLOT(onButtonMouseLeft()));// 其他界面布局相关操作,比如设置按钮位置、大小等customButton->setGeometry(100, 100, 100, 50);
}
在上述代码中:
- 首先创建了一个
CustomStyledButton
实例,然后使用connect
函数按照 Qt 3 的语法格式,将CustomStyledButton
实例发出的mouseEntered
信号连接到当前窗口类(YourWindowClass
)的onButtonMouseEntered
槽函数,同理将mouseLeft
信号连接到onButtonMouseLeft
槽函数。这里的onButtonMouseEntered
和onButtonMouseLeft
是你需要在YourWindowClass
中定义的成员函数,用于具体处理按钮鼠标进入、移出时想要执行的操作,示例如下:
class YourWindowClass : public QWidget
{Q_OBJECT
public:YourWindowClass(QWidget *parent = 0);
private slots:void onButtonMouseEntered();void onButtonMouseLeft();
};
对应的 .cpp
文件中实现这两个槽函数:
#include "YourWindowClass.h"void YourWindowClass::onButtonMouseEntered()
{// 在这里编写当按钮鼠标进入时想要执行的操作,比如改变按钮的外观CustomStyledButton *button = qobject_cast<CustomStyledButton *>(sender());if (button) {button->setStyleSheet("background-color: yellow;"); // 示例,将按钮背景设为黄色}
}void YourWindowClass::onButtonMouseLeft()
{// 在这里编写当按钮鼠标移出时想要执行的操作,比如恢复按钮原来的外观CustomStyledButton *button = qobject_cast<CustomStyledButton *>(sender());if (button) {button->setStyleSheet(""); // 恢复默认样式,示例做法,具体按实际需求调整}
}
在 onButtonMouseEntered
和 onButtonMouseLeft
函数中:
- 通过
qobject_cast
尝试将发送信号的对象转换为CustomStyledButton
类型,这样可以获取到具体触发信号的按钮实例(在有多个同类按钮等复杂场景下很有用),然后就可以针对该按钮进行相应的操作了,比如改变它的样式(这里只是简单示例了通过setStyleSheet
改变背景颜色来体现按钮外观变化)。
2. 在主函数中使用窗口类及按钮
在 main
函数中创建并显示包含了 CustomStyledButton
的窗口,示例代码如下:
#include <qapplication.h>
#include "YourWindowClass.h"int main(int argc, char *argv[])
{QApplication app(argc, argv);YourWindowClass window;window.show();return app.exec();
}
这样,当运行程序时,鼠标进入 CustomStyledButton
按钮区域时,会触发 mouseEntered
信号,进而调用 YourWindowClass
中定义的 onButtonMouseEntered
槽函数执行相应操作;当鼠标移出按钮区域时,会触发 mouseLeft
信号并调用 onButtonMouseLeft
槽函数来执行对应的操作,实现了对鼠标进入、移出按钮这一行为的响应及相关处理逻辑。
需要注意的是,以上代码只是示例性质,你可以根据实际需求进一步扩展和完善功能,比如添加更多复杂的界面交互逻辑、更丰富的按钮样式改变操作等内容。
相关文章:
QT3学习之进阶理解信号和槽:如何自定义一个类信号,供其它类调用槽函数
下面是QWidget源码,定义了两个事件 /*!This event handler can be reimplemented in a subclass to receivewidget enter events.An event is sent to the widget when the mouse cursor enters thewidget.\sa leaveEvent(), mouseMoveEvent(), event() */void QWi…...
(Image Signal Processor)ISP简介
文章目录 ISP功能简介ISP的主要功能ISP的主要模块1. **黑电平校正(Black Level Correction, BLC)**2. **噪声去除(Denoise)**3. **色彩校正(Color Correction Matrix, CCM)**4. **自动曝光(Auto…...
upload-labs靶场保姆级攻略
第一关:删除前端js校验 写一个一句话木马,命名为1.php 一句话木马 浏览上传 我们发现不可以上传,右键检查,依次点击 找到return checkFile()删掉,再上传 去看一下是否已经写入进去一句话木马 页面什么也没有ÿ…...
02、10个富士胶片模拟的设置
二色彩 1、色彩的加减控制全局的饱和度增减; 2、色彩效果只提升暖色系饱和度; 3、FX蓝色大幅度提升蓝色系饱和度; 4、三个参数都不改变颜色的色相。 2.1 色彩 色彩调整的是拍摄画面整体的色彩饱和程度 2.2色彩效果 调整的是画面中暖色…...
大模型呼出机器人详解
大模型呼出机器人详解 原作者:开源呼叫中心FreeIPCC,其Github:https://github.com/lihaiya/freeipcc 大模型呼出机器人是基于大规模深度学习模型构建的智能化客服系统,它能够处理海量数据并学习其中的规律,从而实现高…...
计算机基础知识——数据结构与算法(三)(山东省大数据职称考试)
大数据分析应用-初级 第一部分 基础知识 一、大数据法律法规、政策文件、相关标准 二、计算机基础知识 三、信息化基础知识 四、密码学 五、大数据安全 六、数据库系统 七、数据仓库. 第二部分 专业知识 一、大数据技术与应用 二、大数据分析模型 三、数据科学 数据结构与算法…...
【Unity功能集】TextureShop纹理工坊(三)图层(下)
项目源码:在终章发布 索引 图层渲染绘画区域图层Shader 编辑器编辑模式新建图层设置当前图层上、下移动图层删除图层图层快照 图层 在PS中,图层的概念贯穿始终(了解PS图层),他可以称作PS最基础也是最强大的特性之一。…...
基于 SSM 框架 Vue 电脑测评系统:引领电脑评测新方向
4系统概要设计 4.1概述 本系统采用B/S结构(Browser/Server,浏览器/服务器结构)和基于Web服务两种模式,是一个适用于Internet环境下的模型结构。只要用户能连上Internet,便可以在任何时间、任何地点使用。系统工作原理图如图4-1所示: 图4-1系统工作原理…...
Android笔记【19】
具体示例 run: val result someObject.run {// 这里可以使用 thisthis.someMethod() }let: val result someObject?.let {// 这里使用 itit.someMethod() }with: val result with(someObject) {// 这里使用 thissomeMethod() }apply: val obj SomeClass().apply {// 这里使…...
Redis 中 IntSet 底层数据结构
IntSet 底层数据结构 序言: 像字符串 SDS 只是保存了一个变量的值,但是像 Redis 中也是需要保存一些集合元素的,这里就介绍一下其中一种集合 IntSet,由于是 Set 所以也有 Set 的一些特性,不过也多加了一些特性: ● 唯…...
自然语言处理:我的学习心得与笔记
Pytorch 1.Pytorch基本语法 1.1 认识Pytorch 1.2 Pytorch中的autograd 2.Pytorch初步应用 2.1 使用Pytorch构建一个神经网络 2.2 使用Pytorch构建一个分类器 小节总结 学习了什么是Pytorch. 。Pytorch是一个基于Numpy的科学计算包,作为Numpy的替代者,向用户提供使用GPU强大…...
Altair: 轻松创建交互式数据可视化
Altair: 轻松创建交互式数据可视化 Altair 是一个基于 Vega-Lite 的 Python 数据可视化库,它旨在简化数据可视化的创建过程,尤其适用于统计图表的生成。Altair 强调声明式编码方式,通过简单的语法,用户能够快速创建复杂的交互式图…...
【NLP】序列到序列(seq2seq)建模工具fairseq使用详解
文章目录 一、fairseq简介二、安装方式2.1 pip安装2.2 源码安装 三、fairseq命令工具3.1 fairseq-preprocess3.2 fairseq-train3.3 fairseq-generate3.4 fairseq-interactivate3.5 fairseq-score3.6 fairseq-eval-lm 4. 常见报错报错1 参考资料 一、fairseq简介 fairseq 是 Fa…...
[极客大挑战 2019]HardSQL 1
[极客大挑战 2019]HardSQL 1 打开实例,发现是个登陆页面,查看源代码,发现又是GET提交check.php 万能密码尝试 不太行,怀疑字段或者空格被过滤,尝试闭合不加其他东西 确认空格、union、and等都被过滤了,尝试…...
天空分割代码
目录 依赖项: 分割源代码: 依赖项: groundingdino Grounded-Segment-Anything 分割源代码: generate_sky_mask.py import os, syssys.path.append(os.getcwd()) # Change to your folder here sys.path.append(Grounded-Segment-Anything)import argparse import os…...
Leetcode 三角形最小路径和
算法思想与代码详解 这段代码采用的是**动态规划(Dynamic Programming)**的思想,用来解决“120. 三角形最小路径和”问题。动态规划通过将问题分解成更小的子问题,并通过保存子问题的解来避免重复计算,从而提高效率。…...
[Unity]Unity跨平台开发之Android入门
安卓环境配置 安装依赖项 推荐使用Unity Hub进行安装,安装时勾选Android Build Support、Android SDK & NDK Tools、OpenJDK。或者指定已安装的依赖项。(注意:指定的依赖项需要是从UnityHub安装的。比如之前安装Unity2022时勾选了上述依…...
搭建Flume
title: 搭建Flume date: 2024-11-30 23:59:00 categories: - 服务器 tags: - Flume - 大数据搭建Flume 本次实验环境:Centos 7-2009、JDK 8、Flume-1.11.0 开始安装 1. 下载安装文件到服务器 # 使用wget命令下载flume文件(二选一) wget …...
【从零开始入门unity游戏开发之——C#篇10】循环结构——while、do-while、for、foreach的使用
文章目录 一、while 循环1、语法:2、示例: 二、 do-while 循环1、语法:2、示例: 三、for 循环1、语法:2、示例: 四、foreach 循环1、语法:2、示例: 五、总结对比六、注意事项七、使用…...
flask flask-socketio创建一个网页聊天应用
应用所需环境: python 3.11.11 其他 只需要通过这个命令即可 pip install flask3.1.0 Flask-SocketIO5.4.1 -i https://mirrors.tuna.tsinghua.edu.cn/pypi/web/simple 最好是用conda创建一个新的虚拟环境来验证 完整的pip list如下 Package Version ----…...
MVCC了解
MVCC(多版本并发控制)学习指南及代码示例 一、学习MVCC前先了解什么 1. MVCC的定义和作用 MVCC是一种并发控制机制,用于解决并发事务访问数据库时可能出现的问题,如脏读、不可重复读和幻读。它通过为每个数据行维护多个版本来实…...
LabVIEW随机扫描成像系统
利用LabVIEW开发了一套随机扫描成像系统,利用硬件时钟实现声光偏转器(AOD)的频率控制与信号采集之间的高速时间同步。系统利用了高精度的时钟同步技术,确保了成像精度和重复性,从而有效提高了成像速度和质量。 项目背景…...
系统移植——Linux 内核顶层 Makefile 详解
一、概述 Linux Kernel网上下载的版本很多NXP等有自己对应的版本。需要从网上直接下载就可以。 二、Linux内核初次编译 编译内核之前需要先在 ubuntu 上安装 lzop 库 sudo apt-get install lzop 在 Ubuntu 中 新 建 名 为 “ alientek_linux ” 的 文 件夹 , …...
【一文了解】C#重点-委托1
本篇文章来学习一下C#的委托,委托是C#中的一个重要概念,它允许将方法作为参数传递给其他方法。C#中的委托类似于C或C中的函数指针,并且类型安全。 委托 1.委托的定义 委托(delegate)是方法的代理/代表,委托…...
LeetCode hot100-87
https://leetcode.cn/problems/longest-increasing-subsequence/?envTypestudy-plan-v2&envIdtop-100-liked 300. 最长递增子序列 已解答 中等 相关标签 相关企业 给你一个整数数组 nums ,找到其中最长严格递增子序列的长度。子序列 是由数组派生而来的序列&a…...
项目26:简易在线论坛 --- 《跟着小王学Python·新手》
项目26:简易在线论坛 — 《跟着小王学Python新手》 《跟着小王学Python》 是一套精心设计的Python学习教程,适合各个层次的学习者。本教程从基础语法入手,逐步深入到高级应用,以实例驱动的方式,帮助学习者逐步掌握Pyth…...
知乎 PB 级别 TiDB 数据库集群管控实践
以下文章来源于知乎技术专栏 ,作者代晓磊 导读 在现代企业中,数据库的运维管理至关重要,特别是面对分布式数据库的复杂性和大规模集群的挑战。作为一款兼容 MySQL 协议的分布式关系型数据库,TiDB 在高可用、高扩展性和强一致性方…...
Intel(R) Iris(R) Xe Graphics安装Anaconda、Pytorch(CPU版本)
一、Intel(R) Iris(R) Xe Graphics安装Anaconda 下载网址:https://repo.anaconda.com/archive/ 双击Anaconda3-2024.10-1-Windows-x86_64,一直下一步,选择安装的路径位置,一直下一步就安装完成了。打开Anaconda PowerShell Promp…...
RK3588 , mpp硬编码rgb, 保存MP4视频文件.
RK3588 , mpp硬编码yuv, 保存MP4视频文件. ⚡️ 传送 ➡️ RK3588, FFmpeg 拉流 RTSP, mpp 硬解码转RGBRk3588 FFmpeg 拉流 RTSP, 硬解码转RGBUbuntu x64 架构, 交叉编译aarch64 FFmpeg mppCode Init MppMPP_RET init_mpp...
揭开 Choerodon UI 拖拽功能的神秘面纱
01 引言 系统的交互方式主要由点击、选择等组成。为了提升 HZERO 系统的用户体验、减少部分操作步骤,组件库集成了卓越的拖拽功能,让用户可以更高效流畅的操作系统。 例如:表格支持多行拖拽排序、跨表数据调整、个性化调整列顺序࿱…...
常用网络协议简述
网络协议是计算机网络中规定数据交换格式和交换规则的一套标准。以下是一些常用的网络协议及其简要解释: HTTP(HyperText Transfer Protocol,超文本传输协议) 用于从网络传输超文本数据到本地浏览器的传输协议。基于TCP协议&…...
本地电脑使用命令行上传文件至远程服务器
将本地文件上传到远程服务器,在本地电脑中cmd使用该命令: scp C:/Users/"你的用户名"/Desktop/environment.yml ws:~/environment.yml 其中,C:/Users/“你的用户名”/Desktop/environment.yml是本地文件的路径, ~/en…...
笔记day2
文章目录 1 NavigationDuplivated警告错误2 Home模块组件拆分3 三级联动组件完成4 完成其余静态组件5 POSTMAN测试接口6 axios二次封装6.1 为什么需要进行二次封装axios?6.2 在项目中经常API文件夹【axios】6.3 axios基础不好,可以参考git|NPM关于axios文…...
排序算法(3)——归并排序、计数排序
目录 1. 归并排序 1.1 递归实现 1.2 非递归实现 1.3 归并排序特性总结 2. 计数排序 代码实现 3. 总结 1. 归并排序 基本思想: 归并排序(merge sort)是建立在归并操作上的一种有效的排序算法,该算法是采用分治法࿰…...
【5】C#期末复习第5套
1.int a[3][2]{2,4,6,8,10.12};则*(a[1]1)的值是8 指向(a[1]的第二个元素) 再* 2.合并字符串库函数strcat 3.比较字符串库函数strcmp 4.执行结果是x3,y3 int x3,y; int *px&x; y*px; (优先级高于*) 5.*p[5]没…...
jquery虚拟键盘插件jqkeyboard
jqKeyboard是一款jquery虚拟键盘插件。该虚拟键盘插件依赖于jquery ui,通过该插件,可以在页面中生成一个扁平风格的虚拟键盘面板。 在线预览 下载 安装 可以通过npm来安装jqKeyboard虚拟键盘插件。 npm install jq keyboard --save 使用方法 在页面…...
IMX6ULL开发板把屏幕刷黑(黑屏)的程序
承接博文 IMX6ULL开发板基础实验:Framebuffer驱动程序的简单应用实例代码详细分析 很容易写出把屏幕刷黑的程序… Ubuntu中的目录/home/book/mycode下新建目录C0003_draw_lcd_black,然后把把博文中的源码/home/book/mycode/C0002_show_pixel复制到目录C0003_draw_l…...
OpenCV基本图像处理操作(三)——图像轮廓
轮廓 cv2.findContours(img,mode,method) mode:轮廓检索模式 RETR_EXTERNAL :只检索最外面的轮廓;RETR_LIST:检索所有的轮廓,并将其保存到一条链表当中;RETR_CCOMP:检索所有的轮廓,并将他们组…...
C语言学习day24:DLL给程序打上窗口破解补丁
简言 在上一章节我们知道了DLL,编写DLL以及最重要的导出DLL,这一章节我们学习如何给应用打上窗口破解补丁(DLL)。 流程 工具:studyPE 操作: 把要补丁的程序拖入PE中点击导入菜单,导入dll函…...
大模型呼出机器人的应用场景
大模型呼出机器人的应用场景 原作者:开源呼叫中心FreeIPCC,其Github:https://github.com/lihaiya/freeipcc 大模型呼出机器人的应用场景十分广泛,涵盖了多个行业和服务领域。以下是对其应用场景的详细归纳: 一、客户…...
el-date-picker筛选时间日期选择范围
el-date-picker 选择时间日期范围-> 昨天 近7天 30天<template><div class"main"><div class"header"><el-form :model"form" label-width"auto"><el-button plain click"setTimeToYesterday&q…...
【Apache Paimon】-- 10 -- Paimon 0.9.0 集成 Hive 3.1.3
参考官方 0.9.0 版本文档:https://paimon.apache.org/docs/0.9/engines/hive/ 1、下载依赖包到 hive lib 下 $ cd $HIVE_HOME/$ mkdir auxlib$ cd auxlib$ wget https://repo.maven.apache.org/maven2/org/apache/paimon/paimon-hive-connector-3.1/0.9.0/paimon-hive-connec…...
vue2如何写一个轮播图
需求描述 写一个轮播图,可以实现如下效果: 页面上展示三个轮播图元素默认状态下,进行自动轮播,循环播放一旦鼠标移入轮播图范围内,并停留在元素a上,则轮播图停止自动播放,同时将元素a放大 核…...
基础库httpx的使用
urllib 库和 requests 库的使用,已经可以爬取绝大多数网站的数据,但对于某些网站依然无能为力。什么情况?这些网站强制使用HTTP/2.0协议访问,这时 urllib 和requests 是无法爬取数据的,因为它们只支持 HTTP/1.1,不支持…...
MYSQL 利用concat函数 生成更新或者插入SQL
有时候需要批量运维一批数据,一条一条写SQL比较麻烦,可以使用下面的方法批量生成select sales_order_number,a.sog_line_id,actual_price,sales_goods_unit_price,b.id,concat(update your_table set actual_price, sales_goods_unit_price, where id,b…...
Backend For Frontend的学习分享
晚上公司开了一个技术分享会,主要内容就是公司的项目架构,会中讲解了项目整体架构是BFF架构,就是在微服务之上多加了一层。 除此之外,还讲解了DDD设计思想,主要用于各个业务中台,如订单中台、用户中台等。…...
KS曲线python实现
目录 实战 实战 # 导入第三方模块 import pandas as pd import numpy as np import matplotlib.pyplot as plt# 自定义绘制ks曲线的函数 def plot_ks(y_test, y_score, positive_flag):# 对y_test重新设置索引y_test.index np.arange(len(y_test))# 构建目标数据集target_dat…...
【GO环境安装】mac系统+GoLand使用
文章目录 下载安装包环境配置GoLandGo Modules 下载安装包 地址:GO下载地址 下载好后直接进行安装: 进入terminal,查看是否安装成功: 环境配置 在文稿下面创建工作目录: 在文稿下新建Go_Works文件夹,在…...
2025年入职/转行网络安全,该如何规划?网络安全职业规划
网络安全是一个日益增长的行业,对于打算进入或转行进入该领域的人来说,制定一个清晰且系统的职业规划非常重要。2025年,网络安全领域将继续发展并面临新的挑战,包括不断变化的技术、法规要求以及日益复杂的威胁环境。以下是一个关…...
linux中 umask 命令
Umask Umask(User File Creation Mode Mask)是Linux系统中的一项命令,用于设定新创建文件和目录的默认权限。 一、umask的作用 Umask通过掩码操作,限制新文件和目录的访问权限。在Linux中,所有的文件和目录都被分配…...