30个最常用的空间SQL用例

news2024/11/23 21:19:52

在开始使用空间 SQL 时,至少对我而言,最大的挑战之一是拥有一个快速简便的参考,以将你当前的 GIS 工作流转换为 SQL。 有许多令人惊叹的资源可以扩展这方面的知识,但本指南旨在成为一本真正简单的食谱,以开始将你当前的工作流转换为空间 SQL。

在这里插入图片描述

推荐:用 NSDT设计器 快速搭建可编程3D场景。

有几点需要注意:

  • 我将为 PostGIS 和通用数据仓库编写 SQL 代码
  • 并非每个数据仓库都支持投影——例如,BigQuery 和 Snowflake 仅支持 WGS 84 SRID 4326
  • 本指南于 2022 年 2 月发布,并将根据需要进行更新

1、几何图形

使用空间SQL可以创建2D/3D几何图形,或者查询几何体的属性。

1.1从纬度/经度对创建点几何

此查询将从包含纬度和经度值的数字列创建几何体。

# PostGIS

SELECT
ST_SetSRID(ST_MakePoint(lng, lat), 4326) as point_geom
FROM table

# BigQuery

SELECT
ST_GEOGPOINT(lng, lat) as point_geom
FROM table

# Snowflake and Redshift

SELECT
ST_MakePoint(lng, lat) as point_geom
FROM table

1.2 从 Well Known Text 创建几何图形

与上面类似,这将从 WKT 字符串创建一个几何图形:

# PostGIS, Redshift

SELECT
ST_GeomFromText('POINT(-71.064544 42.28787)', 4326) as geom
FROM table

# BigQuery

SELECT
ST_GEOGFROMTEXT('POINT(-71.064544 42.28787)') as geom
FROM table

# Snowflake

SELECT
ST_GEOGFROMWKT('POINT(-71.064544 42.28787)') as geom
FROM table

1.3 修改数据的投影

可以使用一个简单的函数将你的数据重新投影到一个使用此查询的新投影:

# PostGIS and Redshift

SELECT
ST_Transform(geom, 4326) as geom
FROM table

1.4 获取几何体经纬度

使用点几何,可以将纬度和经度提取为数值:

# PostGIS, BigQuery, Snowflake, and Redshift

SELECT
ST_X(geom) as longitude,
ST_Y(geom) as latitude
FROM table

2、测量

使用空间SQL可以对几何体进行测量。

2.1 计算多边形的面积

求多边形的面积(以平方米为单位)

# PostGIS, BigQuery, Snowflake, and Redshift

SELECT
ST_Area(geom) as area
FROM table

2.2 计算多边形的周长

与上面类似,但多边形的周长以米为单位

# PostGIS, BigQuery, Snowflake, and Redshift

SELECT
ST_Perimeter(geom) as area
FROM table

2.3 计算一条线的长度

计算一条线的长度(以米为单位)

# PostGIS, BigQuery, Snowflake, and Redshift

SELECT
ST_Length(geom) as length
FROM table

2.4 计算几何体之间的距离

返回两个几何之间的距离(以米为单位)。 每个不同的函数在使用球体或曲面地球计算时都有不同的签名,因此请务必在这种情况下检查文档。

# PostGIS and BigQuery

SELECT
ST_Distance(geom_1, geom_2) as distance
FROM table

2.5 计算两个几何体之间的最短距离

给定两个几何图形,找到几何图形 2 上最接近几何图形 1 的点。该函数将返回一个新点,表示第二个几何图形上与第一个几何图形的最近点。

# PostGIS and BigQuery

SELECT
ST_ClosestPoint(geom_1, geom_2) as closest_point
FROM table

3、几何变换

使用空间SQL可以对几何体进行变换操作。

3.1 在几何体周围创建缓冲区

在几何体周围创建一个缓冲区,它返回一个新的几何体。 下面函数中的数字是缓冲区的距离(以米为单位)。

# PostGIS, BigQuery, and Redshift

SELECT
ST_Buffer(geom, 100) as closest_point
FROM table

3.2 获取多边形或线的质心

如果你想找到一个几何体的质心,你可以使用这个查询来返回一个几何体的质心点:

# PostGIS, BigQuery, Snowflake, and Redshift

SELECT
ST_Centroid(geom) as centroid
FROM table

3.3 创建凹包或凸包

可以从一个几何体或一组几何体创建凹包或凸包,这将返回一个新的几何体:

# PostGIS, BigQuery, and Redshift

SELECT
ST_ConvexHull(geom) as convex_hull
FROM table

SELECT
ST_ConcaveHull(geom) as convex_hull
FROM table

还可以通过对几何图形进行分组来做到这一点:

# ST_Collect will collect the matching geometries together into a GeometryCollection

SELECT 
ST_ConvexHull(ST_Collect(geom)) as convex_hull,
category
FROM table
GROUP BY category

3.4 合并几何体

如果你想合并你的几何图形,使用 ST_Union 返回一个新的几何图形:

# PostGIS and BigQuery

SELECT
ST_Union(geom) as geom,
category
FROM table
GROUP BY category

3.5 创建 Voronoi 多边形

围绕你的几何创建 Voronoi 多边形,返回新的几何体:

# PostGIS

SELECT
ST_VoronoiPolygons(geom) as voronoi_polygons
FROM table

3.6 查找交叉点的结果多边形

在 GIS 中通常称为剪切(Clip),使用此函数返回两个几何图形的交叉区域:

# PostGIS, BigQuery, Redshift, and Snowflake

SELECT
ST_Intersection(geom_1, geom_2) as intersection
FROM table

或者,如果你想查找几何关系船的剩余部分,可以使用 ST_Difference:

# PostGIS, BigQuery, Redshift, and Snowflake

SELECT
ST_Difference(geom_1, geom_2) as intersection
FROM table

4、空间关系

使用空间SQL可以查询几何体之间的空间关系。

4.1 查找一定距离内的几何图形

在另一个几何体的一定距离内查找几何体,常用于聚合查询或 WHERE 子句:

# PostGIS, BigQuery, Redshift, and Snowflake

SELECT
*
FROM table
WHERE ST_DWithin(
	geom_1, 
	ST_GeomFromText('POINT(-73.9895258 40.7413529)',4326),
	1000)

4.2 评估空间关系

查看两个几何图形是否重叠、接触、交叉、相交、包含等(或评估空间关系)。这是一个更复杂的函数,因为有几个不同的函数来评估空间关系,每个函数之间都有细微差别。 确保检查你正在使用的数据库或数据仓库的文档,因为它们可能会有所不同,或者可能具有不同的容差。

以下是 PostGIS 空间关系的核心功能,可以在此处找到更多详细信息。 此外,每个函数都会根据空间关系的结果返回一个布尔值 (true/false),我们可以使用几种方法(更多内容见下文)。

  • ST_Equals——如果两个几何完全相等则返回真
  • ST_Intersects——如果两个几何图形共享任何公共空间,则返回 true
  • ST_Disjoint – 如果两个几何图形不共享任何空间,则返回 true,或者与ST_intersects 相反
  • ST_Crosses – 如果几何图形有一些但不是全部的共同内部点,则返回 true。更详细地说,“如果交集产生的几何尺寸比两个源几何的最大尺寸小一,并且交集在两个源几何的内部,则返回 true”。如果几何相交但相交结果少一维(或者它一次穿过相交的几何),它将返回 true。 适用于多点/多边形、多点/线串、线串/线串、线串/多边形和线串/多多边形比较。
  • ST_Overlaps – 如果两个几何图形在空间上重叠或相交但一个不完全包含另一个,则返回 true
  • ST_Touches——如果一个几何体接触另一个几何体,但不与内部相交,则返回真
  • ST_Within – 如果第一个几何完全在第二个几何内,则返回 true
  • ST_Contains – 如果第二个几何完全包含在第一个几何中(与 ST_Within 相反),则返回 true
# PostGIS, BigQuery, Redshift, and Snowflake

SELECT
ST_Intersects(geom_1, geom_2) as intersects
FROM table

5、其他功能

空间SQL可以完成的其他功能,包括简化等。

5.1简化几何体

如果你想简化一个几何图形,你可以使用这些函数来简化和返回新的几何图形。 请注意,有些功能不会保留拓扑(或接触线/关系),但下面的功能会保留。 下面的数字是以米为单位的变化容差。

# PostGIS

SELECT
ST_SimplifyPreserveTopology(geom, 1) as geom
FROM table

# PostGIS, BigQuery, Redshift, and Snowflake

SELECT
ST_Simplify(geom, 1) as geom
FROM table

5.2 创建随机点

在多边形内生成 N 个随机点。 你可以指定编号或使用表格中的数据(如下图所示)。 请记住,每个函数都会返回不同的东西(PostGIS 返回一个多点,BigQuery 返回一个数组)所以如果你想将每个点提取到它自己的一行中,你可能需要使用其他函数:

# PostGIS

SELECT
ST_GeneratePoints(geom, number_column) as geom
FROM table

# BigQuery

WITH point_lists AS (
  SELECT `carto-un`.carto.ST_GENERATEPOINTS(geom, number_column) AS points
  FROM table
)
SELECT points FROM point_lists CROSS JOIN point_lists.points

5.3 点的聚类

通过创建几何空间集群来分析您的数据。 有两种方法,DBSCAN 和 KMeans,可用于执行此操作。 每个函数将为每行所属的簇返回一个数字,它也是一个窗口函数,因此它在这里也使用 OVER() 操作:

# PostGIS and BigQuery

SELECT
geom,
ST_ClusterDBSCAN(geom, desired_distance, min_geoms_per_cluster) OVER() as cluster_id
FROM table
# PostGIS and BigQuery

SELECT
geom,
ST_ClusterKMeans(geom, number_of_clusters) OVER() as cluster_id
FROM table

6、如何使用空间函数

有许多方法可以使用空间函数,根据你的需要,可以通过几种方式利用这些函数。 这些只是一些示例,但是相当常见的用例。

6.1 单几何体

首先,可以针对单个几何图形查询表中的其他行:

SELECT
ST_Distance(
	geom,
	ST_GeomFromText('POINT(-73.9895258 40.7413529)')) as distance
FROM table

6.2 同数据表

你还可以与同一个表中的值进行比较——此示例使用子查询来说明它。

SELECT
ST_Distance(
	geom,
	(SELECT geom FROM table WHERE id = 1)) as distance
FROM table
6.3 WHERE 子句
也可以在 WHERE 子句中使用空间函数来限制结果:

SELECT
*
FROM table
WHERE ST_Distance(
	geom,
	(SELECT geom FROM table WHERE id = 1)) < 100

6.4 连接

连接(Join)还用于使用空间函数作为条件连接两个表,通常用于聚合和空间连接:

SELECT
a.id,
COUNT(b.id) as count
FROM table a
JOIN other_table b
ON ST_Contains(a.geom, b.geom)
GROUP BY a.id

6.5 交叉连接

交叉连接有多种使用方式,但本质上是根据另一个表的值评估一个表的每个值。 它们还可以用于执行一些更复杂的“批量循环连接”,我们将在下面详细介绍。

SELECT
ST_Distance(a.geom, b.geom) as distance
a.id as id_one,
b.id as id_two
FROM table a, other_table b

6.6 子查询

子查询,如上所示,可以让你从其他表中检索特定值或聚合:

SELECT
a.id,
(SELECT COUNT(id) FROM table WHERE ST_DWithin(a.geom, geom, 400)) as within_400m
FROM other_table a

6.7 聚合

我们上面的连接示例说明了如何使用聚合,但还有许多其他例子。 查看这篇文章了解更多细节和用例。

7、其他复杂或特定的功能

使用空间SQL还可以完成一些复杂的功能。

7.1 H3 Cells

CARTO Spatial Extension 提供创建和管理 H3 单元和其他功能的功能。 此查询将在特定几何图形的边界内创建 H3 单元格(使用 BigQuery 表语法):

WITH
  mn AS (
  SELECT
    geom
  FROM
     project.dataset.table
  WHERE
    name = 'Minnesota')

SELECT
  h3,
  `carto-un`.carto.H3_BOUNDARY(h3) AS geom
FROM (
	SELECT `carto-un`.carto.H3_POLYFILL(geom, 5) AS cells
  FROM 
    mn),
UNNEST(cells) AS h3

7.2 创建地图瓦片

还可以在空间 SQL 中创建地图图块。 这个视频详细介绍了如何使用 PostGIS 和 pg_tileserv 中的一些函数来做到这一点。

还可以使用 CARTO Spatial Extension 在各种数据仓库中执行此操作,此处在 BigQuery 中进行了说明:

CALL `carto-un`.carto.CREATE_TILESET(
  R'''(
    SELECT geom, type
    FROM `carto-do-public-data.natural_earth.geography_glo_roads_410`
  )
  ''',
  R'''`cartobq.maps.natural_earth_roads`''',
  STRUCT(
    "Tileset name" AS name,
    "Tileset description" AS description,
    NULL AS legend,
    0 AS zoom_min,
    10 AS zoom_max,
    "geom" AS geom_column_name,
    NULL AS zoom_min_column,
    NULL AS zoom_max_column,
    1024 AS max_tile_size_kb,
    "RAND() DESC" AS tile_feature_order,
    true AS drop_duplicates,
    R'''
      "custom_metadata": {
        "version": "1.0.0",
        "layer": "layer1"
      }
    ''' AS extra_metadata
  )
);

7.3 使用道路或其他网络进行路由

PgRouting 在 PostGIS 中提供路由功能,可以使用一些简单的函数计算路由。 可以在这个教程中找到更多信息。

SELECT * FROM pgr_dijkstra(
    '
      SELECT gid AS id,
        source,
        target,
        length AS cost
      FROM ways
    ',
    1,
    2,
    directed := false);

可以使用 CARTO Analytics Toolbox 来完成示例。 创建网络后,可以计算最短路径:

CALL `carto-un`.carto.FIND_SHORTEST_PATH_FROM_NETWORK_TABLE(
  "mydataset.network_table",
  "mydataset.shortest_path_table",
  "ST_GEOGPOINT(-74.0, 40.0)",
  "ST_GEOGPOINT(-75.0, 41.0)"
);

8、示例codebook

这里列出一些空间SQL的示例codebook。

8.1 简单最近邻

一个很常见的问题,解决一个特定值的最近邻,增加 LIMIT 会增加更多的结果:

# PostGIS

SELECT id, (SELECT geom FROM another_table LIMIT 1) <-> geom AS distance
FROM table
ORDER BY distance
LIMIT 1
# BigQuery

SELECT
  a.id,
  ARRAY_AGG(b.geoid ORDER BY st_distance(a.geom,
      b.geom) ASC LIMIT 1)[SAFE_OFFSET(0)] as id,
  ARRAY_AGG(st_distance(a.geom,
      b.geom) ORDER BY st_distance(a.geom,
      b.geom) ASC LIMIT 1)[SAFE_OFFSET(0)] as dist

FROM
  project.dataset.table_1 a
CROSS JOIN project.dataset.table_2 b
GROUP BY a.id

8.2 计算多边形之间的重叠百分比

计算多边形与 ST_Intersection 和 ST_Area 的重叠百分比。 可以对表中每一行的一个多边形或 where 子句中的一个多边形执行此操作,以查找相交一定数量的重叠区域。

# PostGIS

WITH a AS (SELECT geom FROM table WHERE id = 1)

SELECT 
ST_Area(ST_Intersection(geom, (SELECT geom FROM a))/ST_Area(geom) AS overlap
FROM table
ORDER BY overlap
# PostGIS

SELECT
COUNT(a.column),
b.id,
b.geom
FROM table b
LEFT JOIN table_2 a 
ON ST_Intersects(a.geom, b.geom)
WHERE ST_Area(ST_Intersection(a.geom, b.geom)/ST_Area(geom) > .5

8.3 求两个不接触多边形上最近两点之间的距离

PostGIS:

# PostGIS

SELECT
  ST_Distance(ST_ClosestPoint(a.geom,
      b.geom),
    ST_ClosestPoint(b.geom,
      a.geom)) AS distance,
	ST_MakeLine(ST_ClosestPoint(a.geom,
      b.geom),
    ST_ClosestPoint(b.geom,
      a.geom)) AS geom,
  a.objectid
FROM
  table a
CROSS JOIN LATERAL (
  SELECT
    geom
  FROM
    table_2
  WHERE
    ST_Disjoint(a.geom,
      geom)
	AND a.objectid != objectid
  ORDER BY
    ST_Distance(geom,
      a.geom) ASC LIMIT 1) b

BigQuery:

# BigQuery

SELECT
  ST_MakeLine(ST_ClosestPoint(a.geom,
      b.geom),
    ST_ClosestPoint(b.geom,
      a.geom)) AS geom,
  ST_Distance(ST_ClosestPoint(a.geom,
      b.geom),
    ST_ClosestPoint(b.geom,
      a.geom)) AS geom,
  a.id
FROM
  table_one a
LEFT JOIN (
  SELECT
    one.geom,
    two.id,
    ROW_NUMBER() OVER (PARTITION BY two.id ORDER BY ST_Distance(one.geom, two.geom) ASC) AS rank
  FROM
    table_one one,
    table_two two
  WHERE
    ST_Disjoint(one.geom,
      two.geom)
  ORDER BY
    ST_Distance(one.geom,
      two.geom) ASC ) b
USING
  (id)
WHERE
  b.rank = 1

8.4 在几何体周围创建缓冲区并从缓冲区中裁剪出区域

获取一个几何图形,创建一个缓冲区,然后从缓冲区中裁剪出另一层的区域。

# PostGIS

SELECT 
ST_Difference(
   ST_Union(
       ST_Buffer(a.geom, 1609)
     ), 
  ST_Union(b.geom))
  as clipped_geom
FROM table a
LEFT JOIN table_2 b
ON ST_Intersects(a.geom, b.geom)

# BigQuery

SELECT 
ST_Difference(
   ST_Union_Agg(
       ST_Buffer(a.geom, 1609)
     ), 
  ST_Union(b.geom))
  as clipped_geom
FROM table a
LEFT JOIN table_2 b
ON ST_Intersects(a.geom, b.geom)

8.5 批量最近邻加入

通过查找从一个表到另一个表中所有行的最近邻居,将两个表连接在一起。 灵感来自 Paul Ramsey 的这篇文章。

# PostGIS

SELECT
  a.geom,
  b.name,
  ST_Distance(a.geom, b.geom) AS distance
FROM
  table a
CROSS JOIN LATERAL
  (SELECT name, geom
   FROM table_2 b
   ORDER BY
     a.geom <--> geom
   LIMIT 1) b
# BigQuery

SELECT
  a.id,
  ARRAY_AGG(b.geoid ORDER BY st_distance(a.geom,
      b.geom) ASC LIMIT 1)[SAFE_OFFSET(0)] as id,
  ARRAY_AGG(st_distance(a.geom,
      b.geom) ORDER BY st_distance(a.geom,
      b.geom) ASC LIMIT 1)[SAFE_OFFSET(0)] as dist

FROM
  table_one a
CROSS JOIN table_two b

GROUP BY a.id

8.6 计算相邻多边形中值的平均值

对于每个多边形,找到其相邻多边形的平均值(或其他聚合值)。

# BigQuery

WITH
  one AS (
  SELECT
    a.name,
    SUM(b.value) AS total
  FROM
    table a
  LEFT JOIN
    table_2 b
  ON
    ST_Touches(b.geom, a.geom)
  GROUP BY
    a.name)

SELECT
  one.*,
  b.geom
FROM
  one
JOIN
  table b
USING
  (name)
# PostGIS

SELECT
  a.geom,
  a.name,
  SUM(b.value) as total
FROM
  table a
CROSS JOIN LATERAL
  (SELECT value
   FROM table_two
   WHERE 
     ST_Intersects(geom, a.geom)
  ) AS b
GROUP BY a.name, a.geom

8.6 将点聚合到 H3 单元格中

# BigQuery

WITH
  data AS (
  SELECT
    `carto-un`.carto.H3_FROMGEOGPOINT(geog, 4) AS h3id,
    COUNT(*) AS agg_total
  FROM `cartobq.docs.starbucks_locations_usa`
  GROUP BY h3id
  )
SELECT
  h3id, 
  agg_total,
  `carto-un`.carto.H3_BOUNDARY(h3id) AS geom
FROM
  data

8.7 逐行排列最近的 N 个邻居

对于一个表中的每一行,创建一组新的 N 行,其中 N 个最近的邻居具有排名。 简而言之,评估表中的每一行都将根据你要查找的邻居数量返回 N 个新行。

# PostGIS

SELECT
	a.id, 
  t.geom,
  ST_Distance(t.geom, a.geom) as closest_dist
FROM a
CROSS JOIN LATERAL (
	SELECT *,
	ROW_NUMBER() OVER(ORDER BY a.geom <-> geom) AS rank
  FROM seattle_parks
  LIMIT 5
	) as t
# BigQuery

SELECT
  b.id,
  a.station_id,
  a.rank,
  a.name,
  a.dist
FROM
  table b
LEFT JOIN (
  SELECT
    b.station_id,
    b.name,
    ST_Distance(c.geom, b.geom) AS dist,
    b.id,
    ROW_NUMBER() OVER (PARTITION BY c.id ORDER BY ST_Distance(c.geom, b.geom) ASC) AS rank
  FROM
    table b,
    table_2 h ) a
USING
  (id)
WHERE
  rank < 4

原文链接:Top 31 Spatial SQL用例 — BimAnt

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/508639.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

从零开始的强化学习入门学习路线

强化学习是机器学习领域中的一个分支&#xff0c;它是指智能体通过与环境的交互来学习如何采取最佳行动以最大化奖励信号的过程。强化学习在许多领域都有广泛的应用&#xff0c;如游戏、自动驾驶和机器人控制等。如果你对强化学习感兴趣&#xff0c;下面是一个入门强化学习的学…

SequoiaDB分布式数据库2023.4月刊

本月看点速览 赋能产业升级&#xff0c;荣获新睿之星 聚焦金融&#xff0c;进一步探索非结构化数据价值释放 再获肯定&#xff0c;入选2023年中国最佳信创厂商入围名单 青杉计划2023已开启&#xff0c;一起攀登更高的“杉” 赋能产业升级&#xff0c;荣获新睿之星 4月18日…

PyTorch典型函数之gather

PyTorch典型函数之gather 作用描述函数详解典型应用场景(1) 深度强化学习中计算损失函数 参考链接 作用描述 如上图所示&#xff0c;假如我们有一个Tensor A&#xff08;图左&#xff09;&#xff0c;要从A中提取一部分元素组成Tensor B&#xff08;图右&#xff09;&#xff0…

7.外观模式C++用法示例

外观模式 一.外观模式1.原理2.特点3.外观模式与装饰器模式的异同4.应用场景C程序示例 一.外观模式 外观模式&#xff08;Facade Pattern&#xff09;是一种结构型设计模式&#xff0c;它提供了一个简单的接口&#xff0c;隐藏了一个或多个复杂的子系统的复杂性&#xff0c;并使…

图嵌入表示学习—Node Embeddings随机游走

Random Walk Approaches for Node Embeddings 一、随机游走基本概念 想象一个醉汉在图中随机的行走&#xff0c;其中走过的节点路径就是一个随机游走序列。 随机行走可以采取不同的策略&#xff0c;如行走的方向、每次行走的长度等。 二、图机器学习与NLP的关系 从图与NLP的…

posix线程的优先级测试

如果创建的线程不够多&#xff0c;有些问题是体现不出来的。 优先级打印&#xff1a; 测试目的&#xff1a;输出三种调度模式下的最大优先级和最小优先级 #include <stdio.h> #include <sys/socket.h> #include <sys/types.h> #include <fcntl.h> #…

Kubernetes_容器网络_01_Docker网络原理(二)

文章目录 一、前言二、被隔离的Docker容器三、网桥Bridge四、VethPair网络对五、统一宿主机上的两个Container容器通信六、宿主机访问其上的容器七、宿主机上的容器访问另一个宿主机八、尾声 一、前言 二、被隔离的Docker容器 Linux 网络&#xff0c;就包括&#xff1a;网卡&…

技术选型对比- RPC(Feign VS Dubbo)

协议 Dubbo 支持多传输协议: Dubbo、Rmi、http,可灵活配置。默认的Dubbo协议&#xff1a;利用Netty&#xff0c;TCP传输&#xff0c;单一、异步、长连接&#xff0c;适合数据量小(传送数据小&#xff0c;不然影响带宽&#xff0c;响应速度)、高并发和服务提供者远远少于消费者…

UnityWebGL+阿里云服务器+Apache完成项目搭建展示

一、服务器相关 Step1:租借一台阿里云服务器 我自己租借了一台北京的ECS服务器&#xff0c;有免费一年的活动&#xff0c;1 vCPU 2 GiB&#xff0c;我自己选择的Ubuntu系统&#xff0c;也可以选择Windows系统 Step2:进入远程连接 进入自己的服务器实例后&#xff0c;点击远程…

vue+elementui+nodejs机票航空飞机航班查询与推荐

语言 node.js 框架&#xff1a;Express 前端:Vue.js 数据库&#xff1a;mysql 数据库工具&#xff1a;Navicat 开发软件&#xff1a;VScode )本系统主要是为旅客提供更为便利的机票预定方式&#xff0c;同时提高民航的预定机票的工作效率。通过网络平台实现信息化和网络化&am…

关于Android的性能优化,主要是针对哪些方面的问题进行优化

前言 我们在开发Android的时候&#xff0c;经常会遇到一些性能问题&#xff1b;例如&#xff1a;卡顿、无响应&#xff0c;崩溃等&#xff0c;当然&#xff0c;这些问题为我们可以从日志来进行追踪&#xff0c;尽可能避免此类问题的发生&#xff0c;要解决这些问题&#xff0c…

mysql从零开始(05)----锁

全局锁 使用 # 启用全局锁 flush tables with read lock # 释放全局锁 unlock tables开启全局锁后&#xff0c;整个数据库就处于只读状态了&#xff0c;这种状态下&#xff0c;对数据的增删改操作、对表结构的更改操作都会被阻塞。 另外&#xff0c;当会话断开&#xff0c;全…

【1015. 可被 K 整除的最小整数】

来源&#xff1a;力扣&#xff08;LeetCode&#xff09; 描述&#xff1a; 给定正整数 k &#xff0c;你需要找出可以被 k 整除的、仅包含数字 1 的最 小 正整数 n 的长度。 返回 n 的长度。如果不存在这样的 n &#xff0c;就返回 -1。 注意&#xff1a; n 不符合 64 位带…

手把手教你在winform中将文本或文件路径拖到控件中

文章目录 前言博主履历介绍&#xff1a;一、将txt文件的所有内容复制到 RichTextBox中二、将txt文件的一行内容移动到RichTextBox中三、将多个文件的全路径复制到 RichTextBox中四 、源码1、[Winform从入门到精通&#xff08;1&#xff09;——&#xff08;如何年入30万&#x…

「MIAOYUN」:降本增效,赋能传统企业数字化云原生转型 | 36kr 项目精选

作为新经济综合服务平台第一品牌&#xff0c;36氪自2019年落地四川站以来&#xff0c;不断通过新锐、深度的商业报道&#xff0c;陪跑、支持四川的新经济产业。通过挖掘本土优质项目&#xff0c;36氪四川帮助企业链接更多资源&#xff0c;助力企业成长&#xff0c;促进行业发展…

分布式系统概念和设计——命名服务设计和落地经验

分布式系统概念和设计 通过命名服务&#xff0c;客户进程可以根据名字获取资源或对象的地址等属性。 被命名的实体可以是多种类型&#xff0c;并且可由不同的服务管理。 命名服务 命名是一个分布式系统中的非常基础的问题&#xff0c;名字在分布式系统中代表了广泛的资源&#…

C语言:指针求解鸡兔同笼问题

题目&#xff1a;鸡兔同笼问题 要求&#xff1a;使用自定义函数void calc(int h, int f,int *c,int *r) 求解鸡兔同笼问题。 h 表示总的头数&#xff0c;f 表示总的脚数。 例子&#xff1a; 输入&#xff1a; 5 16 输出&#xff1a; 2 3 分析&#xff1a; 在该代码中&a…

05-Docker安装Mysql、Redis、Tomcat

Docker 安装 Mysql 以安装 Mysql 5.7为例&#xff1a; docker pull mysql:5.7Mysql 单机 Mysql 5.7安装 启动 Mysql 容器&#xff0c;并配置容器卷映射&#xff1a; docker run -d -p 3306:3306 \--privilegedtrue \-v /app/mysql/log:/var/log/mysql \-v /app/mysql/data:…

ASP.NET Core MVC 从入门到精通之文件上传

随着技术的发展&#xff0c;ASP.NET Core MVC也推出了好长时间&#xff0c;经过不断的版本更新迭代&#xff0c;已经越来越完善&#xff0c;本系列文章主要讲解ASP.NET Core MVC开发B/S系统过程中所涉及到的相关内容&#xff0c;适用于初学者&#xff0c;在校毕业生&#xff0c…

VMware NSX-T Data Center 3.2.2.1 - 数据中心网络全栈虚拟化

请访问原文链接&#xff1a;https://sysin.org/blog/vmware-nsx-t-3/&#xff0c;查看最新版。原创作品&#xff0c;转载请保留出处。 作者主页&#xff1a;sysin.org VMware NSX-T Data Center 3.2.2.1 | 30 MAR 2023 | Build 21487560 VMware NSX-T Data Center 3.2.2 | 08 …