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

QGIS 将 Shapefile 导入 PostGIS 数据库

一、背景介绍:QGIS、PostgreSQL 和 PostGIS 的关系和用途

在开始动手操作之前,我们先简单了解一下 QGIS、PostgreSQL 和 PostGIS 之间的关系及其用途。

  • QGIS(Quantum GIS):一款开源免费的桌面地理信息系统(GIS)软件。它可以用来可视化和编辑空间数据(如点、线、面矢量数据和栅格影像),支持多种数据格式(如 Shapefile、GeoJSON、GeoPackage 等)和数据库(如 PostgreSQL、SQLite 等)。借助 QGIS,用户能够直观地在地图上查看数据、进行空间分析,以及通过插件扩展更多功能。
  • PostgreSQL:一个功能强大的开源关系型数据库管理系统。在默认情况下,PostgreSQL 处理常规的表格数据,但并不直接支持空间数据类型。
  • PostGIS:PostGIS 是 PostgreSQL 的空间数据库扩展(也可称作“插件”)。安装并在数据库中启用 PostGIS 后,PostgreSQL 就能够存储和查询空间数据。PostGIS提供了GeometryGeography 等空间数据类型,以及丰富的空间函数(例如距离计算、空间相交判断等),使得 PostgreSQL 成为完整的地理空间数据库。

三者的关系简单来说就是:PostgreSQL + PostGIS 提供了后端的空间数据存储和管理,而 QGIS 则是前端的可视化和编辑工具。我们可以使用 QGIS 来连接 PostGIS 数据库,方便地导入、导出和编辑空间数据。例如,我们可以先在 QGIS 中处理 Shapefile 等文件格式的数据,然后将其导入 PostgreSQL 数据库中的 PostGIS 表,以便集中管理、备份以及供多人或应用程序共享使用。

本篇博客将以一个名为 “场所.shp” 的 Shapefile 为例,演示如何使用 QGIS 将该 Shapefile 导入 PostgreSQL 数据库(已启用 PostGIS 扩展)中。过程中我们会涉及 坐标系转换(将数据转换为常用的 WGS84 地理坐标系 EPSG:4326),以及 常见问题 和解决技巧的分享,帮助初学者顺利完成从 Shapefile 到 PostGIS 的入库操作。

二、在 QGIS 中加载 Shapefile 文件

首先,需要在 QGIS 中打开我们要导入的 Shapefile 文件。本例中我们使用 场所.shp 文件。确保您已经安装并启动了 QGIS(本文以 QGIS 3.x 版本为例)。

加载 Shapefile 有多种方法,这里介绍两种简单方式:

  1. 通过数据源管理器加载:在 QGIS 主界面,点击菜单栏的“图层” -> “添加图层” -> “添加矢量图层”。在弹出的对话框中,点击“浏览”选择本地的 Shapefile 文件(.shp格式)。找到场所.shp并选中,随后点击“添加”将其加载到地图。
  2. 拖拽加载:直接将文件资源管理器中的 场所.shp 拖拽到 QGIS 窗口的图形画布或图层面板中,QGIS 也会自动加载该图层。

 

 无论采用哪种方式,成功加载后,您应该可以在 QGIS 的图层面板中看到一个名为“场所”的图层,并在地图画布上看到相应的地理要素。如果 Shapefile 包含属性数据,可以打开属性表查看,每条记录都代表一个“场所”的属性信息。

小提示:Shapefile 通常由多个文件组成(如.shp.shx.dbf, 以及描述坐标系的.prj文件等)。确保这些文件放在同一文件夹下且名称一致,这样 QGIS 才能正确读取空间几何和属性及坐标系信息。如果在加载时 QGIS 提示未找到坐标参考或出现乱码等问题,可能是缺少 .prj 文件(坐标系定义)或编码设置不正确,我们将在后面步骤解决这些问题。

三、查看并转换 Shapefile 的坐标系(CRS)

在将数据导入数据库之前,了解并统一坐标参考系(CRS)是非常重要的一步。坐标系不一致可能导致数据在不同平台上显示位置偏移,或者导入后与其他图层无法叠加。本例中,我们希望将数据使用常见的地理坐标系 WGS 84(EPSG:4326) ,这是一种全球通用的经纬度坐标系。

1. 查看当前坐标系:在 QGIS 中右键点击图层“场所”,选择“属性”(或者直接双击图层名称)。在图层属性窗口中,找到“源”或“信息”选项卡,可以查看该 Shapefile 图层的坐标参考系。如果 Shapefile 带有 .prj 文件,这里会显示坐标系的名称和 EPSG 代码。例如,可能显示为 CGCS2000 / Beijing_54 或 WGS 84 等。如果坐标系显示为“未知坐标系”或与预期不符,需要手动指定。您可以根据数据来源信息确定正确的坐标系,并在 QGIS 中右键图层选择“设置图层 CRS”来赋予正确的 CRS。

2. 转换坐标系到 WGS84 (EPSG:4326) :如果原始坐标系不是 WGS84,我们可以通过 QGIS 将其转换并保存为新的图层。最简单的方法是使用 QGIS 的导出功能:

  • 右键点击“场所”图层,选择“导出” -> “保存要素为... ”。将在弹出“另存为”对话框中对图层进行导出设置。
  • 在格式下拉菜单中选择 ESRI Shapefile(保持 Shapefile 格式)。在文件名处指定一个新文件名,例如 场所_WGS84.shp,以区别于原始文件。
  • **坐标参考系统(CRS)**一栏,点击选择目标坐标系。在弹出的坐标系选择窗口中,可以通过过滤搜索“WGS 84”或者直接输入 EPSG 编号“4326”。选中 EPSG:4326 – WGS 84 作为导出数据的目标坐标系。
  • 其他选项可保持默认,然后点击 “确定” 执行导出。

完成后,新导出的 场所_WGS84.shp 将会自动加载到 QGIS 中作为一个新图层。此时,我们就得到了一个使用 WGS84 坐标系的 Shapefile 图层。您可以再次查看其属性确认坐标系已经变为 EPSG:4326。接下来,我们会将这个转换好坐标系的图层导入到 PostGIS 数据库中。

说明:如果原始 Shapefile 已经是 WGS84 坐标系(EPSG:4326),则无需执行上述转换步骤,可直接使用原始图层进行后续导入。但了解如何检查 CRS 仍然非常重要。如果跳过转换,后续在导入时也可直接指定源和目标SRID一致为原始值。

四、配置 QGIS 与 PostgreSQL/PostGIS 数据库连接

在将 Shapefile 数据导入数据库之前,需要让 QGIS 连接上我们的 PostgreSQL 数据库,并确保该数据库中已经启用了 PostGIS 插件(扩展)。

1. 确认数据库启用 PostGIS:首先,在 PostgreSQL 数据库中安装并启用 PostGIS。通常您需要在目标数据库中执行 CREATE EXTENSION postgis; 来安装 PostGIS 扩展(若您的数据库服务尚未安装 PostGIS,可以通过包管理器或二进制安装,具体步骤本文不展开)。确保使用 QGIS 连接的目标数据库已经具备 PostGIS 功能,否则后续无法创建几何字段。

2. 新建 PostGIS 数据库连接:在 QGIS 主界面,点击菜单栏的“数据库” -> “DB管理器” 打开数据库管理器窗口。也可以在左侧“Browser(浏览)”面板中找到 PostGIS,右键选择“新建连接”。将会弹出“新建 PostGIS连接”对话框,需要填写数据库连接的相关参数:

  • 名称:为这次连接取一个名称(任意,便于识别,如“本地PostGIS”)。
  • 主机:数据库服务器地址,如果是本机安装的 PostgreSQL,可填 localhost 或 127.0.0.1
  • 端口:PostgreSQL 默认端口是 5432,如果您改动过请填写相应端口。
  • 数据库:填写要连接的数据库名称。
  • 用户名密码:填入连接数据库所需的账号凭证。确保该用户有在目标数据库中创建表的权限。

填好后可以点击“测试连接”按钮,若参数正确会提示连接成功。然后点击“确定”保存连接。:QGIS 新建PostGIS数据库连接界面

3. 检查连接:在 QGIS 的 DB管理器或浏览面板中,应该已经能看到刚刚保存的数据库连接名称。展开该连接,会列出其中的模式(Schema)和已有的表。如果没有看到内容,尝试双击连接名称以打开。如果仍有问题,请检查前述参数或数据库服务状态。

注意:确保连接的数据库已经启用 PostGIS 扩展(可在模式列表中看到 public.geometry_columns 等 PostGIS 系统表,或者通过SQL查询 SELECT postgis_full_version(); 测试)。如果未启用,需使用具有超级用户权限的账号登录数据库执行 CREATE EXTENSION postgis; 然后重新连接。

五、将 Shapefile 图层导出到 PostgreSQL/PostGIS 表

连接成功后,我们就可以通过 QGIS 将矢量图层导入数据库,创建一个 PostGIS 表来存储这些空间数据。接下来以我们之前加载的 场所_WGS84 图层为例,演示导入步骤。在 QGIS 中有多种入库方法,这里使用 DB管理器 提供的导入功能,界面友好且可配置选项较多:

  1. 打开 DB管理器 窗口(如果之前未打开的话,可通过“数据库”->“DB管理器”打开)。在左侧列表中找到我们刚建立的数据库连接,展开相应模式(schema),选中准备导入的目标模式名称(如public)。然后点击界面上的“导入图层或文件”按钮(有时显示为“Import Layer”)。这将弹出“导入矢量图层”对话框。

 2. 在导入对话框中,按照提示填写各项参数:

 

- **文件或图层**:选择要导入的数据源。如果先前已经将 Shapefile 加载到 QGIS,点击下拉框会看到当前项目中的图层列表,直接选择“场所_WGS84”图层即可;或者点击“...”(浏览)按钮,从文件系统选择未加载的 Shapefile 文件路径。 - **目标表**:指定导入后在数据库中的表位置和名称。包括 **目标模式**(如选择`public`)和 **表名称**。您可以沿用 Shapefile 的名字,例如输入表名为“**场所**”。如果使用中文表名,数据库将以带引号的标识符创建该表;或者您也可以改用拼音/英文名(如`places`)以避免后续SQL引用麻烦。**注意**表名不能与已存在的表重复,除非选中了替换选项。 - 其他选项(根据需要进行设置): - **主键**:选择一个字段作为新表的主键。如果 Shapefile 中有唯一标识字段,可在此下拉选择它;否则也可留空,让数据库自动生成一个默认的连续 id(QGIS 在不指定时通常会创建一个名为 `gid` 的自增主键列)。 - **几何字段名称**:默认是`geom`,表示空间几何列的名称。一般保持默认即可。 - **源 SRID 和目标 SRID**:这里显示源数据的坐标系 EPSG 编码,以及目标表希望使用的 SRID。对于我们转换后的 `场所_WGS84` 图层,源 SRID 应该是 4326;目标 SRID 也选择 4326(表示导入后在数据库中按 WGS84 存储)。如果您的源数据不是 4326,这里可以指定正确的源 SRID,并将目标 SRID设置为期望的值,QGIS 将在导入过程中帮你转换坐标。务必确保源SRID填写正确,否则可能出现位置偏差。 - **编码**:属性数据的文本编码,默认是 UTF-8。若 Shapefile 属性包含中文且在之前加载时出现乱码,可尝试在此选择相应编码(例如老旧 Shapefile 可能使用 GBK/GB2312 编码)。 - **如果表已存在,是否替换**:如目标表重名可选择覆盖它。谨慎使用,以免误删数据。 - **用单部件要素代替多部件**:若勾选,导入时会将 MultiPolygon/MultiLine 等多部件几何拆分为多个单独记录。一般保持不勾选,除非有特殊需要将多部件拆开。 - **字段名称转为小写**:勾选后,将自动把属性字段的名称转换为小写形式。这是推荐选项,因为 PostgreSQL 对大小写敏感,小写字段名使用和查询更方便(避免产生带引号的字段名)。 - **创建空间索引**:建议勾选。导入后将在几何列上创建空间索引,有利于提升后续空间查询的性能。

  1. 确认各项设置无误后,点击 OK(确定) 开始导入。QGIS 将执行将数据写入数据库的过程。根据数据量大小,耗时从几秒到几分钟不等。导入完成后若没有报错信息,表示操作成功。此时在 DB管理器的左侧数据库树中,可以看到新创建的表名称出现在目标模式下。

技巧:除了使用 DB管理器,“右键图层导出”也是一种快捷方法。在图层面板中右键 Shapefile 图层,选择“导出”->“保存为…”,在格式中选“PostGIS”,然后选择目标数据库连接和填表名也可完成导入。这种方式背后也是调用相同机制,但缺少部分高级选项配置。如果您需要精细控制导入细节,DB管理器的导入界面更直观。

六、验证导入成功(查看 PostGIS 表数据)

将 Shapefile 导入 PostGIS 数据库后,我们需要验证数据是否正确写入。可以通过 QGIS 自身的功能或数据库查询来进行验证:

  • 在 QGIS 中验证:如果刚才通过 DB管理器导入,导入完成后新表通常不会自动加载到地图上。我们可以手动将其加载进行查看。展开 QGIS 浏览面板中该数据库连接下的模式,找到刚刚导入的表(例如“场所”),右键选择“添加到画布”。这样 QGIS 会将数据库中的该表作为图层加载,您可以在地图上看到与原 Shapefile 相同的要素点/线/面。同时,可以打开其属性表,检查记录数是否与原 Shapefile 一致,属性内容是否完整无误。如果全部正常,说明导入成功。
  • 通过数据库管理器或 SQL 查询验证:在 QGIS 的 DB管理器中,您也可以直接执行 SQL 来检查数据。例如,点击上方的SQL图标打开 SQL窗口,运行类似 SELECT COUNT(*) FROM public."场所"; 的语句(如果表名有大写或中文请加引号),看返回的数量是否符合预期。此外,可以查询几何字段的空间参考 SELECT ST_SRID(geom) FROM public."场所" LIMIT 1; 来确认 SRID 是否正确为 4326,或查询几何类型 SELECT ST_GeometryType(geom) FROM public."场所" LIMIT 1; 验证几何类型(应匹配原始数据类型,如 POINT、LINESTRING、POLYGON 等)。这些查询也可在独立的数据库客户端如 PgAdmin 中执行。通过这些检查,可以进一步确保数据内容和空间信息完整无误。

 如果以上查看都正常,那么恭喜您,已经成功地将 Shapefile 数据发布到了 PostgreSQL/PostGIS 数据库中!现在这些数据就可以被其他 GIS 应用或后端服务使用,并享受到数据库集中管理和安全备份的好处。

七、经验分享:常见坑及解决方案

在实际操作过程中,可能会遇到一些常见的问题或“小坑”。下面总结几个初学者经常碰到的问题及相应的解决办法:

  • 坐标系不匹配:如果导入后发现数据在地图上位置不对(偏移错位)或者无法与其他图层叠加,通常是坐标系出了问题。例如,原始 Shapefile 的投影坐标未转换却当作地理坐标导入,导致坐标数值被误当作经纬度。解决方案:务必在导入前确认 Shapefile 的原始坐标系,并在 QGIS 中正确设置源 SRID 和目标 SRID。如果不确定坐标系,需向数据提供方咨询或通过已知控制点校对。必要时使用 QGIS 先行转换坐标系到统一的 CRS(如 WGS84),再进行导入。导入时源/目标 SRID 要对应正确,避免张冠李戴。如果已经导入错误,可删除表后重新按照正确SRID导入。
  • 数据库权限不足:在点击导入后弹出错误,提示无权创建表或写入数据。这通常是所使用的数据库用户权限不够。解决方案:确保使用拥有目标模式下 CREATE 权限 的用户连接数据库。默认情况下,PostgreSQL 的 public 模式对所有用户开放创建表权限,但如果 DBA 修改过权限或者要导入到自定义模式,需要赋予相应权限。可以让数据库管理员 grant 权限,或者临时使用超级用户导入。导入完成后也可再调整表的所有者。此外,若数据库设置禁止远程连接或密码错误,也会造成连接问题,需要检查 PG_HBA 配置和账户密码是否正确。
  • PostGIS 扩展未安装:如果数据库尚未启用 PostGIS 扩展,那么在创建几何字段时会报错(因为数据库不识别 geometry 类型)。解决方案:使用具有超级权限的账户登录数据库,执行 CREATE EXTENSION postgis; 来安装 PostGIS(只需执行一次即可)。确认扩展启用后重新进行导入。
  • 字段名称或类型不兼容:Shapefile 的属性字段有时会在导入时遇到小问题。例如,Shapefile 字段名可能含有大写字母、空格或中文,这些在 PostgreSQL 中作为列名需要用引号引用,使用不便;或者字段名长度超过数据库限制(PostgreSQL 列名最长63字符,老式 Shapefile 名称不超过10字符一般不超限,但新格式可能较长)。解决方案:在导入选项中勾选“字段名称转为小写”,这样能统一字段名为小写字母,避免大小写敏感问题。如果字段名含空格或特殊字符,QGIS 通常会自动替换为下划线或移除不支持字符,但保险起见,您可在导入前于 QGIS 中重命名字段为规范名称。对于中文字段名,导入后在数据库中会以中文列名存在,查询时需用双引号括起字段名或者改用别名,建议在可能情况下改为英文字段名以提高兼容性。至于字段类型,QGIS 会自动将 Shapefile 的类型映射为 PostgreSQL 合适的类型(例如文本->varchar,数字->numeric或integer),一般不会有大问题。如果遇到某字段导入失败,检查是否有数据库不支持的特殊类型数据,可尝试先在 QGIS 中删除或修改该字段类型再导入。
  • 中文字符编码问题:如果 Shapefile 属性包含中文,导入后可能出现乱码。这通常是由于 Shapefile 的 .dbf 文件使用了不同的编码而 QGIS 导入时用了错误的解码方式。解决方案:在导入对话框中选择正确的 编码。例如,如果原始数据使用 GBK/GB2312 编码(常见于国内数据),将编码从默认 UTF-8 改为 GBK 再导入。或者在加载 Shapefile 到 QGIS 时就指定相应编码(QGIS 添加矢量层时有编码选项)。导入数据库后也可通过更新字段内容来纠正,但那较繁琐,所以尽量在导入时处理好编码。导入完成后,用客户端查看数据库中的中文是否正常显示,确保编码正确。

相关文章:

QGIS 将 Shapefile 导入 PostGIS 数据库

一、背景介绍:QGIS、PostgreSQL 和 PostGIS 的关系和用途 在开始动手操作之前,我们先简单了解一下 QGIS、PostgreSQL 和 PostGIS 之间的关系及其用途。 QGIS(Quantum GIS):一款开源免费的桌面地理信息系统&#xff0…...

《内网渗透测试:绕过最新防火墙策略》

内网渗透测试是检验企业网络安全防御体系有效性的核心手段,而现代防火墙策略的持续演进(如零信任架构、AI流量分析、深度包检测)对攻击者提出了更高挑战。本文系统解析2024年新型防火墙的防护机制,聚焦协议隐蔽隧道、上下文感知绕…...

CSS结构性伪类、UI伪类与动态伪类全解析:从文档结构到交互状态的精准选择

一、结构性伪类选择器:文档树中的位置导航器 结构性伪类选择器是CSS中基于元素在HTML文档树中的层级关系、位置索引或结构特征进行匹配的一类选择器。它们无需依赖具体的类名或ID,仅通过文档结构即可精准定位元素,是实现响应式布局和复杂文档…...

【大模型LLM学习】MiniCPM的注意力机制学习

【大模型LLM学习】MiniCPM的注意力机制学习 前言1 Preliminary1.1 MHA1.2 KV-cache 2 GQAGQA的MiniCPM实现 3 MLAMLA的MiniCPM-3-4b的实现 TODO 前言 之前MiniCPM3-4B是最早达到gpt-3.5能力的端侧小模型,其注意力机制使用了MLA。本来想借着MiniCPM从MHA过到MLA的&am…...

stm32之PWR、WDG

目录 1.PWR1.1 简介1.2 电源框图1.3 上电复位和掉电复位1.4 可编程电压监测器1.5 低功耗模式1.5.1 模式选择1.5.2 睡眠模式1.5.3 停止模式1.5.4 待机模式 1.6 实验1.6.1 修改主频1.6.2 睡眠模式串口发送接收1.6.3 停止模式对射式红外传感器计次1.6.4 待机模式实时时钟 2.看门狗…...

分布式任务调度XXL-Job

​ XXL-Job 是一款轻量级、分布式的任务调度平台,其核心设计解决了传统任务调度(如Quartz)在分布式场景下的‌任务分片‌、‌高可用‌、‌可视化管控‌等痛点。以下从原理、核心架构、应用场景、代码示例及关联中间件展开详解 一、主流任务…...

内存泄漏与OOM崩溃根治方案:JVM与原生内存池差异化排查手册

内存泄漏与OOM崩溃根治方案:JVM与原生内存池差异化排查手册 一、问题描述与快速解决方案 1. 核心问题分类 内存泄漏(Memory Leak) 现象:应用运行时间越长,内存占用持续攀升,GC回收效率下降,最…...

火山引擎发展初始

火山引擎是字节跳动旗下的云计算服务品牌,其云服务业务的启动和正式商业化时间线如下: 1. **初期探索(2020年之前)** 字节跳动在早期为支持自身业务(如抖音、今日头条等)构建了强大的基础设施和技术中…...

使用光标测量,使用 TDR 测量 pH 和 fF

时域反射计 (TDR) 是一种通常用于测量印刷电路板 (PCB) 测试试样和电缆阻抗的仪器。TDR 对于测量过孔和元件焊盘的电感和电容、探针尖端电容和电感,甚至寄生电感收发器耦合电容器也非常有用。这也是验证仿真或提取您自…...

mybatisplus 集成逻辑删除

一开始,没去查资料,后面要被AI气死了,先看它的的话 一开始,看ai的描述,我还以为,不需要改数据库,mybatis-puls自动拦截集成就可以实现逻辑删除,c,最后还是要给数据库加一…...

ABAP+旧数据接管的会计年度未确定

导资产主数据时,报错旧数据接管的会计年度未确定 是因为程序里面使用了下列函数AISCO_CALCULATE_FIRST_DAY,输入公司代码,获取会计年度,这个数据是在后台表T093C表中取数的,通过SE16N可以看到后台表数据没有数&#xf…...

KT148A语音芯片发码很难播放_将4脚对地一下再发正常,什么原因?

问题描述如下:您好,遇到一点问题请帮忙支持一下: KT148A 这颗芯片, 我们上电后发码很难触发播放, 但用镊子将4pin PB0对地短接触发一下,再发码就很正常,这是什么原因? 根据现象来看…...

【大模型】DeepResearcher:通用智能体通过强化学习探索优化

DeepResearcher:通过强化学习在真实环境中扩展深度研究 一、引言二、技术原理(一)强化学习与深度研究代理(二)认知行为的出现(三)模型架构 三、实战运行方式(一)环境搭建…...

SpringBoot 3.X 开发自己的 Spring Boot Starter 和 SpringBoot 2.x 的区别

SpringBoot 2.x 在模块中创建 src/main/resources/META-INF/spring.factories 文件 文件内容如下: org.springframework.boot.autoconfigure.EnableAutoConfiguration\com.xxx.xxx.yourfilejava1,\com.xxx.xxx.yourfilejava2 SpringBoot 3.x 在模块中创建 src/m…...

NY164NY165美光固态闪存NY166NY172

美光NY系列固态闪存深度解析:技术、体验与行业洞察 一、技术架构与核心特性解析 美光NY系列(NY164/NY165/NY166/NY172)作为面向企业级市场的固态闪存产品,其技术设计聚焦高可靠性与性能优化。从架构上看,该系列可能采…...

Spring Boot中HTTP连接池的配置与优化实践

精心整理了最新的面试资料和简历模板,有需要的可以自行获取 点击前往百度网盘获取 点击前往夸克网盘获取 一、HTTP连接池的核心价值 在微服务架构和分布式系统场景中,HTTP客户端频繁创建/断开连接会产生显著的性能损耗。通过连接池技术可以实现&#x…...

【docker】--镜像管理

文章目录 拉取镜像启动镜像为容器连接容器法一法二 保存镜像加载镜像镜像打标签移除镜像 拉取镜像 docker pull mysql:8.0.42启动镜像为容器 docker run -dp 8080:8080 --name container_mysql8.0.42 -e MYSQL_ROOT_PASSWORD123123123 mysql:8.0.42 连接容器 法一 docker e…...

Logisim实验--华科计算机组成原理(保姆级教程) 头歌-存储系统设计实验(汉字库存储芯片扩展实验、MIPS寄存器文件设计)

汉字库存储芯片扩展实验 电路一: 电路二:电路和译码器设置。 两个电路的分线器设计: 只要把电路正确连接就能提交了,但要看到正确的实验结果就想要进行如下操作: 打开参考电路,我要做的就是将每个存储器内…...

Hapi.js知识框架

一、Hapi.js 基础 1. 核心概念 企业级Node.js框架:由Walmart团队创建,现由社区维护 配置驱动:强调声明式配置而非中间件 插件架构:高度模块化设计 安全优先:内置安全最佳实践 丰富的生态系统:官方维护…...

Baklib知识中台架构与智能引擎实践

知识中台架构设计实践 在数字化转型进程中,Baklib基于企业级知识管理需求,构建了模块化分层架构的知识中台体系。该架构采用数据湖仓融合技术,通过统一元数据管理打通业务系统间的信息壁垒,形成覆盖数据采集、清洗、标注的全链路…...

传输层协议UDP

传输层 负责数据能够从发送端传输接收端 . 再谈端口号 端口号 (Port) 标识了一个主机上进行通信的不同的应用程序 ; 在 TCP/IP 协议中 , 用 " 源 IP", " 源端口号 ", " 目的 IP", " 目的端口号 ", " 协议号 " 这样一…...

在Java中实现Parcelable接口和Serializable接口有什么区别?

在 Java 中,Parcelable 和 Serializable 接口都用于对象的序列化和反序列化,但它们的实现方式、性能和使用场景有很大区别。以下是它们的核心对比: 1. 实现方式 Serializable 是 Java 原生接口,只需声明 implements Serializable…...

MinIO WebUI 页面使用

上传文件到桶,选择Share 如果桶是pulic权限,则可以有以下两种方式访问到该对象文件: http://ip:9001/api/v1/download-shared-object/aHR0cDovLzEyNy4wLjAuMTo5MDAwL3dhcmVob3VzZS9wYWltb24vRmxpbmstTG9nby5wbmc_WC1BbXotQWxnb3JpdGhtPUFXU…...

Python | Dashboard制作

运行环境:jupyter notebook (python 3.12.7) Pyecharts 1.安装pyecharts !pip install pyecharts 验证安装是否成功: from pyecharts import __version__ print("Pyecharts版本:", __version__) # 应显示1.x以上版本 2.运行基础版代码&am…...

视频编辑软件无限音频、视频、图文轨

威力导演APP的特色功能包括无限音频、视频、图文轨,以及上百种二/三维特技转场、音/视频滤镜和多种音视频混编输出。此外,它还支持实时高清HDV格式、模拟信号输出,并具有DV25、DVACM、DV、HDV输入和输出等功能。在视频编辑领域,威…...

HttpSession 的运行原理

HttpSession 的运行原理(基于 Java Web) HttpSession 是 Java Web 开发中用于在服务器端存储用户会话数据的机制,它的核心作用是跟踪用户状态(如登录信息、购物车数据等)。 1. HttpSession 的基本概念 会话&#xff0…...

Axure应用交互设计:表格跟随菜单移动效果(超长表单)

亲爱的小伙伴,在您浏览之前,烦请关注一下,在此深表感谢!本文如有帮助请订阅 Axure产品经理精品视频课已登录CSDN可点击学习https://edu.csdn.net/course/detail/40420 课程主题:表格跟随菜单移动 主要内容:表格交互设计、动态面板嵌套、拖动时事件、移动动作 应用场景…...

Flannel vxlan模式的优缺点

VXLAN 模式的特点、优缺点 优点 高性能:VXLAN 利用内核态处理封装/解封装,性能优于用户态方案(如 UDP),适合大规模集群。网络隔离:通过 VNI(VXLAN Network Identifier,24 位&#…...

中电金信参编的国家标准《信息技术 中间件 消息中间件技术要求》正式发布

近日,国家市场监督管理总局、国家标准化管理委员会发布中华人民共和国国家标准公告(2025年第10号),GB/T 28168—2025《信息技术 中间件 消息中间件技术要求》国家标准正式发布,并将于2025年11月1日正式实施。中电金信作…...

AcroForm 格式化文本(域)字段

概述 Acrobat提供了两个事件(脚本位置)来处理文本字段格式化:Keystroke(更改)事件和 Format事件。这两个事件可以共同控制输入到字段中的数据的格式以及文本字段中显示数据的外观。本文中涉及的所有脚本以及更多示例都包含在FormattingExamples.pdf文件中。 Keystroke事…...

机器学习——聚类算法练习题

一、 随机创建不同二维数据集作为训练集 ,并结合k-means算法将其聚类 ,你可以尝试分别聚类不同数量的簇 ,并观察聚类 效果: 聚类参数n_cluster传值不同 ,得到的聚类结果不同 代码展示: from sklearn.da…...

U-BOOT

使用正点原子已经移植好的U-BOOT编译完成后拷贝到SD卡中烧写到板子上中,将开发板设为SD卡启动模式,上电启动开发板;打开 MobaXterm 终端模拟软件,设置好串口参数连接开发板 USB 调试串口,最后按核心板上的 PS_RST 复位…...

JVM之虚拟机运行

虚拟机运行快速复习 try-catch:catch-异常表栈展开,finally-代码复制异常表兜底 类的生命周期:加载,连接(验证,准备,解析),初始化,使用,卸载 类…...

玩转ChatGPT:DeepSeek实战(统一所在地格式)

一、写在前面 前段时间去交流,又被问到一个实际问题: 在组织全区活动时,我们设计了一份签到表,其中包含“所在单位地区”一列,目的是希望按地级市(如南宁市、柳州市等)对参与者进行分组&#…...

蓝桥杯题库经典题型

1、数列排序&#xff08;数组 排序&#xff09; 问题描述 给定一个长度为n的数列&#xff0c;将这个数列按从小到大的顺序排列。1<n<200 输入格式 第一行为一个整数n。 第二行包含n个整数&#xff0c;为待排序的数&#xff0c;每个整数的绝对值小于10000。 输出格式 输出…...

极限学习机进行电厂相关数据预测

使用极限学习机&#xff08;Extreme Learning Machine, ELM&#xff09;进行电厂相关数据预测的详细步骤和MATLAB代码示例。假设任务是预测电厂发电量或设备状态&#xff08;如温度、压力&#xff09;&#xff0c;代码包含数据预处理、ELM模型构建、训练与预测全过程。 1. 数据…...

【Axure视频教程】中继器表格间批量控制和传值

今天教大家在Axure中制作中继器表格间批量控制和传值的原型模板&#xff0c;效果包括&#xff1a; 选中和取消选中——点击表格中的多选按钮可以选中或取消选中该行内容&#xff1b; 全选和全部取消选中——点击表头左上角的多选按钮可以选中或取消选中表格的所有内容&#xf…...

Axure高级交互设计:文本框循环赋值实现新增、修改和查看

亲爱的小伙伴,在您浏览之前,烦请关注一下,在此深表感谢!本文如有帮助请订阅本专栏! Axure产品经理精品视频课已登录CSDN可点击学习https://edu.csdn.net/course/detail/40420 课程主题:文本框循环赋值 主要内容:使用设置文本动作实现文本框、文字标签的读取与赋值 应…...

Springboot之类路径扫描

SpringBoot框架中默认提供的扫描类为&#xff1a;ClassPathBeanDefinitionScanner。 webFlux框架中借助RepositoryComponentProvider扫描符合条件的Repository。 public class ClassPathScanningCandidateComponentProvider{private final List<TypeFilter> includeFilt…...

是 OpenCV 的 CUDA 模块中用于在 GPU 上对图像或矩阵进行转置操作函数cv::cuda::transpose

操作系统&#xff1a;ubuntu22.04 OpenCV版本&#xff1a;OpenCV4.9 IDE:Visual Studio Code 编程语言&#xff1a;C11 算法描述 cv::cuda::transpose 是 OpenCV 的 CUDA 模块中的一个函数&#xff0c;用于在 GPU 上对图像或矩阵进行转置操作&#xff08;Transpose&#xff0…...

2025B卷 - 华为OD机试七日集训第1期 - 按算法分类,由易到难,循序渐进,玩转OD

目录 推荐刷题方法&#xff1a; 一、适合人群二、本期训练时间三、如何参加四、七日集训第1期五、精心挑选21道高频100分经典题目&#xff0c;作为入门。第1天、逻辑分析第2天、逻辑分析第3天、逻辑分析第4天第5天第6天第7天 六、集训总结国内直接使用最新o3、o4-mini-high、GP…...

从数据中台到数据飞轮:数字化转型的演进之路

从数据中台到数据飞轮&#xff1a;数字化转型的演进之路 数据中台 数据中台是企业为整合内部和外部数据资源而构建的中介层&#xff0c;实现数据的统一管理、共享和高效利用&#xff0c;目标是打破信息孤岛&#xff0c;提高数据使用效率&#xff0c;支持业务决策和创新 实施成本…...

【Linux网络】HTTPS

HTTPS协议原理 定义 HTTPS 也是一个应用层协议.是在HTTP协议的基础上引入了一个加密层. HTTP 协议内容都是按照文本的方式明文传输的.这就导致在传输过程中会出现一些被篡改的情况。 加密 加密就是把明文(要传输的信息)进行一系列变换,生成密文. 解密就是把密文再进行一系…...

UE5中制作动态数字Decal

在进行城市道路编辑时&#xff0c;经常需要绘制人行道、交通标志、停车线等路面元素。如果能够使用具有动态修改功能的 Decal&#xff08;贴花&#xff09;&#xff0c;将大大提升编辑效率和灵活性。接下来讲解如何制作。 1.首先准备一张包含所需元素的Texture&#xff0c;这里…...

销量预测评估指标

销量预测评估指标 一、背景 在零售、供应链等场景中&#xff0c;销量预测的准确性直接影响库存管理、成本控制和客户满意度&#xff1a; 预测偏低&#xff1a;可能导致缺货&#xff08;损失销售额和客户信任&#xff09;。预测偏高&#xff1a;导致库存积压&#xff08;增加…...

Unity3d 打包安卓平台(Android apk)报错Gradle build failed解决方法

问题 Unity3d 版本为2022.3.*版本&#xff0c;而且工程内部没有包含比较特殊的插件&#xff0c;安卓模块(module)也是随编辑一起安装&#xff0c;JDK、Android SDK Tools、Android NDK和Gradle都是默认安装。打包设置Project Settings也是默认设置&#xff0c;打包的工程不包含…...

STM32 启动文件分析

一、启动文件的核心作用 STM32启动文件&#xff08;如startup_stm32f10x_hd.s&#xff09;是芯片上电后执行的第一段代码&#xff0c;用汇编语言编写&#xff0c;主要完成以下关键任务&#xff1a; ​初始化堆栈指针&#xff08;SP&#xff09;​​ 设置主堆栈指针&#xff08…...

OSCP备战-Kioptrix4详细教程

目录 配置靶机 目标IP探测 ​编辑端口扫描 139/445端口 Samba 80端口获取shell 绕过lshell 方法一 ​编辑 方法二 ​编辑提权 内核漏洞 mysql udf提权 配置靶机 使用vm新建虚拟机&#xff0c;选择vmdk文件打开。 目标IP探测 arp-scan -l 得出目标IP&#xff1a;19…...

清华大学开源软件镜像站地址

清华大学开源软件镜像站&#xff1a; https://mirrors.tuna.tsinghua.edu.cn/...

java基础-package关键字、MVC、import关键字

1.package关键字&#xff1a; &#xff08;1&#xff09;为了更好管理类&#xff0c;提供包的概念 &#xff08;2&#xff09;声明类或接口所属的包&#xff0c;声明在源文件首行 &#xff08;3&#xff09;包&#xff0c;属于标识符&#xff0c;用小写字母表示 &#xff0…...