【C++ Qt】Hello World、初始信号槽、理解对象树 ~~~(通俗易懂 图文并茂)
每日激励:“不设限和自我肯定的心态:I can do all things。 — Stephen Curry”
绪论:
本章是Qt的第二篇,带你认识Qt中几个简单的控件如何实现,以及通过信号槽的方式实现一定的用户和程序的联动,还有许多细节如:对象树、信号槽逻辑图、Qt的命名规范、帮助文档的使用、Qt窗口中的坐标系。
————————
早关注不迷路,话不多说安全带系好,发车啦(建议电脑观看)。
初始 Qt 程序
1. Qt中使用控件的两种方式:
- 图形化界面的方式,通过在界面上创建出一个控件显示
- 打开widget.ui文件
- 选择Display Widget 中的 Label控件
- 将它拉到界面上,后在内部输入英文即可(如上图)
附:
- 其中右上角会显示出界面上有那些控件
- 上述拖拽的QLabel控件的方式,本质其实是在 ui 文件中的xml中就会出现一段代码
- 当 qmake 在编译项目时,基于这个xml内容生成一段C++代码,从而构建出界面的内容(qt自动完成)
- 细节:Qt就会根据xml代码生成新的widget.h代码(就和label有关,具体如下图)
- 通过纯代码(如下)的方式,通过编写的代码,在界面创建控件显示
- 一般通过代码来构件界面的时候,退出会把构造界面的代码放到 Widget(这样一开始就会创建) 的构造函数中
- 创建QLabel对象并new构造(堆上创建),并传递this参数(给当前这个label对象指定一个父对象,可以不指定但一般都会加上,后面马上细说)
- 其中注意需要包含头文件(错误如下),Qt每个类都有一个对应的同名头文件
- #include <QLabel> 其中发现会有一个qlabel.h头文件这是古老风格的头文件
- 在1998年后 C++标准成立了 C++98 规定了 统一使用 #include <cstdio> 替换以前的 stdio.h
- 其中当我们使用某个类时要记住包含头文件,若果没有报错可能是其他类中包含过了
1.1 label 标签:界面上一个用来显示内容的字符串控件
- 给label设置文本 setText 设置控件中显示的文本
void setText(const QString &)
- 其中的 QString 其实就是 qt 的 std::string
- QString 会对编码进行一定的处理,所以比std::string 舒服一点点,因为在Qt中经常可能出现编码问题
- 它是 Qt 自己开发的基础类(因为当年c/c++中的字符串都不好用)
- 其中还有一些其他的 动态数组 QVector QList QMap,
- 在现在编写Qt代码过程中 可以使用Qt的这一套、也能使用 C++标准库的!
但这个代码 new 了对象后我们不进行delete,那岂不是内存泄漏了?
2. 对象树
其实上述代码在Qt中并不会出现内存泄漏,之所以能够释放,因为把这个对象挂到了对象树上,前端开发(网页开发)也涉及到类似的对象树(DOM)。本质上也是一个树形结构(N叉树),通过把树形结构把界面上的各种元素组织起来(具体如下图)
- 其中当有了这个对象树后,其内部的对象就会统一放到树形结构上
- 那么它们的释放也会进行和树一样的统一,也就是都会在这个界面关闭/销毁的时候释放(具体情况如下图)
- 其中若某个对象提前delete释放了,那么是不是代表他就不会在显示在界面中了
- 此处类new的时候添加了this参数,就会将这个类挂在对象树上
- 但假如放到栈上(直接创建变量,那么就可能出现提前释放的问题/不会显示),此时可以看到无法显示(label对象随着构造结束而销毁)
2.1 验证对象树:
创建新文件:C++文件
-
选择 C++ class
-
填写类名和继承的父类
-
next即可
注意事项:
-
其中生成的文件可能会有一点点问题(此时我们就自己包含头文件就OK了:
#include <QLabel>
):
-
将 MyLabel构造初始化上 QWidget * parent
小技巧: f4 快速切换头文件和对应的 .cpp文件(Vim中 :A 的方式完成切换、:AT 的方式打开新标签页)
-
切换到对应的 .cpp 文件中,设置构造函数:
- 接收外部传递进来的父类,然后进行初始化列表将parent参数给到父类
- QLabel的构造函数初始化(如下图),这里麻烦的就是需要调用父类的构造函数,才能让自己类的对象加入到Qt对象树中
-
此时自定义析构函数,在析构函数中添加一个打印,查看自动释放时情况(注意需要先在类中添加公共的析构声明)
-
打印日志:
小技巧:在创建的类的头文件中,快速的创建.cpp中的析构,将光标放到析构上 点击 alt 键选择 + enter即可
创建自己的对象并调用
运行结果:
发现打印了 乱码(出现的乱码原因有且只有一个 就是编码方式不匹配,查看那些环节涉及了编码)
一个汉字,占几个字节?
不同的中文编码(字符集)的不同大小就不同
主要的表示汉字字符集主要是两种方式:
- GBK(使用2byte表示一个汉字)Windows默认是这个
- utf-8 变长编码,表示一个符号,使用的字节数有变化有变化 2~4,但一般是3byte(Linux默认)
一个汉字具体的utf8/gbk编码的数值是多少,可以通过一些在线工具查看
而 Qt Creator 内置的终端不是utf8所以就出现了乱码
当前表示中文,主流的方式,还是utf8(支持各种语言文字)
解决办法:
- Qt中 有 QString可以帮我们自动处理编码问题!
- Qt 还提供了专门用来打印日志的工具 qDebug(),也能自动处理编码问题
具体如下(使用QDebug来代替cout):
最终结果:
- 使用qDebug,还有一个好处:打印的调试日志,是可以统一关闭(不希望用户看到的日志),可以通过编译开关,一键式关闭
小结:
- 认识 QLabel 类,能够在界面上显示字符串
- 通过setText设置,参数 QString(Qt 中把C++中的很多容器进行了重新封装)
- 内存泄漏 / 文件资源泄漏(申请了内存、文件就一定需要关闭!)
- 对象树:Qt中通过对象树统一的释放界面的控件对象
- Qt中还是推荐使用new的方式在堆上创建对象,通过对象树,统一释放对象
- 创建对象的时候,在构造函数中,指定父对象(此时才会挂到对象树上)
- 如果你的对象没有挂到对象树上,就必须手动释放!
- 通过继承子 Qt 内置的类,就可以达到对现有的控件进行功能的扩展效果
- 在析构函数中,加上日志,直观的观察到对象释放的过程
- 面向对象的“继承”,本质上就是对现有代码进行 “扩展”
- 乱码问题 和 字符集问题
- 如何在Qt中打印日志,作为调试信息
- Qt 中更推荐使用 qDebug() 完成日志的订阅
- 虽然cout也可以,但并不是好的方法
调试的本质是观察程序执行过程和中间的结果
下面还有几种实现hello world的方式:
3. 使用编辑框控件实现 helloworld
- 使用方法同上的QLabel,可以直接在ui文件中拖拽的方式放上界面
- 同理也能使用纯代码的方式实现,在widget.cpp中的构造函数中实现:
- 还能使用多行编辑框QTextEdit(这里就不过述了因为单行即可完成)
4. 使用按钮的方式来创建 Push Button(普通按钮)
- 拖拽(双击按钮修改内部的字符)
初始信号槽
如何让按钮点击后出现效果,就要使用Qt的信号槽(后面篇章会细说,这里了解即可)
- Qt 中的 connect 的作用是连接信号和槽(和tcp中的建立连接没有任何关系)
- 也就是使用connect实现该按钮控件的点击后的触发效果
- 本质也就是给这个按钮连接一个函数
第一个参数:指定界面文件中访问的按钮(写成ui->pushButton(pushButton就是该控件的ObjectName属性,在ui文件中可以选中控件在右边属性段查看))
第二个参数:函数指针 点击按钮触发的一个信号(QPushButton::clicked点击信号,当点击该按钮时就会自动触发)
第三个参数:指定谁处理这个信号(一般来说就是this,当前类对象)
第四个参数:这个信号怎么处理(一般来说写成类成员函数) - 实现 handleClick
- 首先在widget.h头文件中声明新函数 handle
- 再在widget.cpp中添加新函数的具体实现
- 判断当前按钮中的值是否为:hello world
- 若为则 切换为 hello qt、反之若不是则为hello world(代表为hello qt)
其中注意的是:能使用 ui -> pushButton 它是因为当你添加了控件,就会生成一个标识objectName的标识,他就会在Ui::Widget中生成该控件成员,这样就能通过ui访问到
其中的为什么能访问到是因为ui_widget.h的UI::Widget类就会包含该成员对象(它是Qt自动生成的文件中根据ui界面的xml生成的代码)
- 其中对于PushButton来说他会默认生成的标识为:pushButton
- 我们也能对他进行修改,从而达到使用自己的名称来进行指定
- 它的本质其实就是通过这个名称在ui_widget.h(ui类文件)文件中生成一个相同名称的成员变量,这样就能在
ui -> ...
了
信号槽的总体逻辑图:
Ui::Widget的逻辑过程:
纯代码的方式创建:
- 创建QPushButton类成员变量 myButton(设置为Widget的成员变量这样就能跨函数(构造函数和触发函数)使用)
- 具体实现:
- 和拖拽的一样,只不过此时再使用PushButton对象时直接获取成员变量即可,不用通过ui对象获取了!
源码:
widget.h:
#ifndef WIDGET_H
#define WIDGET_H
#include <QPushButton>
#include <QWidget>QT_BEGIN_NAMESPACE
namespace Ui { class Widget; }
QT_END_NAMESPACEclass Widget : public QWidget
{Q_OBJECTpublic:Widget(QWidget *parent = nullptr);~Widget();void handle();private:Ui::Widget *ui;QPushButton *mypushButton;
};
#endif // WIDGET_H
widget.cpp
#include "widget.h"
#include "ui_widget.h"
#include "mylabel.h"
Widget::Widget(QWidget *parent): QWidget(parent), ui(new Ui::Widget)
{ui->setupUi(this);// QLabel lable;//不能定义成局部的,因为这个是在栈上创建,退出函数就会删除
// QLabel* lable2 = new QLabel(this);
// lable.setText("777");
// lable2->setText("666");MyLabel* mylabel = new MyLabel(this);mylabel->setText("这是自己的Label");//四个参数// 参数1:收到信号的地方、参数2:信号类型、参数3:处理的地方、参数4:处理方法
// connect(ui->pushButton,&QPushButton::clicked,this,&Widget::handle);mypushButton = new QPushButton(this);connect(mypushButton,&QPushButton::clicked,this,&Widget::handle);mypushButton->setText("hello world");
}Widget::~Widget()
{delete ui;
}
void Widget::handle()
{if(mypushButton->text() == QString("hello world")){mypushButton->setText("hello qt");}else{mypushButton->setText("hello world");}
}//void Widget::handle()
//{
// if(ui->pushButton->text() == QString("hello world")){
// ui->pushButton->setText("hello qt");
// }else{
// ui->pushButton->setText("hello world");// }
//}
拖拽和自己实现的区别:
- 而在实际开发中,这两种都很主要,难分主次
- 当前这个界面内容比较固定,就会以图形化的方式构建
- 但如果你的程序界面,经常要动态变化,就会以代码的方式构造界面
- 那种方便就用那种,这两种方式还能配合使用
Qt中的命名规范(和C++中差不多)
给变量/函数/文件/类 起名字,需要注意
- 起的名字有描述性,不要使用如 a 、 b … 的无规律的名字
- 如果名字较长,有多个单词构成,需要使用适当的方式来进行区分不同单词
- 蛇形命名法:C++/Linux中的
_
(unordered_map…)C/C++、Python偏好使用 - 驼峰命名法:Qt 中偏好使用大写字母来进行单词分割,如小驼峰:studentCount(一般是变量或函数)、大驼峰QApplication(一般是类)…(Java/JS/Go偏好使用,也更广泛)
- 对于这几种命名法,不存在好坏,对于它的使用就根据自己公司的风格即可
- 蛇形命名法:C++/Linux中的
使用帮助文档 F1
- 光标放到要查询的类名/⽅法名上, 直接按 F1
- Qt Creator 左侧边栏中直接⽤⿏标单击 “帮助” 按钮:
- 也能找到 Qt Creator 的安装路径,在 “bin” ⽂件夹下找到 assistant.exe,双击打开
Qt 窗口坐标体系
坐标体系:以左上⻆为原点(0,0),X向右增加,Y向下增加。(平面直角坐标系(笛卡尔坐标系))
Qt 的某个控件的位置,对于某个控件来说,坐标系原点就是相对于父窗口/控件的
代码控制:
- 创建QButton对象,调用内部设置值setText
- 其中能使用move的方式进行移动位置
- 对于move移动时,内部参数就是坐标的值(单位是像素)
- 显示器本质上就是有一堆 发光的小亮点/小灯泡构成(也就是像素)
- 其中在我们电脑中的分辨率本质就是 横向和水平方向的像素个数
- 如 1920 * 1080 (水平 1920 垂直 1080 个像素(亮点))
- 其中越好的显示器亮点越多,画面越好
- 其中水平就是 200 像素、垂直就是 300像素
- 其中还能设置窗口的位置(它没有父元素,也就是整个桌面为坐标系原点)通过this指针的方式
本章完。预知后事如何,暂听下回分解。
如果有任何问题欢迎讨论哈!
如果觉得这篇文章对你有所帮助的话点点赞吧!
持续更新大量Qt细致内容,早关注不迷路。
相关文章:
【C++ Qt】Hello World、初始信号槽、理解对象树 ~~~(通俗易懂 图文并茂)
每日激励:“不设限和自我肯定的心态:I can do all things。 — Stephen Curry” 绪论: 本章是Qt的第二篇,带你认识Qt中几个简单的控件如何实现,以及通过信号槽的方式实现一定的用户和程序的联动,还有许多…...
2025.04.16【GroupedandStackedbarplot】生信数据可视化技法
Negative values This blogpost shows what happens when the dataset includes negative values. Most basic streamchart The most basic streamchart you can build with R and the streamgraph package. 文章目录 Negative valuesMost basic streamchart 2025.04.16【Gro…...
java 设计模式之代理模式
简介 代理模式:使用代理类来增强目标类的功能。在代码结构上,代理对象持有目标对象,通过代理对象访问目标对象,这样可以在不改变目标对象的前提下增加额外的功能,如权限校验、缓存等 代理模式内部的角色:…...
Spring Boot实战:基于策略模式+代理模式手写幂等性注解组件
一、为什么需要幂等性? 核心定义:在分布式系统中,一个操作无论执行一次还是多次,最终结果都保持一致。 典型场景: 用户重复点击提交按钮网络抖动导致的请求重试消息队列的重复消费支付系统的回调通知 不处理幂等的风…...
【.net core】【watercloud】数据库连接报错问题
错误信息: 中文提示 : 连接数据库过程中发生错误,检查服务器是否正常连接字符串是否正确,错误信息:Cannot Open when State is Connecting.DbType"MySql";ConfigId"0". English Message : Connection open …...
69. x 的平方根
目录 一、问题描述 二、解题思路 三、代码 四、复杂度分析 一、问题描述 给你一个非负整数 x ,计算并返回 x 的 算术平方根 。 由于返回类型是整数,结果只保留 整数部分 ,小数部分将被 舍去 。 注意:不允许使用任何内置指数…...
计算机网络基础概论
计算机网络基础概论 目录 一、网络基本概念 1.1. 网络 1.2 互联网 1.3 ip地址 1.3.1 作用 1.3.2 分类 1.4 MAC地址 1.4.1 MAC地址与 IP 地址的关系 1.5 网络协议 二、网络分层模型 2.1 物理层 2.2 数据链路层 2.3 网络层 2.4 传输层 2.5 会话层 2.6 表示层 2.7…...
京东3D空间视频生成技术探索与应用
1. 背景 近年来,随着社交媒体、流媒体平台以及XR设备的快速发展,沉浸式3D空间视频的需求迅猛增长,尤其是在短视频、直播和电影领域,正在重新定义观众的观看体验。2023年,苹果公司发布的空间视频技术为这一趋势注入了新…...
吉利矩阵(DFS)
所有元素为非负整数,且各行各列的元素和都等于 7 的 33 方阵称为 “吉利矩阵”,因为这样的矩阵一共有 666 种。 本题就请你统计一下,各行各列的元素和都等于 5 的 33 方阵一共有多少种? 思路:统计方法数,…...
突破反爬限制的智能数据采集实战 —— 面向中小企业的高效信息监控方案
在当前数据驱动的商业环境中,如何高效、稳定地获取网络数据,已成为众多中小企业进行市场洞察、竞品监测与品牌舆情管理的关键能力。本文将分享一个基于先进API技术构建的社交媒体热点监控系统,聚焦实际应用场景,展示如何在合规前提…...
从0到1:让AI赋能计算机的全流程实践指南
🎁个人主页:User_芊芊君子 🎉欢迎大家点赞👍评论📝收藏⭐文章 🔍系列专栏:AI 【前言】 在数字化浪潮席卷全球的今天,AI(人工智能)早已不是科幻电影中的虚构概…...
IntelliJ IDEA 2025.1 发布 ,默认 K2 模式 | Android Studio 也将跟进
2025.1 版本已经发布,在此之前我们就聊过该版本的 《Terminal 又发布全新重构版本》,而现在 2025.1 中的 K2 模式也成为了默认选项。 可以预见,这个版本可能会包含不少大坑,为下个 Android Studio 祈祷。 首先有一点可以确定&…...
MCP、A2A、Function Calling:AI架构设计的三驾马车
随着AI浪潮的到来,各种技术和概念也层出不穷,作为技术人应该第一时间掌握其核心概念与原理,以便于在工作和交流中傻傻分不清楚,本文主要就最近大家提及比较多的MCP、A2A和Function Call做下普及与区分 在当今快速发展的AI领域&a…...
NO.96十六届蓝桥杯备战|图论基础-多源最短路|Floyd|Clear And Present Danger|灾后重建|无向图的最小环问题(C++)
多源最短路:即图中每对顶点间的最短路径 floyd算法本质是动态规划,⽤来求任意两个结点之间的最短路,也称插点法。通过不断在两点之间加⼊新的点,来更新最短路。 适⽤于任何图,不管有向⽆向,边权正负&…...
OpenHarmony - 小型系统内核(LiteOS-A)(六)
OpenHarmony - 小型系统内核(LiteOS-A)(六) 七、文件系统 支持的文件系统 FAT 基本概念 FAT文件系统是File Allocation Table(文件配置表)的简称,主要包括DBR区、FAT区、DATA区三个区域。其…...
“星睿O6” AI PC开发套件评测 - Windows on Arm 安装指南和性能测评
引言 Radxa联合此芯科技和安谋科技推出全新的"星睿O6"迷你 ITX 主板。该系统搭载了 CIX P1(CD8180)12 核 Armv9 处理器,拥有高达30T算力的NPU和高性能的GPU,最高配备64GB LPDDR内存,并提供了如 5GbE、HDMI …...
JS实现RSA加密
目录 目标 环境 实现RSA加解密 计算RSA加密允许的最大字节长度 目标 使用JS实现RSA加密解密。计算RSA加密允许的最大字节长度。 环境 node-rsa 实现RSA加解密 const NodeRSA require(node-rsa);function getKey() {const keyLength512// 创建 RSA 密钥对const key new …...
Seata方案详细
Seata(Simple Extensible Autonomous Transaction Architecture)是阿里开源的分布式事务解决方案,支持多种事务模式,提供一站式的事务管理能力。以下是其核心原理、模式及实践的详细解析: 一、Seata核心架构与角色 Se…...
深入了解v-model的原理:v-model拆分为value属性和input事件,表单类组件的封装并用v-model简化代码
文章目录 1.v-model的原理1.1.验证:在input文本输入框中不使用v-model实现双向数据绑定1.2.验证:v-model在下拉菜单中的拆分 2.表单类组件的封装2.1.原理或步骤2.2.示例:表单类组件封装之下拉菜单select的封装 3.使用v-model简化代码完整代码 4.拓展示例:完成input文本输入框的…...
设计模式每日硬核训练 Day 14:组合模式(Composite Pattern)完整讲解与实战应用
🔄 回顾 Day 13:桥接模式小结 在 Day 13 中,我们学习了桥接模式(Bridge Pattern): 用于将“抽象”与“实现”分离,适用于双维度变化场景(如图形类型 渲染方式)。它强调…...
RMSIN论文阅读
自适应旋转卷积 (ARC)是否可以换成可变形卷积 研究背景 指向性遥感图像分割(RRSIS):旨在根据文本描述实现遥感图像中目标对象的像素级定位 像素级定位:像素级定位指的是在图像中对目标对象的每个像素进行准确的定位和标记。这意味…...
【音视频】FLV格式分析
FLV概述 FLV(Flash Video)是Adobe公司推出的⼀种流媒体格式,由于其封装后的⾳视频⽂件体积⼩、封装简单等特点,⾮常适合于互联⽹上使⽤。⽬前主流的视频⽹站基本都⽀持FLV。采⽤FLV格式封装的⽂件后缀为.flv。 FLV封装格式是由⼀个⽂件头(file header)和…...
华为OD机试真题——最小的调整次数/特异性双端队列(2025A卷:100分)Java/python/JavaScript/C++/C语言/GO六种最佳实现
2025 A卷 100分 题型 本文涵盖详细的问题分析、解题思路、代码实现、代码详解、测试用例以及综合分析; 并提供Java、python、JavaScript、C、C语言、GO六种语言的最佳实现方式! 2025华为OD真题目录全流程解析/备考攻略/经验分享 华为OD机试真题《最小的调…...
华为OD机试真题——统计匹配的二元组个数(2025A卷:100分)Java/python/JavaScript/C++/C语言/GO六种最佳实现
2025 A卷 100分 题型 本文涵盖详细的问题分析、解题思路、代码实现、代码详解、测试用例以及综合分析; 并提供Java、python、JavaScript、C、C语言、GO六种语言的最佳实现方式! 2025华为OD真题目录全流程解析/备考攻略/经验分享 华为OD机试真题《统计匹配…...
4.16学习总结
完成134. 加油站 - 力扣(LeetCode)算法题 学习了filewriter的相关方法,了解了字符流的底层原理...
java面试篇 4.9
目录 mybatis: 1、mybatis的执行流程 2、mybatis是否支持延迟加载? 当我们需要去开启全局的懒加载时: 3、mybatis的一级和二级缓存 微服务 1、springcloud五大组件有哪些 2、服务注册和发现是什么意思?springcloud如何实现…...
子函数嵌套的意义——以“颜色排序”为例(Python)
多一层缩进精减参数传递,参数少平铺书代码写更佳。 笔记模板由python脚本于2025-04-16 11:52:53创建,本篇笔记适合喜欢子函数嵌套结构代码形式的coder翻阅。 【学习的细节是欢悦的历程】 博客的核心价值:在于输出思考与经验,而不仅…...
Python深度学习实现验证码识别全攻略
放在前面 Python深度学习实现验证码识别全攻略 Python深度学习实现验证码识别全攻略 在网络安全领域,验证码作为人机区分的关键防线,广泛应用于登录、注册等场景。随着技术演进,验证码样式愈发复杂,传统识别手段力不从心&#…...
【Linux】su、su-、sudo、sudo -i、sudo su - 命令有什么区别?分别适用什么场景?
目录 su su- sudo sudo -i sudo su - /etc/sudoers su 该命令将启动非登录shell,即虽然以该用户身份启动shell,但使用的是原始用户的环境设置。普通用户账户运行 su 命令切换到另一用户账户,需提供要切换的账户的密码。root用户&…...
算法-同余原理
在计算n个数相加或者相乘再取余时,中间结果可能会溢出导致结果错误,这时可以使用同余原理 一、同余原理 ①加法同余 (a[1] a[2] ... a[n])% m > (a[1] % m a[2] % m ... a[n] % m) % m ② 乘法同余 (…...
深入理解卷积神经网络(CNN):从原理到实践
引言 卷积神经网络(Convolutional Neural Networks, CNN)是深度学习领域最具影响力的架构之一,尤其在计算机视觉任务中表现出色。自2012年AlexNet在ImageNet竞赛中一战成名以来,CNN不断演进,推动着图像识别、医疗影像分析、自动驾驶等领域的快…...
深度学习常见模块实现001
文章目录 1.学习目的2.常见模块使用与实现2.1 ResNet18实现2.2 SeNet模块2.3 CBAM模块 1.学习目的 深度学习在图像处理这块,很多模块已经成型,并没有很多新的东西,更多的是不同的模块堆叠,所以需要我们不断总结,动手实…...
Python实现贪吃蛇三
上篇文章Python实现贪吃蛇一,实现了一个贪吃蛇的基础版本。后面第二篇文章Python实现贪吃蛇二修改了一些不足,但最近发现还有两点需要优化: 1、生成食物的时候有概率和记分牌重合 2、游戏缺少暂停功能 先看生成食物的时候有概率和记分牌重合的…...
windows server C# IIS部署
1、添加IIS功能 windows server 2012、windows server 2016、windows server 2019 说明:自带的是.net 4.5 不需要安装.net 3.5 尽量使用 windows server 2019、2016高版本,低版本会出现需要打补丁的问题 2、打开IIS 3、打开iis应用池 .net 4.5 4、添…...
LLM小白自学笔记:1.两种指令微调
一、LoRA 简单来说,LoRA不直接调整个大模型的全部参数(那样太费资源),而是在模型的某些层(通常是注意力层)加个“旁路”——两个小的矩阵(低秩矩阵)。训练时只更新这俩小矩阵&#x…...
杰弗里·辛顿:深度学习教父
名人说:路漫漫其修远兮,吾将上下而求索。—— 屈原《离骚》 创作者:Code_流苏(CSDN)(一个喜欢古诗词和编程的Coder😊) 杰弗里辛顿:当坚持遇见突破,AI迎来新纪元 一、人物简介 杰弗…...
RHCE 第一次作业
一.定义延迟任务 1.安装邮件服务 [roothaiou ~]# yum install s-nail -y 2.配置邮件服务 [roothaiou ~]# vim /etc/mail.rc 3.测试邮件服务 [roothaiou ~]# echo 88888888 | mail -v -s Passion 13571532874163.com 4.设置定时任务 [roothaiou ~]# crontab -e 二.时间同步…...
库洛游戏一面+二面
目录 一面 1. ArrayList和LinkedList的区别,就是我在插入和删除的时候他们在时间复杂度上有什么区别 2. hashmap在java的底层是怎么实现的 3. 红黑树的实现原理 4. 红黑树的特点 5. 为什么红黑树比链表查询速度快 6. 在java中字符串的操作方式有几种 7. Stri…...
基于多模态深度学习的亚急性脊髓联合变性全流程预测与个性化管理技术方案
目录 技术方案文档1. 数据收集与预处理模块2. 多模态预测模型构建3. 术前风险评估系统4. 术中实时监测系统5. 术后并发症预测与护理6. 统计分析与验证模块7. 健康教育系统技术实现说明技术方案文档 1. 数据收集与预处理模块 功能:构建数据管道,清洗并整合多源数据 伪代码示…...
蓝桥杯日期的题型
做题思路 一般分为3个步骤,首先要定义一个结构体来存储月份的天数,第一循环日期,第二判断日期是否为闰年,第三就是题目求什么 结构体 static int[] ds{0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31}; 判断是否闰年的函数 public static void f(int m,int d){//被4整…...
【树形dp题解】dfs的巧妙应用
【树形dp题解】dfs的巧妙应用 [P2986 USACO10MAR] Great Cow Gathering G - 洛谷 题目大意: Bessie 正在计划一年一度的奶牛大集会,来自全国各地的奶牛将来参加这一次集会。当然,她会选择最方便的地点来举办这次集会。 每个奶牛居住在 N N …...
《AI大模型应知应会100篇》第20篇:大模型伦理准则与监管趋势
第20篇:大模型伦理准则与监管趋势 摘要 随着人工智能(AI)技术的飞速发展,尤其是大模型(如GPT、PaLM等)在自然语言处理、图像生成等领域的广泛应用,AI伦理问题和监管挑战日益凸显。本文将梳理当…...
线上教学平台(vue+springboot+ssm+mysql)含文档+PPT
线上教学平台(vuespringbootssmmysql)含文档PPT 该系统是一个在线教学平台,主要分为管理员和学员两个角色;管理员界面包含首页、交流中心、学员管理、资料类型管理、学习资料管理、交流论坛、我的收藏管理、留言板管理、考试管理…...
Being-0:具有视觉-语言模型和模块化技能的人形机器人智体
25年3月来自北大、北京智源和 BeingBeyond 的论文“Being-0: A Humanoid Robotic Agent with Vision-Language Models and Modular Skills”。 构建能够在现实世界具身任务中达到人类水平表现的自主机器人智体,是人形机器人研究的终极目标。近期,基于基…...
Fiddler 进行断点测试:调试网络请求
目录 一、什么是断点测试? 二、Fiddler 的断点功能 三、如何在 Fiddler 中设置断点? 步骤 1:启动 Fiddler 步骤 2:启用断点 步骤 3:捕获请求 步骤 4:修改请求或响应 四、案例:模拟登录失…...
决策树:ID3,C4.5,CART树总结
树模型总结 决策树部分重点关注分叉的指标,多叉还是单叉,处理离散还是连续值,剪枝方法,以及回归还是分类 一、决策树 ID3(Iterative Dichotomiser 3) 、C4.5、CART决策树 ID3:确定分类规则判别指标、寻找能够最快速降低信息熵的方…...
DDS信号发生器设计
一、基本概述 1.1 DDS简介 DDS信号发生器即直接数字频率合成(Direct Digital Frequency Synthesis,简称DDS)是一种利用数字技术生成信号的方法。它通过数字信号处理技术,将数字信号转换为模拟信号,从而生成高质量的正…...
23黑马产品经理Day01
今天过了一遍23黑马产品经理的基础视频 问题思考维度 抓住核心用户 为什么需要抓住核心用户? 主要原因:用户越来越细分,保持市场竞争力,产品开发推广更聚焦 做产品为什么要了解用户:了解用户的付费点,…...
18-21源码剖析——Mybatis整体架构设计、核心组件调用关系、源码环境搭建
学习视频资料来源:https://www.bilibili.com/video/BV1R14y1W7yS 文章目录 1. 架构设计2. 核心组件及调用关系3. 源码环境搭建3.1 测试类3.2 实体类3.3 核心配置文件3.4 映射配置文件3.5 遇到的问题 1. 架构设计 Mybatis整体架构分为4层: 接口层&#…...
东方潮流亮相广州益民艺术馆|朋克编码“艺术家潮玩”系列开幕引爆热潮
4月15日,由我的宇宙旗下公司朋克编码携“艺术家潮玩”系列亮相广州白云益民艺术馆,标志着其全国文化推广计划正式启航。本次展览围绕“潮玩艺术东方文化”展开,融合传统文化与当代潮流,以年轻化方式赋能中国文化出海。 展览现场潮…...