完整例子和调用关系qt OpenGL
项目结构
- main.cpp
- MyOpenGLWidget.h
- MyOpenGLWidget.cpp
- vertex_shader.glsl
- fragment_shader.glsl
1. main.cpp
// 包含 Qt 应用程序的核心类,用于管理 Qt 应用程序的控制流。
#include <QApplication>// 包含 Qt 的主窗口类,可以创建一个包含菜单、工具栏等常见组件的窗口。
#include <QMainWindow>// 包含我们自定义的 OpenGL 渲染窗口类。
#include "MyOpenGLWidget.h"int main(int argc, char *argv[]) {/* 初始化 Qt 应用程序。argc 和 argv 是命令行参数,通常用来传递命令行参数到程序中。QApplication 是所有 Qt 应用程序的基础,它管理应用程序的生命周期和事件循环。*/QApplication app(argc, argv);// 创建一个主窗口对象 window,它是应用程序的主界面。QMainWindow window;// 创建自定义的 OpenGL 渲染窗口 glWidget。// &window 将主窗口 window 作为父窗口传递给 glWidget。MyOpenGLWidget *glWidget = new MyOpenGLWidget(&window);// 将 glWidget 设为 window 的中心部件。// QMainWindow 中的中心部件通常占据主窗口的最大区域。window.setCentralWidget(glWidget);// 设置窗口大小window.resize(800, 600);// 显示窗口window.show();return app.exec();
}
2. MyOpenGLWidget.h
#ifndef MYOPENGLWIDGET_H
#define MYOPENGLWIDGET_H// 包含 Qt 的 OpenGL 小部件类,这样我们可以创建一个 OpenGL 渲染窗口。
#include <QOpenGLWidget>
// 包含 OpenGL 功能的接口。我们可以通过这个类访问 OpenGL 的核心功能。
#include <QOpenGLFunctions>
// 包含 OpenGL 着色器程序类,负责加载、编译、链接和管理着色器程序。
#include <QOpenGLShaderProgram>
// 包含 OpenGL 缓冲区类,负责创建和管理顶点缓冲对象(VBO)和索引缓冲对象(EBO)。
#include <QOpenGLBuffer>/* 声明一个名为 MyOpenGLWidget 的类,继承自 QOpenGLWidget 和 QOpenGLFunctions。QOpenGLWidget 是 Qt 提供的 OpenGL 渲染窗口基类,QOpenGLFunctions 提供了 OpenGL 的基本功能。protected QOpenGLFunctions 是为了能够访问 OpenGL 的函数接口。
*/
class MyOpenGLWidget : public QOpenGLWidget, protected QOpenGLFunctions {Q_OBJECTpublic:MyOpenGLWidget(QWidget *parent = nullptr);~MyOpenGLWidget();protected:// 初始化 OpenGL 环境的函数。// 在这里你会设置 OpenGL 的状态,例如开启深度测试、设置视口、加载着色器等。void initializeGL() override;// 当窗口大小改变时自动调用。你可以在这里设置 OpenGL 视口以及投影矩阵。void resizeGL(int w, int h) override;// 每次需要重新绘制时调用。在这里绘制 OpenGL 图形。void paintGL() override;private:// 用于初始化并编译着色器的函数。void initializeShaders();// 用于初始化顶点数据和缓冲区的函数。void initializeBuffers();// 指向 OpenGL 着色器程序的指针。用于管理着色器的加载、编译、链接和绑定。QOpenGLShaderProgram *shaderProgram;// 一个 QOpenGLBuffer 对象,用于存储顶点数据的缓冲区(VBO)。QOpenGLBuffer vertexBuffer; // 顶点数组对象的句柄。VAO 用于管理顶点属性和缓冲区对象。GLuint VAO, VBO;
};#endif // MYOPENGLWIDGET_H
3. MyOpenGLWidget.cpp
#include "MyOpenGLWidget.h"
// 包含 OpenGL 着色器类,负责加载着色器代码并编译它们。
#include <QOpenGLShader>
#include <QOpenGLBuffer>
#include <QDebug>MyOpenGLWidget::MyOpenGLWidget(QWidget *parent): QOpenGLWidget(parent),shaderProgram(nullptr)
{
}MyOpenGLWidget::~MyOpenGLWidget() {// 销毁 shaderProgram,释放着色器程序的内存。delete shaderProgram;
}void MyOpenGLWidget::initializeGL() {// 1. 初始化 OpenGL 函数,确保可以使用 OpenGL 的所有函数。initializeOpenGLFunctions();// 启用深度测试,确保物体在 3D 场景中的正确显示(即前面物体遮挡后面物体)。glEnable(GL_DEPTH_TEST); // 2. 初始化着色器程序initializeShaders();// 3. 初始化顶点数据initializeBuffers();
}void MyOpenGLWidget::initializeShaders() {// 2.1 创建并编译顶点着色器// 创建一个新的着色器程序对象。shaderProgram = new QOpenGLShaderProgram();// 加载并编译顶点着色器,QOpenGLShader::Vertex 指明这是顶点着色器,文件路径为 :/vertex_shader.glsl。shaderProgram->addShaderFromSourceFile(QOpenGLShader::Vertex, ":/vertex_shader.glsl");// 加载并编译片段着色器,QOpenGLShader::Fragment 指明这是片段shaderProgram->addShaderFromSourceFile(QOpenGLShader::Fragment, ":/fragment_shader.glsl");// 2.2 链接着色器程序shaderProgram->link();shaderProgram->bind();
}void MyOpenGLWidget::initializeBuffers() {// 3.1 顶点数据(一个简单的三角形)GLfloat vertices[] = {-1.0f, 1.0f, 0.0f, // 顶点1-1.0f, -1.0f, 0.0f, // 顶点21.0f, -1.0f, 0.0f // 顶点3};// 3.2 创建 VAO 和 VBOglGenVertexArrays(1, &VAO); // 创建 VAOglBindVertexArray(VAO); // 绑定 VAOglGenBuffers(1, &VBO); // 创建 VBOglBindBuffer(GL_ARRAY_BUFFER, VBO); // 绑定 VBOglBufferData(GL_ARRAY_BUFFER, sizeof(vertices), vertices, GL_STATIC_DRAW); // 分配数据给 VBO// 3.3 设置顶点属性(位置)// 启用顶点属性(位置属性)shaderProgram->enableAttributeArray(0);// 设置位置数据的格式shaderProgram->setAttributeBuffer(0, GL_FLOAT, 0, 3, 3 * sizeof(GLfloat));vertexBuffer.release(); // 释放 VBOglBindVertexArray(0); // 解绑 VAO
}void MyOpenGLWidget::resizeGL(int w, int h) {// 4. 设置视口大小glViewport(0, 0, w, h);// 4.1 设置投影矩阵(透视投影)glMatrixMode(GL_PROJECTION); // 设定当前矩阵为投影矩阵glLoadIdentity(); // 重置当前矩阵// 设置透视投影gluPerspective(45.0, (GLfloat)w / (GLfloat)h, 0.1, 100.0);// 切换回模型视图矩阵glMatrixMode(GL_MODELVIEW);
}void MyOpenGLWidget::paintGL() {// 5. 清空屏幕并准备绘制// 清空颜色和深度缓冲glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);glLoadIdentity();// 5.1 使用着色器程序shaderProgram->bind();glBindVertexArray(VAO);// 5.2 绘制三角形// 使用顶点数据绘制三角形glDrawArrays(GL_TRIANGLES, 0, 3);glBindVertexArray(0);shaderProgram->release();
}
4. vertex_shader.glsl
#version 330 core
layout(location = 0) in vec3 position;
void main() {gl_Position = vec4(position, 1.0); // 直接输出位置
}
5. fragment_shader.glsl
#version 330 core
out vec4 color;
void main() {color = vec4(1.0, 0.0, 0.0, 1.0); // 输出红色
}
函数作用说明
- initializeGL():负责 OpenGL 环境的初始化工作,包括启用深度测试、初始化着色器和顶点数据。这个函数会在 QOpenGLWidget 创建后自动调用。
- initializeShaders():编译顶点和片段着色器,并将它们链接成一个 OpenGL 程序。着色器代码通常存储在外部文件中,这里用 addShaderFromSourceFile() 来加载。
- initializeBuffers():创建并初始化顶点缓冲对象(VBO)和顶点数组对象(VAO)。VBO 存储顶点数据,而 VAO 用于管理 VBO 的状态。顶点数据传送到 GPU 后,OpenGL 会使用它来绘制物体
- resizeGL(int w, int h):用于处理 OpenGL 上下文的大小变化,设置视口以及投影矩阵,使得绘制的图形不会在窗口大小变化时失真。
- paintGL():这个函数每次需要重新绘制时都会被调用。这里,我们清空屏幕,使用着色器程序,并通过 glDrawArrays() 绘制三角形。
调用关系和逻辑
- 在程序启动时,QOpenGLWidget 的构造函数会被调用。QOpenGLWidget 会创建一个 OpenGL 上下文,并在需要时调用 initializeGL()。
- 在 initializeGL() 中,我们初始化 OpenGL 状态(如深度测试),然后调用 initializeShaders() 来加载并编译着色器程序,接着调用 initializeBuffers() 初始化顶点数据。
- 每当窗口大小改变时,resizeGL() 会被自动调用来调整视口大小和设置合适的投影矩阵。
- 每次需要绘制时(例如每帧刷新时),paintGL() 会被调用。在此函数中,我们绑定着色器程序、顶点数组对象(VAO),并通过 glDrawArrays() 来绘制三角形。
总结
- initializeGL() -> 调用 initializeShaders() 初始化着色器,调用 initializeBuffers() 初始化顶点数据。
- paintGL() -> 每次绘制时使用着色器和顶点数据。
- resizeGL() -> 当窗口大小变化时调整视口和投影矩阵。
疑惑补充:
QOpenGLShaderProgram 对象-CSDN博客
OpenGL疑惑-CSDN博客
相关文章:
完整例子和调用关系qt OpenGL
项目结构 首先,你需要在 Qt 项目中创建一个类,继承自 QOpenGLWidget 来进行 OpenGL 渲染。文件结构如下: - main.cpp - MyOpenGLWidget.h - MyOpenGLWidget.cpp - vertex_shader.glsl - fragment_shader.glsl 1. main.cpp 这是 Qt 项目的入口…...
SpringBoot缓存抽象:@Cacheable与缓存管理器配置
文章目录 引言一、SpringBoot缓存抽象概述二、Cacheable注解详解2.1 Cacheable的关键属性 三、缓存管理器配置四、自定义键生成策略五、缓存同步与失效策略六、SpringBoot缓存最佳实践总结 引言 缓存是提升应用性能的关键技术,SpringBoot提供了强大的缓存抽象层&am…...
环路广播风暴演示图
以下是环路广播风暴的演示图及其说明: 环路广播风暴演示图 ----------------- ----------------- | Switch A | | Switch B | | | | | | [Port1]--------------------------[Port1] |…...
【webrtc debug tools】 rtc_event_log_to_text
一、rtc_event_log 简介 在学习分析webrtc的过程中,发现其内部提供了一个实时数据捕获接口RtcEventLog。通过该接口可以实时捕获进出webrtc的RTP报文头数据、音视频配置参数、webrtc的探测数据等。其内容实现可参考RtcEventLogImpl类的定义。其文件所在路径 loggin…...
【统计至简】【古典概率模型】联合概率、边缘概率、条件概率、全概率
联合概率、边缘概率、条件概率 联合概率边缘概率条件概率全概率 一副标准扑克牌有 54 张,包括 52 张常规牌(13 个点数,每个点数有 4 种花色)和 2 张王(大、小王)。我们从中随机抽取一张牌,定义以…...
Linux 字符设备驱动实例
编写驱动程序,并将内核模块加载到内核中,等待被用户程序调用。 在控制台中借助第一步申请到的设备号,使用 mknod 命令创建一个设备节点,并拟一个设备名称。 在用户程序中,使用 open 打开第二步中的设备名称ÿ…...
【git】【网络】【项目配置运行】HTTP 协议的微型简易 Web 服务器---tinyEasyMuduoWebServer
【git】【网络】【项目配置运行】HTTP 协议的微型简易 Web 服务器—tinyEasyMuduoWebServer csdn项目: 原文链接:https://blog.csdn.net/weixin_45178775/article/details/122257814 github链接:https://github.com/wyewyewye/tinyEasyMuduo…...
STM32驱动OLED屏幕全解析:从原理到温度显示实战(上) | 零基础入门STM32第五十三步
主题内容教学目的/扩展视频OLED显示屏重点课程电路原理,手册分析,驱动程序。初始化,清屏,ASCII字库,显示分区。调用显示函数。做带有加入图形和汉字显示的RTC时钟界面。讲字库的设计原理。 师从洋桃电子,杜…...
2024年9月中国电子学会青少年软件编程(Python)等级考试试卷(三级)答案 + 解析
更多真题在线练习系统:历年真题在线练习系统 一、单选题 1、以下表达式的值为True的是?( ) A. all( ,1,2,3) B. any([]) C. bool(abc) D. divmod(6,0) 正确答案:C 答案解析:A和B选项,Fal…...
苍穹外卖实战附源码-DAY1
一、打开项目的Nginx 1.通过nginx成功打开包装后的前端网页 二、导入sky的数据库 sky.sql 数据 CREATE DATABASE IF NOT EXISTS sky_take_out ; USE sky_take_out;DROP TABLE IF EXISTS address_book; CREATE TABLE address_book (id bigint NOT NULL AUTO_INCREMENT COMMEN…...
Spring 框架学习
技术体系结构 总体技术体系 单一架构 一个项目,一个工程,导出为一个 war 包,在一个 Tomcat 上运行,也叫 all in one。 单一架构,项目主要应用技术框架为:Spring、SpringMVC 、Mybatis。 分布式架构 一个…...
股票交易所官方api接口有哪些?获取和使用需要满足什么条件
炒股自动化:申请官方API接口,散户也可以 python炒股自动化(0),申请券商API接口 python炒股自动化(1),量化交易接口区别 Python炒股自动化(2):获取…...
NAT NAPT
NAT NAT(Network Address Translation,网络地址转换) 主要用于在不同网络(如私有网络和公共互联网)之间进行 IP 地址转换,解决IP 地址短缺问题,并提供一定的安全性。 IPv4 地址是 32 位…...
调优案例一:堆空间扩容提升吞吐量实战记录
📝 调优案例一:堆空间扩容提升吞吐量实战记录 🔧 调优策略:堆空间扩容三部曲 # 原配置(30MB堆空间) export CATALINA_OPTS"$CATALINA_OPTS -Xms30m -Xmx30m"# 新配置(扩容至120MB&am…...
对比 Vue2 选项式 API 与 Vue3 setup 语法
对比 Vue2 选项式 API 与 Vue3 setup 语法 1. 代码组织方式 Vue2 选项式 API 通过独立的选项(data, methods, computed, watch, 生命周期钩子等)组织代码。 export default {data() {return { count: 0 };},methods: {increment() { this.count; }},mou…...
ragflow-组件可视化工具 es默认用户名elastic
以下是针对各个后台组件的可视化工具及配置指南,基于您提供的环境变量和端口设置: 1. Elasticsearch 可视化工具: Kibana(官方推荐)、Cerebro、ElasticHQ访问方式: Kibana(集成管理): URL: http://<主机…...
MATLAB代码开发实战:从入门到高效应用
一、MATLAB生态系统的核心优势 (扩展原有内容,增加行业数据) MATLAB在全球工程领域的市场占有率已达67%(2024年IEEE统计),其核心优势体现在: 矩阵运算速度比传统编程快3-5倍包含22个专业工具箱…...
GStreamer —— 2.18、Windows下Qt加载GStreamer库后运行 - “播放教程 6:音频可视化“(附:完整源码)
运行效果 介绍 GStreamer 带有一组将音频转换为视频的元素。他们 可用于科学可视化或为您的音乐增添趣味 player 的本教程展示了: • 如何启用音频可视化 • 如何选择可视化元素 启用音频可视化实际上非常简单。设置相应的标志,当纯音频流为 found&#…...
50个经典的python库
本文整理了50个可以迅速掌握的经典Python库,了解它们的用途,无论你是刚踏上编程之路,还是希望在Python的世界里更加深入,这50个库都能帮助你快速起飞。 1. Taipy Taipy是一个开源Python库,用于轻松的端到端应用程序开…...
PostgreSQL学习笔记:PostgreSQL vs MySQL
PostgreSQL 和 MySQL 都是广泛使用的关系型数据库管理系统,它们有以下一些对比: 一、功能特性 1. 数据类型支持 PostgreSQL:支持丰富的数据类型,包括数组、JSON、JSONB、范围类型、几何类型等。对于复杂数据结构的存储和处理非…...
【CentOS】搭建Radius服务器
目录 背景简介:Radius是什么?Radius服务器验证原理搭建Radius服务器环境信息yum在线安装配置FreeRADIUS相关文件clients.conf文件users文件重启服务 验证 参考链接 背景 在项目中需要用到Radius服务器作为数据库代理用户的外部验证服务器,做…...
C#枚举(Enum)详解
在 C# 中,枚举(Enum) 是一种值类型,用于定义一组命名的常量值,提高代码的可读性和可维护性。以下是枚举的核心概念、用法和最佳实践: 1. 枚举的核心特性 类型安全:避免使用魔法数字&…...
DeepSeek进阶应用(一):结合Mermaid绘图(流程图、时序图、类图、状态图、甘特图、饼图)
🌟前言: 在软件开发、项目管理和系统设计等领域,图表是表达复杂信息的有效工具。随着AI助手如DeepSeek的普及,我们现在可以更轻松地创建各种专业图表。 名人说:博观而约取,厚积而薄发。——苏轼《稼说送张琥》 创作者&…...
Golang | Gin(简洁版)
文章目录 安装使用RESTful API响应页面获取请求参数路由讲解中间件 安装使用 Gin 是一个 golang 的微框架,封装比较优雅,API 友好,源代码比较明确。具有快速灵活,容错方便等特点。其实对于 golang 而言,web 框架的依赖…...
【C++ 系列文章 基础 01 -- std::string 与 fmt::format】
文章目录 Overview1. C 中的 std::string 简介2. fmt::format 格式化函数简介3. 示例代码解析4. 应用场景与优势2. std::string 与 fmt::format 简介std::stringfmt::format 3. 代码解析3.1 格式化字符串生成3.2 调用函数 cmd_handler3.3 返回 id_code 4. 代码整体流程与应用场…...
有效封装一个 WebSocket 供全局使用
前言 在现代 Web 应用中,实时通信已经成为越来越重要的一部分。而 WebSocket 技术的出现,使得实时通信变得更加高效和便捷。 WebSocket 协议是一种基于 TCP 协议的双向通信协议,它能够在客户端和服务器之间建立起持久性的连接,从…...
使用expect工具实现远程批量修改服务器密码
使用expect工具实现远程批量修改服务器密码 linux服务器安装Expect工具 1、首先查看系统中是否有安装expect。 # whereis expect 2、Expect工具是依赖tcl的,需要先安装tcl #wget https://sourceforge.net/projects/tcl/files/Tcl/8.4.19/tcl8.4.19-src.tar.gz …...
算法日记39:洛谷P4170涂色(区间DP)
一、题目 二、题解: 1、题目解析: 1)刚刚开始阅读到题目,我们发现并没有什么思路,因此我们可以尝试来模拟一下样例的情况 2)通过观察我们发现 n 2 : n2: n2:可以拆分成 1 1 11 11来解决问题 n 3 : n3:…...
Python学习第十三天
正则表达式 什么是正则表达式:简单来说就是通过特殊符号匹配想要的字符串,正则表达式本身就是基于字符串的一套搜索规则,掌握了正则表达式对于字符串有了更深的把握和理解。 概念 官网概念:正则表达式(Regular Expres…...
python-53-分别使用flask和streamlit进行向量存储和检索的服务开发实战
文章目录 1 flask应用1.1 flask服务程序1.2 调用方式2 streamlit应用2.1 streamlit应用程序2.2 操作应用3 参考附录分别基于flask和streamlit,开发了向量存储和检索的应用程序,给出了主体框架的示例,可以在此基础上结合实际应用进行改写。 1 flask应用 1.1 flask服务程序 …...
Unity热更新方案HybridCLR+YooAsset,从零开始,保姆级教程,纯c#开发热更
文章目录: 一、前言二、创建空工程三、接入HybridCLR四、接入YooAsset五、搭建本地资源服务器Nginx六、实战七、最后八、后记 一、前言 unity热更有很多方案,各种lua热更,ILRuntime等,这里介绍的是YooAssetHybridCLR的热更方案&a…...
蓝桥杯嵌入式组第十二届省赛题目解析+STM32G431RBT6实现源码
文章目录 1.题目解析1.1 分而治之,藕断丝连1.2 模块化思维导图1.3 模块解析1.3.1 KEY模块1.3.2 LED模块1.3.3 LCD模块1.3.4 TIM模块1.3.5 UART模块1.3.5.1 uart数据解析 2.源码3.第十二届题目 前言:STM32G431RBT6实现嵌入式组第十二届题目解析源码&#…...
Pac-Man(吃豆人) 游戏
目录 前言 1. Pygame游戏开发基础 1.1 Pygame简介 1.2 游戏开发基本概念 1.3 Pygame核心模块介绍 2. 游戏设计与规划 2.1 游戏规则设计 2.2 游戏对象规划 2.3 技术方案选择 3. 创建游戏窗口与初始化 3.1 初始化Pygame环境 3.2 设置游戏窗口 3.3 定义颜色和游戏参数…...
Unity Dots从入门到精通 Mono和Dots通讯
文章目录 前言安装 DOTS 包Mono To DotsDots To Mono 前言 DOTS(面向数据的技术堆栈)是一套由 Unity 提供支持的技术,用于提供高性能游戏开发解决方案,特别适合需要处理大量数据的游戏,例如大型开放世界游戏。 本文讲…...
WLAN(无线局域网)安全
WLAN安全涉及到保护无线局域网免受各种威胁和攻击,以确保数据的保密性、完整性和可用性。以下是关于WLAN安全的多方面介绍: 一、主要安全威胁 窃听:攻击者利用特殊设备监听无线信号,获取传输中的数据,如用户的账号密…...
故障诊断——neo4j入门
文章目录 neo4jQuickStartDemo neo4j QuickStart 详情可见博客:https://www.cnblogs.com/nhdlb/p/18703804,使用docker拉取最近的一个版本进行创建 docker run -it -d -p 7474:7474 -p 7687:7687 \ -v /disk5/neo4j_docker/data:/data \ -v /disk5/ne…...
【商城实战(25)】解锁UniApp移动端适配秘籍,打造完美商城体验
【商城实战】专栏重磅来袭!这是一份专为开发者与电商从业者打造的超详细指南。从项目基础搭建,运用 uniapp、Element Plus、SpringBoot 搭建商城框架,到用户、商品、订单等核心模块开发,再到性能优化、安全加固、多端适配…...
Qt 数据库操作(Sqlite)
数据库简介 关于数据库的基础知识这里就不做介绍了,相关博客可以查看: SQL基础知识 数据库学霸笔记 上面博客都写的比较详细,本文主要介绍如何使用Qt进行数据库相关操作,数据库分为关系型数据库和非关系型数据,关系…...
LINUX 指令大全
Linux服务器上有许多常用的命令,可以帮助你管理文件、目录、进程、网络和系统配置等。以下是一些常用的Linux命令: 文件和目录管理 ls:列出当前目录中的文件和子目录 bash lspwd:显示当前工作目录的路径 bash pwdcd:切…...
【Synchronized】不同的使用场景和案例
【Synchronized】不同的使用场景和案例 【一】锁的作用范围与锁对象【1】实例方法(对象锁)【2】静态方法(类锁)【3】代码块(显式指定锁对象)【4】类锁(通过Class对象显式锁定) 【二】…...
华为欧拉操作系统安装Docker服务
华为欧拉 20.03 操作系统安装 Docker 服务 一、安装前准备 系统环境检查 确认当前运行的操作系统为华为欧拉 24.03。可通过在终端执行以下命令查看: cat /etc/os - release欧拉系统可以使用以下命令: cat /etc/openEuler-release确保系统已连接互联…...
告别复杂日志解析 用bin2sql轻松实现MySQL数据闪回
mysqlbinlog⼯具使用 use test; CREATE TABLE t1 (id INT(11) NOT NULL AUTO_INCREMENT,name VARCHAR(20) DEFAULT NULL,PRIMARY KEY (id) ) ENGINEInnoDB DEFAULT CHARSETutf8mb4;INSERT INTO t1(id, name) SELECT 101, tome101; INSERT INTO t1(id, name) SELECT 102, tome1…...
uniapp简单table表
<template><view class"container"><scroll-view scroll-x"true" scroll-y"true" class"table-scroll"><view class"table-header"><view class"table-cell fixed-column">序号<…...
prompt大师高效提示词解析
Prompt大师李继刚高效提示词示例解析 一、「汉语新解」提示词 核心结构 采用Lisp语言框架嵌套中文语义,通过(defun 新汉语老师 ()...)定义角色风格(融合奥斯卡王尔德、鲁迅的批判性语言),用(隐喻 (一针见血...))构建解释逻辑链。…...
uni-app如何发布项目为app_2025
参考大佬的:uni-app项目打包成apk(本地打包篇)_uniapp打包apk-CSDN博客 1、导入前配置 在 HBuilder X 中打开uni-app项目中的 mainifest.json 文件,appid没有的话可以点“重新获取” 2、打包 然后关注控制台,导出成功…...
MySQL与Canal、RabbitMQ集成指南
MySQL 部分 1. 查看是否开启 binlog MySQL 8 默认开启 binlog。可以通过以下命令查看是否开启: SHOW VARIABLES LIKE log_bin;如果返回结果为 ON,则表示 binlog 已开启。 Variable_nameValuelog_binON 2. 若未开启 binlog,则需手动配置 …...
新品发布|启英泰伦联合启明云端推出离在线语音大模型方案
当前,生成式大模型正以颠覆性姿态重塑人机交互的边界,并逐渐向终端场景渗透。然而,云端大模型在落地终端场景时面临两大挑战: 在真实噪声场景下容易听不清、误识别,影响交互准确性;云端处理冗余数据及大规…...
网编高级 day01
网编高级 day01 0. 大纲1. Modbus协议1.1. Modbus起源1.2. 分类1.3. Modbus TCP特点 2. Modbus TCP协议格式2.1. 报文头2.2. 寄存器2.3. 功能码 0. 大纲 协议: modbus协议:modbus TCP、modbus RTUhtml 网页:http协议Webserver 工具&#x…...
2001-2023年上市公司数字化转型年报词频统计(年报词频统计和MDA词频统计两种方式)(吴非、赵宸宇、甄红线300+关键词三种方法)
2001-2023年上市公司数字化转型年报词频统计(年报词频统计和MD&A词频统计两种方式)(吴非、赵宸宇、甄红线300关键词三种方法) 1、时间:2001-2023年 2、来源:上市公司年报 3、参考文献: …...
数据分析与AI丨AI Fabric:数据和人工智能架构的未来
AI Fabric 架构是模块化、可扩展且面向未来的,是现代商业环境中企业实现卓越的关键。 在当今商业环境中,数据分析和人工智能领域发展可谓日新月异。几乎每天都有新兴技术诞生,新的应用场景不断涌现,前沿探索持续拓展。可遗憾的是&…...