PostGIS 3.5.0 安装部署与空间查询实战指南
简介PostGIS 3.5.0 安装包postgis-bundle-pg17-3.5.0x64.zip为 64 位 Windows 系统上的 PostgreSQL 17 数据库提供完整的空间数据扩展能力面向 GIS 开发者、数据库管理员及空间数据分析人员解决在关系型存储中管理点、线、面等空间对象的难题。压缩包内共 1317 个文件以结构化查询脚本、动态链接库、文本数据文件、栅格影像和地理空间参考文件为主还包含扩展控制文件与配置文档可用于部署空间索引、地理编码、地址标准化、点云存储和路径规划分析。资源包整体大小约 130.69MB已有 193 人浏览学习目录组织规范便于按需检索。获取后可在 PostgreSQL 17 中直接启用扩展通过标准 SQL 完成距离面积计算、空间连接、聚合统计和网络分析并配合地理编码与路由模块开展真实 GIS 项目大幅降低环境搭建与二次开发成本。1. 为什么是 PostGIS从解压一个 3.5.0 bundle 开始PostGIS 是 PostgreSQL 生态里最被低估的空间组件。很多人做 GIS 时先在桌面软件里画图、导 shp等数据量涨到百万级、需要多人并发查空间数据时才发现数据库层的空间能力才是命门。这份 postgis-bundle-pg17-3.5.0x64.zip 是给 PostgreSQL 17 准备的 64 位空间扩展包里面不只有 PostGIS 3.5.0 核心还带了点云扩展、地址标准化、geocoder 和 pgRouting 路径规划。它解决的核心问题很具体让数据库直接存点、线、面用标准 SQL 算距离、面积、缓冲区再配合空间索引扛住高并发查询。适合 GIS 开发、测绘数据处理、地图服务后端也适合想给业务库补空间能力的后端工程师。2. bundle 包解析文件清单背后的组件体系拿到 zip 先别急着解压安装。Windows 上的 PostgreSQL 扩展包不像普通安装程序那样一键装完它的文件组织方式直接决定你的安装路径和排错方向。我第一次处理这类 bundle 时走了不少弯路以为把文件解压覆盖到 PostgreSQL 目录就完事结果 CREATE EXTENSION 一直报找不到控制文件。后来把包内文件与 PG 目录逐个对照才弄明白这套体系的运转逻辑。2.1 文件名先读出关键信息pg17 与 3.5.0 的配套关系先看文件名postgis-bundle-pg17-3.5.0x64.zip这一串不是随便起的它交代了三件事。开头的pg17表示这套扩展是编译给 PostgreSQL 17 大版本用的。PostGIS 的二进制扩展依赖 PostgreSQL 提供的头文件和 ABI扩展组件在一个主版本内可以通用但不能跨大版本安装。把 pg17 的包强行塞给 PostgreSQL 16 或 18后患无穷轻则加载失败重则把服务搞崩。所以装之前先确认 PG 的主版本这一步省不掉。中间的3.5.0是 PostGIS 版本号。3.5.0 意味着它携带了一套特定的函数库和 SQL 脚本不同小版本的函数集合会有差异比如某些新增函数只在 3.4 以上存在。版本号同时也是排错时的参照物后续postgis_full_version()输出的信息会与你下载的包版本互相印证。结尾的x64是明牌这是 64 位构建。Windows 上 PostgreSQL 有 32 位和 64 位两个体系扩展库必须与 PostgreSQL 服务进程的位数完全一致混用的结果一般是服务启动失败或函数无法加载。这类位数不匹配的问题在论坛里出现的频率极高属于典型的低级翻车点后面第 5 章我会专门列一条排查路径。2.2 解压清单拆解从批处理脚本到各扩展控制文件解压这份 zip 之后第一眼看到的文件有点零散但把它们归类之后结构其实非常清晰。我先把包内典型的文件按功能列出来文件名类型作用makepostgisdb_using_extensions.bat批处理脚本一键创建扩展库的 Windows 脚本loaders.cache配置文件GDAL/加载器组件的缓存文件fonts.conf配置文件字体渲染相关的默认配置im-multipress.conf配置文件栅格/multi 格式导入相关的默认配置postgis.control扩展控制文件PostGIS 主扩展的注册描述文件postgis_tiger_geocoder.control扩展控制文件TIGER geocoder 扩展的注册描述文件address_standardizer.control扩展控制文件地址标准化扩展的注册描述文件pointcloud.control扩展控制文件PointCloud 基础扩展的注册描述文件pointcloud_postgis.control扩展控制文件PointCloud 与 PostGIS 集成扩展的注册描述文件pgrouting.control扩展控制文件pgRouting 路径规划扩展的注册描述文件这几个.control文件就是整个 bundle 的骨架。postgis.control对应核心空间扩展提供 geometry/geography 类型、空间索引和大部分空间函数pointcloud.control和pointcloud_postgis.control负责点云数据的存取和空间关系分析address_standardizer.control做地址解析和标准化postgis_tiger_geocoder.control是美国人口普查 TIGER 数据的地址匹配工具pgrouting.control则是专门做路径规划和网络分析的扩展。国内 GIS 项目真正天天用的通常是postgis和pgrouting其余的是按场景按需启用。makepostgisdb_using_extensions.bat这个名字值得展开说。它对应的是一套用扩展方式建空间库的做法新建一个数据库然后逐个执行 CREATE EXTENSION 命令。这个 bat 脚本把多个扩展的启用动作封装到了一起适合被反复初始化新库的场景。我一般不会直接双击它而是打开看一遍里面的扩展列表确认哪些扩展是当前项目需要的然后手动拆分执行这样更可控。2.3 扩展加载机制.control、SQL 脚本和共享库的分工PostgreSQL 的扩展机制可以拆成三层.control文件是扩展的元数据描述它告诉数据库这个扩展叫什么、默认装到哪个 schema、是否需要超级用户权限、对应的 SQL 脚本文件名是什么。真正的函数和类型定义写在 SQL 脚本里比如postgis--3.5.0.sql而在 SQL 层注册的 C 函数实现则编译成了 DLL 共享库放在 PostgreSQL 的 lib 目录下。理解这三层分工对排错极有帮助。报control file not found时问题在.control文件没进入正确的share/extension目录。报function does not exist时八成是 SQL 脚本没执行或 schema 路径有问题。报could not load library xxx.dll时则是共享库缺失、位数不匹配或服务未重启。所以安装 bundle 的本质就一句话把.control和 SQL 脚本放到 PostgreSQL 的share/extension目录把 DLL 放到lib目录然后执行 CREATE EXTENSION。第 3 章我会给出具体的落位命令和验证流程。3. 安装部署从 zip 到能跑空间查询的数据库解压 PostGIS bundle 到真正能用中间隔着几个容易踩空的步骤。这一章按我习惯的顺序走先查环境再落文件然后建库建扩展最后用版本函数和一张最小空间表收尾验证。3.1 前置检查PostgreSQL 版本、架构与最小权限先把 PostgreSQL 的本体信息确认清楚。没有装 PostgreSQL 17 的先装好 17 的 x64 版本再回来处理扩展。已装的在bin目录下打开命令行跑一遍# 进入 PostgreSQL 的 bin 目录然后执行 pg_config --version pg_config --bindir pg_config --pkglibdir pg_config --sharedirpg_config --version输出的是 PostgreSQL 版本字符串比如 PostgreSQL 17.x。--bindir是程序目录--pkglibdir是共享库目录--sharedir是文档和扩展脚本目录。这些路径后面落文件时都要用。注意如果机器上装了多个 PostgreSQL 实例务必确认当前 PATH 指向的是你准备用的那一个这属于常见乌龙。权限方面创建扩展通常需要超级用户权限或者至少具备CREATE权限并属于扩展的所有者。Windows 上还要确认 PostgreSQL 服务账户对扩展目录有读权限否则服务启动时加载 DLL 会有隐蔽的权限问题。简单起见我的习惯是初始化测试环境时直接用超级用户操作生产环境再单独建一个专用账号并只授予必要权限。3.2 解压与文件落位扩展目录和共享库目录把 zip 解压到一个临时目录比如D:\postgis_bundle。接下来要做的是把包内的.control、.sql文件合并到--sharedir对应的extension子目录把 DLL 合并到--pkglibdir对应的目录。Windows 下我一般用robocopy做目录合并它比资源管理器可靠也不会因为同名文件反复弹窗# 假设 PG 17 安装在 C:\pgsql17解压包在 D:\postgis_bundle robocopy D:\postgis_bundle C:\pgsql17 /E /XO/E表示复制所有子目录和文件/XO表示只覆盖旧文件避免覆盖掉 PG 自带的同名文件。如果你不想覆盖任何已有文件可以先跑一遍robocopy ... /L列出将要复制的文件列表再决定是否执行。这一步做完别急着建库。先去C:\pgsql17\share\extension扫一眼确认postgis.control、pgrouting.control这些文件已经落位。Windows 的命令行可以这样快速核对dir C:\pgsql17\share\extension\*.control看到.control文件清单与 2.2 节的表格对应上再往下走。3.3 创建空间数据库psql 命令行与批处理脚本两条路线PostGIS 的启用方式是建一个新库然后执行 CREATE EXTENSION。包内的makepostgisdb_using_extensions.bat做的就是这件事它会按脚本里写好的顺序创建数据库、执行扩展脚本。我建议先手动走一遍理解每一步在干什么再决定要不要用脚本自动化。使用psql的完整流程如下-- 连接到默认的 postgres 库 CREATE DATABASE gisdb; \c gisdb -- 依次启用核心扩展 CREATE EXTENSION postgis; CREATE EXTENSION address_standardizer; CREATE EXTENSION postgis_tiger_geocoder; CREATE EXTENSION pointcloud; CREATE EXTENSION pointcloud_postgis; CREATE EXTENSION pgrouting;逻辑说明CREATE EXTENSION postgis把基础空间类型和函数装进数据库这一条是必选项。pointcloud和pointcloud_postgis是点云支持做激光雷达或倾斜摄影数据管理时才需要。pgrouting是独立的路径规划引擎和 PostGIS 主扩展互不依赖单独启用即可。postgis_tiger_geocoder依赖address_standardizer所以先启用后者再做 geocoder顺序反了会报依赖缺失。参数说明花括号里的扩展名必须与.control文件名严格一致比如pointcloud_postgis就是一个整体名字不能拆开。此外CREATE EXTENSION支持SCHEMA参数例如CREATE EXTENSION postgis SCHEMA public;明确 schema 可以避免后续search_path混乱。对于postgis_tiger_geocoder它内部会创建多个函数和表建议单独用一个 schema 来装避免与业务表混在一起。批处理脚本方式也可以直接用它做的事情与上面的 SQL 序列等价。区别在于脚本会读取预设的数据库名和连接参数适合一键初始化测试库。生产环境我更推荐手动拆分执行一是可以按需裁剪扩展二是失败时能看到准确的错误上下文。3.4 验证安装版本函数与第一张空间表扩展装完用版本函数做一次体检SELECT postgis_version(); SELECT postgis_full_version(); SELECT pgr_version();postgis_version()返回简短版本号postgis_full_version()输出完整构建信息包括 PROJ、GDAL、GEOS 等底层库的版本这串信息在论坛报错或写精度相关代码时非常有用。pgr_version()只有启用 pgRouting 之后才存在如果这条报函数不存在说明扩展没有装成功。版本没问题后建一张最小空间表验证写路径和读路径CREATE TABLE poi ( id bigint GENERATED ALWAYS AS IDENTITY PRIMARY KEY, name text, geom geometry(Point, 4326) ); INSERT INTO poi (name, geom) VALUES (某设施, ST_SetSRID(ST_Point(116.40, 39.90), 4326)); SELECT name, ST_AsText(geom) FROM poi;这段验证 SQL 里geometry(Point, 4326)声明该列只接受 4326 坐标系下的点类型。ST_SetSRID(ST_Point(...), 4326)先构造坐标点再指定 SRID避免出现坐标系未知的几何对象。ST_AsText把内部二进制格式转成 WKT 文本便于肉眼确认数据成功落库。到这里PostGIS 基本就能跑起来了下面的章节进入实际业务使用和排错环节。4. 空间数据实操建表、导入与三类典型查询安装只是起点真正的工作从设计空间表、导入坐标数据、写空间 SQL 开始。这一章用一套模拟的 POI 和地块数据演示最常见的建表、转换和查询操作。所有坐标都是虚构示例重点在看函数怎么用、参数怎么设、结果怎么查。4.1 创建空间表geometry 类型、SRID 与坐标类型选择PostGIS 表设计和普通 PostgreSQL 表最大的差别是数据列采用geometry或geography类型。geography使用球面计算直接算出的距离单位是米geometry是平面几何计算速度快但单位取决于坐标系。国内项目最常见的是用geometry类型配合 4326 或 3857少部分高精度计量场景用投影坐标系。以一块基础地块表为例CREATE TABLE parcels ( id bigint GENERATED ALWAYS AS IDENTITY PRIMARY KEY, district varchar(32), area_note text, geom geometry(Polygon, 4326) ); CREATE INDEX parcels_geom_idx ON parcels USING GIST (geom);逻辑说明geometry(Polygon, 4326)限制了该列只能存 4326 坐标系下的多边形。如果数据源包含点、线、面混合不要加类型约束直接写geometry即可代价是类型检查变弱。最后一行创建 GIST 空间索引这是空间查询性能的命门第 5 章会专门展开。参数说明4326是 WGS84 经纬度的 EPSG 代码适合全球范围的定位和可视化如果业务只在国内某个局部区域做高精度面积计算建议使用对应的高斯投影或 UTM 投影 SRID。注意引用geometry(Polygon, 4326)时类型名称为geometry括号里的约束在 PostGIS 中称为典型类型修饰符查询该列时会自动校验 SRID。4.2 从文本到空间列WKT、ST_GeomFromText 与坐标转换业务数据往往来自 CSV、Excel 或第三方接口常见格式是一个点的经纬度两列或一整段 WKT 文本。PostGIS 处理这类场景的标准函数是ST_GeomFromText和ST_SetSRID。写入一段多边形示例INSERT INTO parcels (district, geom) VALUES (A区, ST_GeomFromText(POLYGON((116.40 39.90, 116.41 39.90, 116.41 39.91, 116.40 39.91, 116.40 39.90)), 4326));ST_GeomFromText第一个参数是 WKT 文本第二个参数是 SRID。WKT 里坐标对用空格分隔多个点用逗号分隔多边形首尾坐标必须闭合。如果文本坐标已经带 SRID也可以用ST_SetSRID(ST_GeomFromText(...), 4326)二次赋值但要保证数据本身确实是这个坐标系否则后面所有计算都会出错。导入投影坐标系数据时需要先声明原始 SRID再转换到目标 SRID-- 假设源数据是 3857 Web 墨卡托坐标 UPDATE parcels SET geom ST_Transform(ST_SetSRID(geom, 3857), 4326) WHERE ST_SRID(geom) 4326;ST_Transform做真正的坐标变换而不是简单改 SRID 标签。ST_SetSRID只修改元数据标签不改变坐标。4.3 典型空间操作缓冲区、距离计算与空间连接三组最常用的空间操作是缓冲区、距离计算和空间连接。缓冲区的业务含义是画一个以某点为中心、半径 X 的圆-- 以某设施为中心半径 500 米做缓冲区 SELECT ST_Buffer(geom, 500) AS buffer_geom FROM poi WHERE name 某设施;注意在 4326 坐标系下ST_Buffer的距离单位是度而不是米ST_Buffer(geom, 500)画出来是一个跨度 500 度的怪东西。正确做法是先把坐标系转成以米为单位的投影坐标系比如 3857再缓冲区SELECT ST_Buffer(ST_Transform(geom, 3857), 500) AS buffer_geom FROM poi WHERE name 某设施;距离计算使用ST_Distance同样受坐标系影响。如果两个点在相同投影坐标系下结果以该投影坐标系的单位为准4326 下结果为度。为了拿准确的米数建议ST_Distance时把两侧都先ST_Transform到 3857 或使用geography类型SELECT ST_Distance( ST_Transform(a.geom, 3857), ST_Transform(b.geom, 3857) ) AS dist_m FROM poi a, poi b WHERE a.id b.id;a.id b.id是一种老式的自连接去重写法保证每对点只算一次距离。空间连接典型场景是按网格或行政区统计落点数量SELECT g.grid_id, count(p.id) FROM grid g LEFT JOIN poi p ON ST_Intersects(g.geom, p.geom) GROUP BY g.grid_id;ST_Intersects判断两个几何对象是否有交集。配合USING GIST索引这类连接在百万量级数据下依然能保持亚秒级响应。这一章的函数足够覆盖日常 70% 的空间查询了下一章来聊聊那些让我反复翻车的安装与用法问题。5. 避坑指南从安装到使用的五个高频翻车点PostGIS 的功能大家都会用真正拉开差距的是遇到问题时的排查速度。这里整理五条我亲测踩过的高频问题全部按照现象、原因、解决的顺序写替换掉你脑补的重新装一遍方案。5.1 现象CREATE EXTENSION 报控制文件不存在现象在新建的数据库里执行CREATE EXTENSION postgis;报错提示could not open extension control file C:/.../extension/postgis.control: No such file or directory。原因.control和对应的 SQL 文件没有放进 PostgreSQL 的share/extension目录。常见于解压后直接双击执行批处理脚本但脚本里的路径与实际 PG 安装路径不一致或者把 zip 内的子目录结构解压错了.control文件仍套在多层子目录里。解决回到 3.2 节用pg_config --sharedir拿到真实的 shared 目录把.control和postgis--*.sql一次性复制到%sharedir%\extension。如果手动复制建议用dir核对一遍文件是否真的到位再重新执行CREATE EXTENSION。5.2 现象扩展创建成功但函数调用报函数不存在现象CREATE EXTENSION postgis;成功没有报错。但执行SELECT ST_Buffer(geom, 10);或SELECT postgis_version();时提示function postgis_version() does not exist。原因当前连接的search_path没有包含 PostGIS 扩展实际安装的 schema。如果你的扩展装进了public当前用户又在public之前声明了其他 schemaPostgreSQL 就找不到这个函数。解决先查扩展实际安装位置SELECT extnamespace::regnamespace AS installed_schema, extname FROM pg_extension WHERE extname postgis;再在数据库级别固定搜索路径避免每个连接都要手动 SETALTER DATABASE gisdb SET search_path public, pgrouting, tiger, tiger_data;这样后续连接默认从public开始找函数tiger和tiger_data是 postgis_tiger_geocoder 需要的 schema。注意search_path里没有pg_catalog时PostgreSQL 会隐式先搜系统目录一般不会出问题。5.3 现象空间查询慢到没法用全表扫描却查不出问题现象一张几十万行的 POI 表按范围过滤或按距离排序时查询要几秒甚至几十秒。EXPLAIN ANALYZE显示 Seq Scan没有走索引。原因表中根本不存在 GIST 索引或者索引列的表达式与查询谓词使用的函数不一致。最常见的是WHERE ST_Intersects(geom, ...)里的geom列没有建立索引或者索引建在了ST_Transform(geom, 3857)上但查询时直接用了geom导致索引完全命中不了。解决为原始几何列建立 GIST 索引CREATE INDEX idx_parcels_geom ON parcels USING GIST (geom);建完索引后重新执行EXPLAIN ANALYZE SELECT ... WHERE ST_Intersects(geom, ST_GeomFromText(...))确认计划中显示Index Scan using idx_parcels_geom。如果查询在函数内部才做坐标转换比如ST_Intersects(ST_Transform(geom, 3857), target3857_geom)可以考虑把转换结果落到普通列再建索引或者直接用 columns 的投影坐标版本存一份。5.4 现象64 位系统、版本全对仍报无法加载动态库现象PostgreSQL 是 64 位PostGIS 是 x64扩展文件都放进去了但启动服务或首次调用空间函数时报错could not load library C:/.../lib/postgis-3.dll: The specified module could not be found。原因这类报错最常出现在 Windows 上一是 DLL 依赖的 Visual C 运行库缺失二是因为 PostgreSQL 服务一直在运行解压时 DLL 被占用或没覆盖成功三是服务未重启旧进程还持有老版本动态库。这个报错属于典型的看着像玄学实际是运行库和进程状态问题。解决按顺序做三件事。第一装一遍对应版本的 Visual C Redistributable。第二停掉 PostgreSQL 服务确认lib目录下的postgis-3.dll和postgis-3.5.dll等文件存在且时间戳是刚解压的。第三重启服务再执行SELECT postgis_full_version();验证。5.5 现象pgRouting 的函数一个都查不到现象已经执行过CREATE EXTENSION postgis;但没有执行CREATE EXTENSION pgrouting;或者执行成功后在查询pgr_dijkstra时提示函数不存在。原因pgRouting 是独立于 PostGIS 主扩展的模块它的函数不随postgis自动加载。另外pgr_dijkstra这类函数要求图数据满足起点节点、终点节点和边权重的特定结构有时候函数存在但查询报列名不匹配容易被误判为没装扩展。解决显式启用扩展CREATE EXTENSION pgrouting; SELECT pgr_version();启用后pgr_version()应返回 3.x 版本号。随后为路径分析准备一张带source、target、cost列的网络表并执行pgr_createTopology生成拓扑关系。如果函数存在但报列名不存在检查网络表的列名是否为start_id或sourcepgRouting 的接口参数名是固定给定的不能随意改名。6. 进阶收尾空间索引、CLUSTER 与一条自查命令PostGIS 用熟之后性能问题和环境排查会成为日常工作的主题。这一章收在两个具体动作上GIST 索引的生命周期管理以及一条命令完成环境体检。6.1 GIST 索引空间查询性能的命门GIST 索引不是建完就完事的。大量增删改之后索引会膨胀查询计划可能退化成 Seq Scan。定期重建索引是我维护空间库的固定动作REINDEX INDEX idx_parcels_geom;如果一张表的空间数据几乎不再变化可以做一次物理排序把空间上相近的数据在磁盘上也排到一起。CLUSTER命令可以让查询更加高效CLUSTER parcels USING idx_parcels_geom;注意CLUSTER会重写整张表并获取锁务必在维护窗口执行。我一般选在每周日凌晨跑一次配合ANALYZE更新统计信息。6.2 一条命令自查整个 PostGIS 环境排查环境问题时我习惯执行一条组合查询把版本、扩展清单和关键配置一次性拉出来SELECT postgis_full_version(); SELECT extname, extversion FROM pg_extension WHERE extname IN (postgis,pgrouting,pointcloud,address_standardizer) ORDER BY extname; SELECT setting FROM pg_settings WHERE name search_path;第一行确认 PostGIS 核心库及其底层依赖是否完整第二行确认扩展是否全部注册第三行看当前连接的 schema 搜索路径。三行输出放在一起大部分环境问题都能定位到具体方向。从那以后我每次配完新的空间库都强制自己走一遍版本函数 → 扩展清单 → EXPLAIN 验证这三个动作再小心的环节出过问题后面就再也不给故障留机会。希望这套检查习惯能帮你在后面的项目里少走几步弯路。本文还有配套的精品资源点击获取

相关新闻

iPhone和Android也能推理:Ornith-9B-Mobile端侧量化部署完整指南

iPhone和Android也能推理:Ornith-9B-Mobile端侧量化部署完整指南

iPhone和Android也能推理:Ornith-9B-Mobile端侧量化部署完整指南 【免费下载链接】Ornith-1 项目地址: https://gitcode.com/gh_mirrors/or/Ornith-1 Ornith-9B-Mobile 是 Ornith 模型家族中专为端侧推理打造的量化版本:一颗约 9B 参数的稠密模型…

2026/10/9 11:54:01 阅读更多 →
MIMO波束成形MATLAB仿真:从导向矢量到MVDR权重计算的完整实战

MIMO波束成形MATLAB仿真:从导向矢量到MVDR权重计算的完整实战

简介:阵列信号处理是无线通信物理层仿真的核心方向之一,MIMO波束成形通过调整阵列天线权重,在空间上增强期望信号并抑制干扰,其原理可从均匀线阵的导向矢量讲起。实际工程中,MVDR、LCMV与MMSE等自适应算法各有适用场景…

2026/10/9 11:54:01 阅读更多 →
自建GitHub镜像站:Nginx反向代理与缓存加速全指南

自建GitHub镜像站:Nginx反向代理与缓存加速全指南

GitHub镜像站这个词,这几年在开发者圈子里出现的频率越来越高。说白了,它就是一个能让你在访问GitHub时更顺畅的中间层,把github.com、codeload.github.com、raw.githubusercontent.com这些核心域名上的内容,通过你自建的服务做一…

2026/10/9 11:54:01 阅读更多 →

最新新闻

C# WinForms带搜索的ComboBox:从AutoComplete到自定义过滤

C# WinForms带搜索的ComboBox:从AutoComplete到自定义过滤

简介:面向 WPF 和 C# 桌面应用开发者的技术文档,解决标准 ComboBox 控件无法按关键字快速筛选列表项的常见痛点。文档从自定义一个继承自 ComboBox 的组合框控件入手,讲解如何新建依赖属性以接管数据源,如何在控件首次获得焦点时查…

2026/10/9 12:26:43 阅读更多 →
清华104页DeepSeek手册精读:提示词工程、本地部署与API调优实战指南

清华104页DeepSeek手册精读:提示词工程、本地部署与API调优实战指南

简介:这份由清华大学新闻与传播学院新媒体研究中心元宇宙文化实验室余梦珑博士后团队编撰的《DeepSeek从入门到精通》PDF,面向希望系统掌握DeepSeek的开发者、内容创作者与AI应用爱好者,帮助读者从基础使用进阶到提示语设计的创新层面。资源包…

2026/10/9 12:26:43 阅读更多 →
UE4蓝图调用外部exe:用C++封装FPlatformProcess的进程启动指南

UE4蓝图调用外部exe:用C++封装FPlatformProcess的进程启动指南

简介:面向虚幻引擎4开发者的完整源码工程,用于在蓝图中通过 C 实现打开外部可执行程序。核心基于 FPlatformProcess 的 ExecuteAndWait 接口,覆盖进程启动、命令行参数传递、进程句柄获取等关键操作,适合游戏内启动辅助编辑器、执…

2026/10/9 12:26:43 阅读更多 →
网络安全系统上线安全检测与安全措施有效性验证报告模板:五段式结构与WAF绕过验证实战

网络安全系统上线安全检测与安全措施有效性验证报告模板:五段式结构与WAF绕过验证实战

简介:这份《系统上线安全检测和安全措施有效性验证报告模板》面向网络安全评估、系统运维、应用开发及安全合规管理人员,尤其适合参与系统上线前安全评审的技术人员使用。模板围绕网络安全技术、API接口安全、网站应用IPv6支持度三大方向,提供…

2026/10/9 12:26:43 阅读更多 →
NSL-KDD入侵检测实战:数据对齐、PCA降维与SVM/RF调参全解析

NSL-KDD入侵检测实战:数据对齐、PCA降维与SVM/RF调参全解析

简介:本资源是一份面向高校计算机安全、网络安全课程设计与期末大作业的完整网络入侵检测项目,专为初学者与进阶学习者设计,覆盖数据预处理、模型训练、PCA降维对比、跨数据集评估等核心环节。资源包共27个文件,含10个CSV格式的NS…

2026/10/9 12:26:43 阅读更多 →
去中心化人工智能架构:解耦计算、验证与协调三层

去中心化人工智能架构:解耦计算、验证与协调三层

1. 为什么“去中心化人工智能”不是又一个 buzzword,而是架构演进的必然结果“去中心化人工智能”这个词最近频繁出现在技术社区和白皮书里,但很多人第一反应是:这不就是把模型拆开、跑在几台机器上吗?跟微服务、分布式训练有啥本…

2026/10/9 12:25:42 阅读更多 →

日新闻

Java时间API实战:LocalDate、Date与ZonedDateTime的转换与避坑指南

Java时间API实战:LocalDate、Date与ZonedDateTime的转换与避坑指南

Java时间API这个话题,隔三差五就会在群里被翻出来讨论一次。上周还有个同事线上处理一个订单超时问题,排查到最后发现是ZonedDateTime序列化后时区丢了,用户在下单当天晚上看到的时间整整差了8个小时。这类问题几乎每个做Java开发的人都遇到过…

2026/10/9 0:00:49 阅读更多 →
EasyTier实践:从NAT穿透到子网代理的异地组网部署与排错

EasyTier实践:从NAT穿透到子网代理的异地组网部署与排错

前几个月我手头有好几台机器需要互相访问:办公室台式机、家里 NAS、还有一台云主机。如果只是偶尔传个文件倒还好,问题是工作场景经常要在几处环境之间来回切换,每次都先登录跳板机再层层代理,实在折腾。我先后试过端口映射、自建…

2026/10/9 0:00:49 阅读更多 →
AI Agent工程实战:从七要素到七个决策点的系统设计指南

AI Agent工程实战:从七要素到七个决策点的系统设计指南

AI Agent 这个词在过去一年里被反复提及,但真正动手搭过一套能跑起来的 Agent 系统的人都知道,从"知道它是什么"到"让它稳定干活"之间隔着一整套工程决策。我前后参与过几个 Agent 项目的落地,从最初用现成框架拼装&…

2026/10/9 0:01:50 阅读更多 →

周新闻

KT148A语音芯片外挂8002D功放的工程实践指南

KT148A语音芯片外挂8002D功放的工程实践指南

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/8 15:26:32 阅读更多 →
LLC谐振变换器增益公式推导:从FHA等效到完整归一化表达式

LLC谐振变换器增益公式推导:从FHA等效到完整归一化表达式

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/8 15:26:40 阅读更多 →
ARM架构深度解析:从RISC设计理念到交叉编译实战

ARM架构深度解析:从RISC设计理念到交叉编译实战

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/9 10:11:06 阅读更多 →

月新闻

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/8 21:13:17 阅读更多 →
Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/8 15:26:17 阅读更多 →
黑夜航拍船只数据集训练YOLOV5模型全流程解析

黑夜航拍船只数据集训练YOLOV5模型全流程解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/9 6:17:20 阅读更多 →