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

基于JavaAPIforKml实现Kml 2.2版本的全量解析实践-以两步路网站为例

目录

前言

一、关于两步路网站

1、相关功能

2、数据结构介绍

二、JAK的集成与实现

1、JAK类图简介

2、解析最外层数据

3、解析扩展元数据和样式

4、递归循环解析Feature

5、解析具体的数据

三、结论


前言

        随着地理信息技术的快速发展,地理空间数据的共享和可视化已成为现代信息技术的重要组成部分。KML(Keyhole Markup Language)作为一种基于XML的标记语言,因其简单易用、结构清晰以及与Google Earth等地理信息平台的无缝集成,已成为地理空间数据交换和展示的标准格式之一。KML 2.2版本作为其最新规范,不仅保留了早期版本的核心功能,还引入了更多复杂地理数据的表达能力,如三维模型、时间序列、网络链接等,为地理信息的多样化展示提供了强有力的支持。然而,KML文件的复杂性也给数据解析带来了挑战。一个典型的KML文件可能包含嵌套的地理对象、样式定义、扩展字段以及动态数据链接,这些内容的解析需要对KML规范有深入的理解,并结合高效的解析工具。Java API for KML(JAK)作为一款开源的KML解析和生成工具,提供了对KML 2.2版本的全面支持,能够自动解析KML文件的结构,提取地理数据,并将其转换为Java对象,从而简化了KML数据的处理流程。

        本文以“两步路”网站为例,探讨基于Java API for KML实现KML 2.2版本全量解析的实践方法。两步路网站作为一个专注于户外路线分享的平台,用户上传的路线数据通常以KML格式存储,这些数据包含了丰富的地理信息,如路径点、轨迹、地标、样式等。通过解析这些KML文件,不仅可以实现路线数据的可视化展示,还能进一步挖掘数据中的潜在价值,为用户提供更多个性化的服务。在实践中,我们首先介绍了KML 2.2版本的核心特性和Java API for KML的基本功能,然后详细阐述了如何利用JAK实现KML文件的全量解析。通过代码示例和实际案例,展示了如何提取KML文件中的地理对象、样式信息以及扩展字段,并将其转换为Java对象进行后续处理。此外,我们还探讨了解析过程中可能遇到的常见问题及其解决方案,如嵌套结构的处理、动态数据的解析以及性能优化等。

        本文的目标是为地理信息开发者提供一个基于Java API for KML的完整解析方案,帮助大家更高效地处理KML 2.2版本的复杂数据。通过结合两步路网站的实际应用场景,我们不仅验证了JAK在解析KML文件方面的有效性和灵活性,还展示了其在实际项目中的应用潜力。希望本文的实践经验和方法能够为相关领域的开发者提供参考和借鉴,推动KML技术在地理信息领域的进一步应用和发展。

一、关于两步路网站

        深圳市两步路信息技术有限公司是一家专注于位置定位服务(LBS)及其周边应用的科技企业,其打造的"两步路"平台是全国领先的专业户外平台,旗下产品有两步路户外助手APP两步路户外网。多年来,两步路始终以“探索新世界,安全户外行”的理念服务广大户外爱好者,曾举办、协办的大型活动有:第三届中国百色山地户外挑战赛、首届全国攀岩精英赛、全能五仕挑战赛、为爱健行徒步大会、北回归线上的足迹、红牛24小时越野系列赛等......

        两步路户外网是一个户外资源共享和社区互动网站。在这里,您可以参加精彩户外活动;搜索海量户外轨迹路线;购买精选户外专业装备;加入热门户外互动社区,组建周边户外圈子。两步路户外网是您户外出行贴心、专业的好伙伴。

        传送门:两步路官网。 感兴趣的大家可以到系统上进行体验。

1、相关功能

        网站提供以下的功能,

  • 行前

  •  搜索线路搜索轨迹线路,下载离线地图,为出行作规划导航。

  • 约伴出行: 寻找线路活动,你也可以自己发布活动约伴出行;

    购买装备在户外商城购置专业实惠的户外装备和周全贴心的户外保险;

  • 行中

  • 标注轨迹记录出行线路轨迹,用文字、语音、图片、视频标注轨迹点;

    组队定位若组队出行,有网络的情况下,队员之间可通过网络进行位置共享及互动,无网络的情况下,也可通过行影手麦组队,实现即时语音沟通和GPS定位;

    安全救援如遭遇突发情况,可触发紧急呼救,召附近集户外救援队伍;

  • 行后

  • 总结点评您可以点评此次活动质量,点评户外装备性能;

    轨迹备份整理出行期间所有的轨迹,整理备份,上传至云端;

    社区分享制作攻略游记,发表心得体会,在社区中与驴友互动分享;

        以上功能列表来源于官方网站,个人觉得这个网站做的非常不错,满足了我们爬山运动的需求,同时带有较强的社交属性。其中包含的轨迹信息非常值得研究。我们可以切换城市后,查看家或者工作地点附近的轨迹信息,界面如下:

        在这里可以看到很详细的该条路线的所有信息。 如果感兴趣的大家可以在网站上注册成为会员,然后就可以根据需要将这条行动轨迹进行下载到本地进行分享,同时可以对应的位置的定位。

2、数据结构介绍

        这里以长沙市岳麓山的某一条行动路线为例,使用注册好账号登录到系统中,然后下载KML格式的数据,在本地的文件信息格式如下:

        通过右边的XML层次结构可以看到,这份KML数据包含的节点主要包含name、description、author,以及 ExtendedData、n个style样式对象和n个 Folder对象。在Folder对象就中包含了详细的位置和时序信息。

二、JAK的集成与实现

        在了解了这个KML文件的相关结构之后,我们就可以使用JAK组件来进行数据的解析。本节将从JAK的相关类、JAK的实际处理以及JAK的解析成果出发,详细介绍如何使用JAK来进行相应数据的解析。

1、JAK类图简介

        首先依然来介绍一下JAK的相关类,在之前的博客中我们也曾经对JAK组件进行了简单的介绍。纯Java实现Google地图的KMZ和KML文件的解析。原来的KML数据比较简单,因此没有深入的介绍。由于本文涉及完整解析,因此有必要对JAK的相关类进行简单介绍,让大家学习起来更加轻松。首先来看一下类图:

        通过类图可以看到,其实解析的组件就是解析XML,然后去转换成对应的JavaBean的。这是基本的原理介绍。为了简单示例,这里仅介绍有所涉及的主要类,其它的一些辅助类或者父类不在此进行详细描述。主要用的是一个Document类、Feature类、Kml类、ExtendedData类、StyleSelector类和Geometry类。在后续的解析中还有一个很重要的Placemark类。在这份轨迹数据中,其中有大量的重复子类进行展示,因此要求我们对这些子类信息非常熟悉,在繁杂的数据挖掘和展示中不会出错。

2、解析最外层数据

        在了解了相关后台的类之后,我们来看一下实际如何解析这些数据。根据KML文档的结构,首先我们可以解析最外层的元数据信息,代码如下:

// 解析 KML 文件
Kml kml = Kml.unmarshal(kmlFile);
Feature feature = kml.getFeature();
System.out.println("step1、解析基本信息");
System.out.println("获取基本信息 start......");
System.out.println(feature.getDescription());
System.out.println(feature.getName());
System.out.println(feature.getSnippetd());
System.out.println("获取基本信息 end ......");

        程序运行后获取的信息如下:

step1、解析基本信息
获取基本信息 start......
岳麓山“爱心线”徒步
通过“两步路”生成,http://www.2bulu.com
获取基本信息 end ......

3、解析扩展元数据和样式

        解析扩展元数据和样式信息的关键代码如下:

System.out.println("step2、解析扩展信息 start......");
ExtendedData extendedData = feature.getExtendedData();List<Data> dataList = extendedData.getData();
for (Data data : dataList) {System.out.println(data.getName() + "\t" + data.getValue());
}
System.out.println("step2、解析扩展信息 end......");
List<SchemaData> schemaDataList = extendedData.getSchemaData();
for(SchemaData data : schemaDataList) {System.out.println(data.getTargetId() + "\t" + data.getSchemaUrl());
}
System.out.println("**************************************");List<StyleSelector> styleSelectorList = feature.getStyleSelector();
for(StyleSelector style : styleSelectorList) {System.out.println(style.getId() + style.getObjectSimpleExtension());
}

        程序运行后获得的信息如下:

   4、递归循环解析Feature

        递归循环解析Feature的关键代码如下:

 private static void printFeature(Feature feature) {if (feature != null) {// 获取第一层节点List<Feature> firstLayerNodes = getFirstLayerNodes(feature);// 遍历第一层节点并打印其值for (Feature node : firstLayerNodes) {System.out.println(node.getName()+ "\t start");printNodeValues(node);ExtendedData extendedData = node.getExtendedData();if(null != extendedData) {List<Data> dataList = extendedData.getData();for (Data data : dataList) {System.out.println(data.getName() + "\t" + data.getValue());}}printFeature(node);System.out.println(node.getName()+ "\t end");}}
}

        运行后的结果如下:

 5、解析具体的数据

         解析具体数据的代码如下:

private static void printNodeValues(Feature feature) {if (feature instanceof Placemark) {Placemark placemark = (Placemark) feature;System.out.println("Placemark Name: " + placemark.getName());System.out.println("Placemark Description: " + placemark.getDescription());Geometry geometry = placemark.getGeometry();TimePrimitive time = placemark.getTimePrimitive();//step1、解析时间if(time instanceof TimeStamp) {TimeStamp timeStamp = (TimeStamp)time;System.out.println("时间===>"+timeStamp.getWhen());}//step2、解析空间数据if (geometry instanceof Point) {Point point = (Point) geometry;System.out.println("海拔高度:" + point.getCoordinates().get(0).getAltitude());System.out.println("Point Coordinates: " + point.getCoordinates());} else if (geometry instanceof LineString) {LineString lineString = (LineString) geometry;System.out.println("LineString Coordinates: " + lineString.getCoordinates());} else if (geometry instanceof Polygon) {Polygon polygon = (Polygon) geometry;System.out.println("Polygon Coordinates: " + polygon.getOuterBoundaryIs().getLinearRing().getCoordinates());}// step3、解析track信息if(geometry instanceof Track) {Track track = (Track)geometry;List<String> coordList = track.getCoord();System.out.println(coordList);List<Data> dataList = track.getExtendedData().getData();for (Data data : dataList) {System.out.println(data.getName() + "\t" + data.getValue());}List<String> when =  track.getWhen();System.out.println(when);}} else if (feature instanceof Document) {Document document = (Document) feature;System.out.println("Document Name: " + document.getName());System.out.println("Document Description: " + document.getDescription());} else if (feature instanceof Folder) {Folder folder = (Folder) feature;System.out.println("Folder Name: " + folder.getName());System.out.println("Folder Description: " + folder.getDescription());}}

        这里不仅仅实现对空间数据的解析,同时实现了对时序中的时序的采集。这些数据在后期对于数据分析作用很大。程序运行后的效果如下:

        至此,完成的KML完整解析提取就实现完毕。 

三、结论

        以上就是本文的主要内容,本文以“两步路”网站为例,探讨基于Java API for KML实现KML 2.2版本全量解析的实践方法。本文的目标是为地理信息开发者提供一个基于Java API for KML的完整解析方案,帮助大家更高效地处理KML 2.2版本的复杂数据。通过结合两步路网站的实际应用场景,我们不仅验证了JAK在解析KML文件方面的有效性和灵活性,还展示了其在实际项目中的应用潜力。希望本文的实践经验和方法能够为相关领域的开发者提供参考和借鉴,推动KML技术在地理信息领域的进一步应用和发展。行文仓促,定有不足之处,欢迎各位朋友在评论区批评指正,不胜感激。

相关文章:

基于JavaAPIforKml实现Kml 2.2版本的全量解析实践-以两步路网站为例

目录 前言 一、关于两步路网站 1、相关功能 2、数据结构介绍 二、JAK的集成与实现 1、JAK类图简介 2、解析最外层数据 3、解析扩展元数据和样式 4、递归循环解析Feature 5、解析具体的数据 三、结论 前言 随着地理信息技术的快速发展&#xff0c;地理空间数据的共享…...

Ubuntu搭建Pytorch环境

Ubuntu搭建Pytorch环境 例如&#xff1a;第一章 Python 机器学习入门之pandas的使用 提示&#xff1a;写完文章后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 Ubuntu搭建Pytorch环境前言一、Anaconda二、Cuda1.安装流程2、环境变量&#…...

Kingbase逻辑备份与恢复标准化实施文档

背景 文章背景 本文结合实际运维经验&#xff0c;围绕 Kingbase 数据库在逻辑层面的备份与恢复方法进行系统性梳理&#xff0c;旨在为运维人员和数据库管理员提供一套清晰、高效、可落地的操作指引&#xff0c;提升数据库系统的可靠性与容灾能力。 第一部分 逻辑部分 1.1 全…...

二分查找5:852. 山脉数组的峰顶索引

链接&#xff1a;852. 山脉数组的峰顶索引 - 力扣&#xff08;LeetCode&#xff09; 题解&#xff1a; 事实证明&#xff0c;二分查找不局限于有序数组&#xff0c;非有序的数组也同样适用 二分查找主要思想在于二段性&#xff0c;即将数组分为两段。本体就可以将数组分为ar…...

解决opencv中文路径问题

见cv_imread函数和cv_imwrite函数 import cv2 import os import matplotlib.pyplot as plt from paddleocr import PaddleOCR, draw_ocr import numpy as np import urllib.parse # Add this import statementfrom txt_get import ImageTextExtractor# 初始化OCR&#xff0c;…...

Redis简介及其在Unity中的应用

一、什么是Redis? Redis(Remote Dictionary Server) 是一个开源的高性能 内存数据结构存储系统,常被用于 缓存、消息队列、排行榜、会话管理、实时分析 等。 ✅ Redis特点 基于内存,读写速度极快支持多种数据结构:String、List、Hash、Set、Sorted Set支持持久化,可将…...

Python实现批量插入PostgreSQL数据库的脚本分享

背景 上个月排查一个 Bug &#xff0c;需要采集一张 PostgreSQL 的大表&#xff0c;测试时需要造数据。Python 比 Java 方便多了&#xff0c;所以用 Python写了一个批量插入 PostgreSQL 表的简单脚本。本文分享这个脚本&#xff0c;很简单的&#xff0c;就是利用 psycopg2 的 …...

一键精准采集单网页,告别手动复制粘贴

浏览某个网页时&#xff0c;想抓取其内容&#xff0c;有没有工具能避免自己手动逐个复制粘贴&#xff1f; 推荐使用单网页一键采集功能&#xff0c;可自动提取网页内容并整理成结构化数据&#xff08;包括标题、正文、作者、日期、分类、标签、描述和原文网址链接等关键信息&am…...

vue入门:单文件组件数据双向绑定

文章目录 单文件组件介绍安装创建项目构建单文件组件 数据双向绑定Vue虚拟DOM的作用Vue中key属性的作用 单文件组件 介绍 单文件组件API使用文件扩展名为 .vue 的来构建组件ECMAScript 6 API 安装 Vue CLI 构建Vue -- 安装vue/cli npm install -g vue/cli-- 升级Vue CLI 包…...

接听电话,手机靠近耳朵后拿开,挂断电话,设备自动锁屏

目录 一、问题分析/需求分析 二、解决方案 一、问题分析/需求分析 先说一下大致流程: 首先是打电话过程会启动PROXIMITY(接近光传感器)用于监听手机是否到耳边,当手机到耳边时进行灭屏处理,灭屏过程中会调用到锁屏,所以最终会导致锁屏 详细流程分析: 首先根据日志看…...

代码随想录第15天:(二叉树)

一、二叉搜索树的最小绝对差&#xff08;Leetcode 530&#xff09; 思路1 &#xff1a;中序遍历将二叉树转化为有序数组&#xff0c;然后暴力求解。 class Solution:def __init__(self):# 初始化一个空的列表&#xff0c;用于保存树的节点值self.vec []def traversal(self, r…...

Matlab 汽车ABS的PID控制

1、内容简介 Matlab 199-汽车ABS的PID控制 可以交流、咨询、答疑 2、内容说明 略 摘 要 &#xff1a; 在 &#xff53;&#xff49;&#xff4d;&#xff55;&#xff4c;&#xff49;&#xff4e;&#xff4b; 环境下对汽车防抱死制动系统进行数学建模 &#xff0c; 采用基于…...

若依前后端分离版之使用Swagger

记录一下使用若依前后端分离版本中,怎么使用Swagger,以帮助初学者快速入手。 1.运行项目并查看Swagger 这里自己下载项目代码,在编译器中打开运行。这个过程跳过,我们进入系统后台界面。 在系统工具、系统接口中打开Swagger页面 点击test-controller和Schemas,可展开相…...

入侵检测snort功能概述

1. 数据包嗅探与日志记录 网络流量监控&#xff1a;实时捕获和分析网络数据包&#xff08;支持以太网、无线等&#xff09;。 日志记录&#xff1a;将数据包以二进制格式&#xff08;pcap&#xff09;或文本格式存储&#xff0c;供后续分析。 2. 协议分析与解码 深度协议解析…...

Notepad++安装Markdown实时预览插件

具体操作 打开notepad -> 插件 -> 插件管理 -> 可用 -> “Markdown Panel” -> 安装&#xff0c;安装完成后工具栏点击"Markdown Panel"按钮。 注意&#xff1a;由于网络等原因可能安装失败 导致工具栏没出现""Markdown Panel"按钮&am…...

Swift 实现 LeetCode 254:因子组合问题的递归解法全解析

文章目录 摘要描述示例&#xff1a; 题解答案&#xff08;Swift 实现&#xff09;题解代码分析核心思路&#xff1a;举个例子&#xff1a; 示例测试及结果时间复杂度分析空间复杂度分析现实应用场景结合总结 摘要 这篇文章我们来聊聊 LeetCode 第 254 题 ——「因子的组合」。…...

Matlab 传感器加速度数据计算位移

1、内容简介 Matlab 195-传感器加速度数据计算位移 可以交流、咨询、答疑 2、内容说明 略 3、仿真分析 略 4、参考论文 略...

Ubuntu虚拟机连不上网

桥接 虚拟机Ubuntu系统必须能连接到外网&#xff0c;不然不能更新软件安装包 配置虚拟机网络&#xff08;关机或者挂起状态&#xff09; 第一步1.重启虚拟机网络编辑器&#xff08;还原配置&#xff09; 第二步2.重启虚拟机网络适配器&#xff08;移除再添加&#xff09; 启…...

大模型论文:Language Models are Unsupervised Multitask Learners(GPT2)

大模型论文&#xff1a;Language Models are Unsupervised Multitask Learners(GPT2) 文章地址&#xff1a;https://storage.prod.researchhub.com/uploads/papers/2020/06/01/language-models.pdf 摘要 自然语言处理任务&#xff0c;例如问答、机器翻译、阅读理解和摘要&am…...

大模型本地部署系列(3) Ollama部署QwQ[阿里云通义千问]

大家好&#xff0c;我是AI研究者&#xff0c; 今天教大家部署 一个阿里云通义千问大模型。 QwQ大模型简介 QwQ是由阿里云通义千问&#xff08;Qwen&#xff09;团队推出的开源推理大模型&#xff0c;专注于提升AI在数学、编程和复杂逻辑推理方面的能力。其核心特点包括&#x…...

WPF ObjectDataProvider

在 WPF(Windows Presentation Foundation)中,ObjectDataProvider 是一个非常有用的类,用于将非 UI 数据对象(如业务逻辑类或服务类)与 XAML 绑定集成。它允许在 XAML 中直接调用方法、访问属性或实例化对象,而无需编写额外的代码。以下是关于 ObjectDataProvider 的详细…...

《Vue Router实战教程》12.不同的历史记录模式

欢迎观看《Vue Router 实战&#xff08;第4版&#xff09;》视频课程 不同的历史记录模式 在创建路由器实例时&#xff0c;history 配置允许我们在不同的历史模式中进行选择。 Hash 模式 hash 模式是用 createWebHashHistory() 创建的&#xff1a; import { createRouter,…...

Dify什么?Dify 零门槛打造专属 AI 应用

Dify 是一个专注于简化大语言模型&#xff08;LLM&#xff09;应用开发的开源平台&#xff0c;旨在帮助用户通过可视化界面和模块化工具快速构建、部署和管理 AI 驱动的应用程序。以下是其核心特点&#xff1a; 主要功能 可视化编排 提供直观的界面&#xff0c;无需深入编码即…...

【Javascript】在canvas中加载shader着色器的方法(开箱即用)

功能简介 可以播放&#xff0c;暂停shader代码&#xff0c;可以在js中配置shader参数&#xff08;下面案例列举了所有可用参数形式&#xff09;缺点 这个是固定机位&#xff0c;没有自定义顶点着色器部分的功能&#xff0c;有需要可直接在class中改&#xff0c;或者修改后调用…...

华为华三模拟器解决兼容问题Win11 24H2 现在使用ENSP的问题解决了

一、Win11 24H2 现在使用ENSP的问题解决了 这个Win11 的 24H2不能使用ENSP的问题已经困扰我们很久了&#xff0c;在之前的文章中&#xff0c;我们也有说明这个问题 之前ENSP肯定启动会报错40 当时还建议大家先不要更新到win11的24H2版本&#xff0c;现在终于迎来了更新&#…...

五、用例篇

Bug等级&#xff1a;崩溃、严重、一般、次要 bug的生命周期 面试高频考题&#xff1a;跟开发产生争执怎么办&#xff1f; (1)反思自己&#xff0c;是不是bug描述写的不清楚 (2)站在用户思考问题&#xff0c;反问开发人员&#xff1a;“如果你是用户&#xff0c;你能接受这样…...

Mysql中的数据类型和语句概述

Mysql中的数据类型 数值类 整数&#xff1a;int&#xff0c;四个字节构成 浮点型&#xff1a;float单精度浮点数&#xff0c;四个字节&#xff0c;double双精度浮点数&#xff0c;八个字节&#xff0c;decimal用于高精度计算&#xff0c;尤其是在金融领域。decimal&#xff…...

Vue3连接MQTT作为客户端

先下载依赖 npx --yes --registry https://registry.npmmirror.com npm install mqtt 在src的api创建 mes.js // 导入axios import axios from axios;// 定义一个变量,记录公共的前缀, baseURL const baseURL http://localhost:8080; const instance axios.create({ base…...

VLC快速制作rtsp流媒体服务器

1.安装vlc media player工具 2.打开后点击菜单 媒体->流 3.添加mp4视频&#xff0c;选择串流 4.选择 下一个 5.新目标选择 RTSP&#xff0c;点击添加按钮 6.端口和路径随便填写&#xff0c;如果推流失败就换个端口。一路操作下去 7.点击 流 按钮后&#xff0c;就可以看到下图…...

24FIC

一&#xff0c;赛前准备 检材密码&#xff1a;2024Fic杭州Powered~by~HL! 案情简介&#xff1a; 2024年4月&#xff0c;卢某报案至警方&#xff0c;声称自己疑似遭受了“杀猪盘”诈骗&#xff0c;大量钱财被骗走。卢某透露&#xff0c;在与某公司交流过程中结识了员工李某。李某…...

P3367 【模板】并查集

题目链接&#xff1a;点击进入 题目 思路 代码&#xff08;路径压缩&#xff09; #include <bits/stdc.h> using namespace std; const int maxn 1e6 10;int n,m,fa[maxn];int find(int x) {if(xfa[x]) return x;else return fa[x]find(fa[x]); }int unions(int x,…...

【leetcode hot 100 300】最长递增子序列

错误解法&#xff1a;在每次更新db[i]时&#xff0c;如果当前nums[i]>nums[i-1]就db[i-1]1&#xff0c;否则db[i-1] class Solution {public int lengthOfLIS(int[] nums) {int n nums.length;int[] db new int[n]; // db[i]表示到i的最长严格递增子序列的长度db[0] 1;f…...

jwt.io学习

jwt.io 是一个专门用于 JSON Web Token&#xff08;JWT&#xff09;相关操作和学习的网站&#xff0c;地址是&#xff1a;JSON Web Tokens - jwt.io具有以下主要功能&#xff1a; JWT 解码&#xff1a;能够将 JWT 令牌进行解码&#xff0c;展示出令牌中包含的各个部分&#xf…...

MySQL 优化方案大全

一、数据库设计优化 1. 表结构设计 合理选择字段类型&#xff1a; 使用最小满足需求的类型&#xff08;如TINYINT代替INT&#xff09;字符串类型优先VARCHAR&#xff0c;固定长度用CHAR 时间类型用TIMESTAMP&#xff08;4字节&#xff09;或DATETIME&#xff08;8字节&#xf…...

题目 2701: 蓝桥杯2022年第十三届决赛真题-取模(C/C++/Java组)

题目 2701: 蓝桥杯2022年第十三届决赛真题-取模&#xff08;C/C/Java组&#xff09; 时间限制: 3s 内存限制: 512MB 提交: 6633 解决: 1263 题目描述 给定 n, m &#xff0c;问是否存在两个不同的数 x, y 使得 1 ≤ x < y ≤ m 且 n mod x n mod y 。 输入格式 输入包含多…...

【LeetCode 题解】算法:36.有效的数独

一、问题剖析 在算法领域中&#xff0c;数独问题是一个经典且有趣的逻辑验证题目。本题的核心任务是判断一个给定的 9x9 数独是否有效。判断的依据是数独的基本规则&#xff1a;数字 1-9 在每一行、每一列以及每一个 3x3 的宫内都只能出现一次。同时&#xff0c;题目中明确指出…...

C++学习之MYSQL数据库

目录 1.mysql数据库介绍 2.mysql数据库安装 3.mysql数据库启动和登录 4.mysql数据库CURD 5.mysql数据库表CURD 6.mysql数据库数据CURD 7.mysql基础综合练习 8.mysql数据库总日期和时间函数 9.mysql中函数 10.PLSQL工具使用介绍 11.ORACLE实例别名和ORACLE客户端 12.…...

Node.js 开发的简单 Web 服务器代码

步骤 1&#xff1a;创建项目文件 新建名为 app.js 的文件&#xff0c;添加以下代码&#xff1a; // 1. 导入内置 http 模块 const http require(http);// 2. 创建服务器实例 const server http.createServer((req, res) > {// 设置响应头res.writeHead(200, { Content-T…...

Postgresql安装mysql_fdw并映射MySQL数据库

关于Postgresql映射Mysql数据库数据 领导&#xff1a;小汪啊&#xff0c;他们的数据库是不是能连接上了。 我&#xff1a;对啊&#xff0c;我已经读数据了。 领导&#xff1a;那改一下吧&#xff0c;直接把他们的数据映射过来&#xff0c;体现一下我们功能的多样性。 我&#…...

flutter 获取通话记录和通讯录

Dart SDK version is 3.7.01 dependencies:flutter:sdk: flutterpermission_handler: ^11.0.1 # 权限管理flutter_contacts: ^1.1.92call_log: ^5.0.5cupertino_icons: ^1.0.8dev_dependencies:flutter_test:sdk: flutterflutter_lints: ^5.0.0 2 contact_and_calls_page.da…...

AICon 2024年全球人工智能与大模型开发与应用大会(脱敏)PPT汇总(36份).zip

AICon 2024年全球人工智能与大模型开发与应用大会&#xff08;脱敏&#xff09;PPT汇总&#xff08;36份&#xff09;.zip 1、面向开放域的大模型智能体.pdf 2、企业一站式 AI 智能体构建平台演进实践.pdf 3、PPIO 模型平台出海实战&#xff0c;跨地域业务扩展中的技术优化之道…...

swift菜鸟教程6-10(运算符,条件,循环,字符串,字符)

一个朴实无华的目录 今日学习内容&#xff1a;1.Swift 运算符算术运算符比较运算符逻辑运算符位运算符赋值运算区间运算符其他运算符 2.Swift 条件语句3.Swift 循环4.Swift 字符串字符串属性 isEmpty字符串常量let 变量var字符串中插入值字符串连接字符串长度 String.count使用…...

【14】RUST高级特性

文章目录 不安全操作裸指针应用 不安全函数or方法extern调用外部函数调用C语言函数创建供C调用的接口 全局变量&#xff08;静态变量&#xff09;不安全的trait访问联合体中的字段 不安全操作 裸指针 需要程序员保证有效性 从引用创建 let mut num 5; let r1 &num as …...

Linux 系统中 `echo`、`cat`、`tail`、`grep` 四个常用命令介绍

以下是 Linux 系统中 echo、cat、tail、grep 四个常用命令的详细介绍&#xff0c;涵盖其功能、常用选项及实际示例&#xff1a; 1. echo - 输出文本 作用&#xff1a;将文本或变量的值输出到终端或文件。常用于脚本中的信息提示或日志记录。 常用选项&#xff1a; 选项说明-…...

Python 根据多个下标向列表中插入对应的值的巧妙方法:逆序插入

例如根据多个下标&#xff08;比如2, 5, 8&#xff09;向列表中插入对应的值&#xff0c;即&#xff1a; 在位置2插入一个值A&#xff0c;在位置5插入一个值B&#xff0c;在位置8插入一个值C&#xff0c; 而且每次插入都会改变列表长度&#xff0c;所以后续位置也会发生偏移。…...

“实时滚动”插件:一个简单的基于vue.js的无缝滚动

1、参考连接&#xff1a; 安装 | vue-seamless-scroll 2、使用步骤&#xff1a; 第一步&#xff1a;安装 yarn add vue-seamless-scroll 第二步&#xff1a;引入 import vueSeamlessScroll from vue-seamless-scroll/src 第三步&#xff1a;注册 components: { vueSeamless…...

【Vue3 + Element-Plus】TreeTransfer树形穿梭框组件

基于 Element Plus 实现高效树形穿梭框组件 组件概述 本组件实现了一个基于 Element Plus 的双树形结构穿梭框&#xff0c;支持以下核心功能&#xff1a; 树形结构数据展示节点多选与批量转移展开状态记忆双向数据同步节点禁用与过滤全选/全不选功能&#xff08;待完善&#…...

014_多线程

多线程 多线程创建线程方式一&#xff1a;继承Thread类方式二&#xff1a;实现Runable接口方式三&#xff1a;实现Callbale接口 Thread的常用方法线程安全线程同步方式一&#xff1a;同步代码块同步方法方式三&#xff1a;Lock锁 线性池创建线程池处理Runnable任务处理Callable…...

vue自定义颜色选择器

vue自定义颜色选择器 效果图&#xff1a; step0: 默认写法 调用系统自带的颜色选择器 <input type"color">step1:C:\Users\wangrusheng\PycharmProjects\untitled18\src\views\Home.vue <template><div class"container"><!-- 颜…...

(十五)安卓开发中不同类型的view之间继承关系详解

在安卓开发中&#xff0c;View 是所有 UI 组件的基类&#xff0c;不同类别的 View 通过继承关系扩展和特化功能&#xff0c;以满足多样化的界面需求。以下将详细讲解常见 View 类别的继承关系&#xff0c;并结合代码示例和使用场景进行说明。 1. View 继承关系: java.lang.Obj…...