QT之LayOut布局
文章目录
- QFormLayout
- QGridLayout
- QFormLayout、QGridLayout、QHBoxLayout、QVBoxLayout综合案例
- 用QFormLayout 代替 界面左边部分的QGridLayout
QFormLayout
#include "widget.h"#include <QFormLayout>
#include <QLineEdit>Widget::Widget(QWidget *parent): QWidget(parent)
{//固定窗口大小setFixedSize(250,200);// 创建表单布局指针QFormLayout *qLayout=new QFormLayout(this);QLineEdit *le1=new QLineEdit(); // 输入学号QLineEdit *le2=new QLineEdit(); // 输入姓名QLineEdit *le3=new QLineEdit(); // 输入学校qLayout->addRow("学号",le1);qLayout->addRow("姓名",le2);qLayout->addRow("学校",le3);qLayout->setSpacing(10);// WrapAllRows将标签显示在单行编辑框上面//qLayout->setRowWrapPolicy(QFormLayout::WrapAllRows);// 当标签和单选编辑框,将标签显示在同一行。qLayout->setRowWrapPolicy(QFormLayout::WrapLongRows);qLayout->setLabelAlignment(Qt::AlignLeft); // 设置标签对齐方式setWindowTitle("表单布局测试案例");}
qLayout->setRowWrapPolicy(QFormLayout::WrapLongRows);效果
qLayout->setRowWrapPolicy(QFormLayout::WrapAllRows);效果
QGridLayout
#include "widget.h"Widget::Widget(QWidget *parent): QWidget(parent)
{button1=new QPushButton(this);button1->setText("第一区:顶部菜单栏选项");//button1->setFixedHeight(60); // 设置固定大小高度//把QPushButton控件的大小策略设定为在水平和垂直方向上都能自动扩展。//当窗口大小发生改变时,按钮能够依据布局的变化自动调整自身大小button1->setSizePolicy(QSizePolicy::Expanding,QSizePolicy::Expanding);button2=new QPushButton(this);button2->setText("第二区:侧边栏选项");//button2->setFixedWidth(150); // 设置固定大小宽度button2->setSizePolicy(QSizePolicy::Expanding,QSizePolicy::Expanding);button3=new QPushButton(this);button3->setText("第三区:底部选项");//button3->setFixedHeight(60);button3->setSizePolicy(QSizePolicy::Expanding,QSizePolicy::Expanding);button4=new QPushButton(this);button4->setText("第四区:子窗体选项");//button4->setFixedHeight(60);button4->setSizePolicy(QSizePolicy::Expanding,QSizePolicy::Expanding);//网格布局类pGrid_layouts=new QGridLayout();// 通过此函数设置左侧 顶部 右侧 底部边距,主要方便布局周围进行使用pGrid_layouts->setContentsMargins(0,0,0,0);// 用于设置布局四周的边距// pGrid_layouts->setMargin(30);//5.12开始被弃用pGrid_layouts->setContentsMargins(10,10,10,10);//设置QGridLayout中各个控件之间间距pGrid_layouts->setSpacing(0);// 显示位置// addWidget(参数1,参数2,参数3,参数4,参数5,参数6)/*1:我要插入的子布局对象2:插入的开始行3:插入的开始列4:占用的行数5:占用的列数6:指定对齐方式*/pGrid_layouts->addWidget(button1,0,1);pGrid_layouts->addWidget(button2,0,0,3,1);pGrid_layouts->addWidget(button3,2,1);pGrid_layouts->addWidget(button4,1,1);//给部件设置布局setLayout(pGrid_layouts);}
第一区:第0行、第1列
第二区:第0行、第0列、占用3行,1列
第三区:第1行、第1列
第四区:第2行、第1列
QFormLayout、QGridLayout、QHBoxLayout、QVBoxLayout综合案例
#ifndef DIALOG_H
#define DIALOG_H#include <QDialog>#include <QLabel>
#include <QLineEdit>
#include <QComboBox>
#include <QTextEdit>
#include <QGridLayout>
#include <QPushButton>class Dialog : public QDialog
{Q_OBJECTpublic:Dialog(QWidget *parent = nullptr);~Dialog();private:// 1:左边 网格布局、表格布局QGridLayout *lLayout;QLabel *UserNumber;QLineEdit *UserNumberLineEdit;QLabel *UserName;QLineEdit *UserNameLineEdit;QLabel *UserSex;QComboBox *UserSexCombobox;QLabel *UserDepart;QTextEdit *UserDepartTextEdit;QLabel *UserAge;QLineEdit *UserAgeLineEdit;// 2:右边 水平布局QHBoxLayout *toprightlayout;QVBoxLayout *rightlayout;QLabel *MyselfInfo;QTextEdit *MyselfInfoTextEdit;// 3:右边底部QPushButton *okbutton,*cancelbutton;QHBoxLayout *buttomLayout;
};
#include "dialog.h"
#include <QFormLayout>Dialog::Dialog(QWidget *parent): QDialog(parent)
{setWindowTitle("员工信息");// 左边控件UserNumber=new QLabel("员工编号:");UserNumberLineEdit=new QLineEdit;UserName=new QLabel("员工姓名:");UserNameLineEdit=new QLineEdit;UserSex=new QLabel("员工性别:");UserSexCombobox=new QComboBox;UserSexCombobox->addItem("男");UserSexCombobox->addItem("女");UserDepart=new QLabel("所在部门:");UserDepartTextEdit=new QTextEdit;UserAge=new QLabel("员工年龄:");UserAgeLineEdit=new QLineEdit;// 网格布局lLayout=new QGridLayout();// addWidget(参数1,参数2,参数3,参数4,参数5,参数6)/*1:我要插入的子布局对象2:插入的开始行3:插入的开始列4:占用的行数5:占用的列数6:指定对齐方式*/lLayout->addWidget(UserNumber,0,0); // 员工编号lLayout->addWidget(UserNumberLineEdit,0,1);lLayout->addWidget(UserName,1,0);lLayout->addWidget(UserNameLineEdit,1,1);lLayout->addWidget(UserSex,2,0);lLayout->addWidget(UserSexCombobox,2,1);lLayout->addWidget(UserDepart,3,0);lLayout->addWidget(UserDepartTextEdit,3,1);lLayout->addWidget(UserAge,4,0);lLayout->addWidget(UserAgeLineEdit,4,1);//设置网格布局(QGridLayout)列拉伸系数的方法//有两列,拉伸系数分别为 1 和 3,那么第二列将获得比第一列多两倍的额外空间。lLayout->setColumnStretch(0,1);lLayout->setColumnStretch(1,3);// 右边上部分//右边为垂直布局里个人简历为垂直布局,其他信息为水平布局toprightlayout=new QHBoxLayout();toprightlayout->setSpacing(5);MyselfInfo=new QLabel("个人简历:");MyselfInfoTextEdit=new QTextEdit;QLabel* MyselfInfo1=new QLabel("其他信息:");QTextEdit* MyselfInfoTextEdit1=new QTextEdit;//个人简历加到垂直布局toprightlayout->addWidget(MyselfInfo1);toprightlayout->addWidget(MyselfInfoTextEdit1);rightlayout=new QVBoxLayout();//把水平布局放进主界面右边的垂直布局rightlayout->addWidget(MyselfInfo);//把其他信息放进水平布局rightlayout->addWidget(MyselfInfoTextEdit);rightlayout->addLayout(toprightlayout);// 右边下部分okbutton=new QPushButton("确认");cancelbutton=new QPushButton("退出");buttomLayout=new QHBoxLayout();buttomLayout->addStretch();buttomLayout->addWidget(okbutton);buttomLayout->addWidget(cancelbutton);QGridLayout *mlayout=new QGridLayout(this);//隐式设置Dialog的布局为mlayoutmlayout->setMargin(20);mlayout->setSpacing(10);mlayout->addLayout(lLayout,0,0); // 左边//mlayout->addLayout(qLayout,0,0);mlayout->addLayout(rightlayout,0,1); // 右上mlayout->addLayout(buttomLayout,1,0,1,2);//窗口会根据布局里内容的尺寸来自动调整初始大小,并且用户无法对窗口大小进行更改mlayout->setSizeConstraint(QLayout::SetFixedSize);//new QGridLayout(this);这里不隐式设定布局就要显示设置setLayout(mlayout);//不然界面无法显示//setLayout(mlayout);}
用QFormLayout 代替 界面左边部分的QGridLayout
#include "dialog.h"
#include <QFormLayout>Dialog::Dialog(QWidget *parent): QDialog(parent)
{setWindowTitle("员工信息");/*****QFormLayout *qLayout=new QFormLayout(this);// 隐式设置Dialog的布局为qLayout错误这里如果传了this就会把qLayout设置为定成布局,就只会显示qLayout的界面*****///Qt规则:当通过 new QLayout(widget) 创建布局时,会自动调用 widget->setLayout()//后果:Dialog 的布局被先后设置为 qLayout 和 mlayout,违反 单顶级布局原则QFormLayout *qLayout=new QFormLayout();QLineEdit *le1=new QLineEdit(); // 员工编号:QComboBox *le2=new QComboBox(); // 员工姓名:le2->addItem("男");le2->addItem("女");QLineEdit *le3=new QLineEdit(); // 员工性别:QTextEdit *le4=new QTextEdit(); // 所在部门:QLineEdit *le5=new QLineEdit(); // 员工年龄:qLayout->addRow("员工编号:",le1);qLayout->addRow("员工姓名:",le2);qLayout->addRow("员工性别:",le3);qLayout->addRow("所在部门:",le4);qLayout->addRow("员工年龄:",le5);qLayout->setSpacing(10);qLayout->setRowWrapPolicy(QFormLayout::WrapLongRows);qLayout->setLabelAlignment(Qt::AlignLeft); // 设置标签对齐方式// 右边上部分toprightlayout=new QHBoxLayout();toprightlayout->setSpacing(5);MyselfInfo=new QLabel("个人简历:");MyselfInfoTextEdit=new QTextEdit;QLabel* MyselfInfo1=new QLabel("其他信息:");QTextEdit* MyselfInfoTextEdit1=new QTextEdit;toprightlayout->addWidget(MyselfInfo1);toprightlayout->addWidget(MyselfInfoTextEdit1);rightlayout=new QVBoxLayout();rightlayout->addWidget(MyselfInfo);rightlayout->addWidget(MyselfInfoTextEdit);rightlayout->addLayout(toprightlayout);// 右边下部分okbutton=new QPushButton("确认");cancelbutton=new QPushButton("退出");buttomLayout=new QHBoxLayout();buttomLayout->addStretch();buttomLayout->addWidget(okbutton);buttomLayout->addWidget(cancelbutton);QGridLayout *mlayout=new QGridLayout(this);//隐式设置Dialog的布局为mlayoutmlayout->setMargin(20);mlayout->setSpacing(10);//mlayout->addLayout(lLayout,0,0); // 左边mlayout->addLayout(qLayout,0,0);mlayout->addLayout(rightlayout,0,1); // 右上mlayout->addLayout(buttomLayout,1,0,1,2);//窗口会根据布局里内容的尺寸来自动调整初始大小,并且用户无法对窗口大小进行更改mlayout->setSizeConstraint(QLayout::SetFixedSize);//setLayout(mlayout);}
两个显示效果都是这个
相关文章:
QT之LayOut布局
文章目录 QFormLayoutQGridLayoutQFormLayout、QGridLayout、QHBoxLayout、QVBoxLayout综合案例用QFormLayout 代替 界面左边部分的QGridLayout QFormLayout #include "widget.h"#include <QFormLayout> #include <QLineEdit>Widget::Widget(QWidget *p…...
ubuntu 24.04安装ros1 noetic
为了后续能够找到安装方法,记录一下: 参考如下链接安装: https://www.reddit.com/r/ROS/comments/158icpy/compiling_ros1_noetic_from_source_on_ubuntu_2204/ 安装步骤如下: 1.获取apt 包 sudo apt-get install python3-ros…...
动态规划-64.最小路径和-力扣(LetCode)
一、题目解析 从左上角到右下角使得数字总和最小且只能向下或向右移动 二、算法原理 1.状态表示 我们需要求到达[i,j]位置时数字总和的最小值,所以dp[i][j]表示:到达[i,j]位置时,路径数字总和的最小值。 2.状态转移方程 到达[i,j]之前要先…...
Python爬虫(29)Python爬虫高阶:动态页面处理与云原生部署全链路实践(Selenium、Scrapy、K8s)
目录 引言:动态爬虫的技术挑战与云原生机遇一、动态页面处理:Selenium与Scrapy的协同作战1.1 Selenium的核心价值与局限1.2 Scrapy-Selenium中间件开发1.3 动态分页处理实战:京东商品爬虫 二、云原生部署:Kubernetes架构设计与优化…...
FauxGen:一款由 CodeBuddy 主动构建的假数据生成器
我正在参加CodeBuddy「首席试玩官」内容创作大赛,本文所使用的 CodeBuddy 免费下载链接:腾讯云代码助手 CodeBuddy - AI 时代的智能编程伙伴 在前端开发中,经常需要一些「假数据」来模拟真实接口,便于开发阶段的界面构建和功能测试…...
chrome 浏览器插件 myTools, 日常小工具。
1. 起因, 目的: 比如,chatgpt, google, 打开网页,就能直接输入文字,然后 grok 就不行,必须用鼠标点一下,才能输入文字。 对我而言,是个痛点!写个插件,自动点…...
从代码学习深度学习 - 词嵌入(word2vec)PyTorch版
文章目录 前言1. 为什么需要词嵌入?2. 早期尝试:独热向量 (One-Hot Vectors)独热向量的局限性3. 自监督的 word2vec4. 跳元模型 (Skip-Gram Model)4.1. 训练5. 连续词袋 (CBOW) 模型5.1. 训练总结前言 自然语言处理(NLP)是人工智能领域中一个充满活力和挑战的分支。要让计…...
手写tomcat:基本功能实现(4)
逻辑架构 HTTP 请求与 Socket: 左侧的 “HTTP 请求” 箭头指向 “socket”,表示客户端发送的 HTTP 请求通过 socket 传输到服务器。Socket 负责接收请求,并提取出其中的 请求路径(如 /first)和 请求方法(如…...
String的一些固定程序函数
append reverse length toString...
SECERN AI提出3D生成方法SVAD!单张图像合成超逼真3D Avatar!
SECERN AI提出的3D生成方法SVAD通过视频扩散生成合成训练数据,利用身份保留和图像恢复模块对其进行增强,并利用这些经过优化的数据来训练3DGS虚拟形象。SVAD在新的姿态和视角下保持身份一致性和精细细节方面优于现有最先进(SOTA)的…...
windows触摸板快捷指南
以下是结构化整理后的触控手势说明,采用清晰的层级划分和标准化表述: **触控手势操作规范****1. 单指操作****2. 双指操作****3. 三指操作****4. 四指操作** **优化说明:** 触控手势操作规范 1. 单指操作 手势功能描述等效操作单击滑动选择…...
Mipsel固件Fuzzing小记
Mipsel固件Fuzzing小记 0x01 准备 1.1 安装必要工具链 首先需要安装 MIPS 交叉编译工具链和相关依赖: sudo apt-get install -y gcc-mipsel-linux-gnu g-mipsel-linux-gnu binwalk qemu-user-static afl这些工具分别用于:交叉编译、固件解包、二进制…...
边缘计算:物联网的“加速器”与“守护者”
引言 随着物联网(IoT)的快速发展,越来越多的设备接入网络,产生了海量的数据。传统的云计算架构面临着延迟高、带宽不足、数据安全等问题。边缘计算作为一种新兴技术,正在成为解决这些问题的关键手段。本文将探讨边缘计…...
简单网络交换、路由-华三RRPP以太环网
1、RRPP简单介绍 RRPP用来组建环网的链路层协议,工作在二层,比STP收敛更快,同时与STP、Smart-link互斥。很多企业很少应用环网组网,但是小编所在工业生产制造企业在特定工艺的区域对环网应用颇多,RRPP小编还是推荐网工…...
Kotlin变量与数据类型详解
Kotlin 变量与基本数据类型详解 一、变量声明 1. val vs var val:不可变变量(只读),类似 Java 的 finalvar:可变变量 val name "Kotlin" // 类型推断为 String var age 25 // 类型推断为 I…...
【Redis】List 列表
文章目录 初识列表常用命令lpushlpushxlrangerpushrpushxlpop & rpoplindexlinsertllen阻塞操作 —— blpop & brpop 内部编码应用场景 初识列表 列表类型,用于存储多个字符串。在操作和实现上,类似 C 的双端队列,支持随机访问(O(N)…...
React中useState中更新是同步的还是异步的?
文章目录 前言一、useState 的基本用法二、useState 的更新机制1. 内部状态管理2. 状态初始化3. 状态更新 三、useState 的更新频率与异步行为1. 异步更新与批量更新2. 为什么需要异步更新? 四、如何正确处理 useState 的更新1. 使用回调函数形式的更新2. 理解异步更…...
Python语法强化
在正式编写第一个Python程序前,我们先复习一下什么是命令行模式和Python交互模式。 命令行模式 在Windows开始菜单选择“Terminal”,就进入到PowerShell命令行模式,它的提示符类似PS C:\>: ┌───────────────…...
FastMCP:为大语言模型构建强大的上下文和工具服务
FastMCP:为大语言模型构建强大的上下文和工具服务 在人工智能快速发展的今天,大语言模型(LLM)已经成为许多应用的核心。然而,如何让这些模型更好地与外部世界交互,获取实时信息,执行特定任务&am…...
TC3xx学习笔记-UCB BMHD使用详解(二)
文章目录 前言Confirmation的定义Dual UCB: Confirmation StatesDual UCB: Errored State or ECC Error in the UCB Confirmation CodesECC Error in the UCB ContentDual Password UCB ORIG and COPY Re-programming UCB_BMHDx_ORIG and UCB_BMHDx_COPY (x 0-3)BMHD Protecti…...
【Docker】docker compose和docker swarm区别
Docker Swarm 和 Docker Compose 的核心区别: 1. 定位不同 Docker Compose 单机多容器编排:在单个主机上管理多个容器,适合本地开发、测试环境。单节点部署:所有容器运行在同一 Docker 引擎实例上。 Docker Swarm 集群管理工具&…...
Power BI Desktop开发——矩阵相关操作
本篇文章使用2025年5月17日从微软商店下载的最新版Power BI Desktop 目录 1.设置矩阵网格整体大小 2.设置矩阵网格行高 3.设置矩阵网格列宽 4.隐藏矩阵网格的某一列 5.隐藏矩阵网格的某一行 6.设置矩阵网格居中展示 7.号图表的显示设置 8.调整行标题的缩进 9.设置矩阵…...
系统架构设计(九):分布式架构与微服务
基础定义 架构类型定义分布式架构指将系统部署在多个服务器节点上,通过网络协作完成整体功能。强调物理上的分布与任务协作。微服务架构一种分布式架构模式,将系统按照业务维度拆分为多个小型自治服务,每个服务可独立开发、部署、伸缩。 核…...
Linux服务器安全如何加固?禁用不必要的服务与端口如何操作?
保护Linux服务器的安全性对于确保系统的稳定性和数据的保密性至关重要。加固Linux服务器的安全性包括禁用不必要的服务和端口,以减少潜在的攻击面。本文将探讨如何加固Linux服务器的安全性,具体介绍如何禁用不必要的服务和端口,从而提高服务器…...
AgentCPM-GUI,清华联合面壁智能开源的端侧GUI智能体模型
AgentCPM-GUI是什么 AgentCPM-GUI 是由清华大学与面壁智能团队联合开发的一款开源端侧图形用户界面(GUI)代理,专为中文应用进行优化。基于 MiniCPM-V 模型(80 亿参数),该系统能够接收智能手机的屏幕截图&a…...
如何用AI优化简历:自动读取与精华浓缩
在求职过程中,一份出色的简历往往是成功的关键。然而,许多求职者在撰写简历时往往面临诸多挑战,比如如何让简历更突出、如何让招聘者快速了解自己的核心优势等。随着人工智能技术的发展,AI不仅可以帮助我们优化简历内容࿰…...
Jackson使用详解
JSON Jackson是java提供处理json数据序列化和反序列的工具类,在使用Jackson处理json前,我们得先掌握json。 JSON数据类型 类型示例说明字符串(String)"hello"双引号包裹,支持转义字符(如 \n&a…...
Node.js 源码概览
Node.js 是一个基于 Chrome V8 引擎的 JavaScript 运行时环境,它的源码结构相当庞大且复杂。下面我将为你讲解 Node.js 源码的主要结构和关键组成部分。 源码结构 Node.js 的主要源码目录结构如下: node/ ├── lib/ # JavaScript 核心模…...
简单神经网络(ANN)实现:从零开始构建第一个模型
本文将手把手带你用 Python Numpy 实现一个最基础的人工神经网络(Artificial Neural Network, ANN)。不依赖任何深度学习框架,适合入门理解神经网络的本质。 一、项目目标 构建一个三层神经网络(输入层、隐藏层、输出层…...
Conda 完全指南:从环境管理到工具集成
Conda 完全指南:从环境管理到工具集成 在数据科学、机器学习和 Python 开发领域,环境管理一直是令人头疼的问题。不同项目依赖的库版本冲突、Python 解释器版本不兼容等问题频繁出现,而 Conda 的出现彻底解决了这些痛点。作为目前最流行的跨…...
防范Java应用中的恶意文件上传:确保服务器的安全性
防范Java应用中的恶意文件上传:确保服务器的安全性 在当今数字化时代,Java 应用无处不在,而文件上传功能作为许多应用的核心组件,却潜藏着巨大的安全隐患。恶意文件上传可能导致服务器被入侵、数据泄露甚至服务瘫痪,因…...
CSS- 4.2 相对定位(position: relative)
本系列可作为前端学习系列的笔记,代码的运行环境是在HBuilder中,小编会将代码复制下来,大家复制下来就可以练习了,方便大家学习。 HTML系列文章 已经收录在前端专栏,有需要的宝宝们可以点击前端专栏查看! 点…...
Face Over 84.0| 利用AI技术交换照片或视频中的面孔,制作有趣内容
Face Over是一款充满创造力和乐趣的应用程序,它利用AI技术帮助用户交换照片或视频中的面孔,预测未来宝宝的模样,并将照片制作成动画。无论您是想制作有趣的模因、口型同步视频还是探索未来家庭成员的模样,这款应用程序都能满足您的…...
怎么在excel单元格1-5行中在原来内容前面加上固定一个字?
环境: WPS 2024 问题描述: 怎么在excel单元格1-5行中在原来内容前面加上固定一个字? 解决方案: 1.在Excel中,如果您想在单元格的内容前面添加一个固定的字,可以通过以下几种方法实现: 方法…...
AI:人形机器人一定是人的形状吗?
本文将从技术角度分析人形机器人是否必须是人的形状,以及人形与非人形机器人在适用场合、优缺点上的差异。以下是详细解答: 人形机器人一定是人的形状吗? 不,人形机器人(Humanoid Robot)在技术上通常指外…...
26、思维链Chain-of-Thought(CoT)论文笔记
思维链Chain-of-Thought(CoT) **1、研究背景与核心目标****2、思维链提示的方法设计**2.1 COT方法2.2 传统方法 3、实验设计与关键数据集3.1 算术推理3.2 常识推理3.3 符号推理 4、关键实验结果1. 算术推理:思维链提示显著提升多步问题解决率…...
golang中的反射示例
文章目录 前言一、通过反射获取底层类型 reflect.typeOf()二、反射获取底层的值 reflect.ValueOf()三、通过反射设置底层值四 、进阶结构体反射示例 前言 反射就像是给程序装上了显微镜,运行时随时查看底层类型以及底层值,根据需要动态读写或调用方法。…...
NX二次开发——设置对象的密度(UF_MODL_set_body_density)
在前几篇博客中我们已经探讨了如何设置实体的密度。在装配环境中,同样可以为组件设置密度。虽然不能直接对组件进行密度设置,但可以通过一种间接方式实现:在装配环境下,利用 UF_ASSEM_set_work_part_quietly() 函数以静默方式将组…...
基于朴素贝叶斯与 LSTM 的假新闻检测模型对比分析
一、引言 在信息爆炸的时代,假新闻的传播对社会产生了诸多负面影响。如何快速、准确地识别假新闻成为了重要的研究课题。本文将对比传统机器学习算法(朴素贝叶斯)与深度学习模型(LSTM)在假新闻检测任务中的性能表现&am…...
共享内存【Linux操作系统】
文章目录 共享内存共享内存的原理共享内存相关函数和系统调用--systemV系统调用:shmget系统调用:shmctl系统调用:shmat系统调用:shmdt系统调用:ftok 共享内存相关函数和系统调用--POSIXshm_open-- 创建或打开共享内存对…...
Android核心系统服务:AMS、WMS、PMS 与 system_server 进程解析
1. 引言 在 Android 系统中,ActivityManagerService (AMS)、WindowManagerService (WMS) 和 PackageManagerService (PMS) 是三个最核心的系统服务,它们分别管理着应用的生命周期、窗口显示和应用包管理。 但你是否知道,这些服务并不是独立…...
arduino平台读取鼠标光电传感器
鼠标坏掉了,大抵是修不好了。(全剧终—) 但是爱动手的小明不会浪费这个鼠标,确认外观没有明显烧毁痕迹后,尝试从电路板上利用光电传感器进行位移的测量,光电传感器(型号:FCT3065&am…...
EXO分布式部署deepseek r1
EXO 是一个支持分布式 AI 计算的框架,可以用于在多个设备(包括 Mac Studio)上运行大语言模型(LLM)。以下是联调 Mac Studio 512GB 的步骤: 安装 EXO • 从 EXO GitHub 仓库 下载源码或使用 git clone 获取…...
机器学习 KNN算法
KNN算法 1. sklearn机器学习概述2. KNN算法-分类1 样本距离判断2 KNN 算法原理3 KNN缺点4 API5 sklearn 实现KNN示例6 模型保存与加载葡萄酒(load_wine)数据集KNN算法(1)wine.feature_names:(2)wine.target_names(3)KNN算法实现 1. sklearn机器学习概述 获取数据、数据处理、特…...
强化学习赋能医疗大模型:构建闭环检索-反馈-优化系统提升推理能力
引言 人工智能技术在医疗领域的应用正经历前所未有的发展,特别是在大型语言模型(LLMs)技术的推动下,医疗大模型(Medical Large Models)展现出巨大的潜力。这些模型不仅能够理解复杂的医学术语和概念,还能通过自然语言与用户交互,为医疗专业人士和患者提供有价值的信息和建…...
深入解析Spring Boot与JUnit 5的集成测试实践
深入解析Spring Boot与JUnit 5的集成测试实践 引言 在现代软件开发中,测试是确保代码质量和功能正确性的关键环节。Spring Boot作为目前最流行的Java Web框架之一,提供了强大的支持来简化测试流程。而JUnit 5作为最新的JUnit版本,引入了许多…...
哈希的原理、实现
目录 引言 一、哈希概念 二、哈希函数 三、哈希冲突解决方法 四、unordered系列关联式容器(以unordered_map为例) 五、哈希的应用 完整代码 六、总结 引言 在计算机科学领域,哈希是一种非常重要的数据结构和算法思想,广…...
端口443在git bash向github推送时的步骤
端口443在git bash向github推送时的步骤 你的环境可能因防火墙限制无法使用默认的 SSH 端口(22),因此需要改用 SSH over HTTPS(端口 443) 进行 Git 推送。 github与git bash绑定问题详见博主先前写过的参考博文&#…...
Ankr:Web3基础设施的革新者
在Web3技术蓬勃发展的今天,去中心化基础设施的重要性日益凸显。Ankr作为这一领域的佼佼者,凭借其强大的分布式云计算能力和创新的技术解决方案,正在成为推动Web3发展的关键力量。本文将深入探讨Ankr的技术亮点、应用场景以及其在区块链生态中…...
配置git从公网能访问-基于frp
git从公网能访问 一个小小的疏忽带来了一下午上午的工作量起因与上下文与结论主要收获1。公网主机的防火墙需要至少三条3。gitlab的http端口和ssh端口,需要分为两个3。不要用nginx来解析二级域名 测试指令最终的成功的指令是: 用到的指令ssh1. 生成 SSH …...