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

QT去除窗口边框(无边框)

ch21_TencentMeetingLogin::ch21_TencentMeetingLogin(QWidget *parent): QDialog(parent)
{ui.setupUi(this);this->setWindowFlags(Qt::FramelessWindowHint);//去除窗口边框
}

但此时窗口不能拖动且点击任务栏程序图标不能最小化!

 this->setWindowFlags(Qt::FramelessWindowHint | Qt::WindowMinMaxButtonsHint);

上面代码设置Qt框架中窗口的属性。具体来说,它调用了一个窗口对象(假设为this指针所指向的对象)的setWindowFlags方法,以设置该窗口的标志(Flags)。这里设置的标志有两个:Qt::FramelessWindowHintQt::WindowMinMaxButtonsHint

  • Qt::FramelessWindowHint:这个标志用于创建一个无边框的窗口。通常,窗口会有一个默认的边框,包括标题栏、边缘等。设置了这个标志后,窗口将不再显示这些元素,使得窗口可以自定义外观。

  • Qt::WindowMinMaxButtonsHint:这个标志用于在窗口的标题栏上显示最小化(Min)和最大化(Max)按钮。在设置无边框后,Qt::WindowMinMaxButtonsHint可能不会生效,因为无边框窗口通常不会有标题栏,也就没有最小化等按钮,从而也无法显示这些按钮。所以我们需要手动设置!

当你在Qt中设置一个窗口为无边框(Qt::FramelessWindowHint)时,窗口通常会失去默认的拖动和大小调整功能,因为这些功能通常依赖于窗口的边框和标题栏。就像Qt::WindowMinMaxButtonsHint 标志可能不会在无边框窗口中生效,因为它依赖于标题栏来显示最小化和最大化按钮。

如何实现窗口移动

去掉窗口边框后,窗口无法移动,如何让窗口动起来呢?

重写鼠标按下,移动的事件

protected:void mouseMoveEvent(QMouseEvent *event) override;void mousePressEvent(QMouseEvent *event) override;

注意相对位置和绝对位置:

窗口位置:this->pos()窗口左上角相对于桌面左上角        

鼠标位置:event->pos()是鼠标相对于应用程序的位置,相对位置

                  event->globalPos()相对于桌面原点的位置,绝对位置

private:QPoint diff_pos;//鼠标和窗口位置的距离QPoint window_pos;//鼠标位置QPoint mouse_pos;//窗口位置
void Widget::mousePressEvent(QMouseEvent *event)
{mouse_pos = event->globalPos();//鼠标绝对位置window_pos = this->pos();//窗口绝对位置diff_pos = mouse_pos - window_pos;//距离差
}void Widget::mouseMoveEvent(QMouseEvent *event)
{QPoint pos = event->globalPos();//此时鼠标的位置this->move(pos-diff_pos);//计算窗口的位置在哪里}

自定义标题栏并实现拖拽拉伸

去掉窗口边框后,没有标题栏,需要自定义标题栏。创建标题栏界面类,添加到界面上,并添加最小化,最大化,关闭按钮。

创建标题栏类CTitleBar

头文件

#ifndef CTITLEBAR_H
#define CTITLEBAR_H#include <QWidget>
#include <QLabel>
#include <QPushButton>
class CTitleBar : public QWidget//所有的窗口都需要QWidget
{Q_OBJECT
public:explicit CTitleBar(QObject *parent = nullptr);~CTitleBar();
private://m表示成员函数,p表示指针QLabel *m_pLogo;QLabel *m_ptitleTextLabel;QPushButton *m_pSetBtn;QPushButton *m_pMinBtn;QPushButton *m_pMaxBtn;QPushButton *m_pCloseBtn;private:void initUI();//UI初始化
};#endif // CTITLEBAR_H

cpp

#include "ctitlebar.h"
#include <QHBoxLayout>
CTitleBar::CTitleBar(QObject *parent)
{initUI();
}CTitleBar::~CTitleBar()
{}void CTitleBar::initUI()
{//禁止父窗口影响子窗口的样式setAttribute(Qt::WA_StyledBackground);this->setFixedHeight(32+5*2);//32+上下距离this->setStyleSheet("background-color:rgb(155,155,155)");m_pLogo = new QLabel(this);m_pLogo->setFixedSize(32,32);m_pLogo->setText("logo");m_ptitleTextLabel = new QLabel(this);m_ptitleTextLabel->setText("我是标题");m_ptitleTextLabel->setFixedWidth(120);m_pSetBtn = new QPushButton(this);m_pSetBtn->setFixedSize(32,32);m_pMinBtn = new QPushButton(this);m_pMinBtn->setFixedSize(32,32);m_pMaxBtn = new QPushButton(this);m_pMaxBtn->setFixedSize(32,32);m_pCloseBtn = new QPushButton(this);m_pCloseBtn->setFixedSize(32,32);QHBoxLayout *pHlay = new QHBoxLayout(this);pHlay->addWidget(m_pLogo);pHlay->addWidget(m_ptitleTextLabel);pHlay->addStretch();//加弹簧pHlay->addWidget(m_pSetBtn);pHlay->addWidget(m_pMinBtn);pHlay->addWidget(m_pMaxBtn);pHlay->addWidget(m_pCloseBtn);pHlay->setContentsMargins(5,5,5,5);
}

widget.h

private:void initUI();CTitleBar *m_pTitleBar = nullptr;//标题栏

widget.cpp

void Widget::initUI()
{m_pTitleBar = new CTitleBar(this);QWidget *w = new QWidget(this);w->setMinimumSize(800,600);QVBoxLayout *pVlay = new QVBoxLayout(this);pVlay->addWidget(m_pTitleBar);pVlay->addWidget(w);pVlay->setContentsMargins(0,0,0,0);
}

一个很有用的Qt属性:

    //禁止父窗口影响子窗口的样式setAttribute(Qt::WA_StyledBackground);

无边框窗口拖拽移动另外一种的方法

#include <qt_windows.h>
void CTitleBar::mousePressEvent(QMouseEvent *event)
{if(ReleaseCapture()){QWidget *pWindow = this->window();if(pWindow->isTopLevel()){SendMessage(HWND(pWindow->winId()),WM_SYSCOMMAND,SC_MOVE+HTCAPTION,0);}}
}

这段代码的目的是允许用户通过点击自定义的标题栏来移动整个窗口。它通过释放鼠标捕获、获取顶级窗口句柄,并发送一个模拟点击标题栏的系统命令消息来实现这一功能。

ReleaseCapture()是一个Windows API函数,用于释放当前窗口的鼠标捕获。在Windows系统中,如果一个窗口捕获了鼠标,那么所有的鼠标输入都会发送到那个窗口,直到捕获被释放。在这里,它的目的是确保可以移动窗口,即使鼠标最初不是在这个窗口上按下的。如果ReleaseCapture()调用成功,它会返回非零值(在Windows中通常表示成功),函数继续执行内部的代码块。

QWidget *pWindow = this->window();: 这行代码获取CTitleBar所属的顶级窗口(即包含这个标题栏的窗口)。this->window()调用返回的是CTitleBar的直接或间接父窗口,且这个父窗口必须是顶级窗口(即没有父窗口的窗口,通常是应用程序的主窗口)。

if(pWindow->isTopLevel()){...}: 这行代码检查获取到的窗口是否是顶级窗口。这是必要的,因为只有顶级窗口才能被移动。

发送WM_SYSCOMMAND消息:

  • SendMessage(HWND(pWindow->winId()),WM_SYSCOMMAND,SC_MOVE+HTCAPTION,0);: 这行代码是Windows API的调用,用于发送一个系统命令消息(WM_SYSCOMMAND)到指定的窗口(在这里是pWindow)。WM_SYSCOMMAND消息用于执行系统命令,比如最小化、最大化、关闭窗口或移动窗口等。
  • HWND(pWindow->winId())将Qt的窗口句柄(winId()返回)转换为Windows的句柄类型(HWND)。
  • SC_MOVE+HTCAPTION是一个组合值,SC_MOVE表示移动窗口的命令,HTCAPTION是一个特殊的击中测试代码,表示标题栏区域。将这两个值相加,告诉系统像用户点击了标题栏一样移动窗口。
  • 最后一个参数0是额外的消息信息,对于WM_SYSCOMMANDSC_MOVE+HTCAPTION的组合来说,这个参数通常不需要。

这代码依赖于Windows特定的API,不适用于跨平台开发!

无边窗口的拉伸改变大小 

 

#include <qt_windows.h>

未完待续

相关文章:

QT去除窗口边框(无边框)

ch21_TencentMeetingLogin::ch21_TencentMeetingLogin(QWidget *parent): QDialog(parent) {ui.setupUi(this);this->setWindowFlags(Qt::FramelessWindowHint);//去除窗口边框 } 但此时窗口不能拖动且点击任务栏程序图标不能最小化&#xff01; this->setWindowFlags(Q…...

【k8s】监控metrics-server

metrics-server介绍 Metrics Server是一个集群范围的资源使用情况的数据聚合器。作为一个应用部署在集群中。Metric server从每个节点上KubeletAPI收集指标&#xff0c;通过Kubernetes聚合器注册在Master APIServer中。为集群提供Node、Pods资源利用率指标。 就像Linux 系统一样…...

「Qt Widget中文示例指南」如何为窗口实现流程布局?(二)

Qt 是目前最先进、最完整的跨平台C开发工具。它不仅完全实现了一次编写&#xff0c;所有平台无差别运行&#xff0c;更提供了几乎所有开发过程中需要用到的工具。如今&#xff0c;Qt已被运用于超过70个行业、数千家企业&#xff0c;支持数百万设备及应用。 本文将展示如何为不…...

EditInPlace就地编辑:Dom vs Form

利用Dom和Form实现就地编辑&#xff08;EditInPlace&#xff09;功能&#xff0c;两者在实现方式、用户体验和适用场景上有一些区别。下面我将详细解释这些区别&#xff1a; 1. EditInPlace 就地编辑&#xff08;EditInPlace&#xff09;是一种用户界面设计模式&#xff0c;允…...

【SCT63142FIB】15W高集成、高效率的无线功率发射PMIC

SCT63142FIB 15W高集成、高效率的无线功率发射PMIC 描述 SCT63142是一款高度集成的电源管理IC&#xff0c;可实现符合WPC规范的高性能&#xff0c;高效率和成本效益的无线电源发送系统&#xff0c;支持高达15W的功率传输&#xff0c;可与无线应用特定控制器或基于通用MCU的发送…...

STM32F4系列单片机新玩法---Micropython--pyBoard

只需要更改main.py文件的内容即可&#xff0c;例程CRTLV 1、流水灯&#xff1a; # main.py -- put your code here! import pyb while(1): for n in range(1,5) ledpyb.LED(n) led.on() pyb.delay(1000) led.off() 2、灯条,可以改变delay值来凸显效果…...

MFC中如何在工具条动态增加菜单

在C:\temp\VCSamples-master\VC2010Samples\MFC\Visual C 2008 Feature Pack\WordPad 这个例子中倒是有在工具条上动态增加菜单的方法&#xff0c;但有个缺陷&#xff0c;必须预先将需要的按钮定死。现将方法总结如下&#xff1a; 效果如下&#xff1a;点击前&#xff1a; 点击…...

行为型模式-迭代器模式

迭代器模式&#xff08;Iterator Pattern&#xff09;是一种行为型设计模式&#xff0c;主要用于提供一种方法顺序访问一个聚合对象中的各个元素&#xff0c;而不需要暴露其内部表示。这个模式常被用于集合类对象&#xff08;如列表、数组、图等&#xff09;的实现中。 模式结构…...

SAP SD学习笔记17 - 投诉处理3 - Credit/Debit Memo依赖,Credit/Debit Memo

上一章讲了 请求书&#xff08;发票&#xff09;的取消。 SAP SD学习笔记16 - 请求书的取消 - VF11-CSDN博客 再往上几章&#xff0c;讲了下图里面的返品传票&#xff1a; SAP SD学习笔记14 - 投诉处理1 - 返品处理&#xff08;退货处理&#xff09;的流程以及系统实操&#…...

digit_eye开发记录(3): C语言读取MNIST数据集

在前两篇&#xff0c;我们解读了 MNIST 数据集的 IDX 文件格式&#xff0c;并分别用 C 和 Python 做了 读取 MNIST 数据集的实现。 基于 C 的代码稍长&#xff0c;基于 Python 的代码则明显更短&#xff0c;然而它们的共同特点是&#xff1a;依赖了外部库&#xff1a; 基于 C …...

快速学习GO语言总结

干货分享&#xff0c;感谢您的阅读&#xff01;备注&#xff1a;本博客将自己初步学习GO的总结进行分享&#xff0c;希望大家通过本博客可以在短时间内快速掌握GO的基本程序编码能力&#xff0c;如有错误请留言指正&#xff0c;谢谢&#xff01; 一、初步了解Go语言 &#xf…...

开源多媒体处理工具ffmpeg是什么?如何安装?使用ffmpeg将M3U8格式转换为MP4

目录 一、FFmpeg是什么二、安装FFmpeg&#xff08;windows&#xff09;三、将M3U8格式转换为MP4格式 一、FFmpeg是什么 FFmpeg是一款非常强大的开源多媒体处理工具&#xff0c;它几乎可以处理所有类型的视频、音频、字幕以及相关的元数据。 FFmpeg的主要用途包括但不限于&…...

Python面试实战:高效处理海量日志,找出高频IP

Python面试实战:高效处理海量日志,找出高频IP 问题描述 在处理海量服务器日志时,一个常见的需求是统计出现次数最多的IP地址。这不仅有助于分析网站访问流量,还能为安全监控提供有价值的信息。然而,当日志文件过大,无法一次性加载到内存时,如何高效地解决这个问题就成…...

基于Java Springboot蛋糕订购小程序

一、作品包含 源码数据库设计文档万字PPT全套环境和工具资源部署教程 二、项目技术 前端技术&#xff1a;Html、Css、Js、Vue、Element-ui 数据库&#xff1a;MySQL 后端技术&#xff1a;Java、Spring Boot、MyBatis 三、运行环境 开发工具&#xff1a;IDEA/eclipse 微信…...

Java进程为什么会消失

深夜&#xff0c;办公室里只剩下电脑屏幕的微光。小王正在紧张地盯着生产环境的监控面板&#xff0c;突然发现一个重要的Java应用进程不见了&#xff0c;就像人间蒸发一般。这种情况在Java开发中并不罕见&#xff0c;让我们一起走进这个技术探案&#xff0c;揭开Java进程神秘消…...

继上一篇,设置弹框次数以及自适应图片弹框,部分机型(vivo)老手机不显示的问题

上一篇写的本来测试好多型号都无事, 今天下午公司的战斗机vivo横空冒出… 晕 弹框直接显示都出不来了,现在还有用这种老的机型的,但是没办法咯~ 前端遇到这种兼容性的问题就要勇于解决 主要解决了这几点: // 添加图片加载事件 <imgv-if"imageUrl":src"image…...

【docker】容器卷综合讲解,以及go实现的企业案例

容器卷&#xff08;Volumes&#xff09;基础讲解&#xff1a; 容器概念 容器卷&#xff08;Volumes&#xff09;是 Docker 提供的一种持久化存储机制&#xff0c;允许容器持久化数据&#xff0c;即使容器被删除或重新创建&#xff0c;数据仍然可以保留。 卷是独立于容器的&…...

八、利用CSS制作导航栏菜单

8.1 水平顶部导航栏 水平菜单导航栏是网站设计中应用范围最广的导航设计&#xff0c;一般放置在页面的顶部。水平导航适用性强&#xff0c;几乎所有类型的网站都可以使用。 如果导航过于普通&#xff0c;无法容纳复杂的信息结构&#xff0c;就需要在内容模块较多的情况…...

windows下安装node.js和pnpm

首先&#xff0c;一定要powershell右键选择管理员身份运行&#xff0c;否则第三个命令报错。 # 安装 fnm (快速 Node 管理器) winget install Schniz.fnm# 配置 fnm 环境 fnm env --use-on-cd | Out-String | Invoke-Expression# 下载并安装 Node.js fnm use --install-if-mis…...

MyBlog(五) -- 用户注册页面完善

文章目录 前言一、用户数据提交1. 表单2. 校验数据3. 模版文件1. wait_start2. user_register 二、验证1. 发送邮件1. 注册163邮箱后登录并设置2. 开启IMAP/SMTP服务, IMAP/SMTP服务3. 新增授权密码 2.邮箱内容3.点击注册4.发送邮件5. 激活账号1. 完善激活功能 -- user_active2…...

NLP任务四大范式的进阶历程:从传统TF-IDF到Prompt-Tuning(提示词微调)

引言&#xff1a;从TF-IDF到Prompt-Tuning&#xff08;提示词微调&#xff09;&#xff0c;NLP的四次变革 自然语言处理&#xff08;NLP&#xff09;技术从最早的手工特征设计到如今的Prompt-Tuning&#xff0c;经历了四个重要阶段。随着技术的不断发展&#xff0c;我们的目标…...

量化交易系统开发-实时行情自动化交易-8.3.开拓者TBQuant平台

19年创业做过一年的量化交易但没有成功&#xff0c;作为交易系统的开发人员积累了一些经验&#xff0c;最近想重新研究交易系统&#xff0c;一边整理一边写出来一些思考供大家参考&#xff0c;也希望跟做量化的朋友有更多的交流和合作。 接下来会对于开拓者TBQuant平台介绍。 …...

第八课 Unity编辑器创建的资源优化_特效篇(Particle System)详解

无论是CPU还是GPU&#xff0c;粒子系统对其的影响面都是不容小觑的。随着项目的重度化和3A化&#xff0c;玩家的口味变挑剔了、游戏玩法复杂度变高了、画面的特效表现变复杂了......所以我们还是更加谨慎地对待粒子系统。 特效&#xff08;Particle System&#xff09; 游戏效…...

redis常见数据类型

Redis是一个开源的、内存中的数据结构存储系统&#xff0c;它可以用作数据库、缓存和消息代理&#xff0c;支持多种数据类型。 一、数据类型介绍 String&#xff08;字符串&#xff09; Redis中最基本的数据类型。可以存储任何类型的数据&#xff0c;包括字符串、数字和二进制…...

【解决安全扫描漏洞】---- 检测到目标站点存在 JavaScript 框架库漏洞

1. 漏洞结果 JavaScript 框架或库是一组能轻松生成跨浏览器兼容的 JavaScript 代码的工具和函数。如果网站使用了存在漏洞的 JavaScript 框架或库&#xff0c;攻击者就可以利用此漏洞来劫持用户浏览器&#xff0c;进行挂马、XSS、Cookie劫持等攻击。 1.1 漏洞扫描截图 1.2 具体…...

深入解析 Kubernetes 节点操作:Cordon、Uncordon 和 Drain 的使用与最佳实践

摘要 Kubernetes 是一个用于自动化容器部署、扩展和管理的开源系统&#xff0c;而节点管理是其核心功能之一。cordon、uncordon 和 drain 是 Kubernetes 提供的与节点操作相关的三个重要命令&#xff0c;用于节点的调度控制和维护管理。本文将从概念、命令解析、内部机制和最佳…...

python array矩阵相关操作

目录&#xff1a; 一、判断某个值是否在array二维数组的某列中 二、根据某列中的特定值筛选array数组 三、查找一个元素在二维 array 矩阵中的位置 四、判断array数组中的每个元素是否包含特定的子字符串 一、判断某个值是否在array二维数组的某列中 在 Python 中&#xf…...

网络安全——浅谈HTTP协议

HTTP请求 HTTP请求是客户端往服务端发送请求动作&#xff0c;告知服务器自己的要求。 HTTP请求由状态行、请求头、请求正文三部分组成&#xff1a; 状态行&#xff1a;包括请求方式Method、资源路径URL、协议版本Version&#xff1b;请求头&#xff1a;包括一些访问的域名、…...

BWO-CNN-BiGRU-Attention白鲸优化算法优化卷积神经网络结合双向门控循环单元时间序列预测,含优化前后对比

BWO-CNN-BiGRU-Attention白鲸优化算法优化卷积神经网络结合双向门控循环单元时间序列预测&#xff0c;含优化前后对比 目录 BWO-CNN-BiGRU-Attention白鲸优化算法优化卷积神经网络结合双向门控循环单元时间序列预测&#xff0c;含优化前后对比预测效果基本介绍模型描述程序设计…...

55 基于单片机的方波频率可调

目录 一、主要功能 二、硬件资源 三、程序编程 四、实现现象 一、主要功能 采用STC89C52单片机最小系统&#xff0c;设计DAC0832、放大器、与示波器显示方波&#xff0c;四位数码管显示频率&#xff0c;两个按键可调。 二、硬件资源 基于KEIL5编写C代码&#xff0c;PROT…...

SAP SD学习笔记15 - 投诉处理2 - 返品处理流程之 参照请求传票(发票)来生成返品传票

上一章讲了返品处理&#xff08;退货处理&#xff09;的流程。 SAP SD学习笔记14 - 投诉处理1 - 返品处理&#xff08;退货处理&#xff09;的流程以及系统实操&#xff0c;比如 返品传票&#xff1b;请求Block标记&#xff1b;收到退货之后的处理&#xff0c;请求传票的登录_…...

LWIP和FATFS 实现 FTP 服务端

目录 一、前言 二、LWIP 和 FTP 简介 1.LWIP 2.FTP 三、实现 FTP 服务端的主要步骤 1.初始化 LWIP 2.创建 FTP 服务器任务 3.处理客户端连接 4.实现 FTP 命令处理 5.文件系统操作 6.错误处理和日志记录 四、示例代码 1.创建FTP任务 2. FTP任务代码 3.处理交互数据…...

缓冲区的奥秘:解析数据交错的魔法

目录 一、理解缓存区的好处 &#xff08;一&#xff09;直观性的理解 &#xff08;二&#xff09;缓存区的好处 二、经典案例分析体会 &#xff08;一&#xff09;文件读写流&#xff08;File I/O Buffering&#xff09; BufferedOutputStream 和 BufferedWriter 可以加快…...

【MySQL — 数据库基础】MySQL的安装与配置 & 数据库简单介绍

数据库基础 本节目标 掌握关系型数据库&#xff0c;数据库的作用掌握在Windows和Linux系统下安装MySQL数据库了解客户端工具的基本使用和SQL分类了解MySQL架构和存储引擎 1. 数据库的安装与配置 1.1 确认MYSQL版本 处理无法在 cmd 中使用 mysql 命令的情况&a…...

如何使用Python解析从淘宝API接口获取到的JSON数据?

基本的 JSON 解析 当从淘宝 API 接口获取到数据后&#xff08;假设数据存储在变量response_data中&#xff09;&#xff0c;首先要判断数据类型是否为 JSON。如果是&#xff0c;就可以使用 Python 内置的json模块进行解析。示例代码如下&#xff1a; import json # 假设respon…...

Day1 生信新手笔记

生信新手笔记 生信学习第一天笔记打卡。 转录组学中&#xff1a; 上游分析-基于linux&#xff0c;包括质控、过滤、比对、定量&#xff1b; 下游分析-基于R语言&#xff0c;包括差异分析、富集分析、可视化。 1. 级别标题 一个井号加空格 就是一级标题&#xff0c;两个井号加…...

内网穿透步骤

步骤 第一次需要验证token window和linux的方法不同。 然后 启动 cpolar 服务&#xff1a; 在命令窗口中输入 cpolar.exe htttp 8080&#xff0c;启动内网穿透服务。确保命令窗口保持开启状态&#xff0c;以维持穿透效果。 cpolar.exe hhttp 8080 成功后 注意事项 命令窗口…...

docker启动容器,语句名词解释

#启动容器代码docker run -it -d --name dev_aios -v D:\project\aialign:/www/ -v D:\project\data\dev\aios:/myfile/data/dev/aios -w /www/stand-alone-aios/aios -p 9002:9000 --ulimit core0 aialign/python-base:1.0 bash名词解释 docker run: 这是 Docker 的命令&#…...

微服务之短信验证服务配置完后junit单元测试短信发送失败

总之岁月漫长&#xff0c;然而值得等待。 主要是版本冲突问题&#xff0c;具体报错与解决方法如下&#xff1a; 报错前&#xff1a; 启动失败 短信服务测试报错&#xff1a; 解决后&#xff1a; 启动成功 短信服务测试发送成功&#xff1a; 在使用 SpringBoot 开发时&am…...

QSqlTableModel的使用

实例功能 这边使用一个实例显示数据库 demodb 中 employee 数据表的内容&#xff0c;实现编辑、插入、删除的操作&#xff0c;实现数据的排序和记录过滤&#xff0c;还实现 BLOB 类型字段 Photo 中存储照片的显示、导入等操作&#xff0c;运行界面如下图&#xff1a; 在上图中…...

构建高可用系统设计OpenStack、Docker、Mesos和Kubernetes(简称K8s)

如果构建高可用、高并发、高效运维的大型系统 大型系统架构设计包括业务层设计、服务层设计、基础架层设计、存储层设计、网络层协同设计来完成。 一、业务层 根据主要业务范畴的分类和特征提取&#xff0c;抽象出独立的业务系统&#xff0c;分别统计系统的用户角色群体、访…...

CondaValueError: Malformed version string ‘~‘: invalid character(s).

问题描述&#xff1a;在window下使用conda安装任何包都会报错。报错信息是CondaValueError: Malformed version string ~: invalid character(s). 解决办法&#xff1a;把.condarc文件的源地址删除&#xff08;八成是源地址访问不了了&#xff09;&#xff0c;只保存默认的&am…...

uniapp图片上传预览uni.chooseImage、uni.previewImage

文章目录 1.上传图片2.预览图片 1.上传图片 uni.chooseImage(OBJECT) 从本地相册选择图片或使用相机拍照。 App端如需要更丰富的相机拍照API&#xff08;如直接调用前置摄像头&#xff09;&#xff0c;参考plus.camera 微信小程序从基础库 2.21.0 开始&#xff0c; wx.choos…...

代码随想录算法训练营第三十二天 | 509. 斐波那契数 | 70. 爬楼梯 | 746. 使用最小花费爬楼梯

Day 32 总结 自己实现中遇到哪些困难今日收获&#xff0c;记录一下自己的学习时间 12:30 - 21:30 理论基础 代码随想录 动态规划 问题有很多的重叠子问题需要解决&#xff0c;状态涉及推导 DP 5部曲 DP数组含义 状态转移公式 dp数组初始化 数组遍历顺序 举例推导 视频&a…...

Flink常见面试题

1、Flink 的四大特征&#xff08;基石&#xff09; 2、Flink 中都有哪些 Source&#xff0c;哪些 Sink&#xff0c;哪些算子&#xff08;方法&#xff09; 预定义Source 基于本地集合的source&#xff08;Collection-based-source&#xff09; 基于文件的source&#xff08;…...

SpringCloud之Config:从基础到高级应用

目录 一、SpringCloud Config 简介1、SpringCloud Config 概述&#xff08;1&#xff09;核心概念&#xff08;2&#xff09;SpringCloud Config 的特点&#xff08;3&#xff09;应用场景&#xff08;4&#xff09;工作原理&#xff08;5&#xff09;优势&#xff08;6&#x…...

redis 底层数据结构

概述 Redis 6 和 Redis 7 之间对比&#xff1a; Redis6 和 Redis7 最大的区别就在于 Redis7 已经用 listpack 替代了 ziplist. 以下是基于 Redis 7基础分析。 RedisObject Redis是⼀个<k,v>型的数据库&#xff0c;其中key通常都是string类型的字符串对象&#xff0c;⽽…...

机器学习之RLHF(人类反馈强化学习)

RLHF(Reinforcement Learning with Human Feedback,基于人类反馈的强化学习) 是一种结合人类反馈和强化学习(RL)技术的算法,旨在通过人类的评价和偏好优化智能体的行为,使其更符合人类期望。这种方法近年来在大规模语言模型(如 OpenAI 的 GPT 系列)训练中取得了显著成…...

openwrt利用nftables在校园网环境下开启nat6 (ipv6 nat)

年初写过一篇openwrt在校园网环境下开启ipv6 nat的文章&#xff0c;利用ip6tables控制ipv6的流量。然而从OpenWrt22版本开始&#xff0c;系统内置的防火墙变为nftables&#xff0c;因此配置方法有所改变。本文主要参考了OpenWRT使用nftables实现IPv6 NAT 这篇文章。 友情提示 …...

Vue3+node.js实现注册

文章目录 前端代码实现后端代码实现 效果图 前端代码实现 <template><div class"register-container"><el-card class"register-card"><template #header><div class"card-header"><span>注册</span&…...