使用Geotools实现将Shp矢量文件加载SLD并合并图例生成-以湖南省周边城市为例
目录
前言
一、技术实现简介
1、生成成果说明
2、生成流程图说明
二、具体生成实践
1、渲染地图
2、生成图例
3、合并图像及输出
三、总结
前言
在当今数字化时代,地理信息系统(GIS)技术已成为城市管理、资源规划、环境监测等众多领域不可或缺的工具。GIS 制图作为该技术体系中的核心环节之一,旨在将复杂的地理空间数据以直观、清晰且易于理解的地图形式呈现出来,为决策者提供有力的可视化支持。在 GIS 制图过程中,矢量数据的可视化呈现占据着举足轻重的地位。Shapefile(Shp)格式作为矢量数据的常用存储形式,以其良好的兼容性和通用性,在地理信息数据的交换与共享中得到了广泛应用。然而,仅仅拥有矢量数据还远远不够,如何通过合适的样式定义(SLD)来准确、有效地表达数据所蕴含的地理信息,是实现高质量 GIS 制图的关键所在。
当我们将 Shp 矢量文件与 SLD 文件相结合时,可以对矢量数据进行精细的符号化和样式设置,以突出不同类型地物的特征和空间分布规律。但在这个过程中,图例的生成与合并成为了制图工作中的一个重要且复杂的任务。以湖南省周边城市为例,该区域包含了众多城市及其丰富的地理要素,这些要素在矢量文件中以不同的几何形状和属性信息存储。当我们为这些要素应用多样化的 SLD 样式后,为了保证地图的清晰性和易读性,需要对图例进行合理合并。图例不仅仅是地图的附加工具,更是用户理解地图内容的关键依据。
在传统的 GIS 制图工具中,图例的合并往往需要手动操作,不仅耗时费力,而且容易出现错误和遗漏。而借助 Geotools 这一开源的 Java GIS 工具库,我们可以探索一种自动化、高效化的方式来实现 Shp 矢量文件加载 SLD 并合并图例生成。Geotools 提供了丰富的数据处理、样式应用以及地图渲染功能,它允许开发者灵活地对地理空间数据进行操作。在本研究中,我们将深入挖掘 Geotools 的相关功能,从 Shp 矢量数据的读取与解析开始,逐步实现 SLD 样式的加载与应用,重点攻克图例合并的技术难题。
通过这一过程,我们不仅能够提高 GIS 制图的效率和质量,还能为湖南省周边城市的地理信息展示提供一种新的技术手段。这将有助于相关领域人员更准确地分析城市间的空间关系、资源分布以及区域发展态势,为城市规划、交通布局、环境保护等实际应用提供更具价值的地图成果,推动 GIS 技术在区域地理研究与实践中的深入应用与发展。
一、技术实现简介
本节将分两部分描述,首先对生成成果进行一个简要的说明,然后结合实例生成流程图进行详细说明,后续将按照生成流程进行实例生成。
1、生成成果说明
这里结合成果图来进行说明,成果地图从结构来说,分成左右两个部分。左边主要是地图成果视图,右边是根据左边的sld生成的图例文本,配合颜色输出的内容。最终两部分的图像信息再合并成一张完整的图片。
2、生成流程图说明
完整的成果生成流程图包含以上8个步骤,第一步是使用Geotools的方式来加载SHP资源,第二步是加载已经生成好的SLD样式描述文件,第三步是创建地图的绘制对象,第四步是按照地图的宽高比来计算新的高度,第五步是执行成果的渲染,第六步是解析SLD并且生成图例图像资源,第七步是将地图主体和图例资源进行合并,第八步是将合并后的图像资源进行本地保存,完整的处理流程就是这样的。通过以上的流程就可以实现前面一节的成果。
二、具体生成实践
本节将详细说明在Geotools中如何实现将地图主图和图例自动合并拼接,并输出为本地图像资源的具体过程。关于如何在Geotools中将Shp文件输出为图片和对图例的自动生成,在之前的系列博客中均有所涉及,不仅包含了详细的教程,也详细介绍了在生成的过程中可能遇到的问题以及如何去解决,本文不再详细的进行叙述,如果有不明白的可以在评论区留言。当然也可以在发私信,翻阅之前的历史博客也是一种比错的方式。本节只详细讲述三个方面的内容,第一个方面是如何进行地图的渲染,第二是如何生成图例,第三个是如何进行图像资源的合并。
1、渲染地图
渲染地图主要包含流程图中的前三个步骤,包含第三个步骤。涉及Shp文件的读取、sld文件的加载,以及创建地图内容,关键代码如下:
// 1. 创建示例数据
File shapefile = new File("F:/vector_data/2021年7月中国乡镇行政区划shp-(乡镇信息有点旧)/2021湖南省乡镇行政区划/湖南省/湖南省/湖南省_市界.shp");
// 创建数据存储
ShapefileDataStore shpDataStore = new ShapefileDataStore(shapefile.toURL());
//一定要设置字符集,否则地图无法渲染,且不报错
shpDataStore.setCharset(Charset.forName("GBK"));
SimpleFeatureSource featureSource = shpDataStore.getFeatureSource();
String xzsldPath = "F:/wzh_workspace_20210320/geotools-fx/src/main/resources/maps/hunan_range.sld";// 2、SLD的方式
Style style = null;
try {style = SldUtils.createStyleFromSld(xzsldPath);
} catch (Exception e) {
}
// 3. 创建地图内容
MapContent mapContent = new MapContent();
FeatureLayer layer = new FeatureLayer(featureSource, style);
mapContent.addLayer(layer);
ReferencedEnvelope bounds = layer.getBounds();
在这个环节需要注意的是字符集编码的设置,请尽量按照字符编码的设置来进行,否则会碰到地图是空白的情况,主要就是SLD文件解析失败,导致样式解析不生效,进而导致图像无法渲染。 关于字符集编码也有多篇博客进行介绍,如果没有时间翻阅之前的博客,可以在Qgis当中直接打开shp文件并进行查看。
2、生成图例
这里主要对应流程图中的4、5、6步骤,这几个步骤也是整个生成过程的核心部分。尤其是生成文字图例的资源部分,需要熟练掌握。业务代码如下:
// 4、计算地理宽高比
double aspectRatio = bounds.getWidth() / bounds.getHeight();
//根据比例计算新高度
MAP_HEIGHT = (int) Math.round(MAP_WIDTH / aspectRatio);
// 5. 渲染地图
BufferedImage mapImage = renderMap(mapContent);
// 6. 手动生成图例
BufferedImage legendImage = createManualLegend(style);
第四个步骤比较简单,主要是为了保持跟原始对象的高度和宽度的比例,相关设置比较简单,不再进行赘述。第五步是渲染地图,也就是在这一步来进行左边的图像资源的渲染设置,代码如下:
private static BufferedImage renderMap(MapContent mapContent) throws IOException {StreamingRenderer renderer = new StreamingRenderer();renderer.setMapContent(mapContent);// 设置渲染范围(示例使用默认范围,实际应根据数据调整)ReferencedEnvelope bounds = mapContent.getViewport().getBounds();if (bounds.isEmpty()) {bounds = new ReferencedEnvelope(-180, 180, -90, 90, DefaultGeographicCRS.WGS84);}// 创建地图图像BufferedImage image = new BufferedImage(MAP_WIDTH, MAP_HEIGHT, BufferedImage.TYPE_INT_ARGB);Graphics2D g2d = image.createGraphics();try {// 设置背景g2d.setColor(Color.WHITE);g2d.fillRect(0, 0, MAP_WIDTH, MAP_HEIGHT);// 绘制地图执行渲染renderer.paint(g2d, new Rectangle(MAP_WIDTH, MAP_HEIGHT), bounds);// 执行渲染} finally {g2d.dispose();}return image;
}
需要注意的是,在第五步这里要返回一个BufferedImage对象,这个对象将作为输入参数在后面的方法中传入。 接下来是第六步,根据sld来生成图例,这一步也是非常重要的,关键代码如下:
private static BufferedImage createManualLegend(Style style) {int iconSize = 12;BufferedImage legend = new BufferedImage(LEGEND_WIDTH, MAP_HEIGHT, BufferedImage.TYPE_INT_ARGB);Graphics2D g = legend.createGraphics();// 设置抗锯齿g.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON);//这是白色背景g.setColor(Color.WHITE);g.fillRect(0, 0, LEGEND_WIDTH, MAP_HEIGHT);// 绘制标题g.setColor(Color.BLACK);g.setFont(new Font("宋体", Font.BOLD, 14));// 遍历规则生成图例项//int y = 30;int y = MAP_HEIGHT - iconSize- PADDING ;for (FeatureTypeStyle fts : style.featureTypeStyles()) {for (Rule rule : fts.rules()) {if (rule.getDescription().getTitle() == null) continue;// 绘制图例图标BufferedImage symbol = renderSymbol(rule, iconSize);if (symbol != null) {g.drawImage(symbol, PADDING, y, null);}// 绘制文字标签g.drawString(rule.getDescription().getTitle().toString(), PADDING + iconSize + 5, y + iconSize/2 + 5);y -= iconSize + PADDING;}}g.drawString("图例", PADDING, y);g.dispose();return legend.getSubimage(0, 0, LEGEND_WIDTH, MAP_HEIGHT);
}
同样的,这里也是返回一个BufferedImage对象。这个对象就是目标图像的右边数据源。
3、合并图像及输出
这里主要对应流程图中的7、8两步,最关键的流程就是将前面渲染得到的左边部分和右边部分进行合并。由于前面生成的图片本身是带了高度和宽度的,因此在执行图像的合并的时候,就一定会遇到对应高度和宽度的重新计算,因此这也是进行图像合并的关键之所在。这里直接给出相应的调用代码:
// 7. 合并图像
BufferedImage combined = combineImages(mapImage,legendImage);
// 8. 保存结果
ImageIO.write(combined, "png", new File("D:/manual_legend_map0423.png"));
mapContent.dispose();
shpDataStore.dispose();
System.out.println("完成");
其中合并图像的关键方法代码如下:
private static BufferedImage combineImages(BufferedImage mapImage, BufferedImage legendImage) {// 计算总尺寸int totalWidth = MAP_WIDTH + LEGEND_WIDTH;int totalHeight = Math.max(MAP_HEIGHT, legendImage.getHeight());BufferedImage combined = new BufferedImage(totalWidth, totalHeight, BufferedImage.TYPE_INT_ARGB);Graphics2D g = combined.createGraphics();try {// 绘制地图g.drawImage(mapImage, 0, 0, null);// 绘制图例到右侧int legendX = MAP_WIDTH;int legendY = (totalHeight - legendImage.getHeight()) / 2;g.drawImage(legendImage, legendX, legendY, null);} finally {g.dispose();}return combined;
}
在执行绘制的时候,我们使用g.drawImage执行两次绘制,首先绘制左边的部分,然后再指定的宽度和高度上来绘制图例信息。最终就得到在最开时给大家看到的成果图。
三、总结
以上就是本文的主要内容,在本研究中,我们将深入挖掘 Geotools 的相关功能,从 Shp 矢量数据的读取与解析开始,逐步实现 SLD 样式的加载与应用,重点攻克图例合并的技术难题。通过这一过程,我们不仅能够提高 GIS 制图的效率和质量,还能为湖南省周边城市的地理信息展示提供一种新的技术手段。这将有助于相关领域人员更准确地分析城市间的空间关系、资源分布以及区域发展态势,为城市规划、交通布局、环境保护等实际应用提供更具价值的地图成果,推动 GIS 技术在区域地理研究与实践中的深入应用与发展。行文仓促,定有不足之处,欢迎各位朋友在评论区批评指正,不胜感激。
相关文章:
使用Geotools实现将Shp矢量文件加载SLD并合并图例生成-以湖南省周边城市为例
目录 前言 一、技术实现简介 1、生成成果说明 2、生成流程图说明 二、具体生成实践 1、渲染地图 2、生成图例 3、合并图像及输出 三、总结 前言 在当今数字化时代,地理信息系统(GIS)技术已成为城市管理、资源规划、环境监测等众多领域…...
openGauss数据库:起源、特性与对比分析
openGauss数据库:起源、特性与对比分析 一、起源与发展历程 1. 技术背景与开源历程 openGauss是由华为公司主导开发的开源关系型数据库管理系统,其技术根源可追溯至PostgreSQL。2019年,华为在内部整合了多个数据库产品线(如GMDB…...
相机中各个坐标系的转换关系如像素坐标系到世界坐标系以及相机标定的目的
一、背景 无论是机器人领域、SLAM还是自动驾驶领域,都会涉及相机标定,但是看了很多博客,都是各种坐标系的变换,没有从上层说明进行坐标变换的目的是什么,以及相机标定完成后,是已知像素坐标求世界坐标&…...
ubuntu24设置拼音输入法,解决chrome不能输入中文
## 推荐方案:使用 Fcitx5 Fcitx5 是当前在 Wayland 环境下兼容性最好的输入法框架。 ### 1. 安装 Fcitx5 bash sudo apt update sudo apt install fcitx5 fcitx5-chinese-addons fcitx5-frontend-gtk3 fcitx5-frontend-gtk4 fcitx5-frontend-qt5 fcitx5-module-c…...
linux内核进程管理(1)——创建,退出
linux源码阅读——进程管理(1) 1. 进程的基本介绍1.1 linux中进程和线程的区别1.2 task_struct中的基本内容1.3 命名空间ns(namespace)命名空间结构图Linux 中的命名空间类型 1.4 进程标识符 2. 创建一个进程的流程2.1 CLONE宏2.2 创建进程系统调用1. do…...
容器修仙传 我的灵根是Pod 第8章 护山大阵(DaemonSet)
第三卷:上古遗迹元婴篇 第8章 护山大阵(DaemonSet) 九霄之上,雷云如怒海翻腾。 天调度宗的护山大阵「九霄雷光阵」正发出悲鸣,七十二根镇山雷柱已有半数熄灭。每根雷柱底部,本该守护节点的「雷符傀儡」&a…...
使用Python将YOLO的XML标注文件转换为TXT文件格式
使用Python将YOLO的XML标注文件转换为TXT文件格式,并划分数据集 import xml.etree.ElementTree as ET import os from os import listdir, getcwd from os.path import join import random from shutil import copyfile from PIL import Image# 只要改下面的CLASSE…...
在面试中被问到spring是什么?
Spring框架的核心回答 1. 定义与定位 Spring是一个轻量级、开源的企业级应用开发框架,旨在简化Java应用的开发,提供全面的编程和配置模型。它的核心目标是解决企业应用开发的复杂性,通过模块化设计和松耦合架构,帮助开发者更高效…...
MongoDB Ubuntu 安装
MongoDB 安装 https://www.mongodb.com/zh-cn/docs/manual/installation/ https://www.mongodb.com/zh-cn/docs/manual/tutorial/install-mongodb-on-ubuntu/ https://www.mongodb.com/zh-cn/docs/manual/reference/ulimit/ https://www.mongodbmanager.com/download ubun…...
ElasticSearch深入解析(三):Elasticsearch 7的安装与配置、Kibana安装
文章目录 〇、简介1.Elasticsearch简介2.典型业务场景3.数据采集工具4.名词解释 一、安装1.使用docker(1)创建虚拟网络(2)Elasticsearch安装步骤 2.使用压缩包 二、配置1.目录介绍2.配置文件介绍3.elasticsearch.yml节点配置4.jvm.options堆配置问题:为什么说堆内存…...
初始SpringBoot
此文介绍一些有关我对SpringBoot的学习理解, 声明:此处我的IDEA是企业版的,可能和社区版会有一些差异 1. 第⼀个SpringBoot程序 1. SpringBoot介绍 我们看下Spring官方的介绍 可以看到,Spring让Java程序更加快速,简单和安全.Spring对于速…...
【算法笔记】动态规划基础(一):dp思想、基础线性dp
目录 前言动态规划的精髓什么叫“状态”动态规划的概念动态规划的三要素动态规划的框架无后效性dfs -> 记忆化搜索 -> dp暴力写法记忆化搜索写法记忆化搜索优化了什么?怎么转化成dp?dp写法 dp其实也是图论首先先说结论:状态DAG是怎样的…...
C++入门基础(2)
Hello~,欢迎大家来到我的博客进行学习! 目录 1.缺省参数2.函数重载3.引用3.1 引用的概念和定义3.2 引用的特性3.3引用的使用3.4 const引用3.5 指针和引用的关系扩展 4. nullptr 1.缺省参数 缺省参数是声明或定义函数时为函数的参数指定⼀个缺省值。在调用该函数时&…...
OpenCV-Python (官方)中文教程(部分一)_Day15
18.图像梯度 梯度简单来说就是求导。 OpenCV 提供了三种不同的梯度滤波器,或者说高通滤波器:Sobel, Scharr和Laplacian。Sobel,Scharr 其实就是求一阶或二阶导数。Scharr 是对 Sobel(使用小的卷积核求解求解梯度角度时)的优化。Laplacian 是…...
大厂面试:MySQL篇
前言 本章内容来自B站黑马程序员java大厂面试题和小林coding 博主学习笔记,如果有不对的地方,海涵。 如果这篇文章对你有帮助,可以点点关注,点点赞,谢谢你! 1.MySQL优化 1.1 定位慢查询 定位 一个SQL…...
软件工程的13条“定律”:从Hyrum定律到康威定律,再到Zawinski定律
每周跟踪AI热点新闻动向和震撼发展 想要探索生成式人工智能的前沿进展吗?订阅我们的简报,深入解析最新的技术突破、实际应用案例和未来的趋势。与全球数同行一同,从行业内部的深度分析和实用指南中受益。不要错过这个机会,成为AI领…...
Linux删除大文件df空间avail空间不增加
背景 根磁盘被同事写满,使用> 删除一些安装包后,df中的avail空间还是0 排除有进程正在占用文件,已使用lsof命令检测过我所删的文件是没有进程在使用 原因 是文件系统预留空间在作祟 解决 # 文件系统预留块 tune2fs -l /dev/vda2 | gr…...
【C语言-选择排序算法】实现对十个数进行排序
目录 前言 一、选择排序算法原理 二、选择排序算法实现对十个数进行排序 三、代码运行示例 四、选择排序算法的时间复杂度和空间复杂度分析 五、选择排序算法的优缺点 六、总结 前言 在计算机科学领域,排序算法是基石般的存在,它们就像是整理杂乱…...
驱动开发硬核特训 · Day 18:深入理解字符设备驱动与子系统的协作机制(以 i.MX8MP 为例)
日期:2025年04月23日 回顾:2025年04月22日(Day 17:Linux 中的子系统概念与注册机制) 本日主题:字符设备驱动 子系统协作机制剖析 学习目标:理解字符设备的注册原理,掌握其与子系统间…...
SQL Server 2022 常见问题解答:从安装到优化的全场景指南
SQL Server 2022 作为微软最新的数据库管理系统,在性能、安全性和云集成方面带来了多项革新。然而,用户在实际使用中仍可能遇到各类问题。本文将围绕安装配置、性能优化、备份恢复、安全设置、高可用性方案、兼容性问题及错误代码解析等核心场景…...
软件开发版本库命名规范说明
背景:近期一直再更新自己所开发的一个前端大文件上传npm库(enlarge-file-upload),为了让库的发版更加规范,于是参考了各种文档写下了这篇关于软件开发库的版本命名规范,且不仅局限于前端的版本命名规范,适用于整个软件…...
Kafka 详解
1.基本概念:Kafka 是分布式发布 - 订阅消息系统,具有高吞吐量、可扩展性等优势,支持点对点和发布订阅两种消息模式,涉及 Broker、Topic、Partition 等多种角色。 2.安装步骤:需先安装 JDK 和 Zookeeper,下…...
【Qwen2.5-VL 踩坑记录】本地 + 海外账号和国内账号的 API 调用区别(阿里云百炼平台)
API 调用 阿里云百炼平台的海内外 API 的区别: 海外版:需要进行 API 基础 URL 设置国内版:无需设置。 本人的服务器在香港,采用海外版的 API 时,需要进行如下API端点配置 / API基础URL设置 / API客户端配置…...
硬核解析:整车行驶阻力系数插值计算与滑行阻力分解方法论
引言:阻力优化的核心价值 在汽车工程领域,行驶阻力是影响动力性、经济性及排放的核心因素。根据统计,车辆行驶中约60%的燃油消耗用于克服阻力(风阻、滚阻、传动内阻等)。尤其在电动化趋势下,阻力降低1%可提…...
【网络原理】TCP提升效率机制(一):滑动窗口
目录 一. 前言 二. 滑动窗口 三. 丢包现象 1)ACK报文丢失 2)数据丢失 四. 总结 一. 前言 TCP最核心的机制就是可靠传输 ,确认应答,超时重传,连接管理这些都保证了可靠传输,得到了可靠传输,…...
移动端使用keep-alive将页面缓存和滚动缓存具体实现方法 - 详解
1. 配置组件名称 确保列表页组件设置了name选项,(组合式API额外配置): <!-- vue2写法 --> export default {name: UserList // 必须与 <keep-alive> 的 include 匹配 }<!-- vue3写法 --> defineOptions({na…...
工作记录9
1.点击按钮发送AJAX请求 <!DOCTYPE html> <html lang="en"><head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>Document</title&…...
Java 异常 SSLException: fatal alert: protocol_version 全解析与解决方案
在 Java 网络通信中,SSLException: fatal alert: protocol_version 是典型的 TLS/SSL 协议版本不兼容异常。本文结合 Java 官方规范、TLS 协议标准及实战经验,提供体系化解决方案,帮助开发者快速定位并解决协议版本冲突问题。 一、异常本质&…...
连锁美业管理系统「数据分析」的重要左右分析︳博弈美业系统疗愈系统分享
美业管理系统中的数据分析功能在提升运营效率、优化客户体验、增强决策科学性等方面具有重要作用。 数据分析功能将美业从“经验驱动”升级为“数据驱动”,帮助商家在客户管理、成本控制、服务创新等环节实现精细化运营,最终提升盈利能力与品牌竞争力…...
Openharmony 和 HarmonyOS 区别?
文章目录 OpenHarmony 与 HarmonyOS 的区别:开源生态与商业发行版的定位差异一、定义与定位二、技术架构对比1. OpenHarmony2. HarmonyOS 三、应用场景差异四、开发主体与生态支持五、关键区别总结六、如何选择?未来展望 OpenHarmony 与 HarmonyOS 的区别…...
26.OpenCV形态学操作
OpenCV形态学操作 形态学操作(Morphological Operations)源自二值图像处理,主要用于分析和处理图像中的结构元素,对图像进行去噪、提取边缘、分割等预处理步骤。OpenCV库中提供了丰富的形态学函数,常见的包括…...
uniapp小程序使用echarts
1、引入插件 在Dcloud插件市场下载echarts插件:插件地址 2、页面使用简单示例: <template><view class"pie-view flex-center"><view style"width: 100%; height: 600rpx"><l-echart ref"chartRef&quo…...
Vue 中 使用 Mixins 解决 多页面共用相同组件的相关问题
1. 需要解决的问题 最近在vue项目中,有多个页面需要用到同一个组件,至于是什么组件,这里不重要,重要的这个组件需要被多个文件引用,而且有组件有一些控制逻辑。 1.1代码展示 <template><div class"ap…...
Rust 学习笔记:Rust 简介
Rust 学习笔记:Rust 简介 Rust 学习笔记:Rust 简介历史与发展历程核心特性优点缺点应用领域 Rust 学习笔记:Rust 简介 Rust 是一种系统级编程语言,由 Mozilla 研究院的 Graydon Hoare 于 2006 年设计,旨在提供内存安全…...
第六节:进阶特性高频题-自定义指令实现场景
示例:v-lazy(图片懒加载)、v-permission(权限控制) 钩子函数:mounted、updated、unmounted等 一、自定义指令核心机制 指令生命周期钩子 const myDirective {// 元素插入父节点时调用(初始化…...
未曾设想的道路1
写在前面: 与其转去读博,倾向自学就业。 中国科学技术大学数学科学学院拥有一支优秀的师资团队,以下是部分教授的简介: 陈发来教授: 荣誉:2024年6月13日,在德国莱布尼茨信息科学中心召开的国际…...
Axure按钮设计分享:打造高效交互体验的六大按钮类型
在产品设计过程中,按钮作为用户与界面交互的核心元素,其设计质量直接影响用户体验与操作效率。Axure作为一款强大的原型设计工具,为设计师提供了丰富的按钮设计选项。本文将围绕基础按钮、禁用按钮、圆角按钮、动态按钮、渐变按钮和图标按钮六…...
MySQL 8.4企业版 安装和配置审计插件
在最新的MySQL 8.4.4企业版上启用审计日志功能 操作系统:Ubuntu 24.04 数据库:8.4.4-commercial for Linux on x86_64 (MySQL Enterprise Server - Commercial) 1.查看安装脚本 下面2个脚本位于mysql安装目录 share 下,一个是window一个是linux可以用…...
AI大模型学习十一:尝鲜ubuntu 25.04 桌面版私有化sealos cloud + devbox+minio,实战运行成功
一、说明 用了ubuntu 25.04,内核为GNU/Linux 6.14.0-15-generic x86_64,升级了部分image,过程曲折啊 sealos 能干啥 对集群生命周期进行管理,一键安装高可用 Kubernetes 集群,增删节点清理集群自恢复等 通过 sealos…...
idea无法下载源代码
通过idea找到用户设置文件路径 查看 setting.xml 文件,找到了以下相关的配置,注释掉这个maven-default-http-blocker的镜像,这个东西阻碍了去阿里的镜像库查找依赖,注释掉。 然后重启idea就能下载了...
【敏矽微ME32G030系列】介绍、环境搭建、工程测试
【敏矽微ME32G030系列】介绍、环境搭建、工程测试 本文介绍了敏矽微ME32G030系列单片机及开发板、包括参数特点、原理图、应用场景,以及开发环境搭建、工程测试等流程。 简介 本节介绍了开发板主控、特点、开发板原理图、板载资源等信息。 主控 开发板采用 ME3…...
Hooks的使用限制及原因
Hooks的使用限制及原因 Hooks的核心限制 只能在函数组件顶层调用 ⭐不能在条件语句、循环、嵌套函数中调用 ⭐只能在React函数组件或自定义Hooks中调用 ⭐ 为什么有这些限制? 根本原因:React依赖Hooks的调用顺序 React内部使用数组来存储每个组件的…...
【JavaScript】二十六、正则表达式
文章目录 1、正则表达式1.1 定义1.2 校验 2、元字符2.1 边界符2.2 量词2.3 字符类2.3.1 方括号[ ]2.3.2 小点.2.3.3 预定义 2.4 案例:用户名验证 3、修饰符3.1 语法3.2 案例:过滤敏感词 1、正则表达式 Regular Expression,正则表达式&#x…...
Geek强大的电脑卸载软件工具,免费下载
一款强大的卸载电脑软件工具,无需安装 免费下载...
tomcat Server 连接服务器 进展
由于机房的环境变更,所接触的问题也不一样!!!! 但后来出现以下提示: 已连接到服务器 配置错误: 部署源 springmvc:war 无效[2025-04-23 11:19:50,192] 工件 springmvc:war: 部署工件时出错。请参阅服务器日…...
Elasticsearch 集群节点下线方案
Elasticsearch 集群节点下线方案 在 Elasticsearch(ES)集群中,节点(Node)下线可能会影响数据的可用性和集群的健康状态。因此,正确的下线步骤需要确保数据不会丢失,并且不会影响查询或写入。 &…...
【模板匹配】图像处理(OpenCV)-part10
19.1模板匹配 模板匹配就是用模板图(通常是一个小图)在目标图像(通常是一个比模板图大的图片)中不断的滑动比较,通过某种比较方法来判断是否匹配成功,找到模板图所在的位置。 不会有边缘填充。 类似于卷积,…...
VMware中CentOS 7虚拟机设置固定IP(NAT模式)完整教程
前言 在VMware中为CentOS 7虚拟机配置固定IP是搭建稳定服务环境的关键步骤。本文基于用户提供的最新配置文件,详细演示如何从DHCP自动获取IP调整为固定IP(192.168.89.129),并提供修改前后的配置对比及操作验证。 一、当前配置状态…...
Ragflow、Dify、FastGPT、COZE核心差异对比与Ragflow的深度文档理解能力和全流程优化设计
一、Ragflow、Dify、FastGPT、COZE核心差异对比 以下从核心功能、目标用户、技术特性等维度对比四款工具的核心差异: 核心功能定位 • Ragflow:专注于深度文档理解的RAG引擎,擅长处理复杂格式(PDF、扫描件、表格等)的…...
飞帆控件:在编辑模式下额外加载的库
飞帆是一个自由的控件设计平台。在飞帆中,我们可以很方便地创建基于 Vue 2 组件的控件,并使用控件来搭建网页。 他山之石,可以攻玉。在创建控件中,使用 js 、css 依赖库能让我们的控件更强大。 有些时候,在编辑模式下…...