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

【QGIS二次开发】地图显示与交互-01

 1. 系统界面设计

设计的系统界面如下,很好还原了QGIS、ArcGIS等软件的系统界面,充分利用了QT中顶部工具栏、菜单栏、底部状态栏,实现了图层管理器、鹰眼图、工具箱三个工具面板。

菜单栏、工具栏、工具箱集成了系统中实现的全部功能,并进行了功能分区,让用户能够更便捷地进行操作,底部状态栏显示了标语和QGIS工程的坐标系更方便用户的查看。

图 1 界面设计

2. 地图显示与交互

2.1 地图显示

图层显示通过在工具栏中添加按钮为用户提供了打开矢量与栅格数据的方式,打开位置如下:

图 2 地图数据显示按钮

        打开矢量数据效果如下:

图 3 打开矢量数据效果

        打开栅格数据的操作步骤和显示效果如下:

图 4 打开栅格数据界面

图 5 打开栅格数据效果

        实现数据显示的代码如下,对于矢量数据处理on_actionAddVectorData_triggered函数中用户先通过文件对话框选择一个或多个Shapefile文件,然后针对每个选择的文件,创建一个QgsVectorLayer对象并检查其有效性。如果图层有效,将其添加到地图图层列表layerList中。最后,将所有矢量图层添加到QgsProject中,并刷新地图画布map canvas。

        对于栅格数据处理on_actionAddRasterData_triggered函数:用户通过文件对话框选择一个或多个栅格文件,然后为每个选择的文件创建一个QgsRasterLayer对象并检查其有效性。如果图层有效,将其添加到地图图层列表layerList中。最后,将所有栅格图层添加到QgsProject中,并刷新地图画布。

2.2 图层管理

图层管理通过QGIS目录树形式管理地图文档中的图层,通过添加添加组、展开和折叠所有组、移除图层/组四个按键,实现了控制图层的显示与隐藏等功能,图层树的实现界面如下,打开了多个矢量文件用于展示:

图 6 图层管理功能实现

void DataViewer::on_actionAddVectorData_triggered()    
{    QStringList layerPathList = QFileDialog::getOpenFileNames(this, "选择矢量数据", "", "shapefile (*.shp)");    QList<QgsMapLayer*> layerList;    for each (QString layerPath in layerPathList)    {    QFileInfo fi(layerPath);    if (!fi.exists()) { return; }    QString layerBaseName = fi.baseName(); // 图层名称    QgsVectorLayer* vecLayer = new QgsVectorLayer(layerPath, layerBaseName);    if (!vecLayer) { return; }    if (!vecLayer->isValid())    {    QMessageBox::information(0, "", "layer is invalid");    return;    }    layerList << vecLayer;    }    QgsProject::instance()->addMapLayers(layerList);    m_mapCanvas->refresh();    
}    void DataViewer::on_actionAddRasterData_triggered()    
{    QStringList layerPathList = QFileDialog::getOpenFileNames(this, "选择栅格数据", "", "Image (*.img *.tif *.tiff)");    QList<QgsMapLayer*> layerList;    for each (QString layerPath in layerPathList)    {    QFileInfo fi(layerPath);    if (!fi.exists()) { return; }    QString layerBaseName = fi.baseName(); // 图层名称    QgsRasterLayer* rasterLayer = new QgsRasterLayer(layerPath, layerBaseName);    if (!rasterLayer) { return; }    if (!rasterLayer->isValid())    {    QMessageBox::information(0, "", "layer is invalid");    return;    }    layerList << rasterLayer;    }    QgsProject::instance()->addMapLayers(layerList);    m_mapCanvas->refresh();    
}    

通过在dataviewer类中实现成员函数initLayerTreeView用于初始化地图图层树视图。通过创建图层树模型,并与当前QGIS项目的图层树根节点相关联,实现了对图层的显示和管理。代码中设置了图层树模型的各项属性,包括节点的重新排序、重命名、可见性控制等。同时,通过建立图层树与地图画布之间的桥梁,保持了它们之间的同步。为了提供更多的操作功能,代码还添加了自定义的图层树操作,如添加组、展开和折叠所有组、移除图层/组等。这些操作被整合到一个工具栏中,通过设置工具栏的图标大小和连接相应的信号槽,提供了用户友好的操作界面。整体而言,这段代码实现了一个功能完备的地理信息系统图层树控制界面,为用户提供了方便的图层管理和操作功能。

2.3 图层透明度设置

任务要求:支持用户选择一个图层,设置该图层的透明度。

        完成的逻辑是在QgsLayerTreeViewMenuProvider的实例类中添加一个editOpacity方法,实现修改透明度功能。

        代码逻辑如下:

  1. 首先获取当前选中的图层。如果没有选中的图层,就直接返回。
  2. 创建一个新的对话框,并设置其标题为"修改透明度"。
  3. 创建一个水平布局,并将其设置到对话框中。
  4. 创建一个滑动条和一个输入框,并将它们添加到布局中。滑动条的范围设置为0到100,初始值设置为100。输入框的初始值设置为1.0。
  5. 连接滑动条的valueChanged信号到一个槽函数。在这个槽函数中,首先将滑动条的值转换为0.0到1.0的透明度值,然后调用updateOpacity方法更新输入框的值,最后更新图层的透明度。
  6. 连接输入框的textChanged信号到一个槽函数。在这个槽函数中,首先将输入框的值转换为0到100的整数值,然后调用updateOpacity方法更新滑动条的值,最后更新图层的透明度。
  7. 显示对话框,并等待用户的操作。
  8. updateOpacity方法用于更新图层的透明度。首先检查图层的类型,如果图层是栅格图层,就获取图层的渲染器,然后设置渲染器的透明度,并触发图层的重绘。如果图层是矢量图层,就获取图层的渲染器,然后获取渲染器的所有符号,对每个符号设置透明度,并触发图层的重绘。

实现的效果是,在图层管理器中图层的右键菜单中添加修改透明度选项,点击修改透明度选项打开对话框,对话框内包含了一个滑块条和输入框,滑动滑块或修改输入框内的数字即可修改图层透明度。同时滑动滑块或修改输入框内的数字时另一项也随之改变。可以修改矢量图层和栅格图层的透明度。

核心代码如下:

void MenuProvider::editOpacity() {  QgsMapLayer* mapLayer = mView->currentLayer();  if (!mapLayer)  return;  // 创建一个新的对话框  QDialog dialog;  dialog.setWindowTitle("修改透明度");  // 创建一个水平布局  QHBoxLayout layout(&dialog);  // 创建一个滑动条  QSlider slider(Qt::Horizontal);  slider.setRange(0, 100);  layout.addWidget(&slider);  // 创建一个输入框  QLineEdit lineEdit;  layout.addWidget(&lineEdit);  slider.setValue(100);  lineEdit.setText(QString::number(1.0));  layout.addWidget(&slider, 3);  // 设置滑动条的拉伸因子为3  layout.addWidget(&lineEdit, 1);  // 设置输入框的拉伸因子为1  dialog.resize(300, 50);  // 连接滑动条的valueChanged信号到一个槽函数  QObject::connect(&slider, &QSlider::valueChanged, [&](int value) {  // 将滑动条的值转换为0.0到1.0的透明度值  double opacity = value / 100.0;  // 更新输入框的值  lineEdit.setText(QString::number(opacity));  // 更新图层的透明度  updateOpacity(mapLayer, opacity);  });  // 连接输入框的textChanged信号到一个槽函数  QObject::connect(&lineEdit, &QLineEdit::textChanged, [&](const QString& text) {  // 将输入框的值转换为0到100的整数值  int value = text.toDouble() * 100;  // 更新滑动条的值  slider.setValue(value);  // 更新图层的透明度  updateOpacity(mapLayer, text.toDouble());  });  // 显示对话框  dialog.exec();  
}  void MenuProvider::updateOpacity(QgsMapLayer* mapLayer, double opacity) {  // 检查图层类型  QgsRasterLayer* rasterLayer = qobject_cast<QgsRasterLayer*>(mapLayer);  QgsVectorLayer* vectorLayer = qobject_cast<QgsVectorLayer*>(mapLayer);  // 调整栅格图层透明度  if (rasterLayer) {  QgsRasterRenderer* renderer = rasterLayer->renderer();  if (renderer) {  renderer->setOpacity(opacity);  rasterLayer->triggerRepaint();  }  }  // 调整矢量图层透明度  else if (vectorLayer) {  QgsFeatureRenderer* renderer = vectorLayer->renderer();  if (renderer) {  QgsRenderContext renderContext;  QgsSymbolList symbols = renderer->symbols(renderContext);  for (QgsSymbol* symbol : symbols) {  symbol->setOpacity(opacity);  }  vectorLayer->triggerRepaint();  }  }  
}  

实现的效果如下:

图 7 右键-透明度按键

图 8 设置透明度

        

        其余内容见下篇!!

相关文章:

【QGIS二次开发】地图显示与交互-01

1. 系统界面设计 设计的系统界面如下&#xff0c;很好还原了QGIS、ArcGIS等软件的系统界面&#xff0c;充分利用了QT中顶部工具栏、菜单栏、底部状态栏&#xff0c;实现了图层管理器、鹰眼图、工具箱三个工具面板。 菜单栏、工具栏、工具箱集成了系统中实现的全部功能&#x…...

Microsoft.Office.Interop.Excel 的简单操作

Microsoft.Office.Interop.Excel 的简单操作 1、安装 Microsoft.Office.Interop.Excel2、声明引用 Microsoft.Office.Interop.Excel3、简单的新建 EXCEL 操作代码4、将 DataGridView 表数据写到 EXCEL 操作代码5、将 EXCEL 表数据读取到 C# 数据表 DataTable 操作代码 1、安装 …...

Debezium日常分享系列之:Debezium 3.0.8.Final发布

Debezium日常分享系列之&#xff1a;Debezium 3.0.8.Final发布 稀疏向量逻辑类型重命名架构历史配置默认值的更改潜在的 Vitess 数据丢失Oracle 的 Reselect 列后处理器行为更改MariaDB 的 SSL 连接 稀疏向量逻辑类型重命名 PostgreSQL 扩展 vector&#xff08;也称为 pgvecto…...

论传输层的TCP协议和UDP协议scoket通讯

TCP传输前需要三次握手---断开需要四次挥手 谁先发出请求、谁是客户端&#xff08;client&#xff09;另一个就是服务器&#xff08;server&#xff09;---简称CS架构 现在更多的是BS架构 什么是BS架构&#xff1f; blower server 浏览器服务器---也就是浏览器代替了客户端…...

《鸢尾花数学大系:从加减乘除到机器学习》开源资源

《鸢尾花数学大系&#xff1a;从加减乘除到机器学习》开源资源 Gitee&#xff1a;https://gitee.com/higkoo/ bilibili&#xff1a;https://space.bilibili.com/513194466 GitHub&#xff1a;https://github.com/Visualize-ML...

DeepSeek 助力 Vue3 开发:打造丝滑的表格(Table)示例2: 分页和排序

前言:哈喽,大家好,今天给大家分享一篇文章!并提供具体代码帮助大家深入理解,彻底掌握!创作不易,如果能帮助到大家或者给大家一些灵感和启发,欢迎收藏+关注哦 💕 目录 DeepSeek 助力 Vue3 开发:打造丝滑的表格(Table)示例2: 分页和排序📚页面效果📚指令输入定义…...

MySQL——DQL、多表设计

目录 一、DQL 1.基本查询 2.条件查询 3.分组查询 4.排序查询 5.分页查询 二、多表设计 1.一对多 2.一对一 3.多对多 一、DQL 1.基本查询 注意&#xff1a; *号代表查询所有字段&#xff0c;在实际开发中尽量少用&#xff08;不直观、影响效率&#xff09; 2.条件查询…...

【文献阅读】The Efficiency Spectrum of Large Language Models: An Algorithmic Survey

这篇文章发表于2024年4月 摘要 大语言模型&#xff08;LLMs&#xff09;的快速发展推动了多个领域的变革&#xff0c;重塑了通用人工智能的格局。然而&#xff0c;这些模型不断增长的计算和内存需求带来了巨大挑战&#xff0c;阻碍了学术研究和实际应用。为解决这些问题&…...

玩转大模型——Trae AI IDE国内版使用教程

文章目录 Trae AI IDE完备的 IDE 功能强大的 AI 助手 安装 Trae 并完成初始设置管理项目什么是 “工作空间”&#xff1f;创建项目 管理插件安装插件从 Trae 的插件市场安装从 VS Code 的插件市场安装 禁用插件卸载插件插件常见问题暂不支持安装 VS Code 插件市场中某个版本的插…...

【实战 ES】实战 Elasticsearch:快速上手与深度实践-2.3.1 避免频繁更新(Update by Query的代价)

&#x1f449; 点击关注不迷路 &#x1f449; 点击关注不迷路 &#x1f449; 点击关注不迷路 文章大纲 Elasticsearch数据更新与删除深度解析&#xff1a;2.3.1 避免频繁更新&#xff08;Update by Query的代价&#xff09;案例背景1. Update by Query的内部机制解析1.1 文档更…...

stable-diffusion-webui 加载模型文件

背景 stable-diffusion-webui 安装完毕后&#xff0c;默认的模型生成的效果图并不理想&#xff0c;可以根据具体需求加载指定的模型文件。国内 modelscope 下载速度较快&#xff0c;以该站为例进行介绍 操作步骤 找到指定的模型文件 在 https://modelscope.cn/models 中查找…...

BKA-CNN基于黑翅鸢算法优化卷积神经网络的数据多特征分类预测Matlab

BKA-CNN基于黑翅鸢算法优化卷积神经网络的数据多特征分类预测Matlab 目录 BKA-CNN基于黑翅鸢算法优化卷积神经网络的数据多特征分类预测Matlab分类效果基本介绍BKA-CNN基于黑翅鸢算法优化卷积神经网络的数据多特征分类预测一、引言1.1、研究背景和意义1.2、研究现状1.3、研究目…...

SparkStreaming之04:调优

SparkStreaming调优 一 、要点 4.1 SparkStreaming运行原理 深入理解 4.2 调优策略 4.2.1 调整BlockReceiver的数量 案例演示&#xff1a; object MultiReceiverNetworkWordCount {def main(args: Array[String]) {val sparkConf new SparkConf().setAppName("Networ…...

maven高级-05.私服

一.私服...

FFmpeg-chapter2-C++中的线程

1 常规的线程 一般常规的线程如下所示 // CMakeProject1.cpp: 定义应用程序的入口点。 //#include "CMakeProject1.h" #include <thread> using namespace std;void threadFunction(int index) {for (int i 0; i < 1000; i){std::cout << "Th…...

【前端】简单原生实例合集html,css,js

长期补充&#xff0c;建议关注收藏点赞。 目录 a标签设置不一样的花样&#xff08;图片但不用img)侧边固定box分栏input各种类型iframe表单拖拽 a标签设置不一样的花样&#xff08;图片但不用img) a标签里面不用嵌套img&#xff0c;直接设置为其bg-img即可 <!DOCTYPE html…...

Linux下的shell指令(一)

作业 1> 在终端提示输入一个成绩&#xff0c;通过shell判断该成绩的等级 [90,100] : A [80, 90) : B [70, 80) : C [60, 70) : D [0, 60) : 不及格 #!/bin/bash read -p "请输入学生成绩:" score if [ "$score" -ge 90 ] && [ "$scor…...

AJAX介绍

XMLHttpRequest get请求使用 const xhr new XMLHttpRequest(); xhr.open("GET", "/data/test.json", true); xhr.onreadystatechange function () {if (xhr.readyState 4) {if (xhr.status 200) {alert(xhr.responseText);} else {console.log("…...

Serilog: 强大的 .NET 日志库

Serilog 是一个功能强大的日志记录库&#xff0c;专为 .NET 平台设计。它提供了丰富的 API 和可插拔的输出器及格式化器&#xff0c;使得开发者能够轻松定制和扩展日志记录功能。在本文中&#xff0c;我们将探索 Serilog 的基础知识、API 使用、配置和一些常见的示例。 1. 日志…...

串口通讯基础

第1章 串口的发送和接收过程 1.1 串口接收过程 当上位机给串口发送(0x55)数据时&#xff0c;MCU的RX引脚接受到&#xff08;0x55&#xff09;数据&#xff0c;数据(0x55)首先进入移位寄存器。数据全部进入移位寄存器后&#xff0c;一次将&#xff08;0x55&#xff09;全部搬运…...

SSL证书和HTTPS:全面解析它们的功能与重要性

每当我们在互联网上输入个人信息、进行在线交易时&#xff0c;背后是否有一个安全的保障&#xff1f;这时&#xff0c;SSL证书和HTTPS便扮演了至关重要的角色。本文将全面分析SSL证书和HTTPS的含义、功能、重要性以及它们在网络安全中的作用。 一、SSL证书的定义与基本概念 S…...

全国青少年航天创新大赛各项目对比分析

全国青少年航天创新大赛各项目对比分析 一、比赛场地对比 项目名称场地尺寸场地特点组别差异筑梦天宫虚拟三维场景动态布局&#xff0c;小学组3停泊处&#xff0c;初高中组6停泊处&#xff1b;涉及传送带、机械臂、传感器等虚拟设备。初中/高中组任务复杂度更高&#xff0c;运…...

低空监视-无人机专用ADS-B应答机

产品简介 ping200XR是经过TSO适航认证的无人机专用ADS-B应答机&#xff0c;用于中大型无人机的低空监视。将经过认证的航空级航电设备引入无人机系统。该应答机支持航管二次雷达A&#xff0c;C/S模式和ADS-B OUT。重量仅52克满足无人机所面临的尺寸、重量、功耗的挑战&#xf…...

【linux】文件与目录命令 - sort

文章目录 1. 基本用法2. 常用参数3. 用法举例4. 注意事项 sort 命令用于对文本文件中的行进行排序&#xff0c;支持按字母顺序、数值大小、特定字段等方式进行排序。默认按字母顺序升序排序。 1. 基本用法 语法&#xff1a; sort [选项] 文件 sort [选项] -o 输出文件 文件功能…...

【工具推荐】在线提取PDF、文档、图片、论文中的公式

网址1&#xff1a;https://simpletex.cn/ai/latex_ocr 网址2: https://www.latexlive.com/home 推荐理由&#xff1a;无需下载&#xff0c;在线使用&#xff0c;直接 截图 CTRLV 效果更佳。...

大模型在垂直行业的落地实践:从通用到定制化的技术跃迁

大模型在垂直行业的落地实践&#xff1a;从通用到定制化的技术跃迁 一、通用大模型的局限性&#xff1a;从 “全能” 到 “专精” 的转型挑战 通用大模型&#xff0c;如 GPT 系列&#xff0c;凭借其强大的自然语言处理能力&#xff0c;在文本生成、语义理解、机器翻译等基础任…...

FPGA开发,使用Deepseek V3还是R1(1):应用场景

以下都是Deepseek生成的答案 FPGA开发&#xff0c;使用Deepseek V3还是R1&#xff08;1&#xff09;&#xff1a;应用场景 FPGA开发&#xff0c;使用Deepseek V3还是R1&#xff08;2&#xff09;&#xff1a;V3和R1的区别 FPGA开发&#xff0c;使用Deepseek V3还是R1&#x…...

Docker概念与架构

文章目录 概念docker与虚拟机的差异docker的作用docker容器虚拟化 与 传统虚拟机比较 Docker 架构 概念 Docker 是一个开源的应用容器引擎。诞生于 2013 年初&#xff0c;基于 Go 语言实现。Docker 可以让开发者打包他们的应用以及依赖包到一个轻量级、可移植的容器中&#xf…...

算法之数据结构

目录 数据结构 数据结构与算法面试题 数据结构 《倚天村 • 图解数据结构》 | 小傅哥 bugstack 虫洞栈 ♥数据结构基础知识体系详解♥ | Java 全栈知识体系 线性数据结构 | JavaGuide 数据结构与算法面试题 数据结构与算法面试题 | 小林coding...

Mysql学习笔记(六)Django连接MySQL

一、Django中的MySQL驱动程序 Python中常见的MySQL驱动程序&#xff1a; MySQL-python&#xff1a;就是MySQLdb&#xff0c;是对C语言操作MySQL的封装&#xff0c;支持Python2&#xff0c;不支持Python3mysqlclient:MySQL-python的另一个分支&#xff0c;支持Python3pymysql&am…...

手机号码归属地的实现

手机号码归属地查询一般可以通过以下几种方式实现&#xff1a; 1. 使用公开的号码归属地数据库 可以使用国内的手机号码归属地数据库&#xff0c;如&#xff1a; 百度号码归属地开放API阿里云号码归属地API腾讯号码归属地API 你可以在本地存储一个 CSV 或 SQLite 数据库&…...

本地部署 DeepSeek:从 Ollama 配置到 Spring Boot 集成

前言 随着人工智能技术的迅猛发展&#xff0c;越来越多的开发者希望在本地环境中部署和调用 AI 模型&#xff0c;以满足特定的业务需求。本文将详细介绍如何在本地环境中使用 Ollama 配置 DeepSeek 模型&#xff0c;并在 IntelliJ IDEA 中创建一个 Spring Boot 项目来调用该模型…...

2025年渗透测试面试题总结- 阿某云安全实习(题目+回答)

网络安全领域各种资源&#xff0c;学习文档&#xff0c;以及工具分享、前沿信息分享、POC、EXP分享。不定期分享各种好玩的项目及好用的工具&#xff0c;欢迎关注。 目录 阿里云安全实习 一、代码审计经验与思路 二、越权漏洞原理与审计要点 三、SSRF漏洞解析与防御 四、教…...

WHAT - 前端异步事件流处理场景梳理

目录 一、典型场景二、解决方案与技术选型1. 基础异步控制2. 状态管理方案3. 复杂任务调度4. 任务取消机制5. 微任务队列优化 三、最佳实践建议四、工具链推荐 前端异步任务流处理是现代Web开发中常见的需求&#xff0c;尤其在复杂业务逻辑、高交互性应用中不可或缺。以下是常见…...

PHP 包含(Include)机制详解

PHP 包含(Include)机制详解 在PHP编程中,include和require是两个非常基础的函数,用于在脚本中包含其他文件。它们在模块化编程中发挥着至关重要的作用,使得代码更易于维护和扩展。本文将详细介绍PHP的包含机制,包括其工作原理、使用方法以及最佳实践。 一、PHP 包含机制…...

Metal学习笔记十:光照基础

光和阴影是使场景流行的重要要求。通过一些着色器艺术&#xff0c;您可以突出重要的对象、描述天气和一天中的时间并设置场景的气氛。即使您的场景由卡通对象组成&#xff0c;如果您没有正确地照亮它们&#xff0c;场景也会变得平淡无奇。 最简单的光照方法之一是 Phong 反射模…...

MongoDB 高级索引

MongoDB 高级索引 摘要 在数据库管理中,索引是提高查询效率的关键因素。MongoDB,作为一款流行的NoSQL数据库,其索引功能尤为强大。本文将深入探讨MongoDB的高级索引特性,包括复合索引、部分索引、文本索引、地理空间索引等,旨在帮助数据库管理员和开发者更好地利用Mongo…...

从DNS到TCP:DNS解析流程和浏览器输入域名访问流程

1 DNS 解析流程 1.1 什么是DNS域名解析 在生活中我们会经常遇到域名&#xff0c;比如说CSDN的域名www.csdn.net&#xff0c;百度的域名www.baidu.com,我们也会碰到IP&#xff0c;现在目前有的是IPV4&#xff0c;IPV6。那这两个有什么区别呢&#xff1f;IP地址是互联网上计算机…...

【JQuery—前端快速入门】JQuery 基础语法

JQuery JQuery是一个快速、简洁且功能丰富的JavaScript框架; 1. 引入依赖 使用JQuery需要先引入对应的库&#xff1b; 在使用 JQuery CDN 时&#xff0c;只需要在 HTML 文档中加入如下代码 <script src"https://code.jquery.com/jquery-3.7.1.min.js"></s…...

即梦AI发布新数字人模型OmniHuman-1

简介 随着人工智能技术的发展&#xff0c;特别是深度学习和自然语言处理的进步&#xff0c;AI在内容创作领域的应用越来越广泛。字节跳动作为一家领先的科技公司&#xff0c;一直在探索如何利用AI技术来提升用户体验和创造力。OmniHuman-1模型正是在这种背景下诞生的&#xff…...

ARM CM3核 压栈流程

STM32F103 使用 ARM Cortex-M3 内核&#xff0c;与 STM32F013&#xff08;Cortex-M0&#xff09;相比&#xff0c;其压栈行为有所不同&#xff0c;主要体现在异常自动压栈和**手动压栈&#xff08;函数调用&#xff09;**两方面。 1. 进入异常/中断时的自动压栈 当 STM32F103 …...

WHAT - RxJS 异步事件流处理

目录 RxJS 关键概念简单示例常用操作符1. 创建 Observables2. 转换操作符&#xff08;map&#xff09;3. 过滤操作符&#xff08;filter&#xff09;4. 合并多个流&#xff08;mergeMap&#xff09; 适用于 React & TypeScriptReact 组件中使用 RxJS RxJS 是一个用于处理异…...

vue组合式API中prop

*一、了解(事件与$emit) 一个组件需要显示声明它所接受的props,这样才知道外部传入的那些是props,那些是透传attribute。 在<script setup>单文件组件中,props可以使用defineProps()宏来声明,defineProps 是一个仅 <script setup> 中可用的编译宏命令,并不需…...

【HarmonyOS Next】自定义Tabs

背景 项目中Tabs的使用可以说是特别的频繁&#xff0c;但是官方提供的Tabs使用起来&#xff0c;存在tab选项卡切换动画滞后的问题。 原始动画无法满足产品的UI需求&#xff0c;因此&#xff0c;这篇文章将实现下面页面滑动&#xff0c;tab选项卡实时滑动的动画效果。 实现逻…...

算法 并查集

目录 前言 一 并查集的思路 二 并查集的代码分析 三 实操我们的代码 四 并查集的代码优化 总结 前言 并查集主要是用来求解集合问题的&#xff0c;用来查找集合还有就是合并集合&#xff0c;可以把这个运用到最小生成树里面 一 并查集的思路 1 并查集的相关的操作…...

EP 架构:未来主流方向还是特定场景最优解?

DeepSeek MoE架构采用跨节点专家并行&#xff08;EP&#xff09;架构&#xff0c;在提升推理系统性能方面展现出巨大潜力。这一架构在发展进程中也面临诸多挑战&#xff0c;其未来究竟是会成为行业的主流方向&#xff0c;还是仅适用于特定场景&#xff0c;成为特定领域的最优解…...

记忆化搜索与动态规划:原理、实现与比较

记忆化搜索和动态规划是解决优化问题的两种重要方法&#xff0c;尤其在处理具有重叠子问题和最优子结构性质的问题时非常有效。 目录 1. 记忆化搜索&#xff08;Memoization&#xff09; 定义&#xff1a; 实现步骤&#xff1a; 示例代码&#xff08;斐波那契数列&#xff0…...

LLMR//https://github.com/microsoft/llmr?locale=zh-cn

https://github.com/microsoft/llmr?localezh-cn Introduction 这个 repo 包含 LLMR 中描述的代码&#xff0c;实现了混合现实框架的大型语言模型。 此软件包是“用语言创造世界”的原型&#xff0c;它允许通过自然语言实时创建具有视觉、行为和交互元素的对象、工具和场景…...

Free Auto Clicker - 在任意位置自动重复鼠标点击

“想让鼠标自己动起来&#xff0c;解放双手去做更有趣的事&#xff1f;”Free Auto Clicker 就像你的数字小助手&#xff0c;能在任意位置自动重复点击鼠标。从玩游戏到刷网页&#xff0c;这款免费工具让你告别枯燥的重复操作&#xff0c;效率瞬间起飞&#xff01; 你有没有想…...

高考數學。。。

2024上 具体来说&#xff0c;直线的参数方程可以写为&#xff1a; x1t y−t z1t 二、简答题(本大题共5小题&#xff0c;每小题7分&#xff0c;共35分。) 12.数学学习评价不仅要关注结果评价&#xff0c;也要关注过程评价。简要说明过程评价应关注哪几个方面。…...