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

【C#生态园】探索地理信息系统软件套件与库:功能、API和应用

探索地理信息系统:软件套件与库详解

前言

地理信息系统(GIS)是当今世界上广泛使用的技术之一,它以空间数据为基础,能够提供丰富的地理信息分析和可视化功能。在GIS领域,有许多优秀的软件套件和库,可以帮助开发人员处理地理空间数据,进行地图绘制和空间分析。本文将着重介绍几种常用的地理信息系统软件套件以及相关的库。

欢迎订阅专栏:C#生态园

文章目录

  • 探索地理信息系统:软件套件与库详解
    • 前言
    • 1. ArcGIS:一个地理信息系统软件套件
      • 1.1 简介
        • 1.1.1 核心功能
        • 1.1.2 使用场景
      • 1.2 安装与配置
        • 1.2.1 安装指南
        • 1.2.2 基本配置
      • 1.3 API 概览
        • 1.3.1 地图创建
        • 1.3.2 数据分析
    • 2. PostGIS:空间数据库扩展,用于PostgreSQL
      • 2.1 简介
        • 2.1.1 核心功能
        • 2.1.2 使用场景
      • 2.2 安装与配置
        • 2.2.1 安装指南
        • 2.2.2 基本配置
      • 2.3 API 概览
        • 2.3.1 空间数据管理
        • 2.3.2 地理查询
    • 3. ProjNet:用于处理地理空间数据的库
      • 3.1 简介
        • 3.1.1 核心功能
        • 3.1.2 使用场景
      • 3.2 安装与配置
        • 3.2.1 安装指南
        • 3.2.2 基本配置
      • 3.3 API 概览
        • 3.3.1 几何对象操作
        • 3.3.2 投影转换
    • 4. NetTopologySuite:用于空间数据操作的库
      • 4.1 简介
        • 4.1.1 核心功能
        • 4.1.2 使用场景
      • 4.2 安装与配置
        • 4.2.1 安装方法
        • 4.2.2 基本设置
      • 4.3 API 概览
        • 4.3.1 空间运算
        • 4.3.2 空间索引
    • 5. SharpMap:一个开源的地理信息系统库
      • 5.1 简介
        • 5.1.1 核心功能
        • 5.1.2 使用场景
      • 5.2 安装与配置
        • 5.2.1 安装指导
        • 5.2.2 基本配置
      • 5.3 API 概览
        • 5.3.1 地图绘制
        • 5.3.2 空间查询
    • 6. GeoAPI:用于地理空间数据处理的接口库
      • 6.1 简介
        • 6.1.1 核心功能
        • 6.1.2 使用场景
      • 6.2 安装与配置
        • 6.2.1 安装指南
        • 6.2.2 基本设置
      • 6.3 API 概览
        • 6.3.1 地理空间操作
        • 6.3.2 地理坐标转换
    • 总结

1. ArcGIS:一个地理信息系统软件套件

ArcGIS 是一套由美国Esri公司开发的地理信息系统软件套件,为用户提供了丰富的地图制作、数据分析和空间问题解决方案。

1.1 简介

1.1.1 核心功能

ArcGIS 提供了丰富的地理信息处理功能,包括地图制作、空间分析、地理编码、三维可视化等。通过 ArcGIS,用户可以轻松管理地理信息数据,并利用这些数据进行深入的空间分析。

1.1.2 使用场景

ArcGIS 在各种领域都有广泛的应用,包括城市规划、环境保护、资源管理、农业、地质勘探等。用户可以利用 ArcGIS 进行地图制作、地理信息分析和决策支持。

1.2 安装与配置

1.2.1 安装指南

用户可以从 Esri 公司官网下载 ArcGIS 软件,并按照官方安装指南进行安装。通常情况下,ArcGIS 软件需要激活许可证才能正常使用。

1.2.2 基本配置

安装完成后,用户需要进行基本配置,包括设置数据连接、权限管理和地图显示样式等。这些配置可以根据具体需求进行个性化定制。

1.3 API 概览

1.3.1 地图创建

在 ArcGIS 中,用户可以利用 ArcGIS API for JavaScript 来创建地图。以下是一个简单的示例代码:

require(["esri/Map","esri/views/MapView"
], function(Map, MapView) {var map = new Map({basemap: "streets"});var view = new MapView({container: "viewDiv",map: map,center: [-118.805, 34.027],zoom: 13});
});

更多关于地图创建的详细信息,请参考 ArcGIS API for JavaScript。

1.3.2 数据分析

除了地图创建,ArcGIS 还提供了丰富的数据分析功能。用户可以利用 ArcGIS API for Python 进行数据处理和空间分析。以下是一个简单的示例代码:

import arcgis
from arcgis.gis import GISgis = GIS()
map = gis.map("New York, NY")
map.basemap = 'topo'map

更多关于数据分析的详细信息,请参考 ArcGIS API for Python。

2. PostGIS:空间数据库扩展,用于PostgreSQL

2.1 简介

PostGIS 是一个用于 PostgreSQL 的空间数据库扩展,它允许地理信息系统(GIS)对象存储在数据库中,并提供了对这些数据进行复杂地理查询的能力。

2.1.1 核心功能
  • 存储和管理地理信息系统对象
  • 对地理数据执行空间查询和分析
  • 支持地理坐标系转换和投影
2.1.2 使用场景

PostGIS 可以用于开发需要处理地理空间数据的应用程序,例如地图应用、位置分析和物联网系统等。

2.2 安装与配置

2.2.1 安装指南

首先需要安装 PostgreSQL 数据库。然后可以通过以下命令安装 PostGIS:

sudo apt-get update
sudo apt-get install postgis

更多详细的安装指南请参考官方文档:PostGIS Installation

2.2.2 基本配置

安装完成后,需要在 PostgreSQL 中创建空间数据库并添加 PostGIS 扩展:

CREATE DATABASE myspatialdb;
\c myspatialdb
CREATE EXTENSION postgis;

2.3 API 概览

2.3.1 空间数据管理

PostGIS 提供了一组用于管理空间数据的 SQL 函数和类型。例如,可以使用以下 SQL 查询来创建一个包含空间数据的表格:

CREATE TABLE spatial_table (id SERIAL PRIMARY KEY,name VARCHAR(100),geom GEOMETRY(Point, 4326)
);

更多关于空间数据管理的 API 可以参考官方文档:PostGIS Spatial Functions

2.3.2 地理查询

PostGIS 允许执行复杂的地理查询,例如查找两个地理对象之间的距离或者判断一个点是否在一个多边形内部。以下是一个使用 C# 进行地理查询的示例代码:

using Npgsql;
using Dapper;class Program
{static void Main(){using (var conn = new NpgsqlConnection("Host=myserver;Username=mylogin;Password=mypass;Database=mydatabase")){conn.Open();// 查询距离var result = conn.QueryFirstOrDefault<double>(@"SELECT ST_Distance(ST_GeomFromText('POINT(0 0)', 4326),ST_GeomFromText('POINT(1 2)', 4326))");Console.WriteLine($"Distance: {result}");// 判断点是否在多边形内var isInside = conn.QueryFirstOrDefault<bool>(@"SELECT ST_Contains(ST_GeomFromText('POLYGON((0 0, 0 3, 3 3, 3 0, 0 0))', 4326),ST_GeomFromText('POINT(1 1)', 4326))");Console.WriteLine($"Is inside: {isInside}");}}
}

更多关于地理查询的 API 可以参考官方文档:PostGIS Geography Functions

3. ProjNet:用于处理地理空间数据的库

ProjNet 是一个开源的、跨平台的库,用于处理地理空间数据。它提供了丰富的功能和 API,可以用于处理地理坐标、投影转换等操作。

3.1 简介

3.1.1 核心功能

ProjNet 主要用于处理地理空间数据的投影转换、坐标系统操作,提供了丰富的地理信息系统相关功能。其中包括但不限于:

  • 地理坐标的转换
  • 投影坐标的转换
  • 坐标系统的管理
  • 空间分析等功能
3.1.2 使用场景

ProjNet 可以被广泛应用于地理信息系统开发、地图制图、GPS 应用、定位服务等领域。

3.2 安装与配置

3.2.1 安装指南

ProjNet 可以通过 NuGet 进行安装,在 Visual Studio 中创建一个新的 .NET Core 或 .NET Framework 项目后,可通过以下命令安装 ProjNet:

dotnet add package ProjNet
3.2.2 基本配置

在项目中引用 ProjNet 后,即可开始使用其丰富的功能和 API。

3.3 API 概览

3.3.1 几何对象操作

ProjNet 提供了一系列几何对象的操作方法,用于处理点、线、面等地理信息对象。下面是一个简单的 C# 实例代码,演示如何使用 ProjNet 创建一个点对象:

using ProjNet.CoordinateSystems;
using ProjNet.CoordinateSystems.Transformations;public class GeometryExample
{public void CreatePoint(){ICoordinateSystem wgs84 = GeographicCoordinateSystem.WGS84;CoordinateTransformationFactory ctFactory = new CoordinateTransformationFactory();ICoordinateTransformation transformation = ctFactory.CreateFromCoordinateSystems(wgs84, projectedCS);double x = 121.4737;double y = 31.2304;double[] point = transformation.MathTransform.Transform(new double[] { x, y });Console.WriteLine($"Projected point: {point[0]}, {point[1]}");}
}

更多关于几何对象操作的详细信息,请参考 ProjNet 文档。

3.3.2 投影转换

ProjNet 提供了丰富的投影转换功能,可以实现不同坐标系之间的互相转换。下面是一个简单的示例,演示如何将 WGS84 坐标转换为 Web Mercator 坐标:

using ProjNet.CoordinateSystems;
using ProjNet.CoordinateSystems.Transformations;public class ProjectionExample
{public void ProjectCoordinates(){ICoordinateSystem wgs84 = GeographicCoordinateSystem.WGS84;ICoordinateSystem webMercator = ProjectedCoordinateSystem.WebMercator;CoordinateTransformationFactory ctFactory = new CoordinateTransformationFactory();ICoordinateTransformation transformation = ctFactory.CreateFromCoordinateSystems(wgs84, webMercator);double x = 121.4737;double y = 31.2304;double[] projectedPoint = transformation.MathTransform.Transform(new double[] { x, y });Console.WriteLine($"Projected point: {projectedPoint[0]}, {projectedPoint[1]}");}
}

以上是 ProjNet 库的简要介绍和部分功能演示,更多详细信息请访问 ProjNet 官方文档。

4. NetTopologySuite:用于空间数据操作的库

NetTopologySuite(NTS)是一个用于空间数据操作的高性能库,它提供了丰富的地理信息系统(GIS)功能和算法。本文将介绍NTS库的核心功能、使用场景、安装与配置方法以及API概览。

4.1 简介

4.1.1 核心功能

NetTopologySuite提供了一系列的空间运算、几何处理和地理空间索引功能。它支持点、线、多边形等几何类型,以及其相关的拓扑关系判断、缓冲区分析等功能。

4.1.2 使用场景

NTS广泛应用于需要进行空间数据处理和分析的项目中,比如地图绘制、位置分析、路径规划等领域。

4.2 安装与配置

4.2.1 安装方法

通过NuGet包管理器可以轻松地将NetTopologySuite集成到C#项目中。在Visual Studio中,可以在包管理控制台中使用以下命令进行安装:

Install-Package NetTopologySuite
4.2.2 基本设置

安装完成后,可以在项目中引用NTS所提供的命名空间,并开始使用其中的类和方法。

4.3 API 概览

4.3.1 空间运算

NetTopologySuite提供了丰富的空间运算功能,例如计算两个几何对象的交集、并集、差集等。以下是一个简单示例,展示了如何使用NTS进行空间运算:

using NetTopologySuite.Geometries;
using NetTopologySuite.Operation.Union;// 创建两个多边形
Polygon poly1 = new Polygon(...);
Polygon poly2 = new Polygon(...);// 计算两个多边形的并集
Geometry union = poly1.Union(poly2);

更多关于空间运算的详细内容可以参考官方文档

4.3.2 空间索引

NTS还支持空间索引功能,通过空间索引可以快速地进行空间查询和分析。以下是一个简单示例,展示了如何创建空间索引并利用索引进行空间查询:

using NetTopologySuite.Index.Strtree;// 创建一个 R 树空间索引
STRtree spatialIndex = new STRtree();// 将几何对象添加到空间索引中
spatialIndex.Insert(geometry1.EnvelopeInternal, geometry1);
spatialIndex.Insert(geometry2.EnvelopeInternal, geometry2);// 查询指定范围内的几何对象
Envelope searchEnv = new Envelope(xmin, xmax, ymin, ymax);
IList result = spatialIndex.Query(searchEnv);

以上是对NetTopologySuite库的简要介绍,希望能够帮助你更好地了解和使用这个强大的空间数据操作库。

5. SharpMap:一个开源的地理信息系统库

5.1 简介

SharpMap 是一个用于处理空间数据的开源地理信息系统库。它提供了一系列的地图绘制和空间查询功能,可以帮助开发者构建基于地图的应用程序。

5.1.1 核心功能
  • 地图投影转换
  • 空间数据渲染
  • 空间查询
  • 数据格式转换
5.1.2 使用场景

SharpMap 可以被广泛用于各种地图相关应用的开发,如地理信息系统、位置服务、地图展示等领域。

5.2 安装与配置

5.2.1 安装指导

通过 NuGet 包管理器可以很方便地安装 SharpMap。在 Visual Studio 中创建一个新的项目,然后执行以下命令来安装 SharpMap:

Install-Package SharpMap
5.2.2 基本配置

配置 SharpMap 可以参考官方文档,主要包括设置地图投影、加载空间数据源等操作。

5.3 API 概览

5.3.1 地图绘制

使用 SharpMap 绘制地图非常简单。以下是一个基本的 C# 示例代码:

// 创建地图对象
var map = new Map(800, 600);// 添加图层
var layer = new SharpMap.Layers.VectorLayer("MyLayer");
layer.DataSource = new SharpMap.Data.Providers.ShapeFile("path_to_your_shapefile.shp", true);
map.Layers.Add(layer);// 设置地图范围
map.ZoomToExtents();// 渲染地图
var image = map.GetMap();

更多关于地图绘制的详细信息可以参考 官方文档

5.3.2 空间查询

SharpMap 提供了丰富的空间查询功能,以下是一个简单的空间查询示例:

// 创建数据源
var dataSource = new SharpMap.Data.Providers.ShapeFile("path_to_your_shapefile.shp");// 创建查询对象
var query = new SharpMap.Data.FeatureDataSet();// 执行空间查询
dataSource.ExecuteIntersectionQuery(spatialGeometry, query);

更多关于空间查询的详细信息可以参考 官方文档

以上是对 SharpMap 的简要介绍以及部分 API 的示例,你可以通过官方文档进一步了解该库的更多功能和用法。

6. GeoAPI:用于地理空间数据处理的接口库

6.1 简介

GeoAPI 是一个开源的地理信息系统工具包,用于处理地理空间数据。它提供了一组接口和方法,方便开发者对地理信息进行操作和管理。

6.1.1 核心功能

GeoAPI 主要提供了以下核心功能:

  • 地理空间数据的读取、写入和处理
  • 地理坐标系转换
  • 空间分析和查询
6.1.2 使用场景

GeoAPI 可以应用于许多领域,如地图绘制、位置服务、地理信息系统等。在需要处理地理空间数据的项目中,GeoAPI 提供了高效且可靠的解决方案。

6.2 安装与配置

6.2.1 安装指南

通过 NuGet 包管理器可以很方便地安装 GeoAPI。打开 Visual Studio 控制台,并执行以下命令:

Install-Package NetTopologySuite.IO.GeoAPI

更多安装方式和详细说明可以参考 GeoAPI GitHub 页面。

6.2.2 基本设置

完成安装后,在代码中引入 GeoAPI 的命名空间:

using GeoAPI.Geometries;
using GeoAPI.CoordinateSystems.Transformations;

6.3 API 概览

6.3.1 地理空间操作

GeoAPI 提供了一套完整的地理空间操作接口,可以进行点、线、面等几何对象的创建、编辑和计算。以下是一个简单的示例,创建一个点并计算其距离:

// 创建一个点
IPoint point1 = new Point(1, 2);
IPoint point2 = new Point(4, 6);// 计算两点之间的距离
double distance = point1.Distance(point2);
Console.WriteLine("两点之间的距禧:" + distance);
6.3.2 地理坐标转换

GeoAPI 支持不同地理坐标系之间的转换操作。以下示例将一个 WGS84 坐标系下的经纬度点转换为 Web Mercator 投影坐标系下的点:

ICoordinateTransformationFactory factory = new CoordinateTransformationFactory();
ICoordinateSystem wgs84 = GeographicCoordinateSystem.WGS84;
ICoordinateSystem webMercator = ProjectedCoordinateSystem.WebMercator;ICoordinateTransformation transformation = factory.CreateFromCoordinateSystems(wgs84, webMercator);IPoint wgs84Point = new Point(-118, 34); // 经度-118,纬度34
IPoint webMercatorPoint = transformation.MathTransform.Transform(wgs84Point);Console.WriteLine("转换后的 Web Mercator 坐标:" + webMercatorPoint.X + ", " + webMercatorPoint.Y);

以上是基于 GeoAPI 的简单示例,更多的 API 和操作可以参考 GeoAPI 文档。

总结

本文介绍了六个与地理信息系统相关的软件套件和库,涵盖了从地图创建、数据分析到空间查询、地理坐标转换等多个方面。ArcGIS作为一个全面的地理信息系统软件套件,提供强大的地图创建和数据分析功能;PostGIS则是一个为PostgreSQL数据库提供空间数据管理的扩展,适用于需要地理查询的场景;ProjNet专注于地理空间数据处理,提供了丰富的投影转换功能;NetTopologySuite和SharpMap分别提供了空间数据操作和地理信息系统的开源库,可以满足不同需求下的地理空间处理;而GeoAPI则为地理空间数据处理提供了便捷的接口库。通过本文的介绍,读者可以更加深入地了解这些工具的特点和适用场景,为实际项目的选择和开发提供参考。

相关文章:

【C#生态园】探索地理信息系统软件套件与库:功能、API和应用

探索地理信息系统&#xff1a;软件套件与库详解 前言 地理信息系统&#xff08;GIS&#xff09;是当今世界上广泛使用的技术之一&#xff0c;它以空间数据为基础&#xff0c;能够提供丰富的地理信息分析和可视化功能。在GIS领域&#xff0c;有许多优秀的软件套件和库&#xf…...

Jupyter的使用分享

文章目录 碎碎念安装方法1.安装Anaconda方法2.通过库的安装方式 启动使用教程1.指定目录打开2.启动后的简单使用 小结 碎碎念 前情提示 之前与许多小伙伴交流的时候&#xff0c;发现大家对于pycharm更容易上手&#xff08;可能是比较好设置中文的原因&#xff09;&#xff0c;在…...

24龙信比赛复现

案情简介&#xff1a; 近期&#xff0c;某公安机关接到受害人报案&#xff1a;通过微信添加认识一位相亲中介客服&#xff0c;客服邀约其与“相亲”对象进行选妃&#xff0c;受害人上钩后&#xff0c;整个过程被涉案团伙录音录像&#xff0c;同时&#xff0c;该客服以有更多的…...

PHP反射机制

HP反射机制是PHP语言中的一个强大特性&#xff0c;它允许程序在运行时检查、获取和操作类、方法、属性等元素的信息。这一机制极大地提高了PHP代码的灵活性和可维护性&#xff0c;使得开发者能够在不修改原有代码结构的情况下&#xff0c;动态地了解并操作代码。以下是对PHP反射…...

使用阿里云试用资源快速部署web应用-dofaker为例

本文介绍使用阿里云的试用资源部署dofaker的方法&#xff0c;本教程主要作学习在阿里云部署web应用之用&#xff0c;部署好应用之后&#xff0c;可以在任何地点通过公网ip访问web应用。 一、创建云主机 登录阿里云账户之后&#xff0c;点击控制台&#xff1a; 点击云服务器EC…...

需求11——解决字段无法清空的两个小bug

目录 背景 第一个小bug——问题阐述 第一个小bug——解决方案 第二个小bug——问题阐述 第二个小bug——解决方案 总结 背景 已经写了一个上午的文章了&#xff0c;写完这篇就可以去吃饭了。这也是这几个月的我写的最后一个小bug文章&#xff0c;把这篇文章写完就搞定了…...

mysql学习教程,从入门到精通,SQL 创建索引(CREATE INDEX 语句)(35)

1、SQL 创建索引(CREATE INDEX 语句) 在SQL中&#xff0c;创建索引&#xff08;CREATE INDEX&#xff09;是一种用于提高数据库查询性能的方法。索引类似于书的目录&#xff0c;通过它可以更快地定位到表中的特定行。以下是一个创建索引的示例&#xff0c;以及对其各部分的解释…...

Pikachu-Cross-Site Scripting-DOM型xss_x

查看代码&#xff0c;输入的内容&#xff0c;通过get请求方式&#xff0c;用text 参数带过去&#xff1b; 获取text内容&#xff0c;赋值给xss 然后拼接到 dom 里&#xff1b;构造payload的关键语句&#xff1a; <a href"xss">就让往事都随风,都随风吧</a&…...

Pikachu-Cross-Site Scripting-xss之htmlspecialchars

首先输入各种字符 查看页面元素&#xff0c;可以看到这里对一些符号做了转换&#xff0c;但是 单引号等几个符号没处理&#xff1b; 从代码上看&#xff1b;使用单引号做闭合&#xff1b; 构造payload a onclickalert(11) 提交&#xff0c;得到xss攻击...

CSS基础中padding详解

文章目录 CSS基础中padding详解一、引言二、Padding基础1、Padding属性1.1、Padding的四个方向 2、Padding的值类型3、代码示例 三、Padding简写方法1、简写顺序2、简写规则3、代码示例 四、Padding对元素大小的影响1、解决方案1.1、Box-sizing属性1.2、计算实际宽度 五、总结 …...

OpenGL笔记十九之相机系统

OpenGL笔记十九之相机系统 —— 2024-10-02 晚上 bilibili赵新政老师的教程看后笔记 code review! 文章目录 OpenGL笔记十九之相机系统1.运行1.1.游戏相机1.2.轨迹球相机 2.游戏相机与轨迹球相机切换3.博主笔记本要运行需要更改的文件更改1:28_OpenGL_CameraSystem/applicat…...

P-Tuning v2:一种普遍有效的提示调整方法

人工智能咨询培训老师叶梓 转载标明出处 预训练语言模型通过微调&#xff08;fine-tuning&#xff09;来适应特定任务虽然效果显著&#xff0c;但存在训练成本高、参数存储量大等问题。为了解决这些问题&#xff0c;清华大学的研究者们提出了一种名为P-Tuning v2的提示调整&am…...

微信小程序启动不起来,报错凡是以~/包名/*.js路径的文件,都找不到,试过网上一切方法,最终居然这么解决的,【避坑】命运的齿轮开始转动

app.json "resolveAlias": {"~/*": "/*"},文件代码也没有问题&#xff0c;网上的方法试过来了&#xff0c;大模型AI也问过遍&#xff0c;熬夜到凌晨2点半&#xff0c;最不可思议的是居然是因为微信开发者工具版本的问题&#xff0c;我真的是笑死…...

C#串口温度读取

背景&#xff1a;每天学点&#xff0c;坚持 要安装好虚拟串口和modbus poll&#xff0c;方便调试&#xff08;相关资源在文末&#xff0c;也可以私信找我要&#xff09; 传感器部分使用的是达林科技的DL11B-MC-D1&#xff0c;当时42软妹币买的&#xff08;官网上面有这个传感…...

2.5 Spring Boot整合Spring MVC框架

今天&#xff0c;我将向大家介绍如何在Spring Boot中整合Spring MVC框架&#xff0c;并展示如何创建和测试控制层&#xff08;Controller&#xff09;。 首先&#xff0c;让我们简要回顾一下Spring MVC。Spring MVC是一个基于Servlet的MVC框架&#xff0c;它简单、侵入性小&am…...

Java 归并排序

归并排序&#xff08;Merge Sort&#xff09;是一种基于分治法的排序算法。它将一个大数组分成两个较小的子数组&#xff0c;分别对每个子数组进行排序&#xff0c;然后再将这两个已排序的子数组合并成一个完整的已排序数组。归并排序的时间复杂度为 O(n log n)&#xff0c;其中…...

20241008深度学习动手篇

文章目录 1.如何写一个神经网络进行训练?1.1创建一个子类,搭建你需要的神经网络结构1.2 加载数据集1.3 自定义一些指标评估函数1.4训练1.5 结果展示 2.参考文献 1.如何写一个神经网络进行训练? 1.1创建一个子类,搭建你需要的神经网络结构 # File: 241008LeNet.py # Author:…...

对序列化反序列化在项目中的使用优化

文章目录 序列化是什么&#xff1f;常见的序列化协议使用序列化反序列化序列化List反序列化List 查看源码&#xff0c;分析不足进行改善 序列化是什么&#xff1f; 如果我们需要持久化 Java 对象比如将 Java 对象保存在文件中&#xff0c;或者在网络传输 Java 对象&#xff0c…...

查看 git log的过程中看到 :说明日志输出可能超出屏幕大小,系统进入了分页模式

在命令行提示符中&#xff0c;通常 : 表示系统等待进一步的输入。如果你在查看 git log 的过程中看到 :&#xff0c;说明日志输出可能超出屏幕大小&#xff0c;系统进入了分页模式&#xff0c;默认使用 less 命令查看内容。 此时你可以&#xff1a; 按 q 退出日志查看。按 En…...

Linux--信号量详解

目录 一、信号量 1、信号量相关函数 2、多线程环形队列生产消费模型 3、实现代码 信号量是将整体的资源分割成多份使用 信号量本质是对资源的预定机制 一、信号量 1、信号量相关函数 创建信号量: sem_init: int sem_init(sem_t *sem, int pshared, unsigned int value); …...

基于算法竞赛的c++编程(28)结构体的进阶应用

结构体的嵌套与复杂数据组织 在C中&#xff0c;结构体可以嵌套使用&#xff0c;形成更复杂的数据结构。例如&#xff0c;可以通过嵌套结构体描述多层级数据关系&#xff1a; struct Address {string city;string street;int zipCode; };struct Employee {string name;int id;…...

C++_核心编程_多态案例二-制作饮品

#include <iostream> #include <string> using namespace std;/*制作饮品的大致流程为&#xff1a;煮水 - 冲泡 - 倒入杯中 - 加入辅料 利用多态技术实现本案例&#xff0c;提供抽象制作饮品基类&#xff0c;提供子类制作咖啡和茶叶*//*基类*/ class AbstractDr…...

Mybatis逆向工程,动态创建实体类、条件扩展类、Mapper接口、Mapper.xml映射文件

今天呢&#xff0c;博主的学习进度也是步入了Java Mybatis 框架&#xff0c;目前正在逐步杨帆旗航。 那么接下来就给大家出一期有关 Mybatis 逆向工程的教学&#xff0c;希望能对大家有所帮助&#xff0c;也特别欢迎大家指点不足之处&#xff0c;小生很乐意接受正确的建议&…...

智能在线客服平台:数字化时代企业连接用户的 AI 中枢

随着互联网技术的飞速发展&#xff0c;消费者期望能够随时随地与企业进行交流。在线客服平台作为连接企业与客户的重要桥梁&#xff0c;不仅优化了客户体验&#xff0c;还提升了企业的服务效率和市场竞争力。本文将探讨在线客服平台的重要性、技术进展、实际应用&#xff0c;并…...

C# 类和继承(抽象类)

抽象类 抽象类是指设计为被继承的类。抽象类只能被用作其他类的基类。 不能创建抽象类的实例。抽象类使用abstract修饰符声明。 抽象类可以包含抽象成员或普通的非抽象成员。抽象类的成员可以是抽象成员和普通带 实现的成员的任意组合。抽象类自己可以派生自另一个抽象类。例…...

什么?连接服务器也能可视化显示界面?:基于X11 Forwarding + CentOS + MobaXterm实战指南

文章目录 什么是X11?环境准备实战步骤1️⃣ 服务器端配置(CentOS)2️⃣ 客户端配置(MobaXterm)3️⃣ 验证X11 Forwarding4️⃣ 运行自定义GUI程序(Python示例)5️⃣ 成功效果![在这里插入图片描述](https://i-blog.csdnimg.cn/direct/55aefaea8a9f477e86d065227851fe3d.pn…...

MySQL用户和授权

开放MySQL白名单 可以通过iptables-save命令确认对应客户端ip是否可以访问MySQL服务&#xff1a; test: # iptables-save | grep 3306 -A mp_srv_whitelist -s 172.16.14.102/32 -p tcp -m tcp --dport 3306 -j ACCEPT -A mp_srv_whitelist -s 172.16.4.16/32 -p tcp -m tcp -…...

学校时钟系统,标准考场时钟系统,AI亮相2025高考,赛思时钟系统为教育公平筑起“精准防线”

2025年#高考 将在近日拉开帷幕&#xff0c;#AI 监考一度冲上热搜。当AI深度融入高考&#xff0c;#时间同步 不再是辅助功能&#xff0c;而是决定AI监考系统成败的“生命线”。 AI亮相2025高考&#xff0c;40种异常行为0.5秒精准识别 2025年高考即将拉开帷幕&#xff0c;江西、…...

Java编程之桥接模式

定义 桥接模式&#xff08;Bridge Pattern&#xff09;属于结构型设计模式&#xff0c;它的核心意图是将抽象部分与实现部分分离&#xff0c;使它们可以独立地变化。这种模式通过组合关系来替代继承关系&#xff0c;从而降低了抽象和实现这两个可变维度之间的耦合度。 用例子…...

「全栈技术解析」推客小程序系统开发:从架构设计到裂变增长的完整解决方案

在移动互联网营销竞争白热化的当下&#xff0c;推客小程序系统凭借其裂变传播、精准营销等特性&#xff0c;成为企业抢占市场的利器。本文将深度解析推客小程序系统开发的核心技术与实现路径&#xff0c;助力开发者打造具有市场竞争力的营销工具。​ 一、系统核心功能架构&…...