Linux 图形化编程GTK3.0 快速入门之布局

GTK3.0 布局之水平布局

核心语法:

水平布局容器:

水平布局容器的创建:
GtkWidget *gtk_hbox_new( gboolean homogeneous,  gint spacing );

homogeneous:容器内控件是否大小一致( gboolean 取值为TRUE 或 FALSE )
spacing:控件之间的间隔( 以像素点为单位 ),gint相当于 C语言的int
返回值:水平布局控件指针


容器添加添加控件:
void gtk_container_add(GtkContainer *container, GtkWidget *widget);

container:容纳控件的容器
widget:要添加的控件


显示容器上所有控件
void gtk_widget_show_all(GtkWidget *widget);
widget:需要显示的控件

功能源码:

#include<stdio.h>
#include<gtk-3.0/gtk/gtk.h>

/**
 * 基于初始化图形库
 * 添加相关功能: 水平布局 
 * 
 * 细节要求:为水平布局添加二个Button 按钮
 * 
 * 
 * 
 */


static void print_hello(GtkWidget *widget, gpointer data) {
    g_print("Hello World\n");
}

int main(int argc, char *argv[]) {
    GtkWidget *window;
    GtkWidget *button;
    
    gtk_init(&argc, &argv); // gtk 初始化
    
    window = gtk_window_new(GTK_WINDOW_TOPLEVEL); // gtk 窗口实例化
    g_signal_connect(window, "destroy", G_CALLBACK(gtk_main_quit), NULL); //window 窗口绑定销毁事件,并触发gtk_main_quite 函数
    
    // gkt 水平布局组件初始化化
    GtkWidget *hbox = gtk_hbox_new(TRUE, 10);

    // 声明button1 组件
    GtkWidget *button1 = gtk_button_new_with_label("按钮一"); //  gtk Button 实例化
    g_signal_connect(button1, "clicked", G_CALLBACK(print_hello), NULL); // gtk Button 绑定cliend 事件并触发绑定函数

      // 声明button2 组件
    GtkWidget *button2 = gtk_button_new_with_label("按钮二"); //  gtk Button 实例化
    g_signal_connect(button2, "clicked", G_CALLBACK(print_hello), NULL); // gtk Button 绑定cliend 事件并触发绑定函数

    // 水平布局添加Button  组件
    gtk_container_add(GTK_CONTAINER(hbox), button1);
    gtk_container_add(GTK_CONTAINER(hbox), button2);

    // 把水平布局容器添加到窗口
	gtk_container_add(GTK_CONTAINER(window), hbox); 
    gtk_widget_show_all(window); // 显示windows 窗口包含的所有gtk 组件
    
    gtk_main(); //gtk 主事件循环开启
    
    return 0;
}

效果截图:

GTK3.0 布局之垂直布局

核心语法:

垂直布局容器的创建:
GtkWidget *gtk_vbox_new( gboolean homogeneous,  gint spacing );

功能源码:

#include<stdio.h>
#include<gtk-3.0/gtk/gtk.h>

/**
 * 基于初始化图形库
 * 添加相关功能: 垂直布局 
 * 
 * 细节要求:为垂直布局添加二个Button 按钮
 * 
 * 
 * 
 */


static void print_hello(GtkWidget *widget, gpointer data) {
    g_print("Hello World\n");
}

int main(int argc, char *argv[]) {
    GtkWidget *window;
    GtkWidget *button;
    
    gtk_init(&argc, &argv); // gtk 初始化
    
    window = gtk_window_new(GTK_WINDOW_TOPLEVEL); // gtk 窗口实例化
    g_signal_connect(window, "destroy", G_CALLBACK(gtk_main_quit), NULL); //window 窗口绑定销毁事件,并触发gtk_main_quite 函数
    
    // gkt 垂直布局组件初始化化
    GtkWidget *vbox = gtk_vbox_new(TRUE, 10);

    // 声明button1 组件
    GtkWidget *button1 = gtk_button_new_with_label("按钮一"); //  gtk Button 实例化
    g_signal_connect(button1, "clicked", G_CALLBACK(print_hello), NULL); // gtk Button 绑定cliend 事件并触发绑定函数

      // 声明button2 组件
    GtkWidget *button2 = gtk_button_new_with_label("按钮二"); //  gtk Button 实例化
    g_signal_connect(button2, "clicked", G_CALLBACK(print_hello), NULL); // gtk Button 绑定cliend 事件并触发绑定函数

    // 水平布局添加Button  组件
    gtk_container_add(GTK_CONTAINER(vbox), button1);
    gtk_container_add(GTK_CONTAINER(vbox), button2);

    // 把水平布局容器添加到窗口
	gtk_container_add(GTK_CONTAINER(window), vbox); 
    gtk_widget_show_all(window); // 显示windows 窗口包含的所有gtk 组件
    
    gtk_main(); //gtk 主事件循环开启
    
    return 0;
}

效果截图:

GTK3.0 布局之表格布局

核心语法:

表格布局容器的创建:
GtkWidget *gtk_table_new( guint rows, guint columns, gboolean homogeneous );

rows: 行数
coumns: 列数
homogeneous:容器内表格的大小是否相等
返回值:表格布局容器指针

布局容器添加控件:
void gtk_table_attach_defaults(GtkTable *table, GtkWidget *widget,guint left_attach,guint right_attach,guint top_attach,guint bottom_attach );

table:  容纳控件的容器 
widget: 要添加的控件

功能源码:

#include<stdio.h>
#include<gtk-3.0/gtk/gtk.h>

/**
 * 基于初始化图形库
 * 添加相关功能: 表格布局
 * 
 * 细节要求:为表格布局第一行添加二个Button 按钮
 *         为表格布局第一行添加一个Button 按钮
 * 
 * 
 * 
 */


static void print_hello(GtkWidget *widget, gpointer data) {
    g_print("Hello World\n");
}

int main(int argc, char *argv[]) {
    GtkWidget *window;
    GtkWidget *button;
    
    gtk_init(&argc, &argv); // gtk 初始化
    
    window = gtk_window_new(GTK_WINDOW_TOPLEVEL); // gtk 窗口实例化
    g_signal_connect(window, "destroy", G_CALLBACK(gtk_main_quit), NULL); //window 窗口绑定销毁事件,并触发gtk_main_quite 函数

     // gkt 表格布局组件初始化化
    GtkWidget *table = gtk_table_new(2, 2, TRUE); 
   
  

    // 声明button1 组件
    GtkWidget *button1 = gtk_button_new_with_label("按钮一"); //  gtk Button 实例化
    g_signal_connect(button1, "clicked", G_CALLBACK(print_hello), NULL); // gtk Button 绑定cliend 事件并触发绑定函数

      // 声明button2 组件
    GtkWidget *button2 = gtk_button_new_with_label("按钮二"); //  gtk Button 实例化
    g_signal_connect(button2, "clicked", G_CALLBACK(print_hello), NULL); // gtk Button 绑定cliend 事件并触发绑定函数

        // 声明button3 组件
    GtkWidget *button3 = gtk_button_new_with_label("按钮一"); //  gtk Button 实例化
    g_signal_connect(button3, "clicked", G_CALLBACK(print_hello), NULL); // gtk Button 绑定cliend 事件并触发绑定函数

    
    // 表格布局添加Button  组件
    gtk_table_attach_defaults(GTK_TABLE(table), button1, 0, 1, 0, 1);
    gtk_table_attach_defaults(GTK_TABLE(table), button2, 1, 2, 0, 1);
    gtk_table_attach_defaults(GTK_TABLE(table), button3, 0, 2, 1, 2);


    // 把表格布局容器添加到窗口
	gtk_container_add(GTK_CONTAINER(window), table); 

    gtk_widget_show_all(window); // 显示windows 窗口包含的所有gtk 组件
    
    gtk_main(); //gtk 主事件循环开启
    
    return 0;
}

效果截图:

GTK3.0 布局之固定布局

核心语法:

固定布局的创建:
GtkWidget *gtk_fixed_new(void);
返回值:固定布局容器指针


固定布局容器添加控件:
void gtk_fixed_put( GtkFixed *fixed,GtkWidget *widget,gint x,gint y );

fixed:容纳控件的容器
widget:要添加的控件

x, y:控件摆放位置的起点坐标,如下图:

设置控件的大小( 宽和高 ):
void gtk_widget_set_size_request(GtkWidget *widget,gint width,gint height );

widget:需要设置的控件
width:宽度
height:高度


移动固定布局里控件的位置:
void gtk_fixed_move(   GtkFixed *fixed,GtkWidget *widget,gint x,gint y);

fixed:固定布局容器
widget:需要移动的控件
x, y: 移动的位置

功能源码:

#include<stdio.h>
#include<gtk-3.0/gtk/gtk.h>

/**
 * 基于初始化图形库
 * 添加相关功能: 固定布局
 * 
 * 细节要求:为固定布局左上角添加二个Button 按钮, 距离窗口(5, 10)
 *         为固定布局右下角添加一个Button 按钮, 距离窗口(200, 200)
 * 
 * 
 * 
 */


static void print_hello(GtkWidget *widget, gpointer data) {
    g_print("Hello World\n");
}

int main(int argc, char *argv[]) {
    GtkWidget *window;
    
    gtk_init(&argc, &argv); // gtk 初始化
    
    window = gtk_window_new(GTK_WINDOW_TOPLEVEL); // gtk 窗口实例化
    g_signal_connect(window, "destroy", G_CALLBACK(gtk_main_quit), NULL); //window 窗口绑定销毁事件,并触发gtk_main_quite 函数

     // gkt 固定布局组件初始化化
    GtkWidget *fix = gtk_fixed_new(); 
   
  

    // 声明button1 组件
    GtkWidget *button1 = gtk_button_new_with_label("左上角"); //  gtk Button 实例化
    g_signal_connect(button1, "clicked", G_CALLBACK(print_hello), NULL); // gtk Button 绑定cliend 事件并触发绑定函数

      // 声明button2 组件
    GtkWidget *button2 = gtk_button_new_with_label("右下角"); //  gtk Button 实例化
    g_signal_connect(button2, "clicked", G_CALLBACK(print_hello), NULL); // gtk Button 绑定cliend 事件并触发绑定函数

    
    // 固定布局添加Button  组件
    gtk_fixed_put(GTK_FIXED(fix), button1, 5, 10);
     gtk_fixed_put(GTK_FIXED(fix), button2, 200, 200);


    // 把表格布局容器添加到窗口
	gtk_container_add(GTK_CONTAINER(window), fix); 

    gtk_widget_show_all(window); // 显示windows 窗口包含的所有gtk 组件
    
    gtk_main(); //gtk 主事件循环开启
    
    return 0;
}

效果截图:

GTK3.0 布局实战之计算器

功能源码:

#include<stdio.h>
#include<gtk-3.0/gtk/gtk.h>

/**
 * 基于初始化图形库
 * 添加相关功能: 通过表格布局,实现计算器布局
 * 
 * 细节要求: 基于windows 11 系统计算器实现布局.
 *         
 * 
 * 
 * 
 */

static void print_hello(GtkWidget *widget, gpointer data) {
    g_print("Hello World\n");
}


int main(int argc, char *argv[])
{
     GtkWidget *window;
    
    gtk_init(&argc, &argv); // gtk 初始化
    
    window = gtk_window_new(GTK_WINDOW_TOPLEVEL); // gtk 窗口实例化
    g_signal_connect(window, "destroy", G_CALLBACK(gtk_main_quit), NULL); //window 窗口绑定销毁事件,并触发gtk_main_quite 函数

     // gkt 表格布局组件初始化化
    GtkWidget *table = gtk_table_new(2, 2, TRUE); ; 
   
   // 行编辑的操作
	GtkWidget *entry = gtk_entry_new();		// 行编辑的创建
	gtk_entry_set_text(GTK_ENTRY(entry), NULL);	// 给行编辑设置内容
	gtk_editable_set_editable(GTK_EDITABLE(entry), FALSE);// 设置行编辑不允许编辑,只做显示用

    // 声明button1 组件
    GtkWidget *button1 = gtk_button_new_with_label("1"); //  gtk Button 实例化
    g_signal_connect(button1, "clicked", G_CALLBACK(print_hello), NULL); // gtk Button 绑定cliend 事件并触发绑定函数

      // 声明button2 组件
    GtkWidget *button2 = gtk_button_new_with_label("2"); //  gtk Button 实例化
    g_signal_connect(button2, "clicked", G_CALLBACK(print_hello), NULL); // gtk Button 绑定cliend 事件并触发绑定函数

    // 声明button3 组件
    GtkWidget *button3 = gtk_button_new_with_label("3"); //  gtk Button 实例化
    g_signal_connect(button3, "clicked", G_CALLBACK(print_hello), NULL); // gtk Button 绑定cliend 事件并触发绑定函数

    // 声明button4 组件
    GtkWidget *button4 = gtk_button_new_with_label("+"); //  gtk Button 实例化
    g_signal_connect(button4, "clicked", G_CALLBACK(print_hello), NULL); // gtk Button 绑定cliend 事件并触发绑定函数


    // 声明button5 组件
    GtkWidget *button5 = gtk_button_new_with_label("4"); //  gtk Button 实例化
    g_signal_connect(button5, "clicked", G_CALLBACK(print_hello), NULL); // gtk Button 绑定cliend 事件并触发绑定函数

      // 声明button6 组件
    GtkWidget *button6 = gtk_button_new_with_label("5"); //  gtk Button 实例化
    g_signal_connect(button6, "clicked", G_CALLBACK(print_hello), NULL); // gtk Button 绑定cliend 事件并触发绑定函数

    // 声明button7 组件
    GtkWidget *button7 = gtk_button_new_with_label("6"); //  gtk Button 实例化
    g_signal_connect(button7, "clicked", G_CALLBACK(print_hello), NULL); // gtk Button 绑定cliend 事件并触发绑定函数

    // 声明button8 组件
    GtkWidget *button8 = gtk_button_new_with_label("-"); //  gtk Button 实例化
    g_signal_connect(button8, "clicked", G_CALLBACK(print_hello), NULL); // gtk Button 绑定cliend 事件并触发绑定函数


    // 声明button9 组件
    GtkWidget *button9 = gtk_button_new_with_label("7"); //  gtk Button 实例化
    g_signal_connect(button9, "clicked", G_CALLBACK(print_hello), NULL); // gtk Button 绑定cliend 事件并触发绑定函数

      // 声明button10 组件
    GtkWidget *button10 = gtk_button_new_with_label("8"); //  gtk Button 实例化
    g_signal_connect(button10, "clicked", G_CALLBACK(print_hello), NULL); // gtk Button 绑定cliend 事件并触发绑定函数

    // 声明button11 组件
    GtkWidget *button11 = gtk_button_new_with_label("9"); //  gtk Button 实例化
    g_signal_connect(button11, "clicked", G_CALLBACK(print_hello), NULL); // gtk Button 绑定cliend 事件并触发绑定函数

    // 声明button12 组件
    GtkWidget *button12 = gtk_button_new_with_label("*"); //  gtk Button 实例化
    g_signal_connect(button12, "clicked", G_CALLBACK(print_hello), NULL); // gtk Button 绑定cliend 事件并触发绑定函数

    
    // 声明button13 组件
    GtkWidget *button13 = gtk_button_new_with_label("0"); //  gtk Button 实例化
    g_signal_connect(button13, "clicked", G_CALLBACK(print_hello), NULL); // gtk Button 绑定cliend 事件并触发绑定函数

      // 声明button14 组件
    GtkWidget *button14 = gtk_button_new_with_label("C"); //  gtk Button 实例化
    g_signal_connect(button14, "clicked", G_CALLBACK(print_hello), NULL); // gtk Button 绑定cliend 事件并触发绑定函数

    // 声明button15 组件
    GtkWidget *button15 = gtk_button_new_with_label("="); //  gtk Button 实例化
    g_signal_connect(button15, "clicked", G_CALLBACK(print_hello), NULL); // gtk Button 绑定cliend 事件并触发绑定函数

    // 声明button12 组件
    GtkWidget *button16 = gtk_button_new_with_label("/"); //  gtk Button 实例化
    g_signal_connect(button16, "clicked", G_CALLBACK(print_hello), NULL); // gtk Button 绑定cliend 事件并触发绑定函数

    // 表格布局添加Button  组件
    gtk_table_attach_defaults(GTK_TABLE(table), entry,  0, 4, 0, 1);
    // 表格布局添加Button  组件
    gtk_table_attach_defaults(GTK_TABLE(table), button1, 0, 1, 1, 2);
    gtk_table_attach_defaults(GTK_TABLE(table), button2, 1, 2, 1, 2);
    gtk_table_attach_defaults(GTK_TABLE(table), button3, 2, 3, 1, 2);
    gtk_table_attach_defaults(GTK_TABLE(table), button4, 3, 4, 1, 2);
    
    gtk_table_attach_defaults(GTK_TABLE(table), button5, 0, 1, 2, 3);
    gtk_table_attach_defaults(GTK_TABLE(table), button6, 1, 2, 2, 3);
    gtk_table_attach_defaults(GTK_TABLE(table), button7, 2, 3, 2, 3);
    gtk_table_attach_defaults(GTK_TABLE(table), button8, 3, 4, 2, 3);

    gtk_table_attach_defaults(GTK_TABLE(table), button9,  0, 1, 3, 4);
    gtk_table_attach_defaults(GTK_TABLE(table), button10, 1, 2, 3, 4);
    gtk_table_attach_defaults(GTK_TABLE(table), button11, 2, 3, 3, 4);
    gtk_table_attach_defaults(GTK_TABLE(table), button12, 3, 4, 3, 4);


    gtk_table_attach_defaults(GTK_TABLE(table), button13,  0, 1, 4, 5);
    gtk_table_attach_defaults(GTK_TABLE(table), button14, 1, 2, 4, 5);
    gtk_table_attach_defaults(GTK_TABLE(table), button15, 2, 3, 4, 5);
    gtk_table_attach_defaults(GTK_TABLE(table), button16, 3, 4, 4, 5);




    // 把表格布局容器添加到窗口
	gtk_container_add(GTK_CONTAINER(window), table); 

    gtk_widget_show_all(window); // 显示windows 窗口包含的所有gtk 组件
    
    gtk_main(); //gtk 主事件循环开启
    
    return 0;
}

效果截图:

GTK 官方文档和Demo 安装和查看 

1、安装GTK3.0 官方文档,请执行如下指令

sudo apt-get install devhelp

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/722469.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

C++语法01 基本框架

目录 什么是 C &#xff1f; 新建源程序 保存源程序 程序基本框架 #include using namespace std; int main() return 0; 编译 运行 什么是 C &#xff1f; C语言&#xff0c;是基本的程序设计语言之一【程序设计语言&#xff0c;简单的来说就是编写代码来操控计…

【深度学习驱动流体力学】OpenFOAM框架剖析

目录 1. applications 目录solvers&#xff1a;存放各种求解器。mesh&#xff1a;网格生成相关工具。 2. src 目录3. tutorials 目录其他主要目录和文件参考 OpenFOAM 源码文件目录的框架如下,OpenFOAM 是一个开源的计算流体力学 (CFD) 软件包&#xff0c;其源码文件结构设计精…

Maven 插件列表详解

Maven 是一个强大的项目管理和构建工具&#xff0c;广泛应用于 Java 项目中。作为一款优秀的构建管理工具&#xff0c;Maven 不仅提供了标准化的项目结构和依赖管理&#xff0c;还通过其丰富的插件系统&#xff0c;极大地扩展了其功能和灵活性。无论是代码编译、测试、打包&…

小程序分页新写法

// pages/query/query.js import {request } from ../../utils/request; Page({/*** 页面的初始数据*/data: {tabClickIndex: ,page: 1,limit: 10,listData: []},/*** 生命周期函数--监听页面加载*/onLoad(options) {this.getList()},/*** 生命周期函数--监听页面初次渲染完成*…

uniapp运行到模拟器(联想模拟器)

记录一下uniapp项目运行到联想模拟器的流程 先配置一下模拟器端口 填写对应的adb路径&#xff0c;也就是模拟器安装路径下的adb.exe的路径 然后打开模拟器的设置&#xff0c;搜索版本找到版本号&#xff0c;多次点击打开开发者模式 进入开发者选项&#xff0c;打开USB调试 …

QT 中QcomboBox控件的详细用法

在Qt中&#xff0c;QComboBox 是一个用于选择下拉列表中的项目的控件。它继承自 QWidget 并提供了许多成员函数来操作和管理这个下拉列表。以下是一些常用的 QComboBox 成员函数及其基本用法&#xff1a; 构造函数 QComboBox(QWidget *parent nullptr): 创建一个新的 QCombo…

职业探索-性能测试01-性能工程师成长路径-性能测试的核心概念-性能测试的全周期概览

职业探索-性能测试01-性能工程师成长路径-性能测试的核心概念-性能测试的全周期概览 参考来源 极客时间专栏&#xff1a;高楼的性能测试实战30讲 课程链接&#xff1a;https://time.geekbang.org/column/intro/100042501 性能测试分析的能力阶梯视图 性能工程师 真正的性能…

FuTalk设计周刊-Vol.034

&#x1f525;AI漫谈 热点捕手 1、反转反转再反转&#xff01;OpenAI“内斗”风波始末 故事还远远没有结束&#xff0c;一场“宫斗”解决不了商业世界影响下科技发展的路线之争&#xff0c;或许未来还将有很多“选择”将困扰这家年轻的企业&#xff0c;这是AI领域发展下必将经…

【论文阅读】-- 时间空间化:用于深度分类器训练的可扩展且可靠的时间旅行可视化

Temporality Spatialization: A Scalable and Faithful Time-Travelling Visualization for Deep Classifier Training 摘要1 引言2 动机3 问题定义4 方法论4.1 时空复合体4.2 复数约简 5 实验6 相关工作7 结论参考文献 摘要 时间旅行可视化回答了深度分类器的预测是如何在训练…

【单片机毕业设计选题24015】-基于物联网的家用智能充电桩计费系统设计

系统功能: 采用STM32最小系统板控制 1. 通过IM1281B电能计量模块读取系统电压电流功率电能等信息 2. 通过ESP8266WiFi模块连接阿里云 3. 使用RFID模块刷卡 4. 继电器模块控制充电 5. 12864OLED模块显示系统信息 6. 开启充电但检测不到系统电压时蜂鸣器模块报警。 主要功…

delphi 开发app

好的工具用起来就会顺手&#xff0c;很多Delphi从业者用惯了Delphi工具&#xff0c;在面对移动APP称王的时代似乎有力使不出。现在不用再担心JAVA语言的一些特性&#xff0c;太纠结了。我们直接用Delphi XE7开发吧。虽然Delphi XE2开始就支持移动开发了&#xff0c;但这中间的五…

ubuntu永久换镜像源详细方法

1.查看ubuntu的版本&#xff0c;不同的版本对应的不同的镜像源&#xff08;下面会讲到&#xff0c;先按步骤操作即可&#xff09; cat /etc/issue 2.先备份一个&#xff0c;防止更改错误 cp /etc/apt/sources.list /etc/apt/sources.list.backup 3.备份好之后删除原有的sour…

VUE 项目用 Docker+Nginx进行打包部署

一、Docker Docker 是一个容器化平台&#xff0c;允许你将应用程序及其依赖项打包在容器中。使用 Docker&#xff0c;你可以创建一个包含 Vue.js 应用程序的容器镜像&#xff0c;并在任何支持 Docker 的环境中运行该镜像。 二、Nginx Nginx 是一个高性能的 HTTP 服务器和反向…

能提醒我重要工作事项的软件是什么 工作提醒软件

在工作中&#xff0c;我们总是不可避免地需要处理各种琐碎而重要的事项。然而&#xff0c;人的记忆力毕竟有限&#xff0c;尤其是在忙碌和高压的工作环境下&#xff0c;遗忘似乎成了一个难以避免的问题。想象一下&#xff0c;你因为一个疏忽忘记了一个重要的会议&#xff0c;或…

UE4_材质_雨滴涟漪效果ripple effect_ben教程

学习笔记&#xff0c;不喜勿喷&#xff01;侵权立删&#xff0c;祝愿生活越来越好&#xff01; 雨水落下时会产生这些非常漂亮的同心环波纹&#xff0c;我们要做的第一件事是创建一个单个的圆环遮罩动画&#xff0c;我们希望环在开始的时候在中心很小&#xff0c;然后放大&…

【漏洞复现】海康威视 综合安防管理平台软件 center_api_files 任意文件上传漏洞

免责声明&#xff1a; 本文内容旨在提供有关特定漏洞或安全漏洞的信息&#xff0c;以帮助用户更好地了解可能存在的风险。公布此类信息的目的在于促进网络安全意识和技术进步&#xff0c;并非出于任何恶意目的。阅读者应该明白&#xff0c;在利用本文提到的漏洞信息或进行相关测…

AI大模型的战场:通用大模型VS垂直大模型,谁会赢?

人不走空 &#x1f308;个人主页&#xff1a;人不走空 &#x1f496;系列专栏&#xff1a;算法专题 ⏰诗词歌赋&#xff1a;斯是陋室&#xff0c;惟吾德馨 目录 &#x1f308;个人主页&#xff1a;人不走空 &#x1f496;系列专栏&#xff1a;算法专题 ⏰诗词歌…

C语言 | Leetcode C语言题解之第162题寻找峰值

题目&#xff1a; 题解&#xff1a; int findPeakElement(int* nums, int numsSize) {int ls_max0;for(int i1;i<numsSize;i){if(nums[ls_max]>nums[i]);else{ls_maxi;}}return ls_max; }

部署LVS-NAT群集

目录 LVS-NAT模式部署 ​1.准备工具 2.所有虚拟机初始化 3.配置NFS共享存储&#xff08;20.0.0.40&#xff09; 3.1安装软件包 3.2创建共享目录和测试文件 4.web服务器部署&#xff08;20.0.0.20 20.0.0.30配置相同&#xff09; 4.1yum安装nginx服务 4.2测试nfs共享服…

上海科技博物馆超薄OLED柔性壁纸屏应用方案

产品&#xff1a;2组55寸OLED柔性屏2x1 特点&#xff1a;嵌入墙体&#xff0c;与空间装饰融入一体 用途&#xff1a;播放文物展示 一、项目背景 上海科技博物馆作为展示科技与文化的交汇点&#xff0c;一直致力于为观众提供沉浸式的参观体验。为了提升文物展示的现代化和科技感…