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

基于Java的百度AOI数据解析与转换的实现方法

目录

前言

一、AOI数据结构简介

1、官网的实例接口

2、响应参数介绍

二、Java对AOI数据的解析

1、数据解析流程图

2、数据解析实现

3、AOI数据解析成果

三、总结


前言

        在当今信息化社会,地理信息数据在城市规划、交通管理、商业选址等领域扮演着越来越重要的角色。AOI(Area of Interest,兴趣面)数据作为地理信息数据的重要组成部分,能够提供区域状地理实体的详细边界信息,对于相关领域的研究和应用具有重要价值。百度地图作为地图服务提供商,其提供的AOI数据因其覆盖范围广、精度高、更新及时等特点,受到了众多企业和研究机构的青睐。然而,如何高效地解析和转换AOI数据,以便更好地满足不同应用场景的需求,成为了一个亟待解决的问题。基于Java的AOI数据解析与转换的实现方法,正是为了解决这一问题而提出的。

        Java作为一种成熟且广泛应用的编程语言,具有跨平台、面向对象、安全性高等特点,非常适合用于开发各种类型的应用程序。在地理信息数据处理领域,Java也有着广泛的应用,许多地理信息系统(GIS)软件和工具都是基于Java开发的。因此,利用Java来实现AOI数据的解析与转换,不仅能够充分发挥Java的优势,还能够方便地与现有的GIS系统进行集成和扩展。首先,基于Java的AOI数据解析与转换的实现方法需要对AOI数据的格式和结构有深入的了解。百度AOI数据通常以JSON格式提供,包含AOI的名称、类型、边界坐标等信息。其次,实现AOI数据的转换功能是该方法的核心部分。根据不同的应用场景需求,可能需要将AOI数据转换为其他格式,如GIS软件常用的Shapefile格式、KML、GeoJSON格式等,将转换后的数据为第三方服务平台提供数据输入。在Java中,可以使用一些开源的GIS库,如Geotools、JTS Topology Suite等,来实现AOI数据的转换。这些库提供了丰富的地理信息数据处理功能,可以方便地将AOI数据转换为所需的格式。此外,为了提高AOI数据解析与转换的效率和准确性,还可以采用一些优化策略。例如,可以对AOI数据进行预处理,去除重复或冗余的数据;在解析过程中,可以采用多线程技术来提高处理速度;在转换过程中,可以对数据进行适当的简化和优化,以减少数据量和提高转换效率。同时,还可以结合一些GIS分析工具和算法,对转换后的AOI数据进行进一步的分析和处理,以提取更有价值的信息。

        基于Java的AOI数据解析与转换的实现方法,不仅能够为用户提供一个高效、灵活、可靠的解决方案,还能够促进AOI数据在各个领域的应用和发展。通过该方法,用户可以更加方便地获取和转换AOI数据,从而更好地满足自身的需求,推动相关领域的研究和进步。未来,随着技术的不断发展和需求的不断变化,该方法也将不断完善和优化,为地理信息数据处理领域的发展做出更大的贡献。

一、AOI数据结构简介

        作为AOI数据的来源,本节将重点对AOI的数据结构进行深入的介绍。受文章当时的调用API接口的限制,文章介绍的数据以当时的百度API接口为准,如当前您参考的对应接口有所变化,请参考对应的API接口。为了让大家对地图厂商提供的AOI数据有一个简单的认识,这里以百度地图为例,将对百度地图中的AOI数据及其结构进行简单的讲解。

1、官网的实例接口

        首先我们打开地图的官网地址,在打开的地图检索栏中输入待查询的地方。首先我们以一个小区为例,如“璞丽景园”,点击查询按钮后,打开如下界面:

        在地图中我们可以很明显的看到,不仅在左边的检索结果展示窗口中列出了目标小区的地址信息:"湖南省长沙市岳麓区映日路与看云路111号", 于此同时,在地图中也会同步将小区的矢量范围进行展示,是一个常见的polygon面。请大家注意,这里的Polygon面就是本文的主角,AOI(兴趣面数据)。以上是以一个城市居民小区为例介绍了如何进行数据检索以及数据可视化。为了区分不同的数据类型,下面我们选取附近的“岳麓山国家重点风景名胜区”,输入关键字后,点击详细即可看到景区的基本信息以及AOI数据,

        与之前的城市小区信息一样,在界面中不仅展示出地点的信息,同时还在地图上展示了空间边界信息。到此,请注意,我们将实力功能和界面进行简要的介绍。

2、响应参数介绍

        在了解了地址信息如何查询之后,接下来结合API的响应接口,具体来看一下获取的详情接口的属性字段信息,为后续的数据解析和空间挖掘打下坚实的基础,因此本小节将从响应参数的介绍为切入点,逐一向大家解析。在地图的数据返回接口中,以下的接口是返回目标地址的包含AOI数据的响应信息。

        上面的给出的图谱展示的只是一个粗略的结构,真实的信息比上面给出的更多更丰富。大家可以在百度地图上体验相关查询接口,并查阅具体接口的响应参数。简单来讲,详情JSON 数据中,contentavocadoresult 是三个不同的属性,它们各自代表不同的信息:

content 属性

  • 代表内容信息:这个属性包含了与景点相关的各种详细内容信息。它可能包括景点的介绍、特色、历史背景、游客评价等。这些信息有助于用户了解景点的各个方面,为游客提供决策参考。例如,它可能会描述景点的自然风光、文化价值、游客体验等。

avocado 属性

  • 代表卡片信息:这个属性包含了与景点相关的卡片信息。卡片通常用于展示特定类型的内容或功能模块,如图片墙、电话号码、导航信息等。这些卡片可以为用户提供快速访问特定功能或信息的途径,增强用户体验。例如,它可能会包含一个图片墙卡片,展示景点的精美图片;或者一个电话卡片,提供景点的联系电话。

result 属性

  • 代表结果信息:这个属性包含了与请求结果相关的信息。它通常用于表示请求的处理结果,如授权信息、状态码等。这些信息对于开发者或系统来说很重要,因为它们可以用来判断请求是否成功,以及如何处理后续的逻辑。例如,它可能会包含一个授权令牌,表示用户有权限访问某些数据或功能。

        这三个属性在 JSON 数据中各自承担着不同的角色,共同构成了对景点信息的全面描述。使用notepad的json格式化查询器可以看到如下结构:

        返回的信息参数非常多,但是这里主要讲解空间信息,所以主要看ext/detail_info/guoke_geo/geo字段就是我们需要的AOI空间范围数据,如下图中红色框中的内容,是一串非常长的字符串。请记住这个属性,在后面的解析和转换中会继续用得到。

        以上就是对相关AOI的查询接口以及数据属性的详细介绍,下面我们使用Java语言对获取到的AOI数据进行解析和转换。 

二、Java对AOI数据的解析

        在了解了AOI的查询接口以及返回参数的属性信息之后,本节我们将使用JAVA语言对获取到的AOI数据进行解析。首先介绍数据解析的具体流程,然后介绍具体的解析实现,最后将解析得到的结果转换成GeoJSON,然后在Qgis软件中进行预览,验证我们的结果。

1、数据解析流程图

        为了实现对获取的AOI数据进行解析,首先将获取的面边界信息进行内存加载,然后调用转换逻辑,将坐标值进行拼接解析,然后解析得到的坐标。此时的坐标是墨卡托坐标,类似于12571261.302597,3250490.205730这种的值,然后需要调用墨卡托坐标转经纬度坐标方法将值进行转换,然后将得到的百度经纬度坐标转为WGS84坐标,此时就得到对应的WGS84坐标,然后根据转换的坐标值,调用GeoTools的polygon创建方法构建一个面,然后调用FeatureJSON来得到JSON构建对象,最后生成GeoJSON数据后,在Qgis等客户端工具中进行查看。

2、数据解析实现

        首先来分享一段解析得到的AOI矢量边界信息,如下:

        在进行正式的坐标解析时,需要去掉一些信息,这里我们将-1之前的字符进行过滤掉,后面的才是我们需要的空间矢量数据。

4|12566456.116665,3253264.180375;12566801.580670,3253687.136888|1-12566456.1166646,3253456.6396633,12566457.4438543,3253451.9993111,12566457.8641464,3253450.5485102

        最后我们调用公共的方法来实现墨卡托坐标转bd的经纬度坐标。其中解析的方法如下:

/**
* -解析Jeo数据
* @param mocator
*/
public static List<String> parseJeo(String mocator) {List<String> mocatorList = new ArrayList<String>();if (null == mocator)return null;/* 拆分数据 */String[] geos = mocator.split("\\|");int n = Integer.parseInt(geos[0]);String center = geos[1];String polylineMoca = geos[2]; // 墨卡托坐标String[] plm = polylineMoca.split("\\;");/* 获取墨卡托边界 */String geo = null;if (n == 4) {for (int i = 0; i < plm.length; i++) {String[] geoPaths = plm[i].split("\\-");if (geoPaths[0].equals("1")) {geo = geoPaths[1];}}}// 墨卡托坐标解析String[] geoPolyline = geo.split("\\,");for (int i = 0; i < geoPolyline.length; i += 2) {mocatorList.add(geoPolyline[i] + "#" + geoPolyline[i + 1]);}return mocatorList;
}

        墨卡托坐标转经纬度坐标的方法如下:

/**
* -墨卡托坐标转经纬度坐标
* @param x
* @param y
* @return
*/
public static Map<String, Double> convertMC2LL(Double x, Double y) {Double[] cF = null;x = Math.abs(x);y = Math.abs(y);for (int cE = 0; cE < MCBAND.length; cE++) {if (y >= MCBAND[cE]) {cF = MC2LL[cE];break;}}Map<String, Double> location = converter(x, y, cF);location.put("lng", location.get("x"));location.remove("x");location.put("lat", location.get("y"));location.remove("y");return location;
}

         最后,我们基于GeoTools将上面转换的经纬度坐标值转换成geometry并最终转换成GeoJSON数据,并可以在gis软件上进行展示和渲染。转换和生成GeoJSON的具体方法如下:

public static void main(String[] args) {String objId = "3cf5bd92df7340f1f7eafc6e"; String path = "E:/baidu_aio/" + objId + ".txt";try {System.out.println(path);String geoStr = new String(Files.readAllBytes(Paths.get(path)), "UTF-8");List<String> mocatorList = parseJeo(geoStr);StringBuilder sb = new StringBuilder(1024);// 获取GeometryFactory实例GeometryFactory geometryFactory = JTSFactoryFinder.getGeometryFactory(null);Coordinate[] coords = {};if(mocatorList != null && mocatorList.size() > 0) {coords = new Coordinate[mocatorList.size()];}for (int i = 0; i < mocatorList.size(); i++) {String[] coordinate = mocatorList.get(i).split("\\#");Map<String, Double> location = convertMC2LL(Double.parseDouble(coordinate[0]),Double.parseDouble(coordinate[1]));Double lng = location.get("lng");Double lat = location.get("lat");String coord = lng + "," + lat;sb.append(coord);if (i < mocatorList.size() - 1) {sb.append(";");}double[] tempBd284 = CoordinateTransformUtil.bd09towgs84(lng, lat);coords[i] = new Coordinate(tempBd284[0], tempBd284[1]);}// 使用坐标点创建线性环(LinearRing),这是多边形的第一个也是唯一一个环LinearRing shell = geometryFactory.createLinearRing(coords);Polygon polygon = geometryFactory.createPolygon(shell, null);// 创建SimpleFeatureTypeSimpleFeatureTypeBuilder builder = new SimpleFeatureTypeBuilder();builder.setName("PolygonFeature");builder.setCRS(DefaultGeographicCRS.WGS84);builder.add("geometry", Polygon.class);SimpleFeatureType featureType = builder.buildFeatureType();// 创建SimpleFeatureSimpleFeatureBuilder featureBuilder = new SimpleFeatureBuilder(featureType);//指定唯一的IDSimpleFeature feature = featureBuilder.buildFeature(null, new Object[]{polygon});// 创建FeatureJSON对象,用于将几何对象转换为GeoJSONFeatureJSON featureJSON = new FeatureJSON();// 将SimpleFeature对象转换为GeoJSON字符串StringWriter writer = new StringWriter();featureJSON.writeFeature(feature, writer);String geoJSON = writer.toString();System.out.println(geoJSON);} catch (IOException e) {e.printStackTrace();}
}

        这样我们就实现了对AOI数据进行解析,同时实现将墨卡托坐标转为经纬度坐标。同时调用GeoTools来生成polygon并生成了对应的GeoJSON数据。下面就可以来看一下成果,看一下GeoJSON加载的效果。 

3、AOI数据解析成果

        在经过以上的数据解析之后,在IDE的运行调试界面运行上面的程序,可以得到以下的GeoJSON数据,结果如下所示:

        然后在磁盘中新建一个geojson文件,将上图红框中的geojson数据复制到对应的geojson文件中,如下图所示,这样就实现了geojson数据的生成:

         最后将得到的geojson数据叠加到地图中,就可以看到其位置是否准确。

        可以看到,将geojson数据与底图进行融合后,成功的在遥感影像中进行了展示,统一空间位置贴合准确,位置没有偏移,说明转换结果良好,符合我们的预期。 

三、总结

        以上就是本文的主要内容,本文将重点介绍基于Java的百度AOI数据解析与转换的实现方法。基于Java的AOI数据解析与转换的实现方法,不仅能够为用户提供一个高效、灵活、可靠的解决方案,还能够促进AOI数据在各个领域的应用和发展。通过该方法,用户可以更加方便地获取和转换AOI数据,从而更好地满足自身的需求,推动相关领域的研究和进步。未来,随着技术的不断发展和需求的不断变化,该方法也将不断完善和优化,为地理信息数据处理领域的发展做出更大的贡献。行文仓促,难免有许多不足之处,如有不足,在此恳请各位专家博主在评论区或者私信指出,不胜感激。

相关文章:

基于Java的百度AOI数据解析与转换的实现方法

目录 前言 一、AOI数据结构简介 1、官网的实例接口 2、响应参数介绍 二、Java对AOI数据的解析 1、数据解析流程图 2、数据解析实现 3、AOI数据解析成果 三、总结 前言 在当今信息化社会&#xff0c;地理信息数据在城市规划、交通管理、商业选址等领域扮演着越来越重要的…...

细说STM32F407单片机窗口看门狗WWDG的原理及使用方法

目录 一、窗口看门狗的工作原理 1、递减计数器 2、窗口值和比较器 3、看门狗的启动 4、提前唤醒中断 二、窗口看门狗的HAL驱动程序 1、窗口看门狗初始化 2.窗口看门狗刷新 3.EWI中断及其处理 三、不开启EWI的WWDG示例 1、示例功能 2、项目设置 &#xff08;1&…...

【.net core】【sqlsugar】时间查询示例

1、时间包含查询示例 //model.TimeInterval为时间区间参数&#xff0c;参数格式为2024-01-01~2025-01-01 //query为当前查询的语句内容 //为当前查询语句增加创建时间模糊搜索查询条件 query query.Where(a > ((DateTime)a.F_CreatorTime).ToString("yyyy-MM-dd HH:m…...

基于Oracle与PyQt6的电子病历多模态大模型图形化查询系统编程构建

一、引言 1.1 研究背景阐述 在当今数字化时代,医疗行业正经历着深刻的变革,数字化转型的需求日益迫切。电子病历(EMR)作为医疗信息化的核心,其管理的高效性和数据利用的深度对于提升医疗服务质量、优化临床决策以及推动医学研究具有至关重要的意义。传统的电子病历管理系…...

STM32 HAL库函数入门指南:从原理到实践

1 STM32 HAL库概述 STM32 HAL(Hardware Abstraction Layer)库是ST公司专门为STM32系列微控制器开发的一套硬件抽象层函数库。它的核心设计理念是在应用层与硬件层之间建立一个抽象层&#xff0c;这个抽象层屏蔽了底层硬件的具体实现细节&#xff0c;为开发者提供了一套统一的、…...

Harmony面试模版

1. 自我介绍 看表达能力、沟通能力 面试记录&#xff1a; 2. 进一步挖掘 2.1. 现状 目前是在职还是离职&#xff0c;如果离职&#xff0c;从上一家公司离职的原因 2.2. 项目经验 如果自我介绍工作项目经验讲的不够清楚&#xff0c;可以根据简历上的信息再进一步了解 面试记…...

数据结构知识点

【1】栈&#xff08;stack&#xff09; C 标准库提供了 std::stack 模板类&#xff0c;用于实现栈的功能。std::stack 是基于其他容器&#xff08;如 std::vector、std::deque 或 std::list&#xff09;实现的适配器类。 std::stack 可以使用不同的底层容器来实现&#xff0c…...

RPC 简介

RPC&#xff08;Remote Procedure Call&#xff0c;远程过程调用&#xff09;是一种通过网络请求执行远程服务器上的代码的技术&#xff0c;使得开发者可以调用远程系统中的函数&#xff0c;就像调用本地函数一样。它隐藏了底层网络通信的细节&#xff0c;简化了分布式系统的开…...

qBittorent访问webui时提示unauthorized解决方法

现象描述 QNAP使用Container Station运行容器&#xff0c;使用Docker封装qBittorrent时&#xff0c;访问IP:PORT的方式后无法访问到webui&#xff0c;而是提示unauthorized&#xff0c;如图&#xff1a; 原因分析 此时通常是由于设备IP与qBittorrent的ip地址不在同一个网段导致…...

Windows部署NVM并下载多版本Node.js的方法(含删除原有Node的方法)

本文介绍在Windows电脑中&#xff0c;下载、部署NVM&#xff08;node.js version management&#xff09;环境&#xff0c;并基于其安装不同版本的Node.js的方法。 在之前的文章Windows系统下载、部署Node.js与npm环境的方法&#xff08;https://blog.csdn.net/zhebushibiaoshi…...

【大数据】机器学习 -----关于data.csv数据集分析案例

打开表 import pandas as pd df2 pd.read_csv("data.csv",encoding"gbk") df2.head()查看数据属性&#xff08;列标题&#xff0c;表形状&#xff0c;类型&#xff0c;行标题&#xff0c;值&#xff09; print("列标题:",df2.columns)Data…...

使用Newtonsoft.Json插件,打包至Windows平台显示不支持

在unity中使用Newtonsoft.Json插件&#xff0c;打包至Windows遇到的问题 string json JsonConvert.SerializeObject(msg); 打包windows平台&#xff0c;显示该平台不支持 出现问题的原因 JsonConvert.SerializeObject 使用了反射来动态遍历对象的属性和字段。这可能在某些平台…...

树莓派5--系统问题汇总

前言&#xff1a; 该文章是我在使用树莓派5时所遇到的问题以及解决方案&#xff0c;希望对遇到相同问题的能够有所帮助。我的树莓派系统版本为&#xff1a;Pi-OS-ROS_2024_09_29 注意&#xff1a;如果没有什么需求千万不要更新树莓派中任何软件或者系统&#xff0c;除非你真的…...

Level2逐笔成交逐笔委托毫秒记录:今日分享优质股票数据20250116

逐笔成交逐笔委托下载 链接: https://pan.baidu.com/s/11nYhOf5TL9haZdXcYTxmHQ?pwdfwg8 提取码: fwg8 -------------------- Level2逐笔成交逐笔委托数据分享下载 利用Level2的逐笔交易和委托数据&#xff0c;这种以毫秒为单位的详细信息能揭露众多关键信息&#xff0c;如庄…...

小白:react antd 搭建框架关于 RangePicker DatePicker 时间组件使用记录 2

文章目录 一、 关于 RangePicker 组件返回的moment 方法示例 一、 关于 RangePicker 组件返回的moment 方法示例 moment方法中日后开发有用的方法如下&#xff1a; form.getFieldsValue().date[0].weeksInWeekYear(),form.getFieldsValue().date[0].zoneName(), form.getFiel…...

windows远程桌面连接限定ip

1&#xff0c;Windows防火墙->高级设置->远程桌面 - 用户模式(TCP-In)->作用域->远程IP地址 2&#xff0c;启用规则...

强化学习-蒙特卡洛方法

强化学习-数学理论 强化学习-基本概念强化学习-贝尔曼公式强化学习-贝尔曼最优公式强化学习-值迭代与策略迭代强化学习-蒙特卡洛方法 文章目录 强化学习-数学理论一、蒙特卡洛方法理论(Monte Carlo, MC)二、MC Basic2.1 算法拆解2.2 MC Basic算法 三、MC Exploring Starts3.1 …...

Java并发编程——线程池(基础,使用,拒绝策略,命名,提交方式,状态)

我是一个计算机专业研0的学生卡蒙Camel&#x1f42b;&#x1f42b;&#x1f42b;&#xff08;刚保研&#xff09; 记录每天学习过程&#xff08;主要学习Java、python、人工智能&#xff09;&#xff0c;总结知识点&#xff08;内容来自&#xff1a;自我总结网上借鉴&#xff0…...

浅谈云计算08 | 基本云架构

浅谈基本云架构 一、负载分布架构二、资源池架构三、动态可扩展架构四、弹性资源容量架构五、服务负载均衡架构六、云爆发架构七、弹性磁盘供给架构八、冗余存储架构 在当今数字化时代&#xff0c;云计算已成为企业发展的核心驱动力&#xff0c;而其背后的一系列关键架构则是支…...

element select 绑定一个对象{}

背景&#xff1a; select组件的使用&#xff0c;适用广泛的基础单选 v-model 的值为当前被选中的 el-option 的 value 属性值。但是我们这里想绑定一个对象&#xff0c;一个el-option对应的对象。 <el-select v-model"state.form.modelA" …...

MySQL SQL优化技巧与原理

前言 随着业务数据量的不断增加&#xff0c;MySQL查询语句的执行效率对程序的运行效率影响逐渐增大。因此&#xff0c;进行SQL优化变得至关重要。本文将结合SQL的执行语句顺序和各种SQL场景&#xff0c;介绍一些常见的MySQL SQL优化技巧及其背后的原理。 一、MySQL SQL执行语…...

SSL:WRONG_VERSION_NUMBER 或者 net::ERR_SSL_PROTOCAL_ERROR

记录一次SSL部署成功后&#xff0c;接口请求依然报SSL错误的问题。 首先排除SSL证据链不足&#xff0c;系统时间不正确&#xff0c;TLS配置不正确等问题。 浏览器直接访问可以打开网站&#xff0c;但是postman等接口访问就一直报SSL异常&#xff1a; 类似参考资料中的这种异…...

51单片机——DS18B20温度传感器

由于DS18B20数字温度传感器是单总线接口&#xff0c;所以需要使用51单片机的一个IO口模拟单总线时序与DS18B20通信&#xff0c;将检测的环境温度读取出来 1、DS18B20模块电路 传感器接口的单总线管脚接至单片机P3.7IO口上 2、DS18B20介绍 2.1 DS18B20外观实物图 管脚1为GN…...

单细胞组学大模型(8)--- scGenePT,scGPT和GenePT的结合,实验数据和文本数据的交融模型

–https://doi.org/10.1101/2024.10.23.619972 研究团队和单位 Theofanis Karaletsos–Head Of AI - Science at Chan Zuckerberg Initiative &#xff08;Chan Zuckerberg Initiative是扎克伯格和他妻子Chan成立的科研&教育机构&#xff09; 研究简介 研究背景&…...

详解如何自定义 Android Dex VMP 保护壳

版权归作者所有&#xff0c;如有转发&#xff0c;请注明文章出处&#xff1a;https://cyrus-studio.github.io/blog/ 前言 Android Dex VMP&#xff08;Virtual Machine Protection&#xff0c;虚拟机保护&#xff09;壳是一种常见的应用保护技术&#xff0c;主要用于保护 And…...

PHP中的魔术函数

PHP 魔术函数是在某些情况下会自动调用的特殊函数&#xff0c;它们以双下划线 __ 开头&#xff0c;以下是对常见 PHP 魔术函数的详细介绍&#xff1a; ### 构造函数和析构函数 - **__construct()**&#xff1a; - 这是一个构造函数&#xff0c;在创建类的新对象时会自动调…...

excel 判断某个单元格的日期,如果超过3天,则在另一个单元格显示超过三天的公式

excel 判断某个单元格的日期&#xff0c;如果超过3天&#xff0c;则在另一个单元格显示超过三天的公式&#xff0c;公式如下&#xff1a; IF(DATEDIF(C627,TODAY(),"d")<4,"3天以内","超过三天") IF(D627"超过3天","文件赶紧…...

TCP 序列和确认号说明 | seq 和 ack 号计算方法

注&#xff1a;本文为 “TCP 序列” 相关文章合辑。 英文引文机翻未校。 TCP Sequence and Acknowledgement Numbers Explained TCP 序列和确认编号说明 TCP Sequence (seq) and Acknowledgement (ack) numbers help enable ordered reliable data transfer for TCP streams…...

【Linux】Mysql部署步骤

一、JDK安装配置 在home目录下执行命令&#xff1a;mkdir Jdk 1.将JDK 上传至该文件夹&#xff0c;有些终端工具可以直接上传文件&#xff0c;比如&#xff1a;MobaXterm 可以看到安装包已经上传上来了 2.直接安装 命令&#xff1a;rpm -ivh jdk-8u311-linux-x64.rpm 3.安装成…...

【算法】枚举

枚举 普通枚举1.铺地毯2.回文日期3.扫雷 二进制枚举1.子集2.费解的开关3.Even Parity 顾名思义&#xff0c;就是把所有情况全都罗列出来&#xff0c;然后找出符合题目要求的那一个。因此&#xff0c;枚举是一种纯暴力的算法。一般情况下&#xff0c;枚举策略都是会超时的。此时…...

【C++】构造函数与析构函数

写在前面 构造函数与析构函数都是属于类的默认成员函数&#xff01; 默认成员函数是程序猿不显示声明定义&#xff0c;编译器会中生成。 构造函数和析构函数的知识需要建立在有初步类与对象的基础之上的&#xff0c;关于类与对象不才在前面笔记中有详细的介绍&#xff1a;点我…...

力扣刷题汇总

动态规划 1 . 最大子序和 (Maximum Subarray Sum) Leetcode 53. 最大子数组和 经典dp 问题描述&#xff1a;给定一个整数数组&#xff0c;求其中和最大的连续子数组的和。 状态定义&#xff1a;dp[i] 表示以第 i 个元素结尾的最大子序和。 2 . 最长公共子序列 (Longest Commo…...

Ansible自动化运维:基础与实践

在当今的IT运维领域&#xff0c;Ansible作为一款强大的自动化运维工具&#xff0c;正发挥着日益重要的作用。本文将详细介绍Ansible的相关知识&#xff0c;包括其作用、特点、安装配置以及常用模块的使用方法&#xff0c;旨在帮助读者快速上手并熟练运用Ansible进行自动化运维工…...

微信小程序在使用页面栈保存页面信息时,如何避免数据丢失?

微信小程序在使用页面栈保存页面信息时避免数据丢失的方法&#xff1a; 一、使用全局变量存储关键数据&#xff1a; 定义一个全局变量&#xff0c;例如在 app.js 中&#xff0c;用于存储页面的重要信息。在页面的 onHide 或 onUnload 生命周期中&#xff0c;将需要保存的数据…...

我国无人机新增实名登记110.3 万架,累计完成飞行2666万小时

据央视新闻从中国民航局了解到&#xff0c;2024 年我国全年新增通航企业 145 家、通用机场 26 个&#xff0c;颁发无人驾驶航空器型号合格证 6 个、新增实名登记无人机 110.3 万架&#xff0c;无人机运营单位总数超过 2 万家&#xff0c;累计完成无人机飞行 2666 万小时&#x…...

vue3+vite+ts+router4+Pinia+Axios+sass 从0到1搭建

1、使用vite构建项目 npm create vitelatest 填写项目名的时候不能大写 2、跑起来之后配置下 import { defineConfig } from vite import vue from vitejs/plugin-vue import { resolve } from path // https://vite.dev/config/ export default defineConfig({plugins: [vue…...

C语言:-三子棋游戏代码:分支-循环-数组-函数集合

思路分析&#xff1a; 1、写菜单 2、菜单之后进入游戏的操作 3、写函数 实现游戏 3.1、初始化棋盘函数&#xff0c;使数组元素都为空格 3.2、打印棋盘 棋盘的大概样子 3.3、玩家出棋 3.3.1、限制玩家要下的坐标位置 3.3.2、判断玩家要下的位置是否由棋子 3.4、电脑出棋 3.4.1、…...

前端调试遇到的无限debugger的原理与绕过

背景 debugger 是 JavaScript 中定义的一个专门用于断点调试的关键字,只要遇到它,JavaScript 的执行便会在此处中断,进入调试模式。有了 debugger 这个关键字,我们就可以非常方便地对 JavaScript 代码进行调试,比如使用 JavaScript Hook 时,我们可以加入 debugger 关键字…...

Java负载均衡

Java中的负载均衡原理是指通过合理分配网络请求或计算任务的方式&#xff0c;将工作负载分配到多个服务器、处理单元或服务实例上&#xff0c;从而提高系统的性能、可扩展性和可用性。负载均衡不仅可以分散请求压力&#xff0c;还能增强系统的容错能力&#xff0c;避免单点故障…...

spark,读取和写入同一张表问题

读取a表&#xff0c;写入a表 1.写入的是分区表&#xff0c;不报错 2.读取上来之后&#xff0c;创建为临时视图temp&#xff0c;然后先写入a表&#xff0c;再使用temp&#xff0c;就会报错 解决办法&#xff1a;可以先使用temp&#xff0c;再写入a表 3.写入的不是分区表&…...

用gpg和sha256验证ubuntu.iso

链接 https://ubuntu.com/tutorials/how-to-verify-ubuntuhttps://releases.ubuntu.com/jammy/ 本文是2的简明版 sha256sum介绍 sha256sum -c SHA256SUMS 2>&1这段脚本的作用是验证文件的 SHA-256 校验和。具体来说&#xff0c;命令的各个部分含义如下&#xff1a; …...

HIVE技术

本文章基于黑马免费资料编写。 hive介绍 简介 hive架构 hive需要启动的配置 执行元数据库初始化命令 使用hive必须启动的服务 ./schematool -initSchema -dbType mysql -verbos启动 Hive 创建一个 hive 的日志文件夹 mkdir /export/server/hive/logs启动元数据管理服务 n…...

我的世界-与门、或门、非门等基本门电路实现

一、红石比较器 (1) 红石比较器结构 红石比较器有前端单火把、后端双火把以及两个侧端 其中后端和侧端是输入信号,前端是输出信号 (2) 红石比较器的两种模式 比较模式 前端火把未点亮时处于比较模式 侧端>后端 → 0 当任一侧端强度大于后端强度时,输出…...

GPU 硬件原理架构(一)

这张费米管线架构图能看懂了&#xff0c;整个GPU的架构基本就熟了。市面上有很多GPU厂家&#xff0c;他们产品的架构各不相同&#xff0c;但是核心往往差不多&#xff0c;整明白一了个基本上就可以触类旁通了。下面这张图信息量很大&#xff0c;可以结合博客GPU 英伟达GPU架构回…...

[Qt]窗口-QMainWindow类-QMenuBar、QToolBar、QStatusBar、QDockWidget控件

目录 1.QMainWindow类介绍 2.菜单栏-QMenuBar控件 创建菜单栏 添加菜单和菜单选项 triggered信号 设置快捷键 添加分割线 添加图标 使用案例 3.工具栏-QToolBar控件 使用介绍 设置停靠位置 设置浮动属性 设置移动属性 使用案例 4.状态栏-QStatusBar控件 状…...

Linux命令行工具-使用方法

参考资料 Linux网络命令&#xff1a;网络工具socat详解-CSDN博客 arm-linux-gnueabihf、aarch64-linux-gnu等ARM交叉编译GCC的区别_aarch64-elf-gcc aarch64-linux-gnu-CSDN博客 解决Linux内核问题实用技巧之-dev/mem的新玩法-腾讯云开发者社区-腾讯云 热爱学习地派大星-CS…...

HTML中如何保留字符串的空白符和换行符号的效果

有个字符串 储值门店{{thing3.DATA}}\n储值卡号{{character_string1.DATA}}\n储值金额{{amount4.DATA}}\n当前余额{{amount5.DATA}}\n储值时间{{time2.DATA}} &#xff0c; HTML中想要保留 \n的换行效果的有下面3种方法&#xff1a; 1、style 中 设置 white-space: pre-lin…...

ASP.NET Core WebApi接口IP限流实践技术指南

在当今的Web开发中&#xff0c;接口的安全性和稳定性至关重要。面对恶意请求或频繁访问&#xff0c;我们需要采取有效的措施来保护我们的WebApi接口。IP限流是一种常见的技术手段&#xff0c;通过对来自同一IP地址的请求进行频率控制&#xff0c;可以有效地防止恶意攻击和过度消…...

SparkSQL数据模型综合实践

文章目录 1. 实战概述2. 实战步骤2.1 创建数据集2.2 创建数据模型对象2.2.1 创建常量2.2.2 创建加载数据方法2.2.3 创建过滤年龄方法2.2.4 创建平均薪水方法2.2.5 创建主方法2.2.6 查看完整代码 2.3 运行程序&#xff0c;查看结果 3. 实战小结 1. 实战概述 在本次实战中&#…...

C++实现设计模式---外观模式 (Facade)

外观模式 (Facade) 外观模式 是一种结构型设计模式&#xff0c;为子系统中的一组接口提供一个一致的界面。外观模式定义了一个更高层次的接口&#xff0c;使得子系统更容易使用。 意图 简化复杂子系统的接口。为客户端提供一个统一的入口&#xff0c;屏蔽子系统的内部细节。 …...