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

牟乃夏《ArcGIS Engine地理信息系统开发教程》学习笔记1

(适合GIS开发入门者,通俗解析核心知识点)


目录

一、ArcGIS Engine是什么?

二、ArcGIS Engine能做什么?

三、ArcGIS Engine与ArcObjects的区别

四、开发资源与学习路径

五、对象模型图(OMD)入门

六、案例:基于ArcGIS Engine的简易地图查看器开发

1. 案例背景

2. 开发环境与工具

3. 实现步骤

Step 1:环境配置

Step 2:加载地图数据

Step 3:添加基础工具

Step 4:实现属性查询功能

4. 运行演示

5. 注意事项

6. 扩展思考


一、ArcGIS Engine是什么?

ArcGIS Engine(简称AE)是Esri公司提供的一套基于COM组件技术的GIS开发工具包,支持C#、Java、VB.NET等多种编程语言。它的核心价值在于:

  1. 独立开发:无需安装ArcGIS Desktop,可直接构建独立GIS应用程序。
  2. 功能嵌入:能将GIS功能(如地图显示、空间分析)集成到Word、Excel等非GIS软件中。
  3. 组件化设计:通过控件(如MapControl、ToolbarControl)和类库实现灵活开发。

核心组成

  • 开发工具包(Developer Kit):包含控件、类库、示例代码和文档。

(开发工具包组成示意图)

  • 运行时(Runtime):应用程序运行的基础环境,需根据功能需求选择不同授权级别。


二、ArcGIS Engine能做什么?

AE封装了丰富的GIS功能,覆盖以下常见场景:

  1. 基础操作:地图缩放、平移、图层管理。
  2. 数据查询:属性查询、空间查询(如点击地图获取要素信息)。
  3. 数据分析:网络分析(最短路径)、空间统计、三维可视化。
  4. 数据编辑:矢量数据增删改、拓扑检查。
  5. 专题制图:生成分级符号图、热力图等专题地图。

三、ArcGIS Engine与ArcObjects的区别

两者功能相似,但定位不同:

对比项ArcGIS EngineArcObjects
开发依赖无需ArcGIS Desktop,独立开发需安装ArcGIS Desktop
功能范围核心功能(无部分UI工具)包含ArcGIS Desktop完整功能
应用场景轻量化独立程序、功能嵌入深度定制ArcGIS桌面扩展
示例缺少IGxDialog(数据对话框)支持更多桌面交互接口

四、开发资源与学习路径

  1. 官方文档:安装AE后,通过ArcObjects Help for .NET查看接口说明和示例。

  2. 自带示例:安装目录下的Samples文件夹包含经典代码(如地图渲染、工具开发)。

  3. 在线资源

  • Esri开发者社区:技术文档和论坛答疑。
  • GitHub开源项目:参考成熟项目结构。

     4. 控件速览

  • MapControl:地图显示与交互。
  • ToolbarControl:集成地图工具(如放大、查询)。
  • TOCControl:管理图层目录。


五、对象模型图(OMD)入门

OMD图用于描述ArcGIS Engine中类的继承、组合等关系,是理解组件架构的关键工具:

  1. 类类型

  • 抽象类(Abstract Class):不能直接实例化(如Geometry)。
  • 组件类(CoClass):可直接创建对象(如QueryFilter)。
  • 普通类(Class):需通过其他类实例化(如Workspace通过WorkspaceFactory创建)。

    2. 类关系

  • 继承:子类扩展父类功能(如Polyline继承Geometry)。

  • 组合:对象生命周期绑定(如Map包含Layer,删除地图则图层消失)。

  • 关联:对象间松散引用(如MapLegend的关系)。

  • 依赖:一个对象产生另一个对象的方式(如Create、open等)

六、案例:基于ArcGIS Engine的简易地图查看器开发

(实现地图加载、缩放、平移、属性查询基础功能)


1. 案例背景

假设我们需要为某环保部门开发一个简易GIS工具,用于快速查看区域污染源分布地图,并支持点击查询污染源属性信息。通过此案例,学习如何利用ArcGIS Engine的MapControlToolbarControl控件搭建基础地图应用。


2. 开发环境与工具

  • 开发语言:C#(WinForm)

  • 工具:Visual Studio 2019 + ArcGIS Engine 10.2

  • 数据:Shapefile格式的污染源点数据(包含名称、类型、浓度等字段)


3. 实现步骤

Step 1:环境配置

  1. 安装ArcGIS Engine Runtime和SDK。

  2. 在Visual Studio中新建Windows窗体项目,添加AE的COM组件引用(ESRI.ArcGIS.CartoESRI.ArcGIS.Controls等)。

  3. MapControlToolbarControl拖入窗体,并绑定ToolbarControl的伙伴控件为MapControl


Step 2:加载地图数据

// 在窗体加载事件中添加代码
private void MainForm_Load(object sender, EventArgs e)
{// 设置地图控件的坐标系(以WGS84为例)mapControl1.SpatialReference = new SpatialReferenceEnvironment().CreateGeographicCoordinateSystem((int)esriSRGeoCSType.esriSRGeoCS_WGS1984);// 加载Shapefile数据IWorkspaceFactory workspaceFactory = new ShapefileWorkspaceFactoryClass();IFeatureLayer featureLayer = new FeatureLayerClass();IWorkspace workspace = workspaceFactory.OpenFromFile(@"D:\PollutionData\", 0);IFeatureWorkspace featureWorkspace = (IFeatureWorkspace)workspace;featureLayer.FeatureClass = featureWorkspace.OpenFeatureClass("PollutionSources.shp");featureLayer.Name = "污染源分布";// 将图层添加到地图控件mapControl1.AddLayer(featureLayer);mapControl1.Refresh();
}

Step 3:添加基础工具

通过ToolbarControl绑定AE内置命令,快速实现地图交互:

// 在窗体初始化时添加工具按钮
private void InitializeToolbar()
{// 添加放大、缩小、平移、全图工具toolbarControl1.AddItem("esriControls.ControlsMapZoomInTool");toolbarControl1.AddItem("esriControls.ControlsMapZoomOutTool");toolbarControl1.AddItem("esriControls.ControlsMapPanTool");toolbarControl1.AddItem("esriControls.ControlsMapFullExtentCommand");
}

Step 4:实现属性查询功能

通过MapControl的点击事件,获取点击位置的要素属性:

private void mapControl1_OnMouseDown(object sender, IMapControlEvents2_OnMouseDownEvent e)
{// 定义查询参数IFeatureLayer featureLayer = mapControl1.get_Layer(0) as IFeatureLayer;ISpatialFilter spatialFilter = new SpatialFilterClass();spatialFilter.Geometry = mapControl1.ToMapPoint(e.x, e.y); // 将屏幕坐标转为地图坐标spatialFilter.SpatialRel = esriSpatialRelEnum.esriSpatialRelIntersects;// 执行查询IFeatureCursor featureCursor = featureLayer.Search(spatialFilter, false);IFeature feature = featureCursor.NextFeature();if (feature != null){// 弹出属性信息(例如名称、浓度)string message = $"污染源名称:{feature.get_Value(1)}\n浓度值:{feature.get_Value(3)}";MessageBox.Show(message);}
}

4. 运行演示

  • 地图加载:污染源点数据以默认符号显示在MapControl中。

  • 交互操作:通过工具栏按钮实现缩放、平移。

  • 属性查询:点击任意污染源点,弹出属性对话框。


5. 注意事项

  1. 数据路径问题:需确保Shapefile路径正确,且文件未被占用。

  2. 控件初始化顺序:需先绑定ToolbarControlMapControl,再添加工具。

  3. 异常处理:添加try-catch块避免因数据加载失败导致程序崩溃。


6. 扩展思考

  • 添加更多工具:如绘制缓冲区、空间查询(统计某区域内的污染源数量)。

  • 优化显示:根据浓度值分级渲染颜色(使用IFeatureRenderer接口)。


总结:通过此案例,可以快速掌握ArcGIS Engine开发的基本流程(控件使用、数据加载、事件交互),为后续复杂功能开发奠定基础。建议读者尝试修改代码参数(如查询字段、符号样式),观察不同效果!

 参考:牟乃夏ArcEngine教程:第1章 ArcGIS Engine编程基(22页)-原创力文档

牟乃夏ArcEngine教程ArcGISEngine编程基.pptx - 人人文库(学习笔记完,可结合代码实操加深理解!)


以上为博主自己在学习过程中的学习笔记,用于学习和交流,欢迎大家批评纠正。

希望你越来越优秀!!

相关文章:

牟乃夏《ArcGIS Engine地理信息系统开发教程》学习笔记1

(适合GIS开发入门者,通俗解析核心知识点) 目录 一、ArcGIS Engine是什么? 二、ArcGIS Engine能做什么? 三、ArcGIS Engine与ArcObjects的区别 四、开发资源与学习路径 五、对象模型图(OMD)…...

架构师论文《论模型驱动软件开发方法在智能制造转型实践中的应用》

摘要: 本人现任某大型装备制造企业智能制造研究院首席架构师,主导集团级数字化工厂平台建设。面对多品种小批量生产模式下普遍存在的交付周期超预期(平均延期21天)、设备综合效率OEE不足65%的痛点,我司于2021年启动基…...

探索MCP.so:AI生态的创新枢纽

今天在研究MCP时发现了一个还不错的网站,分享给大家。后续会基于这些mcp servers做一些有趣的应用。 在人工智能飞速发展的当下,AI与各类工具、数据源的协同合作变得愈发关键。MCP.so这个平台,正悄然成为AI领域的重要枢纽,为众多开发者和AI爱好者打开了新的大门。 MCP,即…...

JVM底层详解

JVM底层详解 目录 JVM概述JVM内存模型垃圾回收机制类加载过程JIT编译JVM调优JVM监控与故障排查JVM与多线程JVM与性能优化JVM发展历程与未来JVM实战案例分析JVM高级特性JVM安全机制JVM与容器化 一、JVM概述 1.1 什么是JVM Java虚拟机(Java Virtual Machine&…...

多点:分布式升级助力新零售转型,成本节省超80% | OceanBase 案例

本文作者:多点数据库DBA团队 编者按:多点是零售行业数字(智)化的先行者,为全球企业提供创新的数字化解决方案。然而,在数字化转型的过程中,多点原有的数据库架构逐渐暴露出架构复杂、成本上升等…...

Java权限修饰符深度解析

Java权限修饰符深度解析与最佳实践 一、权限修饰符总览 Java提供四种访问控制修饰符,按访问范围从宽到窄排序如下: 修饰符类内部同包类不同包子类全局范围public✔️✔️✔️✔️protected✔️✔️✔️❌默认(无)✔️✔️❌❌pr…...

RocketMQ和kafka 的区别

一、数据可靠性与容错机制 数据可靠性 RocketMQ支持同步刷盘和同步复制,确保消息写入磁盘后才返回确认,单机可靠性高达10个9,即使操作系统崩溃也不会丢失数据159。而Kafka默认采用异步刷盘和异步复制,虽然吞吐量高,但极…...

分布式限流器框架 eval-rate-limiter

分布式限流器框架 eval-rate-limiter 文章目录 分布式限流器框架 eval-rate-limiter前言设计流程图 核心方法tryAcquire 获取通信证增加访问次数 incrementRequestCount生成分布式 key generateRateLimiterKey 测试测试代码结果Redis 客户端 前言 基于 redis 实现的分布式限流…...

使用Docker部署Java项目的完整指南

前言 Docker是一个轻量级的容器化平台,可将应用及其依赖打包成标准化单元,实现快速部署和环境隔离。本文以Spring Boot项目为例,演示如何通过Dockerfile部署Java应用。 准备工作 本地环境 安装Docker Desktop(官网下载&#xff0…...

机器学习数据需求与应用分析

监督学习、无监督学习和强化学习作为机器学习的核心范式,对数据条件的需求存在显著差异。以下是具体分析: 一、监督学习的数据条件 数据要求 监督学习需要带标签(labeled)的数据集,即每个输入样本都有对应的目标输出&a…...

【机器学习算法】基于python商品销量数据分析大屏可视化预测系统(完整系统源码+数据库+开发笔记+详细启动教程)✅

目录 一、项目背景 二、技术思路 三、算法介绍 四、项目创新点 五、开发技术介绍 六、项目展示 一、项目背景 本项目基于Python技术栈构建了"商品销量数据分析与预测系统",通过自动化爬取淘宝商品多维数据(价格、销量、评价、品类等&a…...

springboot集成springcloud vault读值示例

接上三篇 Vault---机密信息管理工具安装及常用示例 Vault机密管理工具集群配置示例 vault签发根证书、中间证书、ca证书流程记录 项目里打算把所有密码都放到vault里管理,vault提供了springcloud vault用来在springboot里连接vault,启动加载vault里的值放…...

BERT 模型是什么

BERT 模型是什么? BERT(Bidirectional Encoder Representations from Transformers)是一种基于Transformer架构的深度学习模型,由Google于2018年提出。它在自然语言处理领域取得了显著成就,成为众多NLP任务的基础。 …...

三元电池正极材料除杂工艺介绍

三元电池正极材料的除杂工艺对于提高电池性能、安全性和稳定性至关重要。以下是对三元电池正极材料除杂工艺的详细介绍: 物理除杂工艺 磁选 原理:利用磁场对磁性杂质的吸引作用实现分离。在三元电池正极材料生产中,常混入铁、钴、镍等磁性金…...

wx212基于ssm+vue+uniapp的科创微应用平台小程序

开发语言:Java框架:ssmuniappJDK版本:JDK1.8服务器:tomcat7数据库:mysql 5.7(一定要5.7版本)数据库工具:Navicat11开发软件:eclipse/myeclipse/ideaMaven包:M…...

Multi Agents Collaboration OS:数据与知识协同构建数据工作流自动化

1-背景 传统数据系统与业务数字化的开发与维护面临诸多挑战:行业知识获取壁垒高、需求变化快导致开发周期长、系统复杂度高以及人力与资源投入成本巨大。同时,用户在使用过程中也常遇到痛点:手动录入数据繁琐低效、数据分散于各模块难以整合…...

elemenPlus中,如何去掉el-input中 文本域 textarea自带的边框和角标

1、去掉角标 :deep(.el-textarea__inner) {resize: none !important; // 去除右下角图标 }2、去除边框&#xff0c;并自定义背景色 <el-inputref"textareaRef"v-model"tempContent":style"{--el-border-color: rgba(255,255,255,0.0),--el-input-…...

Excel 动态比较两列数据:实现灵活的数据验证

目录 动态比较两列数据的需求动态公式的实现使用INDIRECT和ROW函数公式解释应用 动态公式的优点 快速添加一列公式的技巧使用快捷键Ctrl D使用VBA宏自动化使用“表格”功能自动填充 实际应用场景数据验证动态报告数据清洗 注意事项总结 在数据处理和分析中&#xff0c;Excel 是…...

谷歌推出可免费使用的Firebase Studio:Gemini全栈AI开发利器

谷歌刚刚发布了Firebase Studio,这是其打造的一款沉浸式代码开发平台,旨在与Cursor、Lovable、Bolt和V0等工具竞争。如果你是一名网页开发者,可能只知道Firebase是谷歌的数据库工具。 但现在,它已远不止于此。 Firebase已发展成一个完整的生态系统,如今能帮助你从头到尾…...

spark(二)

本节课接上节课继续对于RDD进行学习&#xff0c;首先是对于创建RDD的不同方式&#xff0c;接着学习了RDD的三种转换算子&#xff1a;Value类型、双Value类型、Key-Value类型&#xff0c;以及各个转换算子的不同使用方式。 学习到如下的区别&#xff1a; map 与 mapPartitions…...

Fay 数字人部署环境需求

D:\ai\Fay>python main.py pygame 2.6.1 (SDL 2.28.4, Python 3.11.9) Hello from the pygame community. https://www.pygame.org/contribute.html [2025-04-11 00:10:16.7][系统] 注册命令... [2025-04-11 00:10:16.8][系统] restart 重启服务 [2025-04-11 00:10:16.8][…...

【Harmony】端云一体化(云函数)

一、云函数的概述 1、什么是云函数 官方解释 云函数是一项Serverless计算服务&#xff0c;提供FaaS&#xff08;Function as a Service&#xff09;能力&#xff0c;一方面云函数将开发测试的对象聚焦到函数级别&#xff0c;可以帮助您大幅简化应用开发与运维相关的事务&…...

利用大模型和聚类算法找出 Excel 文件中重复或相似度高的数据,并使用 FastAPI 进行封装的详细方案

以下是一个利用大模型和聚类算法找出 Excel 文件中重复或相似度高的数据,并使用 FastAPI 进行封装的详细方案: 方案流程 数据读取:从 Excel 文件中读取数据。文本向量化:使用大模型将文本数据转换为向量表示。聚类分析:运用聚类算法对向量进行分组,将相似度高的数据归为…...

通过远程桌面连接wsl2中安装的ubuntu24.04

要介绍的这种方式其实跟直接用wsl来执行命令差不多&#xff0c;是在终端去操作ubuntu。WSL2 默认只提供命令行界面&#xff0c;本文安装xrdp后通过windows远程桌面连接过去。 1、更新软件包列表 sudo apt update 确保你的软件包列表是最新的&#xff0c;否则可能找不到某些包…...

对接和使用国内稳定无水印的 Suno API

随着 AI 的应用日益广泛&#xff0c;各种 AI 程序已经融入我们的日常生活。从最早的写作&#xff0c;到医疗、教育&#xff0c;如今甚至扩展到了音乐领域。 Suno 是一个专注于高质量 AI 歌曲和音乐创作的平台。用户只需输入简单的文本提示词&#xff0c;便可以按照流派风格和歌…...

LeetCode算法题(Go语言实现)_38

我将按照您提供的文档结构为您整理二叉树最近公共祖先&#xff08;LCA&#xff09;问题的解决方案&#xff1a; 一、代码实现 type TreeNode struct {Val intLeft *TreeNodeRight *TreeNode }func lowestCommonAncestor(root, p, q *TreeNode) *TreeNode {if root nil ||…...

Linux学习笔记 1

1.发展史 略...... 2.xshell的使用方法 2.1登录 ssh root公网地址 输入密码&#xff0c;用 uname -r 指令来鉴定是否登录成功。之后就可以进行命令行操作了。 alt enter 全屏、退出 设置多用户指令&#xff0c;新建用户 adduser 名字 passwd 密码 销毁用户&#xf…...

微信小程序跳4

formatMillisecondsTime: function(milliseconds, formatStr) { // 创建一个新的Date对象&#xff0c;传入毫秒值 const date new Date(milliseconds); // 获取年月日时分秒&#xff0c;并确保它们都是两位数 const year date.getFullYear(); const month (date.getMonth() …...

STM32单片机入门学习——第31节: [10-1] I2C通信协议

写这个文章是用来学习的,记录一下我的学习过程。希望我能一直坚持下去,我只是一个小白,只是想好好学习,我知道这会很难&#xff0c;但我还是想去做&#xff01; 本文写于&#xff1a;2025.04.10 STM32开发板学习——第31节: [10-1] I2C通信协议 前言开发板说明引用解答和科普一…...

OpenCV 图形API(24)图像滤波-----双边滤波函数bilateralFilter()

操作系统&#xff1a;ubuntu22.04 OpenCV版本&#xff1a;OpenCV4.9 IDE:Visual Studio Code 编程语言&#xff1a;C11 算法描述 应用双边滤波到图像。 该函数对输入图像应用双边滤波&#xff0c;如 http://www.dai.ed.ac.uk/CVonline/LOCAL_COPIES/MANDUCHI1/Bilateral_Fil…...

【图像处理基石】什么是影调?并用python实现一个哈苏色彩影调

影调是摄影语言的核心&#xff0c;通过控制明暗、虚实与色彩&#xff0c;可精准传达创作意图。实际选择需结合主题情感、光线条件及画面结构&#xff0c;灵活运用高调、低调或冷暖色调&#xff0c;以强化视觉表现力。 一、影调的定义 影调指画面中明暗、虚实、色彩的层次与对比…...

融智学三大定律:打开人机协同智慧大门的钥匙

...

MySQL行列转换

创建一个sc表并插入数据 方法一: select distinct uid, (select score from sc where s.uiduid and course语文)语文, (select score from sc where s.uiduid and course数学)数学, (select score from sc where s.uiduid and course英语)英语 from sc s; 方法二: select * fro…...

cookie和session哪个生成的时间早

Cookie 和 Session 的出现时间都可以追溯到 Web 开发的早期阶段&#xff0c;但它们的生成顺序在实际应用中通常是先生成 Session&#xff0c;然后通过 Cookie 来存储 Session ID。 详细解释&#xff1a; Session 的生成过程 • 用户请求服务器&#xff1a; • 用户首次访问网…...

sh脚本删除指定后缀.txt的文件,保留6个月的数据

1、linux下脚本删除指定后缀.txt和.path的文件&#xff0c;保留6个月的数据&#xff1a; 下面代码内容&#xff1a; #!/bin/bash # 指定要删除文件的路径列表 paths("/data/fail")# 获取当前系统日期6个月之前的日期 six_months_ago$(date -d "-6 months"…...

嵌入式Linux按键监控模块详解:实现设备重启与长按检测

嵌入式Linux按键监控模块详解&#xff1a;实现设备重启与长按检测 在嵌入式Linux设备开发中&#xff0c;物理按键仍然是用户与设备交互的重要方式。本文将分享一个轻量级但功能完整的按键监控模块&#xff0c;它可以精确识别按键的短按和长按事件&#xff0c;并执行对应操作如…...

[错误经验 坑]关于UDP服务器和客户端通信使用的recvfrom的输出型参数len没有被初始化导致的问题

[错误经验 坑]关于UDP服务器和客户端通信使用的recvfrom的输出型参数len没有被初始化导致的问题 水墨不写bug 文章目录 一、困惑&#xff1a;二、解答&#xff1a;&#xff08;1&#xff09;函数原型1. int sockfd2. void *buf3. size_t len4. int flags5. struct sockaddr *sr…...

KaiwuDB:面向AIoT场景的多模融合数据库,赋能企业数字化转型

引言 在万物互联的AIoT时代&#xff0c;企业面临着海量时序数据处理、多模数据融合和实时分析等挑战。KaiwuDB应运而生&#xff0c;作为一款面向AIoT场景的分布式、多模融合、支持原生AI的数据库产品&#xff0c;为企业提供了一站式数据管理解决方案。 产品概述 KaiwuDB是一…...

Web3 的云基础设施正在成型,Polkadot 2.0 用三项技术改写“上链成本”

在Web3基础设施内卷加剧的今天&#xff0c;“如何以更低成本、更大灵活性部署一条高性能应用链”正成为开发者们最关心的问题。而刚刚走出“技术慢热”误区的Polkadot&#xff0c;正在用一套名为 Polkadot 2.0 的架构升级方案&#xff0c;重新定义这一问题的解法。 这套升级最…...

Elasticsearch 学习规划

Elasticsearch 学习规划 明确学习目标与动机 场景化需求分析 - **S**&#xff1a;掌握Elasticsearch架构体系&#xff0c;熟练使用Elasticsearch 进行数据分析,Elasticsearch结合java 项目落地案例 - **M**&#xff1a;搜索和Elasticsearch相关GitHub项目 - **A**&#xff1a;每…...

OpenHarmony如何编译安装系统应用(以settings设置为例)

开发环境 1.OpenHarmony 2.DevEco Studio 3 .Full Sdk 实现步骤 1.获取设置应用源码 https://gitee.com/openharmony/applications_settings/tree/OpenHarmony-v5.0.0-Release/ 2,使用 DevEco Studio 和 Full SDK对系统应用进行签名,默认工程是未配置签名的状态,所构建…...

手撕 STL 之—— list

目录 引言 1, list_node类及其构造函数 2, list类的创建 3, list基本功能函数 3_1&#xff0c; 构造函数 3_2&#xff0c;push_back 3_3&#xff0c;push_front 3_4&#xff0c; pop_back 3_5&#xff0c;pop_front 4&#xff0c;迭代器 (重点) 4_1&#xff0c;如何设…...

Med-R1论文阅读理解

论文介绍 这篇论文介绍了一个名为 Med-R1 的新方法&#xff0c;用于提升多模态视觉语言模型&#xff08;VLM&#xff09;在医学图像理解和推理任务中的泛化能力和可解释性。下面是对整篇论文的简洁总结&#xff1a; ⸻ &#x1f9e0; 核心思想 • 当前医学 VLM 多依赖于监督…...

微服务相关

1.SpringCloud有哪些常用组件&#xff1f;分别是什么作用&#xff1f; 注册中心&#xff1a;nacos 负载均衡&#xff1a;rabbion/LoadBalancer 网关&#xff1a;gateway 服务熔断&#xff1a;sential 服务调用&#xff1a;Feign 2.服务注册发现的基本流程是怎样的&#x…...

Linux vagrant 导入Centos到virtualbox

前言 vagrant 导入centos 虚拟机 前提要求 安装 virtualbox 和vagrant<vagrant-disksize> (Linux 方式 Windows 方式) 创建一键部署centos 虚拟机 /opt/vagrant 安装目录/opt/VirtualBox 安装目录/opt/centos8/Vagrantfile &#xff08;可配置网络IP&#xff0c;内存…...

Spring Boot MongoDB 分页工具类封装 (新手指南)

Spring Boot MongoDB 分页工具类封装 (新手指南) 目录 引言&#xff1a;为何需要分页工具类&#xff1f;工具类一&#xff1a;PaginationUtils - 简化 Pageable 创建 设计目标代码实现 (PaginationUtils.java)如何使用 PaginationUtils 工具类二&#xff1a;PageResponse<…...

第七章 指针

2024-04 2023-10 A 2023-04 2022-10 2022-04 2021-10 2021-04 2020-10 2020-04...

20年AB1解码java

P8706 [蓝桥杯 2020 省 AB1] 解码 - 洛谷 详细代码如下&#xff1a; import java.util.Scanner;public class Main {public static void main(String[] args) {Scanner innew Scanner(System.in); // 接收输入的字符串char [] c in.next().toCharArray(); // 接收 还原的字符…...

《Java实战:密码加密算法实现与代码解析》

文章目录 一、需求背景二、代码逐模块解析1. 主程序入口2. 密码输入模块3. 加密处理模块4. 结果拼接模块 三、完整代码示例四、运行示例五、优化方向&#xff08;下篇预告&#xff09; 一、需求背景 实现一个4位数字密码的简单加密系统&#xff0c;规则如下&#xff1a; 输入…...

AllData数据中台升级发布 | 支持K8S数据平台2.0版本

&#x1f525;&#x1f525; AllData大数据产品是可定义数据中台&#xff0c;以数据平台为底座&#xff0c;以数据中台为桥梁&#xff0c;以机器学习平台为中层框架&#xff0c;以大模型应用为上游产品&#xff0c;提供全链路数字化解决方案。 ✨杭州奥零数据科技官网&#xf…...