基于SpringBoot和Leaflet的邻省GDP可视化实战
目录
前言
一、技术实现路径
1、空间数据检索
2、数据展示检索流程
二、SpringBoot后台实现
1、模型层实现
2、控制层实现
三、WebGIS前端实现
1、控制面展示
2、成果展示
四、总结
前言
在数字化浪潮席卷全球的今天,数据已成为驱动社会经济发展、指导政策制定、促进科学研究的关键要素。如何高效收集、处理并直观展现这些数据,成为了各领域面临的重要课题。特别是在经济学领域,GDP(国内生产总值)作为衡量一个国家或地区经济规模和发展水平的核心指标,其数据的可视化不仅能够帮助我们迅速把握经济状况,还能为政策制定者提供有力的决策支持。在此背景下,结合SpringBoot这一轻量级Java开发框架与Leaflet这一开源JavaScript库,开展邻省GDP可视化实战项目,无疑是一次富有意义的技术探索与实践。
将SpringBoot与Leaflet结合,构建邻省GDP可视化系统,旨在通过后端强大的数据处理能力,结合前端直观的地图展示,实现数据的动态更新与交互分析。该系统首先利用SpringBoot搭建后端服务,负责数据的收集、清洗、存储及API接口的提供。考虑到数据的时效性和准确性,后端可能会定期从国家统计局等权威渠道获取最新的GDP数据,并通过RESTful API向前端提供服务。前端则利用Leaflet构建交互式地图界面,将邻省的GDP数据以地图标注、区域填充色等形式直观展现,用户可以通过点击、悬停等操作查看具体省份的GDP信息,甚至进行时间序列对比,从而更深入地理解经济发展趋势和区域差异。
总之,基于SpringBoot和Leaflet的邻省GDP可视化实战项目,不仅是一次技术上的融合创新,更是对经济学数据可视化应用的一次深入探索。通过这一项目,我们不仅能够提升数据处理与分析的能力,还能在实践中加深对经济现象的理解,为推动区域经济的均衡发展贡献科技力量。
一、技术实现路径
SpringBoot,作为Spring家族的一员,以其“约定优于配置”的理念简化了企业级应用的开发流程,使得开发者能够专注于业务逻辑的实现,而非繁琐的配置管理。它提供了丰富的内置功能,如嵌入式服务器、自动配置、健康检查等,极大地提高了开发效率和应用的可靠性。在构建后端服务时,SpringBoot能够轻松实现对数据库的操作、API接口的设计以及与其他服务的集成,为前端提供稳定且高效的数据支持。而Leaflet,作为一款轻量级的开源JavaScript地图库,以其简洁的API、良好的跨浏览器兼容性以及丰富的插件生态,成为了实现地理数据可视化的首选工具。Leaflet不仅支持基本的地图操作(如缩放、平移),还能轻松叠加各种地理数据图层,如图标标记、多边形、热力图等,使得地理信息的展示既直观又富有互动性。更重要的是,Leaflet能够与多种数据源无缝对接,包括GeoJSON、KML等格式,为开发者提供了极大的灵活性。
1、空间数据检索
关于在PostGIS中进行相邻省份的检索实现,在之前的博客中有过介绍:基于PostGIS的省域空间相邻检索实践。对于空间数据表的设计与空间检索有详细的介绍。这里将关键的空间检索实现表示如下:
static final String NEIGHBOR_PROVINCE_BYID = "<script>"
+ " select id,code,name,type,st_asgeojson(geom) geomJson from biz_province where id = #{id} "
+ " union "
+ " select t.id,t.code,t.name,t.type,st_asgeojson(t.geom) geomJson from biz_province s,biz_province t "
+ " where s.id = #{id} and ST_Touches(s.geom,t.geom)"
+ "</script>";
2、数据展示检索流程
首先根据前端传入的省域信息,根据省域ID使用St_touches函数查询相邻的省份,然后在后台的Service层方法中查找对应省份的GDP数据, 为了方便在Leaflet前台页面中进行集中展示,我们需要将省份的属性信息、GDP信息和Geometry空间信息进行融合,返回给前端带有GeoJSON的数据接口,最后调用Leaflet的Polygon绘制函数进行绘制。为了方便数据展示,GDP数据我们采用从互联网获取的公开信息,如下:
以上表格就是我们的基础数据,通过查询得到的省份信息关联GDP可以得到联合的数据后在前端进行展示。
二、SpringBoot后台实现
本节将重点介绍在SpringBoot中如何实现对PostGIS空间数据库的检索以及控制层API的实现。
1、模型层实现
在数据库操作模型层中,需要实现前文提到过的相邻国家查询检索方法,在Mapper中的关键代码如下:
static final String NEIGHBOR_PROVINCE_BYID = "<script>"+ " select id,code,name,type,st_asgeojson(geom) geomJson from biz_province where id = #{id} " + " union "+ " select t.id,t.code,t.name,t.type,st_asgeojson(t.geom) geomJson from biz_province s,biz_province t " + " where s.id = #{id} and ST_Touches(s.geom,t.geom)"+ "</script>";
/**
* - 根据省份主键ID查询邻省列表 add by 夜郎king in 2025-02-02
* @param id 查询省份ID
* @return 该国对应的邻省列表
*/
@Select(NEIGHBOR_PROVINCE_BYID)
List<Province> findNeighborProvinceById(@Param("id")Long id);
为了方便在前台将gdp数据与省份信息进行融合,同时可以实现对象的最大共享,我们基于省份Province对象扩展出一个子类,仅包含一个GDP的属性。
package com.yelang.project.extend.earthquake.domain;
import java.math.BigDecimal;
import lombok.AllArgsConstructor;
import lombok.Getter;
import lombok.NoArgsConstructor;
import lombok.Setter;
import lombok.ToString;
@NoArgsConstructor
@AllArgsConstructor
@Setter
@Getter
@ToString
public class ProvinceGdpVO extends Province{private static final long serialVersionUID = 4740578201189215164L;private BigDecimal gdp = new BigDecimal("0");
}
2、控制层实现
控制层为了实现方便,这里没有将各个省份的GDP数据保存到数据库中,仅模拟使用一个Map数据进行保存。从PostGIS数据库中查询到对应的省份信息后,在根据key去hashMap中进行获取。这种计算方法比较快,实际业务中,我们可以将GDP数据缓存到服务器中,因为这种数据基本上都是不变的,这样可以极大的提升程序的性能。
@RequiresPermissions("eq:nearprovince:list")
@GetMapping("/nearprovince/list/{id}")
@ResponseBody
public AjaxResult nearProvinceList(@PathVariable("id") Long id){List<ProvinceGdpVO> provinceGdpList = new ArrayList<ProvinceGdpVO>();List<Province> provinces = provinceService.findNeighborProvinceById(id);Map<String,BigDecimal> gdpMap = provinceService.province2024GdpMap();if(StringUtils.isNotEmpty(provinces)) {for(Province p : provinces) {ProvinceGdpVO gdpVo = new ProvinceGdpVO();BeanUtils.copyBeanProp(gdpVo, p);if(gdpMap.containsKey(gdpVo.getCode())) {gdpVo.setGdp(gdpMap.get(gdpVo.getCode()));}provinceGdpList.add(gdpVo);}}return AjaxResult.success().put("data", provinceGdpList);}
可以在前端来看一下返回的数据格式:
三、WebGIS前端实现
本节将重点展示在Leafelt中如何实现对相邻省份的空间信息以及它的GDP等关键信息的综合展示,关于Leaflet中展示相关信息,在之前的系列博文中均有所提及,故不再赘述。
1、控制面展示
在Leaflet中将循环获取的各个省份的GeoJSON数据信息,然后将GeoJSON数据展示出来。关键代码如下:
function previewGdp(gid,name){$.ajax({ type:"get", url:prefix + "/nearprovince/list/" + gid, data:{}, dataType:"json", cache:false,processData:false,success:function(result){if(result.code == web_status.SUCCESS){showLayerGroup.clearLayers();var legendData = new Array();for(var i = 0;i< result.data.length;i++){var areaData = result.data[i];var color = ccolor = getRandomColor();if(gid == areaData.id){color = "red";}var areaLayer = L.geoJSON(JSON.parse(areaData.geomJson),{style: {color:color,fillColor:color,weight:3,"opacity":0.65, fillOpacity: 0.65 }}).addTo(mymap);var myIcon = L.divIcon({iconSize: null,className: '',popupAnchor:[5,5],shadowAnchor:[5,5],html: buildShowInfo(i,color,areaData)});showLayerGroup.addLayer(areaLayer);//中心点位L.marker(areaLayer.getBounds().getCenter(), { icon: myIcon}).addTo(showLayerGroup);legendData.push({label: "\xa0\xa0"+areaData.name,type: "rectangle",radius: 12,color: color,fillColor: color,fillOpacity: 0.8,weight: 2});}mymap.fitBounds(showLayerGroup.getBounds());//legend.remove();initLegend(legendData);}},error:function(){$.modal.alertWarning("获取空间信息失败");}});}
下面就来看一下2024年全国各个省份及其邻省的GDP信息展示成果。
2、成果展示
首先来看下傲视群雄的广东省,如下图所示:
广东省2024年GDP是141633.81亿元,它的相邻省份分别是:广西壮族自治区、湖南省、江西省、福建省、香港特别行政区和澳门特别行政区。由于香港和澳门的相关数据暂未发布,因此暂时未列入其中。可以看到广西的GDP是28649.40亿元,湖南是53230.99亿元,江西GDP为34202.5亿元,福建GDP为57761.02亿元。广东一个省几乎是人家三个省的和。看了第一名的省份,接下来看一下排名靠中的湖南省,如下图所示:
与湖南省相邻的省份中, 除了前面介绍过的省份外,还有湖北省、重庆市、贵州省。这三个省份中,湖北省的GDP比湖南省的要稍微多一点,为60012.97亿元,重庆市为32193.15亿元,贵州GDP为22667.12亿元。湖南省的GDP相当于重庆市和贵州省GDP之和。最后来看一下青海省的GDP,如下图所示:
青海省2024年的GDP是3950.8亿元,而其相邻省份西藏自治区的GDP为2764.94亿元,新疆维吾尔自治区20534.08亿元,甘肃GDP为13002.9亿元,四川GDP为64697.0亿元 。 从数值上可以看到,青海省的GDP还是比较少的,同比发现四川的GDP是比较高的,在全国的排名中也是可以排到前5的,这非常了不起。四川与前面几个省份(广东、江苏、山东、浙江)不一样的是,四川是位于内陆的省份。
四、总结
以上就是本文的主要内容,本文将SpringBoot与Leaflet结合,构建邻省GDP可视化系统,旨在通过后端强大的数据处理能力,结合前端直观的地图展示,实现数据的动态更新与交互分析。基于SpringBoot和Leaflet的邻省GDP可视化实战项目,不仅是一次技术上的融合创新,更是对经济学数据可视化应用的一次深入探索。通过这一项目,我们不仅能够提升数据处理与分析的能力,还能在实践中加深对经济现象的理解,为推动区域经济的均衡发展贡献科技力量。行文仓促,难免有许多不足之处,如有不足,在此恳请各位专家博主在评论区不吝留言指出,不胜感激。
相关文章:
基于SpringBoot和Leaflet的邻省GDP可视化实战
目录 前言 一、技术实现路径 1、空间数据检索 2、数据展示检索流程 二、SpringBoot后台实现 1、模型层实现 2、控制层实现 三、WebGIS前端实现 1、控制面展示 2、成果展示 四、总结 前言 在数字化浪潮席卷全球的今天,数据已成为驱动社会经济发展、指导政策…...
DeepSeek-R1本地部署保姆级教程
一、DeepSeek-R1本地部署配置要求 (一)轻量级模型 ▌DeepSeek-R1-1.5B 内存容量:≥8GB 显卡需求:支持CPU推理(无需独立GPU) 适用场景:本地环境验证测试/Ollama集成调试 (二&a…...
DeepSeek + Mermaid编辑器——常规绘图
下面这张图出自:由清华大学出品的 《DeepSeek:从入门到精通》。 作为纯文本生成模型,DeepSeek虽不具备多媒体内容生成接口,但其开放式架构允许通过API接口与图像合成引擎、数据可视化工具等第三方系统进行协同工作,最终…...
推送项目 之 解决冲突
文章目录 为什么会发生冲突?如何解决这些冲突?1. **查看冲突文件**2. **解决二进制文件冲突**3. **解决文本文件冲突**4. **标记冲突已解决**5. **完成合并**6. **推送更改** 注意事项总结 问题:我们在git pusll拉取远程仓库的代码到本地对比…...
蓝桥杯——lcd显示
一:复制文件 从官方参考文件中复制相关文件,Src中的lcd.c,Inc中的lcd.h,fonts.h复制到自己创建的文件中 二:lcd初始化 在lcd.h中找到四个初始化函数,将其写到main文件中 三:写lcd显示函数 在…...
1_安装JDK和Hadoop
一、解压jdk和hadoop安装包 下载 通过百度网盘分享的文件:jdk-8u172-linux-x64.tar.gz 链接:https://pan.baidu.com/s/1VjhdpfyqdC7ivEBIjTn8tA 提取码:iz25 二、配置环境变量 vi /root/.bashrc添加 #set java environment export JAVA_H…...
angular简易计算器
说明: 用angular实现计算器效果,ui风格为暗黑 效果图: step1: C:\Users\Administrator\WebstormProjects\untitled4\src\app\calnum\calnum.component.ts import { Component } from angular/core;Component({selector: app-calnum,import…...
python 程序
gif调整尺寸.py import sys from PIL import Image,ImageSequence import os ##print(sys.argv[0]) ##print(sys.argv[1]) def gifresize(file_name): gf Image.open(file_name) ## lifetime gf.info[duration] imglist [] imgnew [] for i in ImageSequence.…...
vue3响应式数据原理
Vue 3 的响应式系统与 Vue 2 有显著不同,Vue 3 使用了 Proxy 替代了 Vue 2 中的 Object.defineProperty,这使得 Vue 3 的响应式系统更加灵活和强大 Vue 3 响应式原理的核心 Proxy: Vue 3 使用 Proxy 来拦截对象的操作(如读取、赋值…...
【Godot4.3】自定义圆角容器
概述 Godot控件想要完全实现现代UI风格,需要进行大量的自定义组件设计。本篇就依托于笔者自己对现代UI设计中的圆角面板元素模仿来制作圆角容器组件。 圆角容器 圆角元素在现代的扁平UI设计中非常常见,在Godot中可以通过改进PanelContainer来或者自定…...
远程部署 Qt 应用程序套件错误原因
构建套件报红色警告错误: 图一: 改图二:...
vue3学习4-pinia+组件通信
集中式状态管理,vue2用vuex,vue3用pinia,相当于react中的redux 引入pinia pinia的具体存储都放到src/store目录下,每个store.js具体存储实现如下: 修改pinia中的数据 3种方式: 1、可以直接修改从pinia中读…...
GEE中的Map对象
在Google Earth Engine (GEE) 中,Map 是一个非常重要的对象,它用于显示地理数据和控制地图的交互。Map 对象提供了一系列函数,允许你操作和控制地图显示。以下是一些常用的 Map 函数及其使用方法: 1. Map.addLayer() 功能&#x…...
【AI学习笔记】2月10日李飞飞巴黎AI峰会演讲:探索 AI 的历史、现状与未来
【AIGC学习笔记】2月10日李飞飞巴黎AI峰会演讲:探索 AI 的历史、现状与未来 AI 的历史根基与发展历程 生命起源与智能诞生:5 亿年前视觉概念的出现推动了智能的诞生。最初的感知仅仅是被动的体验,只是但随着神经系统的活跃,视觉…...
Vue.js组件开发:从基础到进阶
在现代前端开发中,Vue.js因其简洁、灵活和易上手的特点,成为了众多开发者首选的框架之一。组件化是Vue.js的核心思想之一,它让我们能够更高效、模块化地开发应用。在本文中,我们将从Vue.js的组件开发的基础知识开始,逐…...
Elasticsearch索引设计与分片策略深度优化-手记
一、索引设计的黄金法则(从踩坑到精通的必经之路) 1. 字段类型显式声明原则 动态映射是新手最易踩的坑,某金融平台曾因金额字段被自动识别为text类型,导致聚合查询时触发OOM。正确做法应显式声明核心字段: PUT /fin…...
嵌入式学习|C语言篇进程间通信(IPC)全面解析与示例
一、进程通信基础概念 1.1 进程隔离原理 现代操作系统通过虚拟内存技术为每个进程创建独立的地址空间,这种隔离机制保障了系统的安全性,但也导致进程无法直接访问彼此的内存数据。进程间通信(IPC)正是为解决这一矛盾而设计的核心…...
2020年蓝桥杯Java B组第二场题目+部分个人解析
#A:门牌制作 624 解一: public static void main(String[] args) {int count0;for(int i1;i<2020;i) {int ni;while(n>0) {if(n%102) {count;}n/10;}}System.out.println(count);} 解二: public static void main(String[] args) {…...
3. Spring Cloud LoadBalancer 入门与使用
一、什么是 LoadBalancer? LoadBalancer(负载均衡器)是一种网络设备或软件机制,用于分发传入的网络流量负载(请求)到多个后端目标服务器上,从而实现系统资源的均衡利用和提高系统的可用性和性能。 1.1 负载均衡分类 服务器负载均衡是在服务端通过硬件…...
基于TensorFlow.js与Web Worker的智能证件照生成方案
功能简介 本文基于TensorFlow.js与Web Worker实现了常用的“证件照”功能,可以对照片实现抠图并替换背景。值得一提的是,正常抠图的操作应该由后端进行,这里只是主要演示该功能实现步骤,并不建议该功能由前端全权处理。 限于个人技…...
jupyterhub on k8s 配置用户名密码 简单版
如果只是小组内使用 不想共用密码 也不想搞复杂认证方案 那么就直接通过map(用户名,密码md5值)来制定密码 config.yaml部分内容 hub:config:JupyterHub:shutdown_on_logout: true # 用户logout 自动stop jupyter pod,家目录下所有文件会被保存到pvc 即启动后之前家目录下…...
Logic-RL:Unleashing LLM Reasoning with Rule-Based Reinforcement learning
1.Introduction deepseek-r1,kimi-k1.5和openai-o1效果都很好。deepseek-r1引入了一种简单而有效的基于规则的强化学习,无需依赖传统的支撑技术,如蒙特卡洛书树搜索MCTS或者过程奖励模型PRM,便能出现新兴的推理模式。deepseek-r1开源了权重,但是并未发布训练或数据集,这…...
算法-数据结构-图的构建(邻接矩阵表示)
数据定义 //邻接矩阵表示图 //1.无向图是对称的 //2.有权的把a,到b 对应的位置换成权的值/*** 无向图* A B* A 0 1* B 1 0*/ /*** 有向图* A B* A 0 1* B 0 0*/import java.util.ArrayList; import java.util.List;/*** 带权图* A B* A 0 1* B 0 0*/ p…...
使用 Grafana 监控 Spring Boot 应用
随着软件开发领域的不断发展,监控和可观测性已成为确保系统可靠性和性能的关键实践。Grafana 是一个功能强大的开源工具,能够为来自各种来源的监控数据提供丰富的可视化功能。在本篇博客中,我们将探讨如何将 Grafana 与 Spring Boot 应用程序…...
使用S32DS部署Tensorflow lite到S32K3
一、概述 1、本文主要介绍如何用S32DS在NXP S32K344 中部署Tensorflow; 2、示例使用了Tensorflow入门代码,主要功能是识别28 * 28 的手写图片的数字; 3、在MCU上开启DSP功能后,最终运行时间在 7ms(64神经元…...
AWS S3深度解析:十大核心应用场景与高可用架构设计实践
摘要:作为全球领先的对象存储服务,Amazon S3凭借其高扩展性、持久性和安全性,已成为企业云原生架构的核心组件。本文将深入探讨S3的典型技术场景,并揭秘其背后的架构设计逻辑。 一、AWS S3核心技术特性解析 Amazon Simple Storag…...
系统学习算法:专题十二 记忆化搜索
什么是记忆化搜索,我们先用一道经典例题来引入,斐波那契数 题目一: 相信一开始学编程语言的时候,就一定碰到过这道题,在学循环的时候,我们就用for循环来解决,然后学到了递归,我们又…...
Redis基操
redis 存储在内存中 key-value存储 主要存储热点数据(短时间大量的访客去访问) 启动命令 redis-server.exe redis.windows.conf 客户端链接redis服务器 redis-cli.exe redis-cli.exe -h localhost -p 6379 redis-cli.exe -h localhost -p 6379 -a 123456 退出 exit keys * 命…...
基于 GEE 计算并下载研究区年均叶面积指数 LAI 和光合有效辐射分量 FPAR
目录 1 完整代码 2 运行结果 1 完整代码 var table table; var collection ee.ImageCollection(MODIS/061/MOD15A2H).filterDate(2023-01-01, 2023-12-30).filterBounds(table); // LAI配色 var colorLai {min: 0,max: 100,palette: [ffffff, fde0d4, fcc4ac, faa784, f…...
软考——WWW与HTTP
1.万维网(world wide web) 是一个规模巨大的、可以资源互联的资料空间。由URL进行定位,通过HTTP协议传送给使用者,又由HTML来进行文件的展现。 它的主要组成部分是:URL、HTTP、HTML。 (1)URL…...
sqli-labs-master第46关
目录 报错注入 直接注入 数据库名 数据库中的表名 users表结构: users表数据: python脚本注入 直接注入 获取数据库名 获取表名 获取表结构 获取数据 布尔盲注 获取数据库名 获取表名 获取表结构 获取数据 报错注入 直接注入 数据库名…...
opencv交叉编译报错:undefined reference to `png_riffle_palette_neon
序偶NEON 概述 NEON(Nested Enhanced Vector Instruction Set)是 ARM 架构中的一种高级 SIMD(Single Instruction, Multiple Data,单指令多数据)扩展技术。它专为加速多媒体和信号处理任务而设计,允许在单…...
代码随想录算法训练day63---图论系列7《prim算法kruskal算法》
代码随想录算法训练 —day63 文章目录 代码随想录算法训练前言一、53. 寻宝—prim算法打印出来最小生成树的每条边 二、53. 寻宝—kruskal算法打印出来最小生成树的每条边 总结 前言 今天是算法营的第63天,希望自己能够坚持下来! 今天继续图论part&…...
算法日常刷题笔记(2)
为保持刷题的习惯 计划一天刷3-5题 然后一周总计汇总一下 这是第二篇笔记 笔记时间为2月17日到2月23日 第一天 找到初始输入字符串 找到初始输入字符串 Ihttps://leetcode.cn/problems/find-the-original-typed-string-i/ Alice 正在她的电脑上输入一个字符串。但是她打字技…...
C# httpclient 和 Flurl.Http 的测试
关于C#调用接口或Post,Flurl封装了httpclient, CSDN有哥们提供了一个公网的测试网站,可以测试Post调用,我写了2个函数,测试httpclient和Flurl使用Post: async 和 await 是成对使用的,为了接受web异步返回的数据,winfor…...
关于ES中text类型时间字段范围查询的结构化解决方案
前言 有关es中text类型的时间字段范围查询的问题,比如: {"query": {"range": {"insertTime": {"gte": "2025-02-01T00:00:00","lte": "2025-11-30T23:59:59","format&quo…...
四元数 欧拉角
orientation 是表示物体在三维空间中的 旋转姿态 的数据结构。它通常使用 四元数(Quaternion) 来表示旋转。四元数是一种数学工具,用于描述三维空间中的旋转,相比欧拉角(Euler Angles)和旋转矩阵࿰…...
Linux项目自动化构建工具-make/Makefile (linux第六课)
目录 背景 介绍 依赖关系的格式 依赖方法的格式 原理 背景 会不会写makefile,从一个侧面说明了一个人是否具备完成大型工程的能力一个工程中的源文件不计数,其按类型、功能、模块分别放在若干个目录中,makefile定义了一系列的规则来指定…...
Java 登录框架
Java框架中常用的几种成熟的token生成框架对比 - 白露~ - 博客园 SpringBoot整合sa-token,jwt登录及拦截器鉴权Demo_只有在集成 sa-token-jwt 插件后才可以使用 extra 扩展参数-CSDN博客 推荐一款轻量级权限认证框架Sa-Token,集成JWT和Redis轻松实现认…...
人工智能、机器学习、深度学习和大语言模型之间的关系
人工智能(AI)、机器学习(ML)、深度学习(DL)和大语言模型(LLM)之间是逐层包含且技术递进的关系,具体如下: 1. 层级关系 人工智能(AI)…...
项目组合管理:优化项目选择与资源分配——从战略到实战的全流程指南
在复杂的商业环境中,企业往往需要同时推进多个项目以支撑战略目标。然而,资源有限、目标冲突、优先级模糊等问题常导致项目失败或资源浪费。项目组合管理(Project Portfolio Management, PPM) 正是解决这一痛点的系统性方法。它通…...
zabbix排障-zabbix监控的主机出现可用性灰色或者红色问题
目录 解决zabbix-agent可用性灰色的办法: 解决zabbix可用性红色的方法: 在zabbix日常的使用中 我们会遇到很多的问题 就比如今天我做好zabbix-server和zabbix-agent两台机器的配置 然后在wen页面上发现两台主机都有可用性的问题 如下图 解决zabbix-agent可用性灰色的办法: …...
C语言(13)------------>do-while循环
1.do-while循环的语法 我们知道C语言有三大结构,顺序、选择、循环。我们可以使用while循环、for循环、do-while循环实现循环结构。之前的博客中提及到了前两者的技术实现。可以参考: C语言(11)------------->while循…...
2025-spring boot 之多数据源管理
1、是使用Spring提供的AbstractRoutingDataSource抽象类 注入多个数据源。 创建 DataSourceConfig 配置类 通过spring jdbc 提供的带路由的抽象数据源 AbstractRoutingDataSource import org.springframework.beans.factory.annotation.Autowired; import org.springframew…...
自动驾驶两个传感器之间的坐标系转换
有两种方式可以实现两个坐标系的转换。 车身坐标系下一个点p_car,需要转换到相机坐标系下,旋转矩阵R_car2Cam,平移矩阵T_car2Cam。点p_car在相机坐标系下记p_cam. 方法1:先旋转再平移 p_cam T_car2Cam * p_car T_car2Cam 需要注…...
DeepSeek 细节之 MoE
DeepSeek 细节之 MoE DeepSeek 团队通过引入 MoE(Mixture of Experts,混合专家) 机制,以“分而治之”的思想,在模型容量与推理成本之间找到了精妙的平衡点,其中的技术实现和细节值得剖思 Transformer 演变…...
SeaCMS V9海洋影视管理系统报错注入
漏洞背景 SQL 注入攻击是当前网络安全中最常见的一种攻击方式,攻击者可以利用该漏洞访问或操作数据库,造成数据泄露或破坏。通常发生在开发人员未能正确处理用户输入时。 在 SeaCMS V9 中,用户输入(如登录、评论、分页、ID 等&a…...
Cannot deserialize instance of java.lang.String out of START_ARRAY token
这个错误 Cannot deserialize instance of java.lang.String out of START_ARRAY token 表示 Jackson 正在尝试将一个 JSON 数组反序列化成一个 String 类型的字段,但是 JSON 中传递的是一个数组而不是单一的字符串。 具体来说,这段堆栈信息:…...
LeetCode 解题思路 1(Hot 100)
解题思路: 使用哈希表优化查找:利用哈希表存储已遍历元素的值及其索引,将查找时间从O(n)降至O(1)。一次遍历:遍历数组,对每个元素计算其补数(target - nums[i]),若补数存在于哈希表…...
js中的await与async的使用
以下两个方法,区别只在有没有catch,使用的时候却要注意 // 封装请求方法,同步loading状态出去 export const fetchWithLoading async (fn: Function, params: any, loading: Ref) > {loading.value true;try {return await fn(params);…...