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

LLM | 论文精读 | GIS Copilot : 面向空间分析的自主GIS代理

论文标题:GIS Copilot: Towards an Autonomous GIS Agent for Spatial Analysis

作者:Temitope Akinboyewa,Zhenlong Li,Huan Ning,M. Naser Lessani等

来源:arXiv

DOI:10.48550/arXiv.2411.03205

email:yuhan.huang@whu.edu.cn

创作不易,恳请大家点赞收藏支持:)

在地理信息系统(GIS)领域,生成式人工智能特别是大语言模型(LLMs)的出现为空间分析带来了革命性的可能。近期发表的研究《GIS Copilot: Towards an Autonomous GIS Agent for Spatial Analysis》提出了一个创新框架,将LLMs直接集成到现有GIS平台中,实现了一个能够理解自然语言并执行复杂空间分析任务的"GIS Copilot"。本文将详细介绍这项研究的方法、框架、实现和评估结果,探讨其在自主GIS发展中的重要意义。

1. 研究背景与意义

1.1 研究背景

近年来,生成式人工智能特别是大语言模型(LLMs)如GPT-4、Llama和Gemini在地理信息科学(GIScience)领域引起了广泛关注。这些模型通过推理能力、自然语言理解和代码生成能力,为地理信息系统(GIS)提供了广泛的应用可能,包括空间数据分析、地理处理自动化和地理空间知识提取。

Li和Ning(2023)首次提出了"自主GIS"的概念,将其定义为下一代AI驱动的GIS,展示了生成式AI在自主生成地理处理工作流和进行空间分析方面的潜力。随后,研究人员探索了生成式AI在制图学、灾害管理、基于GIS的问答、位置描述提取和地理空间数据检索等方面的应用。

然而,现有研究的一个关键局限是,这些方法尚未将LLM功能完全嵌入到QGIS、ArcGIS Pro和GRASS GIS等成熟的GIS平台中。Li和Ning(2023)建议,基于现有GIS平台实现自主GIS作为"副驾驶"可能是最实用和有效的方法,因为这些平台已经提供了用于空间分析、数据管理和可视化的广泛工具。

1.2 研究挑战

将LLMs集成到QGIS等GIS平台中面临几个挑战:

  1. GIS平台的复杂性:GIS平台本质上非常复杂,支持各种工具、库和工作流用于数据可视化、空间分析、地理处理和制图渲染。这些工具通常依赖于不同的框架、数据标准和编程语言,使创建单一、连贯的工作流程变得复杂。

  2. 有效通信:AI与现有GIS功能之间的有效通信需要强大且无错误的交互。这涉及将自然语言查询转换为GIS命令,并确保这些命令与GIS原生工具和相关工具参数对齐。

  3. 高度定制化的工作流:GIS工作流通常高度定制化且特定于问题。开发能够无缝适应这些自定义工作流的AI集成,同时足够灵活以处理各种用户定义的参数,是具有挑战性的。

1.3 研究意义

本研究的主要贡献可以总结为以下几点:

  1. 可扩展框架:提出了一个可扩展和通用的框架,用于将LLMs集成到成熟的GIS平台中,为未来在多个平台(如ArcGIS、GRASS GIS)上发展GIS Copilot和自主GIS奠定了先例。

  2. GIS可访问性:通过启用自然语言交互并将GIS功能扩展到非专业用户,该研究展示了AI驱动系统如何潜在地改变公共卫生、灾害响应和城市规划等非传统GIS领域的地理空间分析。

  3. 深度集成:据作者所知,这是首个深度集成到成熟GIS平台的GIS Copilot,支持多种地理空间任务,同时增强透明度、实时推理和外部工具的可扩展性。

2. 框架设计与方法

2.1 GIS Copilot框架

GIS Copilot设计为通过图形用户界面、GIS工具箱和工具箱文档与现有GIS平台(如QGIS)交互,以协助GIS用户进行地理空间数据处理和分析任务。该框架由四个核心模块组成:

  1. 数据理解模块
  2. GIS界面交互模块
  3. 代码审查/调试模块
  4. 工具文档

GIS Copilot由数据理解模块提供的数据洞察和地理处理工具箱中包含的工具文档指导,自动确定各种任务的最合适的地理空间处理工具,管理数据处理工作流,并执行空间分析操作。它为选定的工具生成必要的代码,并使用代码审查和调试模块自动纠正执行过程中可能出现的错误。

2.1.1 空间分析工具箱

QGIS是一种广泛使用的开源GIS软件,用于地理空间数据管理、分析和可视化。它提供来自各种算法提供者的工具,包括QGIS原生算法、GDAL/OGR、GRASS GIS、SAGA GIS和Orfeo Toolbox,支持多样化的地理空间工作流。此外,其Python API(PyQGIS)允许用户自动化任务、创建自定义插件并访问完整的QGIS功能,使其高度适应高级空间分析和工具开发。

该框架中的空间分析工具箱包括内置和定制的地理处理工具:

  • 内置工具:包括QGIS算法,如原生地理处理算法(例如,'native:buffer'用于缓冲和'qgis:selectbyattribute'用于属性选择)和外部提供者如GDAL(例如,'gdal:slope'用于坡度分析)。

  • 定制地理处理工具:使用GeoPandas、PySAL和Matplotlib等外部库开发。这些定制工具支持统计分析(如相关分析)、定制图表(如条形图、散点图)和专题地图生成,在空间分析工作流中提供灵活性。

2.1.2 工具箱文档

GIS Copilot配备了QGIS工具的文档,使其能够为特定地理处理任务生成PyQGIS代码。工具箱文档主要由工具描述、参数和代码示例组成,作为代理在生成选定工具代码时的指南。例如,QGIS原生"Clip"工具需要参数如输入图层(要裁剪的数据集)、叠加层(用于裁剪的边界图层)和输出文件(保存裁剪数据的路径)。

在当前实现中,已系统编译了390个原生QGIS和GDAL工具,参考了QGIS官方文档网站上的资源。此外,该框架不限于QGIS工具,设计为可以插拔式扩展,允许用户按照预定义的模板添加新的定制工具以满足特定任务。

2.1.3 数据理解模块

数据理解模块使代理能够在用于任何分析之前提取和解释空间数据的结构和属性。它的功能类似于人类分析师在处理空间分析任务时的初始步骤——理解要分析的数据。具体来说,它收集空间分析所需的各种关键信息,如文件格式、属性表的字段名称、坐标参考系统、数据范围和栅格分辨率。

这些信息为GIS Copilot提供了数据输入的全面概述和理解,指导其选择适合任务的工具和执行地理空间操作的正确属性。因此,用户无需在其任务请求中指定数据详情,如字段名称,使Copilot更加用户友好。

2.1.4 代码审查/调试模块

代码审查/调试模块是一个重要组件,旨在提高生成代码的可靠性和准确性。该模块使GIS Copilot能够主动审查生成的代码,并实时监控生成代码的执行,以捕获可能出现的任何错误。一旦检测到错误,它会尝试自动纠正错误并重新生成代码执行。这种自我调试功能是迭代的,允许持续改进和完善代码,以增加成功执行的机会。

2.1.5 GIS界面交互

GIS界面交互模块使GIS Copilot能够直接与主机GIS(QGIS)图形用户界面交互。它允许Copilot执行动态加载和数据处理等操作。例如,用户加载到GIS软件中的数据图层可以被Copilot自动访问。此外,Copilot生成的结果直接重新加载到主机GIS中,允许用户立即可视化并进一步处理或操作。

2.2 GIS Copilot工作流程

GIS Copilot作为QGIS内的插件实现。它解释用户的自然语言请求并将其转换为可执行的地理处理命令。如图2所示,整体工作流程首先将用户的任务分解为详细步骤。一旦任务被充分理解,系统从广泛的选项中识别适当的地理处理工具,包括QGIS原生工具、GDAL或定制工具。工具的选择基于任务分解过程中分析的步骤,确保过程的每个步骤都由最合适的工具处理。基于选定的工具,系统生成专门设计用于解决空间任务的可执行Python代码。在这些步骤中,系统由一组预定义的指令、自动生成的元数据和全面的工具列表指导,以确保可靠的任务分析、工具选择和代码生成。最后,代码被执行,结果要么作为地图图层加载到QGIS中,要么作为包括表格和图表的报告呈现。

2.2.1 任务分析和工具选择

当用户以自然语言提交空间查询时,第一步是代理处理请求以理解潜在的空间问题。在初步解释之后,代理执行任务分解以确定实现预期结果所需的内容。例如,用户可能请求:"识别所有位于医院5分钟驾驶距离内的住宅区。"代理首先识别涉及的空间实体——住宅区、医院和5分钟驾驶的概念。基于这些洞察,它将请求与空间分析工具箱中可用的一组地理处理工具匹配。

选择适当工具的决策过程涉及考虑几个因素,如数据的性质(例如,矢量或栅格)、地理投影和数据结构(例如,多边形、线)。此外,查询期间指定的任何用户偏好,如工具选择或特定处理技术,都会被考虑在内。

2.2.2 代码生成和参数设置

一旦选择了适当的工具,工作流程的下一步是代码生成阶段。代理基于选定的工具生成Python代码来执行操作。生成过程由每个工具的预定义文档指导,包括使用指南、参数要求和示例代码模板,以便生成的代码格式良好并准备执行。

为了使生成的代码适应用户的要求,代理调整参数以符合任务的具体细节。例如,假设用户请求是"选择人口超过50,000的县"。代理通过将过滤条件设置为"Population" > 50,000来定制代码,其中"population"被假定为相关属性名称。

2.2.3 执行和结果可视化

生成代码后,下一步涉及执行代码以进行空间分析。这一阶段由执行和自我调试模块促进,该模块监督整个过程。生成的代码直接在主机GIS环境中执行,允许空间分析在不离开QGIS界面的情况下进行。

根据任务的性质,结果可以采取各种形式:

  • 地理处理任务的输出,如缓冲区、相交图层或重分类栅格图层,直接加载并显示在QGIS中作为地图图层,可以进一步分析、可视化或导出。
  • 涉及摘要、图表、属性统计或计算指标的分析结果在插件界面中显示为表格、图像或文本报告。
  • 当适当或在任务中请求时,插件还可能生成可视化,如条形图、直方图或其他图形表示,以帮助用户解释结果。

如果在执行过程中遇到错误,自我调试模块将被激活。该模块审查代码,识别错误,进行必要的修正,并重新执行修订后的代码。

2.3 用户界面设计

GIS Copilot的图形用户界面由六个主要标签组成:请求页面、生成代码、地理处理工作流、报告、设置和帮助。

请求页面是用户可以输入请求的主界面。它包括实时显示的AI生成代码、显示代理状态的信息面板、用户请求框和加载到QGIS的数据集路径。为了实现与QGIS的无缝集成,用户可以直接从QGIS图层面板中选择要分析的数据集,通过选中他们想要包括的图层并取消选中要排除的图层。

生成代码标签使用户能够手动执行代理生成的代码并根据需要进行编辑。此标签还提供了一个平台,用于从本地机器加载保存的代码或保存生成的代码以供将来使用。

地理处理工作流标签以可视化流程图示完成用户请求所涉及的步骤。报告标签允许用户查看输出,如图表、绘图和统计摘要。设置标签让用户配置插件,如设置API密钥、选择AI模型和定义保存结果的默认工作空间。帮助标签为用户提供有关如何使用插件的详细信息。

3. 案例研究

为了展示GIS Copilot的能力,案例被分为三个复杂性级别:基础、中级和高级。

3.1 基础级任务

在这一级别,任务是直接的,涉及单一工具以及一个(或偶尔两个)数据层。代理预期执行一个通常需要单一步骤的简单操作,如计算多边形面积或基于属性选择要素。

3.1.1 华盛顿特区医疗设施覆盖区

这个案例涉及在美国华盛顿特区创建医疗设施周围的服务区域。输入数据是从OpenStreetMap获取的医疗设施(医院、诊所和药店)的矢量图层。在这个任务中,代理被提示在每个医疗设施周围创建2,000英尺的区域,以识别服务覆盖区域。代理成功选择了适当的空间分析工具(缓冲工具)并生成了可执行代码,其中包括基于用户查询设置所需参数(如距离)并执行操作。

3.2 中级任务

在这一级别,任务变得更加复杂,涉及多个步骤和工具。代理通过具体指令或步骤列表来指导执行任务。虽然步骤已经概述,但代理仍需要为每个步骤生成正确的代码并将它们链接在一起以执行分析。这里的重点是测试代理在遵循给定的一般工作流程的同时管理多个过程的能力。

3.2.1 南卡罗来纳州各县的平均海拔分区统计

在这个案例中,代理的任务是基于DEM分析南卡罗来纳州(SC)每个县的平均海拔。这涉及一系列地理处理步骤:将DEM裁剪到SC边界、生成裁剪后DEM像素值的直方图、计算分区统计并创建等值线图。输入包括三个数据层:覆盖比SC更大区域的DEM和包含SC边界和所有SC县的两个矢量层。

请求的结果如图8所示。代理生成的等值线图清晰地显示了平均海拔值,较深的阴影代表较高的海拔。此外,代理生成的直方图说明了来自裁剪DEM的像素值分布。此外,地理处理工作流程图说明了分析的步骤。

3.3 高级任务

在高级级别,任务是多步骤的,预期代理独立确定适当的步骤,而无需明确指示,以设计实现所需结果的最佳方法。换句话说,任务更加自然,向代理呈现用户想要"什么",而对"如何"做的指导有限。代理必须选择正确的工具,生成必要的代码,并独立执行整个过程。

3.3.1 宾夕法尼亚州各县快餐可及性和肥胖相关性分析

这个操作涉及分析和可视化宾夕法尼亚州每个县的快餐可及性评分,并执行快餐可及性评分与肥胖流行率之间的相关性分析。代理的工作流首先通过执行空间连接操作,计算基于每个县人均快餐餐厅数量的快餐可及性评分。接着生成一个专题地图,以较深的蓝色阴影显示可及性评分较高的县。接下来,代理分析了县级肥胖率和快餐可及性评分之间的相关性。

这个分析的结果如图11所示,其中一个带有回归线的散点图突出了整个州快餐可及性和肥胖率之间的关系。代理成功管理了多步骤过程,计算可及性评分以执行相关性分析,并在专题地图和散点图中可视化结果。值得注意的是,分析中使用的所有特定字段都是由代理通过数据理解模块自动选择的,无需明确的用户指导。

3.4 性能评估

GIS Copilot的性能通过使用110个跨三个复杂性级别的任务系统地进行评估:基础、中级和高级。每个级别由预定数量的任务组成,根据任务复杂性的预定义标准选择。这种结构化方法确保选择的任务代表每个复杂性级别,提供平衡和有意义的评估框架。

在每个阶段记录成功率,跟踪代理成功完成任务的能力。基础级任务(60个)的成功率为92%,中级任务(30个)的成功率为83%,高级任务(20个)的成功率为75%。这些结果表明,随着任务复杂性的增加,成功率有所下降,这是预期的,因为更复杂的任务需要更多的步骤,增加了出错的可能性。

4. 局限性与未来工作

尽管GIS Copilot在自动化空间分析方面展示了显著的能力,但研究团队也识别了几个需要在未来工作中解决的局限性:

4.1 数据验证模块

当前框架缺乏强大的数据验证模块,这可能导致工具和参数不匹配。例如,某些工具可能需要特定的数据类型或格式,如果输入数据不符合这些要求,可能会导致错误或不准确的结果。未来的工作将专注于开发一个数据验证模块,以确保输入数据与所选工具的要求兼容。

4.2 LLMs在GIS科学基础知识方面的能力

虽然LLMs在代码生成和自然语言理解方面表现出色,但它们在GIS科学基础知识方面的能力仍然有限。这可能导致在处理需要深入理解地理空间概念的复杂任务时出现困难。例如,在涉及空间统计分析或高级地理处理的任务中,代理可能无法识别最合适的方法或工具。未来的工作将专注于增强LLMs在GIS科学领域的知识,可能通过专门的微调或知识增强技术。

4.3 建立基于经验的知识系统

当前框架缺乏基于经验的知识系统,这限制了其从过去执行中学习和改进的能力。未来的工作将专注于开发一个知识库,存储成功执行的任务和相关代码,使代理能够从过去的经验中学习并改进其性能。

4.4 集成提示生成模块

当前框架要求用户提供明确的任务描述,这可能对不熟悉GIS术语或概念的用户构成挑战。未来的工作将专注于开发一个提示生成模块,帮助用户构建明确和有效的任务描述,从而提高代理的性能。

4.5 与地理空间数据检索代理集成

当前框架要求用户提供所有必要的数据,这可能对不熟悉地理空间数据源或获取方法的用户构成挑战。未来的工作将专注于与地理空间数据检索代理集成,使代理能够自动从各种来源获取所需的数据。

4.6 探索开源LLM模型的集成

当前框架依赖于商业LLM模型,这可能限制其可访问性和可扩展性。未来的工作将探索集成开源LLM模型,如Llama或Falcon,以提高框架的可访问性和可扩展性。

5. 结论

GIS Copilot代表了将LLMs集成到成熟GIS平台的重要进步,为自主GIS的发展铺平了道路。通过允许用户使用自然语言与GIS软件交互,它有潜力使地理空间分析更加民主化,使其对非专业用户更加可访问。

研究结果表明,GIS Copilot在自动化基础和中级地理空间任务方面表现良好,成功率分别为92%和83%。然而,在处理更复杂的多步骤过程方面仍存在挑战,高级任务的成功率为75%。这些结果突显了在未来工作中解决上述局限性的重要性。

总的来说,GIS Copilot为自主GIS的发展提供了重要贡献,有助于民主化地理空间分析,使其对更广泛的用户群体可访问。通过继续开发和改进,GIS Copilot有潜力彻底改变地理空间分析的执行方式,使其更加高效、可访问和用户友好。

6. 资源可用性

为了促进研究的可重复性和进一步发展,研究团队已经公开了以下资源:

  • 源代码:https://shorturl.at/vRcm6
  • QGIS插件:AutonomousGIS-SpatialAnalysisAgent — QGIS Python Plugins Repository
  • 测试数据集:https://shorturl.at/bI4Ep

这些资源使研究人员和开发人员能够复制研究结果,并在GIS Copilot框架的基础上进一步发展。

相关文章:

LLM | 论文精读 | GIS Copilot : 面向空间分析的自主GIS代理

论文标题:GIS Copilot: Towards an Autonomous GIS Agent for Spatial Analysis 作者:Temitope Akinboyewa,Zhenlong Li,Huan Ning,M. Naser Lessani等 来源:arXiv DOI:10.48550/arXiv.2411.…...

Unity 适用Canvas 为任一渲染模式的UI 拖拽

RectTransformUtility-ScreenPointToWorldPointInRectangle - Unity 脚本 API 将一个屏幕空间点转换为世界空间中位于给定RectTransform 平面上的一个位置。 实现 获取平面位置。 parentRT transform.parent as RectTransform; 继承IPointerDownHandler 和IDragHandler …...

基于遗传算法的无人机三维路径规划仿真步骤详解

基于遗传算法的无人机三维路径规划仿真步骤详解 一、问题定义 目标:在三维空间内,寻找从起点到终点的最优路径,需满足: 避障:避开所有障碍物。路径最短:总飞行距离尽可能短。平滑性:转折角度不宜过大,降低机动能耗。输入: 三维地图(含障碍物,如立方体、圆柱体)。起…...

windows下使用Hyper+wsl实现ubuntu下git的平替

文章目录 前言一、安装Hyper、wsl1. 安装Hyper2. 安装wsl 二、配置Hyper三、安装并使用git总结 前言 众所周知,Ubuntu下安装git只需执行sudo apt install git即可使用默认终端拉取代码,但是Windows上使用git既没有linux便捷,又没有MacOS优雅…...

基于Java+SpringCloud+Vue的前后端分离的房产销售平台

基于JavaSpringCloudVue的前后端分离的房产销售平台 前言 ✌全网粉丝20W,csdn特邀作者、博客专家、CSDN[新星计划]导师、java领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌ 🍅文末附源码下载链接&#x…...

以影像技术重构智能座舱体验,开启驾乘互动新纪元

在汽车智能化浪潮席卷全球的今天,座舱体验早已突破传统驾驶功能的边界,成为车企竞争的核心赛道。美摄科技凭借其在图像处理与AI算法领域的深厚积累,推出全链路智能汽车图像及视频处理方案,以创新技术重新定义车载影像系统&#xf…...

deepseek在pycharm 中的配置和简单应用

对于最常用的调试python脚本开发环境pycharm,如何接入deepseek是我们窥探ai代码编写的第一步,熟悉起来总没坏处。 1、官网安装pycharm社区版(免费),如果需要安装专业版,需要另外找破解码。 2、安装Ollama…...

LLM大型语言模型(一)

1. 什么是 LLM? LLM(大型语言模型)是一种神经网络,专门用于理解、生成并对人类文本作出响应。这些模型是深度神经网络,通常训练于海量文本数据上,有时甚至覆盖了整个互联网的公开文本。 LLM 中的 “大” …...

尚庭公寓项目记录

数据库准备 保留图像时,保存图像地址就可以数据表不是越多越好,可以用中间表来实现俩个表之间的联立这样方便查数据但是却带来性能问题而减少表的jion但是提高性能,以冗余来换去性能采用MySQL,InnoDB存储引擎物理删除和逻辑删除逻…...

飞算JavaAI编程工具集成到idea中

AI插件介绍 飞算AI的插件下载地址,里边也有安装步骤: JavaAI 以上图是不是看着很牛的样子,一下成为高手确实说的太夸张了点, 一键生成后端JavaWeb项目还是挺方便的。 飞算JavaAI插件安装 Idea->>file->>setting-&…...

【每日八股】计算机网络篇(二):TCP 和 UDP

目录 TCP 的头部结构?TCP 如何保证可靠传输?1. 确认应答机制2. 超时重传3. 数据排序与去重4. 流量控制5. 拥塞控制6. 校验和 TCP 的三次握手?第一次握手第二次握手第三次握手 TCP 为什么要三次握手?问题一:防止历史连接…...

课程《MIT Introduction to Deep Learning》

在Youtubu上,MIT Introduction to Deep Learning (2024) | 6.S191 共8节课: (1) MIT Introduction to Deep Learning (2024) | 6.S191 (2) MIT 6.S191: Recurrent Neural Networks, Transformers, and Attention (3) MIT 6.S191: Convolutional Neural N…...

GCC RISCV 后端 -- C语言语法分析过程

在 GCC 编译一个 C 源代码时,先会通过宏处理,形成 一个叫转译单元(translation_unit),接着进行语法分析,C 的语法分析入口是 static void c_parser_translation_unit(c_parser *parser); 接着就通过类似递…...

UI组件库及antd

什么是UI组件库及antd安装 随着商业化的趋势,企业级产品中需求多且功能复杂,且变动和并发频繁,常常需要设计者与开发者快速做出响应,同时这类产品中有很多类似的页面及组件,可以通过抽象得到一些稳定且高复用性的内容…...

Windows下使用ShiftMediaProject方法编译FFmpeg

Windows SDK 8.1版本不支持dxva vp9! 需要10.0.17134.0!或者把config编译选项去掉 1.下载源码 https://github.com/ShiftMediaProject 2.创建ShiftMediaProject文件夹 把下载好的源码放入source 3.进入SMP执行 project_get_dependencies.bat 自动下载ffmepg依赖项…...

【计算机网络入门】TCP拥塞控制

目录 1. TCP拥塞控制和TCP流量控制的区别 2. 检测到拥塞该怎么办 2.1 如何判断网络拥塞? 3. 慢开始算法 拥塞避免算法 4.快重传事件->快恢复算法 5. 总结 1. TCP拥塞控制和TCP流量控制的区别 TCP流量控制是控制端对端的数据发送量。是局部的概念。 TCP拥…...

无人机遥控器无线传输技术解析!

一、主流无线传输方式 无线电遥控系统(2.4GHz/5.8GHz频段) 频段特性:2.4GHz频段穿透力强、覆盖距离远(可达2公里以上),适合控制信号传输;5.8GHz频段带宽更高,适用于高清视频流&…...

修改hosts文件,修改安全属性,建立自己的DNS

初级代码游戏的专栏介绍与文章目录-CSDN博客 我的github:codetoys,所有代码都将会位于ctfc库中。已经放入库中我会指出在库中的位置。 这些代码大部分以Linux为目标但部分代码是纯C的,可以在任何平台上使用。 源码指引:github源…...

MySQL零基础教程16—表连接进阶

复习表别名 之前已经学习过,查询的时候可以使用as来对检索的列进行重命名,这样可以让sql更加简介,增强易读性(as可以省略) 此外,使用表别名还可以支持在一条select语句中,一个表是被多次使用 …...

【软件系统架构】系列三:数据库系统之三

1.数据故障与备份 1.1 安全措施 措施说明用户标识和鉴定最外层的安全保护措施,可以使用用户帐户、口令及随机数检验等方式存取控制对用户进行授权,包括操作类型(如查找、插入、删除、修改等动作)和数据对象(主要是数…...

lamp平台介绍

一、lamp介绍 网站: 静态 动态 php语言 .php 作用:运行php语言编写动态网站应用 lamp Linux Apache MySQL PHP PHP是作为httpd的一个功能模块存在的 二、部署lamp平台 1、测试httpd是否可正常返回PHP的响应 2、测试PHP代码是否可正常连接数据…...

826考研

初试总分第一的hh佬小红书:https://www.xiaohongshu.com/user/profile/64e106aa000000000100fe33 深研院巨佬经验贴:https://zhuanlan.zhihu.com/p/690464528 本部羊神经验贴:https://zhuanlan.zhihu.com/p/689494655 本部学硕佬经验贴&#…...

局域网自动识别机器名和MAC并生成文件的命令

更新版本:添加了MAC 地址 确定了设备唯一性 V1.1 局域网自动识别机器名和MAC并生成文件的批处理命令 echo off setlocal enabledelayedexpansionREM 设置输出文件 set outputFilenetwork_info.txtREM 清空或创建输出文件 echo Scanning network from 192.168.20.1…...

todo: 使用融云imserve做登录(android)

使用融云做登录注册思路 注册界面需要name, email, password考虑到融云注册用户的post格式 POST http://api.rong-api.com/user/getToken.json?userId1690544550qqcom&nameIronman这里的userId可以使用用户的email,但是要截断和 . 符号,即1690544…...

Mac OS升级后变慢了,如何恢复老系统?

我的一台Mac Air闲置很久了,原因是某次系统升级后用着会卡,有差不多10年没用了。今天想试着恢复一下出厂系统,目前看这条路可以走通。记录如下: 1、去哪里下载旧版系统? https://support.apple.com/zh-cn/102662 2、…...

cursor使用经验分享(java后端服务开发向)

前言 cursor是一款基于vscode,并集成AI能力的代码编辑器,其功能包括但不限于代码生成及补全、AI对话(能够直接将代码环境作为上下文)、即时应用建议等等,是一款面向未来的代码编辑器。 对于vscode,最先想…...

初次使用 IDE 搭配 Lombok 注解的配置

前言 在 Java 开发的漫漫征程中,我们总会遇到各种提升效率的工具。Lombok 便是其中一款能让代码编写变得更加简洁高效的神奇库。它通过注解的方式,巧妙地在编译阶段为我们生成那些繁琐的样板代码,比如 getter、setter、构造函数等。然而&…...

vue 安装依赖npm install过程中报错npm ERR! cb() never called!

解决办法: 步骤 1:清理 npm 缓存 npm cache clean --force rm -rf node_modules package-lock.json 步骤 2:一个第三方 npm 工具包,功能是 自动重试失败的 npm install 操作,适用于网络不稳定或依赖源不可靠的场景 …...

android接入rocketmq

一 前言 RocketMQ 作为一个功能强大的消息队列系统,不仅支持基本的消息发布与订阅,还提供了顺序消息、延时消息、事务消息等高级功能,适应了复杂的分布式系统需求。其高可用性架构、多副本机制、完善的运维管理工具,以及安全控制…...

libilibi项目优化(1)使用Redis实现缓存

第一版 获取视频信息使用旁路缓存 当视频信息存在缓存中时(命中),直接从缓存中获取。不存在缓存中时,先从数据库中查出对应的信息,写入缓存后再放回数据。 //获取视频详细信息RequestMapping("/getVideoInfo&q…...