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

SuperMap Objects组件式GIS开发技术浅析

引言

随着GIS应用领域的扩展,GIS开发工作日显重要。一般地,从平台和模式上划分,GIS二次开发主要有三种实现方式:独立开发、单纯二次开发和集成二次开发。上述的GIS应用开发方式各有利弊,其中集成二次开发既可以充分利用GIS工具软件对空间数据库的管理、分析功能,又可以利用其他可视化开发语言具有的高效、方便等优点,集二者之所长,不仅能大大提高应用系统的开发效率,而且使用可视化软件开发工具开发出来的应用程序具有更好的外观效果、更强大的数据库功能,而且可靠性好,易于移植,便于维护。尤其是使用COM技术利用GIS功能组件进行集成二次开发更能表现出这些优势,也日渐成为主流的二次开发方式[1][2]。

COM是指组件对象模型(Component Object Model),是以Win32动态链接库(DLL)或可执行文件(EXE)形式发布的Windows二进制标准,是一种允许对象之间跨进程、跨计算机进行交互的技术,并且使得这种交互容易得好像在本地计算机同一进程中进行一样[3]。COM定义了一种基础性接口,这种接口为所有以COM为基础的技术提供了公共函数。

1 组件式地理信息系统

1.1 组件式GIS技术及特点

1.1.1 组件式GIS技术

组件式地理信息系统(ComGIS)是指基于组件对象平台,以一组具有某种标准接口的、允许跨语言应用的组件的形式提供基本功能的GIS,它是面向对象技术和组件式软件在GIS软件开发中的应用[4][6]。其基本思想是把GIS的各大功能模块划分为几个控件,不同控件完成不同的功能。各个GIS控件之间,以及GIS控件与其它非GIS控件之间,可以方便地通过可视化的软件开发工具集成起来,形成最终的GIS应用。传统GIS软件与用户或者二次开发者之间的交互,一般通过菜单或工具条按钮、命令以及二次开发语言进行,ComGIS与用户和客户程序之间则主要通过属性、方法和事件交互。如图1所示。使用ComGIS开发的主导思想就是让GIS组件做GIS的工作,其他功能让其他的组件去完成,GIS组件与其他组件之间的联系由可视化的通用开发语言(如Visual C#或Delphi等)来建立[1][4][5]。

1 SuperMap Objects组件构成

1.1.2 组件式GIS特点

组件式GIS开发技术主要有以下几个方面的特点[1][5][6][7][8]:

  1. 无须专门的GIS开发语言,便于开发。ComGIS采用标准的组建技术,目前流行的开发语言(如VB、VC、CB与C#)等都支持这些规范。只要熟悉其中一门语言就可进行开发,有利于减轻开发者负担和降低开发成本。
  2. 无缝集成和扩展。ComGIS独立于开发语言,具有统一规范,主要完成GIS相关功能,ComGIS可以在程序设计阶段与其它功能的组件进行代码级别上的无缝集成和扩展。
  3. 小巧灵活,价格便宜。由于ComGIS灵活的可裁剪性,用户可以根据应用需求仅选择购买必要的组件进行开发,以获得更高的性价比。
  4. 强大的GIS功能,应用更加大众化。ComGIS开发模式能够使程序开发人员尽快地转移到GIS应用开发中来,同时也可使专业人员将自己的专业知识迅速转化为GIS组件,这样使得GIS的功能越来越强大,便于GIS软件推广和大众化。

由组件式GIS独有的优势,基于组件的开发已成为GIS应用系统建设的主流。

1.2 SuperMap Objects组件式GIS

组件式GIS的代表作应首推ArcEngine、MapX等。其中ArcEngine是由全球最大的GIS厂商ESRI推出的,MapX由著名的桌面GIS厂商MapInfo公司推出的,此外还有Intergraph公司的Geomedia。国内主要有超图公司的SuperMap GIS6R、泰坦公司的TITAN GIS等。本文将着重介绍SuperMap Objects及其开发流程[1][5][8]。

1.2.1 SuperMap Objects组件构成

SuperMap Objects是北京超图公司开发的基于ActiveX/COM技术大型、全组件式开发平台。它由一系列的ActiveX组件构成,包括核心组件(工作空间控件和地图控件)、工作空间管理组件、空间分析组件、布局组件、三维组件、拓扑组件、图例组件、属性表组件、辅助组件等多个组件库。它们是涵盖了数据输入、数据处理、空间数据存储与管理到空间分析、地图排版输出等各个环节的组件,提供从符号定制到地图可视化、从地图编辑采集到空间数据建库、从专题制图到布局输出、从数据转换到空间分析、从二维到三维等全面GIS功能。SuperMap Objects组件之间既互相联系,也保持相对独立性。其中核心组件库是基础的、必选的组件,其他组件全都是可选的。所支持的开发语言有Visual C++、Visual Basic、Visual FoxPro、Delphi、C++ Builder以及Power Builder等。可以将组件自由组合加载到系统之中,利用开发语言实现所需要的GIS功能[6][7][8]。

1.2.2 SuperMap Objects模型对象组织与管理

1)工作空间

工作空间(由工作空间控件创建)是用户在同一个工程中的工作环境,用于保存用户操作和处理的所有数据,包括数据源、地图、三维场景、布局和系统资源等。一个工程中只能有一个工作空间控件。

2)数据源和数据源集合

数据源是存储空间数据的场所,而工作空间并不直接存储空间数据,任何对空间数据的操作都需要先打开并获得数据源。多个数据源构成数据源集合。一个工作空间中可以打开多个数据源,各数据源通过别名或索引来标识。

3)数据集和数据集集合

数据集是空间数据的最小单位。一个数据源通常由多个不同类型的数据集组成。多个数据集构成数据集集合。数据集集合提供对数据集的管理功能,如创建、删除、重命名等操作。按照数据结构的不同,数据集分为矢量数据集和栅格数据集两类。这两种数据集可以共存于同一个数据源中,也可以同时显示在一个地图窗口中。

4)图层和图层集合

当数据集被加载到地图窗口中显示时就形成了图层,图层是数据集的可视化定义,是对数据集的引用或参考,图层可以来自不同数据源中的数据集。一般地,一个图层对应一个数据集,同一个数据集可以被多次添加到不同的地图窗口中显示。多个图层构成图层集合。

5)地图和地图集合

多个图层被赋予一定的风格而显示在一个SuperMap窗口中称为地图。地图是图层的集合,其中保存了图层不同的渲染效果,包括制作过的专题图、各个图层的显示比例尺等。

6)布局

一个或多个地图放置在布局窗口的适当位置,并辅以其它绘图要素如图名、图例、比例尺等就称为布局。布局是数字化空间数据和纸质地图之间的关系映射。SuperMap Objects的模型对象组织与管理结构图、工作空间及其组成部分之间的关系示意图分别如图2、3所示。

2 SuperMap Objects模型对象组织与管理结构图

   

3 工作空间及其组成部分之间的关系示意图   

4 SuperMap Objects组件引用

1.2.3 SuperMap Objects空间数据引擎

除了上述控件外,SuperMap Objects还集成了大型空间数据库引擎SDK+,用于访问不同来源的地理空间及属性数据。不同的引擎适用于不同规模的引用,实现了多源空间数据无缝集成技术。目前,SuperMap SDK+中提供的引擎类型包括三类:数据库引擎(SQL+、Oralcle+、Oralcle Spatial、Sybase、DB2、DM3、Kingbase)、文件引擎(SDB、SDB+)和Web引擎。此外,SuperMap Objects还支持直接访问其它GIS/CAD软件数据格式,如:MicroStation DGN、AutoCAD DXF和DWG和Arc/Info Coverage等。其中,SDB+引擎是SuperMap Objects自定义格式中唯一的文件型空间数据引擎。这种引擎采用传统的文件+数据库混合存储方式。SDB引擎的一个数据工程包括两个文件,扩展名为SDB的文件存储空间数据,采用OLE复合文档技术;扩展名为SDD的文件为属性数据库,采用Access的MDB数据库格式。由于SDB采用了复合文档技术,因此提供了在一个SDB工程中存储多个数据集的能力。这一点与Arc/Info Coverage、MapInfo Table文件等技术不同。SDB特点是速度快,操作灵活,主要面向中、小型系统和桌面应用,目的在于提高效率,弥补纯数据库引擎在这方面的不足[6][9][10]。

2 基于SuperMap Objects的地图浏览程序开发

2.1 引用SuperMap Objects组件

  1. 启动Visual Studio2010,创建一个C#窗体应用程序,并将窗体调整到合适尺寸。
  2. 在“工具箱”上单击鼠标右键,选择“选择项(I)”,会弹出“选择工具箱项”的对话框,在其中切换到“COM组件”选项卡,在列表框中选择“SuperMap控件”、“SuperWorkspace控件”等,添加成功后在工具箱中可以看到如图4的效果。之后就可以使用这些组件对象了。
  3. 将SuperWorkspace控件和SuperMap控件依次添加到窗体中。

2.2 调用SuperMap Objects组件接口

  1. 关联控件对象

控件使用中,凡是需要读取工作空间中数据的,都需要与工作空间建立连接。

  1. 将SuperMap、SuperWkspManager和SuperLayout控件对象与SuperWorkspace控件对象关联,接口如下;

object objHandle = this.axSuperWrkspc.ObjectHandle;//获得工作空间控件对象

this.axSuperMap.Connect(objHandle);

this.axSuperWkspManager.Connect(objHandle);

this.axSuperLayout.Connect(objHandle);

  1. 将SuperLegend控件对象与SuperMap控件对象关联,接口如下;

object objSMHandle = this.axSuperMap.CtlHandle; //获得地图控件对象

this.axSuperLegend.Connect(objSMHandle);

  1. 打开工作空间文件、数据源及包含的地图
  1. this.axSuperWrkspc.Open(strOpenPath, "");//打开工作空间

打开工作空间时,会自动打开对应的数据源,其中可以存在多个数据源,且允许是文件型或数据库型数据源,用户也可以单独去打开一个数据源。每个数据源中所有的数据集对象都由一个数据集集合对象来管理。

  1. this.axSuperMap.OpenMap(strMapName); //打开工作空间中的地图

当数据集被加载到地图窗口中显示时就形成了图层。多个图层赋予一定的风格叠加显示就形成了地图。地图对象是通过图层集合对象来管理和维护所有图层。地图文件是保存在工作空间中的,不是真正的单独存储。一个工作空间允许保存多个地图文件。

  1. 添加地图浏览、选择和量测等操作`

在工具条中添加12个按钮,然后给每个按钮添加单击事件,在其中调用组件开放给用户的接口。如放大按钮的接口如下:

this.axSuperMap.Action = seAction.scaZoomIn; //地图放大操作

2.3 运行结果

通过相应的窗体设计和代码编辑之后,编译、执行之后可得到如下图所示的结果。

5 一个简单的SuperMap Objects组件开发运行结果

3 结语

本文基于Visual Studio2010集成开发环境和SuperMap Objects 6组件平台,采用C#语言开发了一个简单的地图浏览、信息管理应用程序。本文的工作表明,利用SuperMap Objects组件式开发平台,可以极大地降低GIS系统的开发难度,减轻开发工作量,缩短开发周期,提高开发效率。

参考文献

  1. 刘光.地理信息系统二次开发实践教程-组件篇[M].北京:清华大学出版社,2003:1-15
  2. 柳锦宝等.组件式GIS开发技术与案例教程[M].北京:清华大学出版社,2010:1-8
  3. 徐爱萍,徐武平.组件技术与ComGIS[J].武汉:测绘信息与工程,2001,2:32-34,39
  4. 宋关福,钟耳顺.组件式地理信息系统研究与开发[J].北京:中国图象图形学报,1998,3(4):313-317
  5. 倪金生,李道亮,于雷易.3S技术二次开发实践教程[M].北京:电子工业出版社,2007:20-43
  6. 理解组件式开发平台SuperMap Objects[Z].北京:超图软件股份有限公司,2011
  7. SuperMap Objects开发教程中级篇[Z].北京:超图软件股份有限公司,2011
  8. SuperMap 图书编委会.GIS工程师训练营:SuperMap Objects组件式开发[M].北京:清华大学出版社,2011
  9. 贺振,贺俊平,张卫星.基于SuperMap Objects组件式GIS的开发与研究[J].商丘:商丘师范学院学报,2008,24(9),102-104
  10. 胡亚,李永树.基于组件式GIS-SuperMap Objects的地理信息系统二次开发[J].成都:四川测绘,2004,27(1),3-5

相关文章:

SuperMap Objects组件式GIS开发技术浅析

引言 随着GIS应用领域的扩展,GIS开发工作日显重要。一般地,从平台和模式上划分,GIS二次开发主要有三种实现方式:独立开发、单纯二次开发和集成二次开发。上述的GIS应用开发方式各有利弊,其中集成二次开发既可以充分利…...

极简开源Windows桌面定时提醒休息python程序

当我们长期在电脑面前坐太久后,会产生一系列健康风险,包括干眼症,颈椎,腰椎,肌肉僵硬等等。解决方案是在一定的时间间隔内我们需要have a break, 远眺可以缓解干眼症等眼部症状,站起来走动两步,…...

SpringBoot源码解析(五):准备应用环境

SpringBoot源码系列文章 SpringBoot源码解析(一):SpringApplication构造方法 SpringBoot源码解析(二):引导上下文DefaultBootstrapContext SpringBoot源码解析(三):启动开始阶段 SpringBoot源码解析(四):解析应用参数args Sp…...

JAVA笔记 | 策略模式+枚举Enum简单实现策略模式(可直接套用)

本篇为更为简单的策略模式应用,使用枚举来进行策略分配 上一篇(链接如下)更像是策略工厂模式来分配策略 JAVA笔记 | 实际上用到的策略模式(可直接套用)-CSDN博客 先创建策略相关类 //策略类 public interface PetStrategy {/*** 执行动作 - 跑RUN*/String run(Str…...

SpringBoot集成 Jasypt 实现数据源连接信息进行加密

SpringBoot集成 Jasypt 实现数据源连接信息进行加密 在实际项目中,敏感信息(如数据库连接的 URL、用户名、密码等)直接暴露在配置文件中可能导致安全隐患。为了解决这一问题,可以使用 Jasypt 来加密敏感信息,并在运行…...

大数据新视界 -- Hive 数据桶原理:均匀分布数据的智慧(上)(9/ 30)

💖💖💖亲爱的朋友们,热烈欢迎你们来到 青云交的博客!能与你们在此邂逅,我满心欢喜,深感无比荣幸。在这个瞬息万变的时代,我们每个人都在苦苦追寻一处能让心灵安然栖息的港湾。而 我的…...

优化Docker镜像:提升部署效率与降低资源消耗

目录 1. 最小化镜像层 2. 使用轻量级基础镜像 3. 多阶段构建 4. 清理不必要的文件和依赖 5. 使用.dockerignore文件 6. 压缩和优化文件系统 7. 外部化配置和数据 8. 限制容器资源 9. 定期清理未使用的镜像和容器 结论 在云计算和微服务架构的浪潮中,Docke…...

strupr(arr);模拟实现(c基础)

hi , I am 36 适合对象c语言初学者 strupr(arr);函数是把arr数组变为大写字母&#xff0c;并返回arr 介绍一下strupr(arr)&#xff1b;(c基础&#xff09;-CSDN博客 现在进行My__strupr(arr);模拟实现 #include<stdio.h>//My__strupr(arr); //返回值为arr(地址),于是…...

skywalking es查询整理

索引介绍 sw_records-all 这个索引用于存储所有的采样记录&#xff0c;包括但不限于慢SQL查询、Agent分析得到的数据等。这些记录数据包括Traces、Logs、TopN采样语句和告警信息。它们被用于性能分析和故障排查&#xff0c;帮助开发者和运维团队理解服务的行为和性能特点。 …...

AI时代的软件工程:迎接LLM-DevOps的新纪元

在科技日新月异的今天&#xff0c;GPT的问世无疑为各行各业带来了一场深刻的变革&#xff0c;而软件工程领域更是首当其冲&#xff0c;正式迈入了软件工程3.0的新纪元。2024年&#xff0c;作为软件工程3.0的元年&#xff0c;伴随着软件工程3.0宣言的震撼发布&#xff0c;一个全…...

【机器学习】——卷积与循环的交响曲:神经网络模型在现代科技中的协奏

&#x1f3bc;个人主页&#xff1a;【Y小夜】 &#x1f60e;作者简介&#xff1a;一位双非学校的大二学生&#xff0c;编程爱好者&#xff0c; 专注于基础和实战分享&#xff0c;欢迎私信咨询&#xff01; &#x1f386;入门专栏&#xff1a;&#x1f387;【MySQL&#xff0…...

详解Servlet的使用

目录 Servlet 定义 动态页面 vs 静态页面 主要功能 Servlet的使用 创建Maven项目 引入依赖 创建目录 编写代码 打war包 部署程序 验证程序 Smart Tomcat 安装Smart Tomcat 配置Smart Tomcat插件 启动Tomcat 访问页面 路径对应关系 Servlet运行原理 Tomcat的…...

使用Java代码操作Kafka(五):Kafka消费 offset API,包含指定 Offset 消费以及指定时间消费

文章目录 1、指定 Offset 消费2、指定时间消费 1、指定 Offset 消费 auto.offset.reset earliest | latest | none 默认是 latest &#xff08;1&#xff09;earliest&#xff1a;自动将偏移量重置为最早的偏移量&#xff0c;–from-beginning &#xff08;2&#xff09;lates…...

MAC 怎么终端怎么退出和进入Anaconda环境

mac安装完anaconda 后&#xff0c;命令行窗口默认使用conda的&#xff0c;取消默认&#xff0c;用以下一行代码在命令行运行即可&#xff0c;重启终端&#xff1a; conda config --set auto_activate_base false # 将false改为true设置默认环境为conda进入conda环境&#xff…...

如何在 .gitignore 中仅保留特定文件:以忽略文件夹中的所有文件为例

在日常的开发工作中&#xff0c;使用 Git 来管理项目是不可或缺的一部分。项目中的某些文件夹可能包含大量的临时文件、生成文件或不需要版本控制的文件。在这种情况下&#xff0c;我们通常会使用 .gitignore 文件来忽略这些文件夹。然而&#xff0c;有时我们可能希望在忽略整个…...

USRP:B205mini-i

USRP B205mini-i B205mini-i都是采用工业级的FPGA芯片(-I表示industrial-grade)&#xff0c;所以价格贵。 这个工业级会让工作温度从原来 0 – 45 C 变为 -40 – 75 C. 温度的扩宽&#xff0c;会让工作的稳定性变好。但是前提是你需要配合NI的外壳才行&#xff0c;你如果只买一…...

Oracle SQL优化②——访问路径

前言 访问路径指的就是通过哪种扫描方式获取数据&#xff0c;比如全表扫描、索引扫描或者直接通过ROWID获取数据。想要完成SQL优化&#xff0c;就必须深入理解各种访问路径。本文章详细介绍常见的访问路径。 一.常见访问路径 1.TABLE ACCESS FULL 表示全表扫描&#xff0c;…...

k8s1.30.0高可用集群部署

负载均衡 nginx负载均衡 两台nginx负载均衡 vim /etc/nginx/nginx.conf stream {upstream kube-apiserver {server 192.168.0.11:6443 max_fails3 fail_timeout30s;#server 192.168.0.12:6443 max_fails3 fail_timeout30s;#server 192.168.0.13:6443 max_fails3…...

Jenkins的环境部署

day22 回顾 Jenkins 简介 官网Jenkins Jenkins Build great things at any scale The leading open source automation server, Jenkins provides hundreds of plugins to support building, deploying and automating any project. 用来构建一切 其实就是用Java写的一个项目…...

Android开发教程案例源码分享-匹配动画多个头像飘动效果

Android开发教程案例源码分享-匹配动画多个头像飘动效果 匹配往往出现多个头像飘动&#xff0c;吸引人点击&#xff0c;有时出现的位置还不固定 一、思路&#xff1a; 用MotionLayout 二、效果图&#xff1a; 看视频更直观点&#xff1a; Android开发教程案例源码分享-匹配…...

微信分账系统供应链分润微信支付 (亲测源码)

搭建环境&#xff1a;nginxphp7.2mysql5.7 1.上传源码到网站根目录并解压 2.导入数据库文件到数据库 3.修改数据库链接文件/.env 4.设置运行目录为/public 5.伪静态设置成tp 6.后台地址&#xff1a;域名/zh9025.php 源码下载&#xff1a;https://download.csdn.net/down…...

C#里怎么样使用BinaryReader和BinaryWriter类?

C#里怎么样使用BinaryReader和BinaryWriter类? 二进制读取,有时候就比较有用。 比如在数据序列化到文件里,再从文件里读取出来。因为写入文件的类型有很多种,比如int/bool/long/byte/bytes等等。 又比如在串口通讯,或者网络通讯里,也需要把数据类型序列化到缓冲区,然后…...

k8s1.31版本最新版本集群使用容器镜像仓库Harbor

虚拟机 rocky9.4 linux master node01 node02 已部署k8s集群版本 1.31 方法 一 使用容器部署harbor (1) wget https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo -O /etc/yum.repos.d/docker-ce.repo yum -y install docker-ce systemctl enable docker…...

【大数据学习 | Spark-Core】Spark提交及运行流程

spark的集群运行结构 我们要选择第一种使用方式 命令组成结构 spark-submit [选项] jar包 参数 standalone集群能够使用的选项。 --master MASTER_URL #集群地址 --class class_name #jar包中的类 --executor-memory MEM #executor的内存 --executor-cores NUM # executor的…...

Sickos1.1 详细靶机思路 实操笔记

Sickos1.1 详细靶机思路 实操笔记 免责声明 本博客提供的所有信息仅供学习和研究目的&#xff0c;旨在提高读者的网络安全意识和技术能力。请在合法合规的前提下使用本文中提供的任何技术、方法或工具。如果您选择使用本博客中的任何信息进行非法活动&#xff0c;您将独自承担…...

Python 获取微博用户信息及作品(完整版)

在当今的社交媒体时代&#xff0c;微博作为一个热门的社交平台&#xff0c;蕴含着海量的用户信息和丰富多样的内容。今天&#xff0c;我将带大家深入了解一段 Python 代码&#xff0c;它能够帮助我们获取微博用户的基本信息以及下载其微博中的相关素材&#xff0c;比如图片等。…...

使用element-plus el-table中使用el-image层级冲突table表格会覆盖预览的图片等问题

在日常开发项目中 使用element-plus 中表格中使用 el-image的点击图片出现图片预览 会出现以下问题 表格一行会覆盖预览的图片 鼠标滑过也会显示表格 el-image 的预览层级和表格的层级冲突导致的。 解决方法&#xff1a;有两种一种是直接使用样式穿透 第二种推荐方法 使用官网推…...

leetcode_25_k个一组翻转链表

力扣&#xff1a;k个一组翻转链表 链接:https://leetcode.cn/problems/reverse-nodes-in-k-group/ 给你链表的头节点 head &#xff0c;每 k 个节点一组进行翻转&#xff0c;请你返回修改后的链表。 k 是一个正整数&#xff0c;它的值小于或等于链表的长度。如果节点总数不是 k…...

Python Selenium:Web自动化测试与爬虫开发

Python Selenium&#xff1a;Web自动化测试与爬虫开发 Python Selenium&#xff1a;Web自动化测试与爬虫开发安装Selenium设置WebDriver基础示例页面元素交互处理JavaScript和Cookies浏览器控制屏幕截图Headless Mode结束会话错误处理与调试 ***本文由AI辅助生成*** Python Se…...

C语言菜鸟入门·关键字·int的用法

目录 1. int关键字 1.1 取值范围 1.2 符号类型 1.3 运算 1.3.1 加法运算() 1.3.2 减法运算(-) 1.3.3 乘法运算(*) 1.3.4 除法运算(/) 1.3.5 取余运算(%) 1.3.6 自增()与自减(--) 1.3.7 位运算 2. 更多关键字 1. int关键字 int 是一个关键字&#xff0…...

Java语言编程,通过阿里云mongo数据库监控实现数据库的连接池优化

一、背景 线上程序连接mongos超时&#xff0c;mongo监控显示连接数已使用100%。 java程序报错信息&#xff1a; org.mongodb.driver.connection: Closed connection [connectionId{localValue:1480}] to 192.168.10.16:3717 because there was a socket exception raised by…...

论文阅读--Evidence for the utility of quantum computing before fault tolerance

量子计算有望在某些问题上提供比传统计算更快的速度。然而&#xff0c;实现其全部潜力的最大障碍是这些系统固有的噪声。这一挑战被广泛接受的解决方案是实现容错量子电路&#xff0c;而这超出了当前处理器的能力范围。我们在此报告了在嘈杂的127 量子比特处理器上进行的实验&a…...

Maven的安装——给Idea配置Maven

一、什么是Maven? Maven是一个开源的项目管理工具&#xff0c;它主要用于Java项目的构建、依赖管理和项目生命周期管理。 二、准备环境 maven安装之前&#xff0c;我们要先安装jdk&#xff0c;确保你已经安装了jdk环境。可以通过【win】【r】打开任务管理器&#xff0c;输入…...

【虚拟机】VMWare的CentOS虚拟机断电或强制关机出现问题

VMware 虚拟机因为笔记本突然断电故障了&#xff0c;开机提示“Entering emergency mode. Exit the shell to continue.”&#xff0c;如下图所示&#xff1a; 解决方法&#xff1a;输入命令&#xff1a; xfs_repair -v -L /dev/dm-0 注&#xff1a;报 no such file or direct…...

如何在WPF中嵌入其它程序

在WPF中嵌入其它程序&#xff0c;这里提供两种方案 一、使用WindowsFormHost 使用步骤如下 1、添加WindowsFormsIntegration和System.Windows.Forms引用 2、在界面上放置WindowsFormHost和System.Windows.Forms.Panel 1 <Grid> 2 <WindowsFormsHost> 3…...

集合Queue、Deque、LinkedList、ArrayDeque、PriorityQueue详解

1、 Queue与Deque的区别 在研究java集合源码的时候&#xff0c;发现了一个很少用但是很有趣的点&#xff1a;Queue以及Deque&#xff1b; 平常在写leetcode经常用LinkedList向上转型Deque作为栈或者队列使用&#xff0c;但是一直都不知道Queue的作用&#xff0c;于是就直接官方…...

实战 | C#中使用YoloV8和OpenCvSharp实现目标检测 (步骤 + 源码)

导 读 本文主要介绍在C#中使用YoloV8实现目标检测,并给详细步骤和代码。 详细步骤 【1】环境和依赖项。 需先安装VS2022最新版,.NetFramework8.0,然后新建项目,nuget安装 YoloSharp,YoloSharp介绍: https://github.com/dme-compunet/YoloSharp 最新版6.0.1,本文…...

OpenCV基本图像处理操作(六)——直方图与模版匹配

直方图 cv2.calcHist(images,channels,mask,histSize,ranges) images: 原图像图像格式为 uint8 或 float32。当传入函数时应 用中括号 [] 括来例如[img]channels: 同样用中括号括来它会告函数我们统幅图 像的直方图。如果入图像是灰度图它的值就是 [0]如果是彩色图像 的传入的…...

Hive离线数仓结构分析

Hive离线数仓结构 首先&#xff0c;在数据源部分&#xff0c;包括源业务库、用户日志、爬虫数据和系统日志&#xff0c;这些都是数据的源头。这些数据通过Sqoop、DataX或 Flume 工具进行提取和导入操作。这些工具负责将不同来源的数据传输到基于 Hive 的离线数据仓库中。 在离线…...

《macOS 开发环境配置与应用开发》

一、引言 macOS 作为一款强大而流行的操作系统&#xff0c;为开发者提供了丰富的开发机会和优秀的开发环境。无论是开发原生的 macOS 应用&#xff0c;还是进行跨平台开发&#xff0c;了解和掌握 macOS 开发环境的配置以及应用开发的方法至关重要。本文将详细介绍 macOS 开发环…...

DataGear 5.2.0 发布,数据可视化分析平台

DataGear 企业版 1.3.0 已发布&#xff0c;欢迎体验&#xff01; http://datagear.tech/pro/ DataGear 5.2.0 发布&#xff0c;图表插件支持定义依赖库、严重 BUG 修复、功能改进、安全增强&#xff0c;具体更新内容如下&#xff1a; 重构&#xff1a;各模块管理功能访问路径…...

Knife4j快速入门

1 概述 Knife4j是一个用于生成和展示API文档的工具&#xff0c;同时它还提供了在线调试的功能&#xff0c;下图是其工作界面。 了解&#xff1a; Knife4j有多个版本&#xff0c;最新版的Knife4j基于开源项目springdoc-openapi&#xff0c;这个开源项目的核心功能就是根据Sprin…...

pcap_set_buffer_size()函数

功能简介 pcap_set_buffer_size()函数主要用于设置数据包捕获的内核缓冲区大小。这个缓冲区是操作系统内核用于临时存储捕获到的数据包的区域。通过调整缓冲区大小&#xff0c;可以在一定程度上优化数据包捕获的性能&#xff0c;特别是在高流量网络环境或者需要长时间捕获数据包…...

Ubuntu24.04——软件包系统已损坏

如果你在使用 Ubuntu 时遇到“软件包系统已损坏”的问题&#xff0c;可以尝试以下步骤来修复它&#xff1a; 更新软件包列表&#xff1a; 打开终端&#xff0c;运行以下命令以更新软件包列表&#xff1a; sudo apt update修复损坏的软件包&#xff1a; 运行以下命令来修复损坏的…...

项目实战:Vue3开发一个购物车

这段HTML代码实现了一个简单的购物车实战小项目的前端页面&#xff0c;结合了Vue.js框架来实现数据响应式和交互逻辑。页面展示了购物车中的商品项&#xff0c;每个商品项有增减数量的按钮&#xff0c;并且能显示商品总数以及目前固定为0元的商品总价和总价计算。 【运用响应式…...

OpenOCD之J-Link下载

1.下载USB Dirver Tool.exe&#xff0c;选择J-Link dirver&#xff0c;替换成WinUSB驱动。&#xff08;⭐USB Dirver Tool工具可将J-Link从WinUSB驱动恢复为默认驱动⭐&#xff09; 下载方式 ①官方网址&#xff1a;https://visualgdb.com/UsbDriverTool/ ②笔者的CSDN链接&…...

C++中定义类型名的方法

什么是 C 中的类型别名和 using 声明&#xff1f; 类型别名与using都是为了提高代码的可读性。 有两种方法可以定义类型别名 一种是使用关键字typedef起别名使用别名声明来定义类型的别名&#xff0c;即使用using. typedef 关键字typedef作为声明语句中的基本数据类型的一…...

241124学习日志——[CSDIY] [ByteDance] 后端训练营 [14]

CSDIY&#xff1a;这是一个非科班学生的努力之路&#xff0c;从今天开始这个系列会长期更新&#xff0c;&#xff08;最好做到日更&#xff09;&#xff0c;我会慢慢把自己目前对CS的努力逐一上传&#xff0c;帮助那些和我一样有着梦想的玩家取得胜利&#xff01;&#xff01;&…...

丹摩|丹摩智算平台深度评测

1. 丹摩智算平台介绍 随着人工智能和大数据技术的快速发展&#xff0c;越来越多的智能计算平台涌现&#xff0c;为科研工作者和开发者提供高性能计算资源。丹摩智算平台作为其中的一员&#xff0c;定位于智能计算服务的提供者&#xff0c;支持从数据处理到模型训练的全流程操作…...

VSCode 快捷键

箭头函数 安装VSCODE插件用于在编辑器中生成ES6语法的JavaScript的代码段&#xff08;支持JavaScript和Typescript&#xff09;。 安装成功后输入an回车就可以了 (params) > {} 1、显示快捷键列表 快捷键&#xff1a;⌘ K S 可以通过上述按键显示vscode的快捷键列表&am…...