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

使用Vue3+Echarts实现加载中国地图,点击省份地图下钻(完整教程)

一. 前言

在众多 ECharts 图表类型中,开发者始终绕不开的有各种各样的地图开发,关于地图开发,可能比其他图表相对繁琐一些,其实说简单也简单,说复杂也复杂,其中不乏有层级地图、3D 地图等,感觉地图开发已经被玩出了花。

在 ECharts 地图开发中,地图下钻功能是重要的基础功能,将来能为数据分析和展示提供更加直观和有效的方式。本篇文章,我将会介绍如何利用 ECharts 实现一个完整的地图下钻功能,让用户能够通过点击地图上的区域来实现层级的切换和数据的展示。

二. 什么是地图下钻功能?

地图下钻(Drill-down)是一种常见的高级交互功能,可以使用户能够深入地图的不同层级,查看更加详细的地理数据,帮助用户逐层深入地查看不同区域或层级的数据分布情况,极大地增强了数据可视化的深度和用户体验。

地图下钻功能是指在地图上点击某个区域后,该区域会进一步细化展示其下一级别的区域信息,例如:从省级地图下钻到市级地图,再到区县级地图,这种逐级细化的过程有助于我们更细致地分析和理解地域数据。例如下面这种效果:

通过地图下钻功能,用户可以通过交互操作深入地图的不同层级,从整体的地图层级逐渐细化到更具体的区域层级,用户可以更深入地了解地理数据,探索不同区域的数据细节,并进行更精确的数据分析和决策。这种交互式的地图功能可以极大地增强用户与数据之间的互动性和可视化体验,提升数据分析和展示的效果。

在 ECharts 中实现地图下钻功能,通常需要通过配置点击事件,根据用户点击的区域进行数据更新,从而实现地图的层级切换和展示。地图下钻功能广泛应用于各种数据可视化场景,如地理信息系统区域销售分析人口统计等领域,帮助用户更好地理解和利用地理数据。

三. 如何在 ECharts 中实现地图下钻?

如何在 ECharts 中实现地图下钻?我总结为以下 4 个步骤:

  1. 准备地图数据
  2. 初始化 ECharts 地图
  3. 设置地图下钻事件监听器
  4. 实现地图下钻

在进行地图下钻功能之前,我们需要先实例化一个最基础的中国地图,为地图下钻做准备。之前我写过一篇文章,讲述如何快速的创建一个合规的中国地图。

在这里,我们简单的总结一下,完成两步就可以渲染一个中国地图。

1. 准备地图数据

首先,我们需要准备多层级的地图数据,比如国家、省份、城市等各级别的地理数据,以及每个区域对应的数据指标,这些数据通常是以 JSON 格式提供的地理信息数据。同时,确保数据格式符合 ECharts 的要求,可以参考官方文档了解各种地图类型的数据格式。

我们可以在一些其他网站获取最新的 geoJson,比如:我是通过阿里云 DataV 数据可视化平台下载最新的 json 数据文件,以保证目前所有市区的数据都是最新的。

如下图所示,选择数据版本后,点击页面上的下载按钮后即可以下载 json 文件:

image.png

本地调试也可以使用在线的 JSON API 接口获取数据,不过仅限于本地测试使用!线上会 403 错误

解决 403 问题,参考文章:巧用 meta 标签,设置 referrer 解决 403 Forbidden 问题

2. 初始化 ECharts 地图

在 ECharts 的配置项中,配置地图组件并设置合适的地图类型(如中国地图、世界地图等),以及需要展示的数据和样式,确保每个区域都有对应的数据用于显示。

四. 实现地图下钻

实现地图下钻的关键逻辑在于:为地图添加点击事件监听器,当用户点击地图上的某个区域时,触发相应的事件处理函数,根据点击的区域获取下一级别的地图数据并更新图表。

实例场景:比如,我点击山东省,可以查看山东省下各市级地图,点击青岛市,进而查看青岛市下各区级地图。

实现逻辑

  • 当用户点击某个区域时,例如:山东省,获取到该区域对应的编码。

  • 通过该区域对应的编码,获取到该区域的 geoJson 数据。

  • 通过该区域的 geoJson 数据,渲染到 ECharts 地图组件上。

接下来我们一步一步进行分析。

1. 获取区域编码

首先需要给地图添加点击事件监听器,当用户点击地图时,获取到用户点击该区域对应的编码。

 

地图下钻 3.gif

如图所示,通过上述的操作,我们能够轻松的获取到该区域的地理编码 adcode 和名称。

2. 获取点击区域地图 JSON 数据

获取到地理编码 adcode 和名称之后,接下来需要通过 adcode 来获取子区域的 geoJson,以下的代码是通过调用阿里云 DataV 在线的 JSON API 接口获取到的数据。

注意:过调用阿里云 DataV 在线的 JSON API 接口获取到的数据,仅限于调试!线上会 403 错误,如果要上线,需要将各个区域的数据下载到本地加载。

3. 渲染区域地图

通过上述操作,我们成功的获取到了点击区域的子区域地图 JSON 数据,通过 JSON 数据,我们就可以动态的渲染区域地图了

五. 完善交互和效果

为提升用户体验,可以添加一些校验,避免在下钻过程中出现一些异常情况。比如:

  • 在地图下钻的最后一层,如何判断处理该地图是否还有下级区域,简单说就是是否还允许地图继续下钻?

  • 地图下钻过程过程中,我需要返回上一级地图,该如何实现?

以上这两个问题是在地图开发中必须要考虑的基础问题,下面我来分析一下如何优化这两种问题,提升用户体验。

1. 处理递归下钻

在事件处理函数中,根据用户点击的区域信息,判断是否需要进行下钻操作。如果需要下钻,才可以展示子区域的地图信息。如果已经到了地图最末端,无法再进行下钻,应该相应提示用户。

例如,当用户点击到区县级地图且无法再下钻时,可以考虑弹窗显示详细信息或者返回至上一级别。

2. 返回上一级地图

在用户点击地图进行下钻的过程中,难免会返回上一层进行重新点击的需求,这种需求应该怎么实现呢?下面我来具体分析一下:

  • 添加返回按钮,返回按钮显示隐藏逻辑处理,比如:仅当可以返回上一层地图级别的时候才显示返回
  • 记录地图下钻过程中的地图层级数据,比如:山东省 -> 青岛市 -> 崂山区
  • 根据记录的层级数据实现返回上一级操作
返回按钮的显示和隐藏

关于返回按钮的显示和隐藏,可以有多种判断方式,可以根据是否为初始化地图来判断,只有当前渲染为初始地图时,隐藏返回按钮,也可以根据记录地图的层级数据数组判断是否显示返回按钮。

下述代码是根据 adcode 来判断是否为初始地图,因为我是以中国地图为初始化地图,所以判断 adcode 是否等于 100000 来判断是否显示

以上只是一种思路,你可以考虑其他方式判断,合理即可!

3. 自定义 tooltip

加一些指向 tooltip 提示,当用用鼠标指向省市区时,显示省市区的名称、编码及层级数据。

完整代码:

<!--* @Author: 彭麒* @Date: 2024/12/5* @Email: 1062470959@qq.com* @Description: 此源码版权归吉檀迦俐所有,可供学习和借鉴或商用。-->
<template><div><h3>地图下钻演示:<span style="font-size: 20px;color: red;">目前仅支持四川省!!!</span></h3><a id="back" href="javascript:;" v-show="showBackButton" @click="goBack">返回</a><div id="main" style="height: 800px"></div></div>
</template><script setup>
import { ref, onMounted } from 'vue';
import * as echarts from 'echarts';
const showBackButton = ref(false);
const myChart = ref(null);
const mapList = ref([]);
//各省份的数据
const allData = [{name: '北京'
}, {name: '天津'
}, {name: '上海'
}, {name: '重庆'
}, {name: '河北'
}, {name: '河南'
}, {name: '云南'
}, {name: '辽宁'
}, {name: '黑龙江'
}, {name: '湖南'
}, {name: '安徽'
}, {name: '山东'
}, {name: '新疆'
}, {name: '江苏'
}, {name: '浙江'
}, {name: '江西'
}, {name: '湖北'
}, {name: '广西'
}, {name: '甘肃'
}, {name: '山西'
}, {name: '内蒙古'
}, {name: '陕西'
}, {name: '吉林'
}, {name: '福建'
}, {name: '贵州'
}, {name: '广东'
}, {name: '青海'
}, {name: '西藏'
}, {name: '四川'
}, {name: '宁夏'
}, {name: '海南'
}, {name: '台湾'
}, {name: '香港'
}, {name: '澳门'
}];
for (var i = 0; i < allData.length; i++) {allData[i].value = Math.round(Math.random() * 100);
}
const getJSON = async ({ name }, callback) => {console.log(name);const url = `/map/${name}.json`;try {const response = await fetch(url);if (!response.ok) {throw new Error('Network response was not ok');}const data = await response.json();callback(data);setBackbtn({ name });} catch (error) {alert('无此区域地图显示,请查看其他区域!');}
};const setBackbtn = ({ name }) => {mapList.value.push({ name });showBackButton.value = name !== 'china';console.log(JSON.stringify(mapList.value));
};const goBack = () => {if (mapList.value.length >= 2) {const { name } = mapList.value[mapList.value.length - 2];mapList.value.splice(-2, 2);getJSON({ name }, (data) => {renderChart(name, data);});}
};const initChinaMap = () => {mapList.value = [];getJSON({ name: 'china' }, (data) => {renderChart('china', data);});
};const renderChart = (name, data) => {echarts.registerMap(name, data);setOption(name, allData);
};const setOption = (name, data) => {const option = {tooltip: {show: true,formatter: function(params) {if (params.data) return params.name + ':' + params.data['value']},},visualMap: {type: 'continuous',text: ['', ''],showLabel: true,left: '50',min: 0,max: 100,inRange: {color: ['#edfbfb', '#b7d6f3', '#40a9ed', '#3598c1', '#215096', ]},splitNumber: 0},series: [{name: 'MAP',type: 'map',mapType: name,selectedMode: 'false',//是否允许选中多个区域label: {normal: {show: true},emphasis: {show: true}},data: data}]};myChart.value.setOption(option, true);
};onMounted(() => {myChart.value = echarts.init(document.getElementById('main'));myChart.value.on('click', (params) => {if (params.data) {const { name, level } = params.data;if (level === 'district') {alert('无此区域地图显示!');initChinaMap();return;}getJSON({ name }, (data) => {renderChart(name, data);});}});initChinaMap();
});
</script><style>
body {text-align: center;
}
</style>

六. 总结

通过本篇文章的详细讲述,我们应该都有了一个明确的思路,可以借助 ECharts 快速地实现地图下钻功能。当然,本文完成的是核心下钻逻辑,而且也没有对地图的样式进行一些复杂的样式配置,在实际应用中可能还需要对颜色映射、数据标注等方面进行个性化定制,但这些并不是难点,相信参考 ECharts 配置项手册来进行配置地图属性,也是非常容易实现的。

因此,开发地图的关键点在于开发地图的过程中,我们始终要有一个清晰明了的开发思路和步骤,才能保证按部就班的实现功能,并且避免一些不必要的 BUG 产生。

比如:关于使用 ECharts 的图表渲染造成的内存溢出,导致浏览器崩溃问题,最终一步一步复盘代码才能解决问题。

七. 资源链接

  1. 代码演示地址:中国地图下钻示例演示:支持所有省市下钻演示

  2. 源码地址:ECharts 地图下钻源码地址

  3. geoJson 文件下载:全国地图下钻 geoJson 完整版下载 20240312.zip

  4. 官方文档:ECharts 地图配置项手册

由于时间原因,目前我只导入了四川省的地图,其他各个省市区的地图数据大家可以按需下载导入!后面我会都导入到本地。感谢您的阅读!

推荐文章

关于 ECharts 的系列文章,大家可以点解查看以下文章进行了解:

  • ECharts-GL 实战分享:教你轻松实现 3D 地图下钻功能

  • 使用 ECharts-GL 实现世界级、国家级、省市级 3D 地图

  • ECharts-GL 实战:轻松实现 3D 旋转地球

相关文章:

使用Vue3+Echarts实现加载中国地图,点击省份地图下钻(完整教程)

一. 前言 在众多 ECharts 图表类型中&#xff0c;开发者始终绕不开的有各种各样的地图开发&#xff0c;关于地图开发&#xff0c;可能比其他图表相对繁琐一些&#xff0c;其实说简单也简单&#xff0c;说复杂也复杂&#xff0c;其中不乏有层级地图、3D 地图等&#xff0c;感觉…...

双目相机的标定,视差图,深度图,点云生成思路与实现。

该文档记录从双目相机标定到点云生成的所有过程&#xff0c;同时会附上代码。 代码直接能跑。https://github.com/stu-yzZ/stereoCamera 目录 大致思路如下&#xff1a; 一、相机标定 1、相机参数介绍 2、单目相机标定 3、双目相机标定 二、图片畸变矫正 三、极线矫正…...

解决 minio上传文件Service: S3, Status Code: 403

错误信息 [software.amazon.awssdk.services.s3.model.S3Exception: (Service: S3, Status Code: 403, Request ID: 180E9BC04F11312E, Extended Request ID: 81aefed089495c5faf6270c59bea93c9783926f74ef647fe6b17908f0976b557)]分析过程 4XX一般是客户端错误。403表示禁止…...

SpringBoot实战——个人博客项目

目录 一、项目简介 ?二、项目整体架构 数据库模块 后端模块 前端模块 ?三、项目具体展示 ?四、项目的具体实现 1、一些准备工作 ??数据库、数据表的创建 ??设置数据库和MyBatis的配置 ??将前端项目引入到当前项目中 2、登录注册模块 ??实体类的创建 ?…...

OpenCV-平滑图像

二维卷积(图像滤波) 与一维信号一样&#xff0c;图像也可以通过各种低通滤波器&#xff08;LPF&#xff09;、高通滤波器&#xff08;HPF&#xff09;等进行过滤。LPF 有助于消除噪音、模糊图像等。HPF 滤波器有助于在图像中找到边缘。 opencv 提供了函数 **cv.filter2D()**&…...

nodejs官方文档学习-笔记-1

一、异步工作 process.nextTick()&#xff1a; 回调会在当前操作完成后立即执行&#xff0c;但在事件循环进入下一个阶段之前。它是最先执行的。 Promise.then()&#xff1a; 回调会在 microtask 队列中执行&#xff0c;通常是在当前操作完成后&#xff0c;但在事件循环进入…...

YOLOv7

YOLOv7 是 YOLO 系列的一个重要版本&#xff0c;由 Chien-Yao Wang 和 Alexey Bochkovskiy 等研究人员和开发者提出&#xff0c;继续改进了 YOLOv4 和 YOLOv5 的设计&#xff0c;主要在模型性能、训练效率以及推理速度上进行优化。YOLOv7 进一步优化了 YOLO 系列在速度和精度之…...

汉语唤醒词的模糊判断(Python)

汉语唤醒词的模糊判断【Python】 说明安装库代码Demo其他 说明 这是一个简单的汉语模糊唤醒词的判断器&#xff0c;汉语发音中前后舌以及声母韵母的区别&#xff0c;如果进行精准判断&#xff0c;很容易误判。需要一个模糊判断的逻辑! 安装库 pip install pypinyin代码Demo …...

C语言实例_26之根据输入计算星期几

1. 问题 请输入星期几的第一个字母来判断一下是星期几&#xff0c;如果第一个字母一样&#xff0c;则继续判断第二个字母。 2. 实现思路 思路一&#xff1a;嵌套if-else语句实现 首先接收用户输入的第一个字母&#xff0c;使用if-else语句进行判断。如果输入的是M&#xff0…...

包管理器npm,cnpm,yarn和pnpm

npm (Node Package Manager) 核心技术与工作原理 依赖解析&#xff1a; 广度优先搜索&#xff08;BFS&#xff09;&#xff1a;npm 使用 BFS 算法来解析依赖树&#xff0c;尽量扁平化 node_modules 目录以减少重复的依赖项。冲突处理&#xff1a;如果两个包需要同一个依赖的不…...

docker-compose部署skywalking 8.1.0

一、下载镜像 #注意 skywalking-oap-server和skywalking java agent版本强关联&#xff0c;版本需要保持一致性 docker pull elasticsearch:7.9.0 docker pull apache/skywalking-oap-server:8.1.0-es7 docker pull apache/skywalking-ui:8.1.0二、部署文件docker-compose.yam…...

Android -- [SelfView] 自定义多行歌词滚动显示器

Android – [SelfView] 自定义多行歌词滚动显示器 流畅、丝滑的滚动歌词控件* 1. 背景透明&#xff1b;* 2. 外部可控制进度变化&#xff1b;* 3. 支持屏幕拖动调节进度&#xff08;回调给外部&#xff09;&#xff1b;效果 歌词文件&#xff08;.lrc&#xff09; 一. 使用…...

记事本建java及java命名规范

1.桌面开发&#xff1a;c# 2. 记事本建java&#xff1a; 以class的名称(类名)为名&#xff0c;名称.java 编译jdk&#xff1a;javac 名称.java 调动运行jre : java 名称 查看名称.java里面的内容&#xff1a;cat 名称.java java 的命名规范 大驼峰&#xff08;每个单词首…...

Elasticsearch scroll 之滚动查询

Elasticsearch scroll 之滚动查询 Elasticsearch 的 Scroll API 是一种用于处理大规模数据集的机制&#xff0c;特别是在需要从索引中检索大量数据时。通常情况下&#xff0c;Elasticsearch 的搜索请求会有一个结果集大小的限制 (fromsize 的检索数量默认是 10,000 条记录)&am…...

cartographer建图与定位应用

文章目录 前言一、安装cartographer1.安装环境2.源码编译2.1 下载2.2 编译 二、gazebo仿真2d建图0.准备仿真环境1.编写lua文件2.编写启动文件3.建图保存 三、cartographer定位 move_base导航3.1 编写启动文件3.2 启动launch 总结 前言 本文介绍cartographer在ubuntu18.04下的…...

CEEMDAN-CPO-VMD二次分解(CEEMDAN+冠豪猪优化算法CPO优化VMD)

CEEMDAN-CPO-VMD二次分解&#xff08;CEEMDAN冠豪猪优化算法CPO优化VMD&#xff09; 目录 CEEMDAN-CPO-VMD二次分解&#xff08;CEEMDAN冠豪猪优化算法CPO优化VMD&#xff09;效果一览基本介绍程序设计参考资料 效果一览 基本介绍 首先运用CEEMDAN对数据进行一次分解&#xff…...

【Golang】Go语言编程思想(二):函数式编程

函数式编程 函数与闭包 支持函数式编程的语言当中&#xff0c;函数是一等公民&#xff0c;参数、变量、返回值都可以是函数。 以 adder 为例&#xff0c;下例实现了一个函数式编程&#xff1a; package mainimport "fmt"func adder() func(int) int {sum : 0retu…...

ros项目dual_arm_pick-place(moveit和gazebo联合仿真)(一)

目录 前言正文创建功能包具体代码运行 总结 前言 dual_arm_pick-place项目中&#xff0c;实现了两套的moveit和gazebo联合仿真。 启动文件分别是bringup_moveit.launch和arm_bringup_moveit.launch。 在这个项目中&#xff0c;我将代码重新创建了一个包&#xff0c;co_simula…...

点线面|点到两点直线距离求解

在点云库&#xff08;PCL&#xff09;中&#xff0c;计算点到直线的距离可以借助于向量运算。以下是这种计算方法的步骤以及相应的实现代码。 概念 要计算点 AA 到通过点 BB 和 CC 定义的直线的距离&#xff0c;可以使用以下步骤&#xff1a; 定义两个向量&#xff1a; 向量 …...

等保2.0三级测评华为华三交换机路由器

在使用本博客提供的学习笔记及相关内容时,请注意以下免责声明: 信息准确性:本博客的内容是基于作者的个人理解和经验,尽力确保信息的准确性和时效性,但不保证所有信息都完全正确或最新。 非专业建议:博客中的内容仅供参考,不能替代专业人士的意见和建议。在做出任何重要…...

鸿蒙分享(二):引入zrouter路由跳转+封装

码仓库&#xff1a;https://gitee.com/linguanzhong/share_harmonyos 鸿蒙api:12 鸿蒙第三方库地址&#xff1a;OpenHarmony三方库中心仓 zrouter地址&#xff1a;OpenHarmony三方库中心仓 1.引入zrouter 1.打开终端界面&#xff1a;输入 ohpm install hzw/zrouter 2.在项目…...

欧拉角和旋转矩阵之间的转换

在实际编程实践中&#xff0c;特别是使用C的Eigen库时&#xff0c;需要掌握多种空间旋转表示之间的转换。本文将深入探讨欧拉角与旋转矩阵之间的相互转换&#xff0c;这是使用库时常见的操作。 首先&#xff0c;让我们了解欧拉角。它是指通过围绕三个基本坐标轴旋转来表示三维对…...

Typora的激活

Typora的安装、激活 图文教程 | 2024年最新Typora激活使用教程合集 Typora 激活指南&#xff08;2024年最新版&#xff09; 图文教程 | 2024Typora最新版免费激活使用教程&#xff08;新旧版可用&#xff09;...

排查bug的通用思路

⭐️前言⭐️ APP点击某个按钮没有反应/PC端执行某个操作后&#xff0c;响应较慢&#xff0c;通用的问题排查方法: 从多个角度来排查问题 &#x1f349;欢迎点赞 &#x1f44d; 收藏 ⭐留言评论 &#x1f349;博主将持续更新学习记录收获&#xff0c;友友们有任何问题可以在评…...

探秘CSS3 3D转换:打造立体网页动画与视觉效果的魔法

在现代网页设计中&#xff0c;CSS3 3D转换&#xff08;3D Transforms&#xff09;已经成为一种强大的工具&#xff0c;用于创建各种动态效果和视觉吸引力。本文将详细介绍CSS3 3D转换的基本概念、常见属性及其应用示例&#xff0c;帮助您掌握这一技术&#xff0c;提升网页设计的…...

Pycharm 安装两种不同版本的解释器

背景 Pycharm使用的解释器是python3.11&#xff0c;python3.9.x之后不支持win7&#xff1b;有同事需要在win7上使用python制作的exe&#xff0c;而了“win7环境下运行python打包exe提示找不到api-ms-win-core-path-l1-1-0.dll”。 过程 查找了一些资料&#xff0c;发现直接将…...

小红薯x-s算法分析最新12-06(x-s 56)(上)

目标-小红薯达人作品&#xff1a;aHR0cHM6Ly93d3cueGlhb2hvbmdzaHUuY29tLw 1、确定目标 打上xhr断点 发现是异步请求&#xff0c;同时各个参数已经生成结束了 2、进入第二个异步函数 打上断点并继续运行 发现在e这个位置也生成了&#xff0c;那么再继续往上找异步参数进行断…...

视频融合×室内定位×数字孪生

随着物联网技术的迅猛发展&#xff0c;室内定位与视频融合技术在各行各业中得到了广泛应用。不仅能够提供精确的位置信息&#xff0c;还能通过实时视频监控实现全方位数据的可视化。 与此同时&#xff0c;数字孪生等技术的兴起为智慧城市、智慧工厂等应用提供了强大支持&#…...

JMS和消息中间件:Kafka/RocketMQ

文章目录 消息传递模型使用JMS还是KafkaKafka与RocketMQ的优缺点Kafka与RocketMQ的使用场景Kafka与RocketMQ的选型指南 TPM 项目中&#xff0c; iflow之间使用了JMS&#xff0c;后端项目与数据库通信使用Kafka MQ和JMS的区别&#xff1a; JMS是 java 用来处理消息的一个API规范…...

FreeRTOS之ARM CR5栈结构操作示意图

FreeRTOS之ARM CR5栈结构操作示意图 1 FreeRTOS源码下载地址2 ARM CR5栈结构操作宏和接口2.1 portSAVE_CONTEXT宏2.1.1 portSAVE_CONTEXT源码2.1.2 portSAVE_CONTEXT宏操作栈结构变化示意图 2.2 portRESTORE_CONTEXT宏2.2.1 portRESTORE_CONTEXT源码2.2.2 portRESTORE_CONTEXT宏…...

【技巧】Mac上如何显示键盘和鼠标操作

在制作视频教程时&#xff0c;将键盘和鼠标的操作在屏幕上显示出来&#xff0c;会帮助观众更容易地理解。 推荐Mac上两款开源的小软件。 1. KeyCastr 这款工具从2009年至今一直在更新中。 https://github.com/keycastr/keycastr 安装的话&#xff0c;可以从Github上下载最…...

三种插入排序算法

目录 1.直接插入排序 直接插入排序的步骤示例 直接插入排序的特点 适用场景 2.折半插入排序 折半插入排序的基本原理 折半插入排序的实现过程 折半插入排序的时间复杂度 折半插入排序的特点 3.希尔排序 希尔排序的基本原理 希尔排序的步骤举例 希尔排序的时间复杂…...

力扣100题--移动零

给定一个数组 nums&#xff0c;编写一个函数将所有 0 移动到数组的末尾&#xff0c;同时保持非零元素的相对顺序。 请注意 &#xff0c;必须在不复制数组的情况下原地对数组进行操作。 示例 1: 输入: nums [0,1,0,3,12] 输出: [1,3,12,0,0]示例 2: 输入: nums [0] 输出: […...

第30天:安全开发-JS 应用NodeJS 指南原型链污染Express 框架功能实现审计0

时间轴&#xff1a; 演示案例&#xff1a; 环境搭建-NodeJS-解析安装&库安装 功能实现-NodeJS-数据库&文件&执行 安全问题-NodeJS-注入&RCE&原型链 案例分析-NodeJS-CTF 题目&源码审计 开发指南-NodeJS-安全 SecGuide 项目、 环境搭建-NodeJ…...

1.使用docker 部署redis Cluster模式 集群3主3从

1.使用docker 部署redis Cluster模式 集群3主3从 1.1 先安装docker 启动docker服务&#xff0c;拉取redis镜像 3主3从我们要在docker启动6个容器docker run --name redis-node-1 --net host --privilegedtrue -v /data/redis/share/redis-node-1:/data redis:6.0.8 --cluster-…...

SAP导出表结构并保存到Excel 源码程序

SAP导出表结构并保存到Excel,方便写代码时复制粘贴 经常做接口,需要copy表结构,找到了这样一个程程,特别有用。 01. 先看结果...

李飞飞:Agent AI 多模态交互的前沿探索

发布于:2024 年 11 月 27 日 星期三 北京 #RAG #李飞飞 #Agent #多模态 #大模型 Agent AI在多模态交互方面展现出巨大潜力,通过整合各类技术,在游戏、机器人、医疗等领域广泛应用。如游戏中优化NPC行为,机器人领域实现多模态操作等。然而,其面临数据隐私、偏见、可解释性…...

算法基础学习Day2(双指针)

文章目录 1.题目2.题目解答1.快乐数题目及题目解析算法学习代码提交 2.题目2题目及题目解析算法学习代码提交 1.题目 202. 快乐数 - 力扣&#xff08;LeetCode&#xff09;11. 盛最多水的容器 - 力扣&#xff08;LeetCode&#xff09; 2.题目解答 1.快乐数 题目及题目解析 …...

信奥常考点:二叉树的构建(已知中序和 前序或后序 的情况下)

一、题目引入 这是来自CCF-GESP C七级认证 2024年9月的题目。 我们在此不解题&#xff0c;只把树画出来。 CCF-GESP 编程能力认证 C 七级 2024年9月份详细解析-CSDN博客 二、解题过程 我们可以根据先序遍历得出根节点是A&#xff0c;然后我们得到了A的左子树[B D]&#xff08;橙…...

《CS2》运行时提示“缺少steam_api_64.dll”文件该如何处理?“找不到steam_api.dll,无法继续执行代码”的修复方法

《CS2》游戏运行时文件丢失、损坏与系统报错处理指南 《CS2》上海 Major 淘汰赛这两天也在如火如荼的进行当中&#xff0c;相信有很多go学长在游戏运行时会遇到各种文件丢失、损坏以及系统报错问题&#xff0c;给玩家带来极大的困扰。今天&#xff0c;我们就来详细探讨一下《C…...

MCPTT 与BTC

MCPTT&#xff08;Mission Critical Push-to-Talk&#xff09;和B-TrunC&#xff08;宽带集群&#xff09;是两种关键通信标准&#xff0c;它们分别由不同的组织制定和推广。 MCPTT&#xff08;Mission Critical Push-to-Talk&#xff09;标准由3GPP&#xff08;第三代合作伙伴…...

aardio - 汉字笔顺处理 - json转sqlite转png

本代码需要最新版 godking.conn 库&#xff0c;请自行下载&#xff01; 如果没有安装 odbc for sqlite 驱动&#xff0c;可以使用 godking.conn.driver.sqlite3.install() 安装。 也可以在此下载自行安装&#xff1a;http://www.chengxu.online/show.asp?softid267 1、将js…...

图的遍历之DFS邻接矩阵法

本题要求实现一个函数&#xff0c;对给定的用邻接矩阵存储的无向无权图&#xff0c;以及一个顶点的编号v&#xff0c;打印以v为起点的一个深度优先搜索序列。 当搜索路径不唯一时&#xff0c;总是选取编号较小的邻接点。 本题保证输入的数据&#xff08;顶点数量、起点的编号等…...

kdenlive 一个视频一左一右拼接(抖音长屏转宽屏)

参考kdenlive 剪裁_Kdenlive中的分层合成-CSDN博客 kdenlive 一个视频一左一右拼接&#xff08;抖音长屏转宽屏&#xff09; 按照图片的操作...

深度学习-53-AI应用实战之基于labelImg和labelme的手动标注

文章目录 1 labelImg1.1 简介1.2 安装使用1.3 文件格式1.3.1 pascalVOC格式1.3.2 yolo格式1.4 验证显示2 labelme2.1 简介2.2 安装使用2.3 labelme转换为yolo3 参考附录1 labelImg 1.1 简介 labelImg(label image)是一个开源的图像标注工具,用于创建图像标注数据集。它提供了…...

白鲸优化算法原理,白鲸算法公式,白鲸算法应用(白鲸算法测试效果,白鲸算法优化BP神经网络,白鲸算法路径优化)

‌目录 白鲸算法主要原理 白鲸算法主要公式 白鲸算法应用案例 白鲸算法主要原理 白鲸优化算法(Beluga Whale Optimization Algorithm,BWO)是一种基于种群的元启发式优化算法,灵感来源于白鲸的生活行为。‌该算法通过模拟白鲸的游泳、捕食和鲸落行为来实现模型参数的优化…...

KubeEdge、ThingsBoard 和 CnosDB:智能物联网平台的完美组合

概述 在数字化时代&#xff0c;物联网&#xff08;IoT&#xff09;正在改变我们的生活和工作方式。KubeEdge、ThingsBoard 和 CnosDB 是三个领先的开源平台&#xff0c;它们在物联网领域各自发挥着重要的作用&#xff0c;并且可以无缝集成&#xff0c;为用户提供强大的解决方案…...

最简单的线性回归神经网络

数据&#xff1a; # 线性回归 import torch import numpy as np import matplotlib.pyplot as plt# 随机种子&#xff0c;确保每次运行结果一致 torch.manual_seed(42)# 生成训练数据 X torch.randn(100, 3) # 100 个样本&#xff0c;每个样本 3 个特征 true_w torch.tenso…...

[软件工程]九.可依赖系统(Dependable Systems)

9.1什么是系统的可靠性&#xff08;reliability&#xff09; 系统的可靠性反映了用户对系统的信任程度。它反映了用户对其能够按照预期运行且正常使用中不会失效的信心程度。 9.2什么是可依赖性&#xff08;dependablity&#xff09;的目的 其目的是覆盖系统的可用性&#x…...

浏览器解析页面流程

从输入一个url到页面解析完成的流程 1. 网络进程 1. 获取url 浏览器首先判断输入的url是否有http缓存&#xff0c;如果有则直接从http缓存中读取数据并显示。如果没有&#xff0c;则进行下一步。进行DNS解析&#xff0c;获取域名对应的IP地址。 2.下载html文件 浏览器根据I…...