PostgreSQL 12.2 源码编译部署与生产环境配置实战指南
1. 项目概述为什么是PostgreSQL 12.2在Linux服务器上部署数据库PostgreSQL简称Postgres几乎是绕不开的选择。它以其强大的功能、极高的标准遵从性和活跃的开源生态在众多关键业务场景中扮演着核心角色。今天要聊的PostgreSQL 12.2虽然已经不是最新的版本但它是一个非常重要的稳定分支。12版本引入了不少让DBA和开发者眼前一亮的特性比如性能显著的B-tree索引优化、更灵活的GENERATED列以及分区表功能的重大增强。选择12.2这个特定的小版本往往是因为它在修复了12.0初期的一些问题后达到了一个非常稳定的状态很多生产环境在从9.x或10.x升级时会优先考虑这个版本。这篇文章我会带你从零开始在一台干净的Linux服务器上完整地部署PostgreSQL 12.2。整个过程不仅仅是敲几条安装命令我会重点拆解每个步骤背后的考量比如为什么选择源码编译而非包管理器、关键配置参数如何根据你的机器资源来调整、以及安装完成后那些必须做的安全加固和基础优化。无论你是刚接触Postgres的运维新人还是需要搭建一个稳定测试环境的老手这份手把手的指南都能让你避开我当年踩过的坑快速搭建一个“生产就绪”级别的数据库环境。2. 部署方案选型源码编译 vs 包管理器在Linux上安装软件我们通常有两种主流路径使用发行版自带的包管理器如yum,apt直接安装或者下载源码自己编译。对于PostgreSQL这两种方式差异巨大直接决定了后续管理的灵活性和复杂度。2.1 包管理器安装快速但受限使用yum install postgresql12-server或apt install postgresql-12无疑是最快的。系统会自动解决依赖创建默认用户和目录并提供systemd服务脚本。对于快速搭建一个标准化的、用于学习或简单应用的数据库这非常方便。但是它的缺点也很明显版本滞后软件仓库中的版本可能不是最新的12.2而是12.1或其他小版本。安装路径固定二进制文件、数据目录、配置文件的位置都被发行版规范死通常分别在/usr/bin、/var/lib/pgsql或/var/lib/postgresql下。如果你想自定义数据盘挂载点会比较麻烦。编译参数固定你无法控制Postgres在编译时启用了哪些扩展或优化选项。例如某些地理信息扩展或特殊的索引类型可能默认未被包含。2.2 源码编译安装灵活且可控这正是我推荐的方式尤其是对于生产环境。从 PostgreSQL官方FTP 下载postgresql-12.2.tar.gz源码包自己编译安装。这样做的好处是版本精准确保安装的就是你指定的12.2版本。完全自定义你可以指定安装前缀--prefix将程序文件、数据文件、日志文件分离到不同的磁盘或目录这对于性能和管理至关重要。优化编译可以根据你的CPU架构如使用-marchnative进行编译优化并选择性地启用或禁用某些特性。虽然步骤稍多但一次配置受益终身。接下来我们就以源码编译的方式展开整个安装过程。3. 前期准备环境与依赖检查在开始编译之前我们需要一个“干净”且“健全”的Linux环境。这里我以CentOS 8/Rocky Linux 8为例其他发行版如Ubuntu的命令会有差异但思路一致。3.1 系统用户与目录规划首先为PostgreSQL创建一个专用的系统用户和用户组这基于安全最小化原则。sudo groupadd postgres sudo useradd -g postgres postgres -s /bin/bash创建规划好的目录结构。假设我的设计是程序目录(/opt/pgsql/12.2): 存放二进制文件。数据目录(/pgdata/12): 存放数据库集群即所有数据库的物理文件。这个目录应该放在一块独立、高性能的磁盘上如SSD并确保有充足空间。日志目录(/pglog/12): 存放数据库运行日志。归档目录(/pgarch/12): 存放WAL预写日志归档文件用于备份恢复。sudo mkdir -p /opt/pgsql/12.2 sudo mkdir -p /pgdata/12 sudo mkdir -p /pglog/12 sudo mkdir -p /pgarch/12然后将目录所有权赋予postgres用户sudo chown -R postgres:postgres /opt/pgsql/12.2 /pgdata/12 /pglog/12 /pgarch/12 sudo chmod 700 /pgdata/12 # 数据目录权限必须严格3.2 安装编译依赖编译PostgreSQL需要开发工具链和一些库文件。sudo dnf groupinstall -y Development Tools sudo dnf install -y readline-devel zlib-devel perl-ExtUtils-Embed \ openssl-devel pam-devel libxml2-devel libxslt-devel \ systemd-devel关键依赖说明readline-devel: 提供psql命令行客户端的行编辑和历史功能。zlib-devel: 用于数据压缩。openssl-devel: 启用SSL连接加密。libxml2-devel和libxslt-devel: 支持XML数据类型和相关函数。systemd-devel: 如果你希望集成systemd服务管理推荐就需要这个包。注意在Ubuntu/Debian上对应的包名通常是libreadline-dev、zlib1g-dev、libssl-dev等使用apt安装。4. 源码编译与安装实战4.1 下载与解压源码切换到postgres用户进行操作避免权限问题。sudo su - postgres wget https://ftp.postgresql.org/pub/source/v12.2/postgresql-12.2.tar.gz tar -zxvf postgresql-12.2.tar.gz cd postgresql-12.24.2 配置编译选项运行configure脚本这是最关键的一步它检查系统环境并生成Makefile。./configure --prefix/opt/pgsql/12.2 \ --with-openssl \ --with-libxml \ --with-libxslt \ --with-perl \ --with-pam \ --with-systemd \ --with-blocksize32 \ --with-wal-blocksize32核心参数解读--prefix: 指定安装根目录。所有二进制文件、库文件都会安装在此路径下。--with-*: 启用你需要的功能。生产环境建议至少启用openssl和libxml。--with-blocksize和--with-wal-blocksize: 设置数据块和WAL块大小默认为8KB。对于数据仓库或大型数据库设置为32KB可能提升I/O性能但需要重新编译才能更改所以最好在安装前决定。对于通用OLTP8KB是稳妥的选择这里我设为32KB是为了展示如何自定义。你可以使用./configure --help查看所有选项。配置完成后会输出一个摘要请仔细核对是否所有需要的特性都显示为yes。4.3 编译与安装使用make进行编译-j参数指定并行编译的作业数通常设置为CPU核心数可以加快速度。make -j 4编译成功后进行安装make install安装完成后所有文件都会位于/opt/pgsql/12.2目录下。你可以通过ls /opt/pgsql/12.2/bin/查看安装好的工具如initdb,pg_ctl,psql,postgres等。4.4 配置环境变量为了方便使用将PostgreSQL的bin目录添加到postgres用户的PATH中。echo export PATH/opt/pgsql/12.2/bin:$PATH ~/.bashrc echo export PGDATA/pgdata/12 ~/.bashrc # 设置默认数据目录环境变量 source ~/.bashrc现在你可以在postgres用户的任何位置直接使用psql等命令了。5. 初始化数据库集群与基础配置数据库程序安装好了但还没有数据。我们需要初始化一个数据库集群。5.1 使用initdb初始化initdb是创建新PostgreSQL数据库集群的工具。一个集群是一个由单个数据库服务器实例管理的数据库集合。initdb -D $PGDATA -E UTF8 --localeen_US.UTF-8 -U postgres --authscram-sha-256 --pwprompt-D: 指定集群的数据目录就是我们之前创建的/pgdata/12。-E: 设置默认数据库编码为UTF-8这是现代应用的标配。--locale: 设置区域影响排序规则等。请确保系统已生成此locale可通过locale -a查看。-U: 指定数据库超级用户的用户名通常就叫postgres。--authscram-sha-256: 设置本地连接的默认认证方法为SCRAM-SHA-256这是比旧的md5更安全的密码认证方式。--pwprompt: 为超级用户postgres设置密码。请务必设置一个强密码并牢记。初始化成功后你会在$PGDATA目录下看到postgresql.conf主配置文件、pg_hba.conf客户端认证配置文件等文件。5.2 调整核心配置文件接下来根据服务器硬件配置优化postgresql.conf。这是性能调优的基础。cd $PGDATA vim postgresql.conf找到并修改以下关键参数参数值需根据你的服务器内存、CPU核心数调整# 连接与资源 listen_addresses * # 监听所有IP生产环境建议指定具体IP port 5432 # 默认端口 max_connections 100 # 最大连接数根据应用需求调整 # 内存设置 (假设服务器内存为8GB) shared_buffers 2GB # 共享缓冲区通常设为内存的25% work_mem 16MB # 每个排序/哈希操作的内存保守起点 maintenance_work_mem 512MB # VACUUM等维护操作的内存 # 日志 logging_collector on # 开启日志收集 log_directory /pglog/12 # 指向我们创建的日志目录 log_filename postgresql-%Y-%m-%d_%H%M%S.log log_rotation_age 1d log_rotation_size 100MB log_statement ddl # 记录所有DDL语句便于审计 # 检查点与WAL checkpoint_timeout 15min # 检查点间隔 checkpoint_completion_target 0.9 # 平滑检查点 wal_level replica # 为流复制和归档做准备 archive_mode on # 开启归档 archive_command test ! -f /pgarch/12/%f cp %p /pgarch/12/%f # 归档命令参数调整心得shared_buffers不是越大越好超过内存的40%可能导致操作系统缓存不足反而影响性能。work_mem需要谨慎因为它乘以潜在并发操作数可能消耗大量内存。对于不确定的场景从保守值开始通过监控逐步调整。5.3 配置客户端认证编辑pg_hba.conf控制哪些主机、以何种方式可以连接哪些数据库。vim pg_hba.conf在文件末尾添加规则例如# TYPE DATABASE USER ADDRESS METHOD # 允许本地所有用户通过密码连接所有数据库 local all all scram-sha-256 # 允许内网网段例如192.168.1.0/24的机器通过密码连接 host all all 192.168.1.0/24 scram-sha-256 # 允许特定应用服务器10.0.0.5以特定用户连接特定数据库 host myappdb appuser 10.0.0.5/32 scram-sha-256安全警告切勿在生产环境中使用trust方法无需密码也尽量避免使用0.0.0.0/0允许所有IP。遵循最小权限原则按需配置。6. 启动服务与系统集成6.1 手动启动与停止作为postgres用户你可以使用pg_ctl工具管理数据库实例。# 启动数据库 pg_ctl -D $PGDATA start # 查看状态 pg_ctl -D $PGDATA status # 停止数据库 pg_ctl -D $PGDATA stop -m fast-m fast表示快速关闭会中断现有连接并回滚未提交事务。-m smart是智能关闭等待所有连接结束生产环境重启常用fast。6.2 配置systemd服务推荐为了像其他系统服务一样管理PostgreSQL开机自启、状态查看、日志集成我们创建systemd服务文件。 首先切换回root用户exit # 退出postgres用户回到root创建服务文件vim /etc/systemd/system/postgresql-12.service写入以下内容[Unit] DescriptionPostgreSQL 12.2 Database Server Afternetwork.target [Service] Typenotify Userpostgres Grouppostgres EnvironmentPGDATA/pgdata/12 OOMScoreAdjust-1000 ExecStart/opt/pgsql/12.2/bin/postgres -D ${PGDATA} ExecReload/bin/kill -HUP $MAINPID KillModemixed KillSignalSIGINT TimeoutSec0 [Install] WantedBymulti-user.target关键点说明Typenotify: 让PostgreSQL在启动完成后主动通知systemd状态更准确。User/Group: 确保服务以postgres用户身份运行。Environment: 设置PGDATA环境变量。OOMScoreAdjust: 降低OOM内存不足时被杀死的优先级。KillModemixed: 向主进程发SIGTERM向worker进程发SIGKILL确保优雅停止。然后启用并启动服务sudo systemctl daemon-reload sudo systemctl enable postgresql-12 sudo systemctl start postgresql-12 sudo systemctl status postgresql-12现在你可以使用sudo systemctl restart|stop|reload postgresql-12来管理服务了。7. 安装后必要操作与验证服务启动后工作还没完有几件必须做的事情。7.1 连接测试与基础管理使用psql命令行客户端连接数据库sudo -u postgres psql -h localhost -p 5432连接成功后会进入psql提示符postgres#。执行一些基础命令验证-- 查看数据库版本 SELECT version(); -- 列出所有数据库 \l -- 创建一个测试数据库和用户 CREATE DATABASE testdb; CREATE USER testuser WITH ENCRYPTED PASSWORD YourStrongPassword123!; GRANT ALL PRIVILEGES ON DATABASE testdb TO testuser; -- 切换到testdb \c testdb -- 创建一张表并插入数据 CREATE TABLE users (id SERIAL PRIMARY KEY, name VARCHAR(50)); INSERT INTO users (name) VALUES (安装测试); SELECT * FROM users;7.2 配置防火墙如果服务器开启了防火墙如firewalld需要放行PostgreSQL的默认端口5432。sudo firewall-cmd --permanent --add-port5432/tcp sudo firewall-cmd --reload sudo firewall-cmd --list-ports # 确认端口已开放7.3 设置日志轮转虽然我们配置了日志按时间和大小轮转但使用logrotate进行外部管理更可靠。创建配置文件sudo vim /etc/logrotate.d/postgresql-12内容如下/pglog/12/*.log { daily rotate 30 compress delaycompress missingok notifempty create 0640 postgres postgres sharedscripts postrotate /bin/systemctl reload postgresql-12 /dev/null 21 || true endscript }这样日志会每天轮转保留30天并自动压缩旧日志。postrotate脚本通过重载服务通知PostgreSQL切换到新的日志文件。8. 常见问题与故障排查实录即使按照步骤操作你也可能会遇到一些问题。这里记录几个我遇到过的典型场景。8.1 启动失败无法绑定端口现象systemctl status显示服务启动失败日志/pglog/12/下的最新日志文件中有类似FATAL: could not create lock file /tmp/.s.PGSQL.5432.lock: Permission denied或Address already in use的错误。排查思路端口占用使用sudo ss -tlnp | grep :5432检查5432端口是否已被其他进程可能是另一个PostgreSQL实例占用。权限问题确保/pgdata/12及其所有父目录的所有权均为postgres:postgres且权限为700。同时检查/tmp目录的权限。SELinux/AppArmor在某些严格的安全策略下SELinux可能会阻止进程访问非标准目录。可以暂时将其设置为宽容模式测试sudo setenforce 0。如果问题解决则需要为数据目录添加正确的SELinux上下文sudo semanage fcontext -a -t postgresql_db_t /pgdata/12(/.*)?然后sudo restorecon -Rv /pgdata/12。生产环境不建议直接关闭SELinux。8.2 客户端无法连接现象从远程客户端使用psql -h 服务器IP -U postgres连接时超时或被拒绝。排查步骤检查服务监听在服务器上运行sudo -u postgres psql -c SHOW listen_addresses;。如果结果是localhost说明只监听本地环回地址需要修改postgresql.conf中的listen_addresses为*或特定IP并重载服务。检查pg_hba.conf确认客户端的IP地址和认证方法在pg_hba.conf中有对应的、正确的配置行。记住这个文件的规则是自上而下匹配第一条匹配的规则生效。检查防火墙确认服务器防火墙和云服务商的安全组如AWS Security Group阿里云安全组均已放行5432端口。测试本地连接先在服务器本地用psql -h localhost -U postgres测试排除数据库服务本身的问题。8.3 性能问题连接数耗尽或内存不足现象应用报错“sorry, too many clients already”或数据库响应缓慢监控显示内存使用率高。应对策略连接数耗尽首先检查max_connections设置。盲目调高不是好办法每个连接都会消耗内存。更优解是使用连接池如pgbouncer或pgpool-II让应用通过连接池与数据库交互复用少量后端连接。内存不足回顾postgresql.conf中的内存参数。work_mem设置过高在并发复杂查询多时可能导致物理内存耗尽触发OOM。通过日志和监控如pg_stat_statements扩展找出消耗大量内存的查询并进行优化。shared_buffers过大也可能挤占操作系统文件缓存。8.4 安装扩展如pg_stat_statements失败现象执行CREATE EXTENSION pg_stat_statements;时报错提示模块未找到。原因与解决pg_stat_statements是contrib模块源码编译时默认不会安装。需要手动编译安装。# 切换到postgres用户和源码目录 sudo su - postgres cd ~/postgresql-12.2/contrib/pg_stat_statements make make install然后在数据库中执行以下SQL-- 修改postgresql.conf在shared_preload_libraries中加入该扩展 -- shared_preload_libraries pg_stat_statements -- 重启数据库后在目标数据库中创建扩展 CREATE EXTENSION pg_stat_statements;这个扩展对于监控和分析SQL性能至关重要建议安装。整个安装和初步调优过程到这里就基本完成了。从规划目录、解决依赖、编译安装到精细配置、服务集成、安全加固每一步都藏着细节。源码安装给了我们最大的控制权但也要求我们对这些细节有更深的了解。记住没有一个配置是放之四海而皆准的最好的配置来自于对自身业务负载的持续监控和迭代调整。安装只是起点后续的监控、备份、高可用搭建才是DBA工作的重头戏。

相关新闻

Oracle数据泵(expdp/impdp)实战指南:从原理到高可用备份

Oracle数据泵(expdp/impdp)实战指南:从原理到高可用备份

1. 项目概述:为什么数据泵是Oracle DBA的“瑞士军刀”如果你是一名Oracle数据库管理员,或者正在管理包含Oracle数据库的系统,那么“备份”这两个字的分量,你肯定深有体会。数据是业务的命脉,而备份则是这条命脉最后的保…

2026/8/5 4:57:05 阅读更多 →
OpenClaw智能体实战:从部署到高阶应用,打造生产力AI助手

OpenClaw智能体实战:从部署到高阶应用,打造生产力AI助手

1. 项目概述:从“玩具”到“生产力”的蜕变最近在AI圈子里,OpenClaw的热度一直居高不下。很多人把它下载下来,跑通了官方示例,跟它聊了几句天,就觉得“不过如此”,然后束之高阁。这其实挺可惜的。我最初接触…

2026/8/5 4:57:05 阅读更多 →
Docker部署MySQL全攻略:从环境搭建到生产级配置

Docker部署MySQL全攻略:从环境搭建到生产级配置

1. 为什么选择Docker来运行MySQL?如果你和我一样,经历过在不同操作系统、不同版本上安装和配置MySQL的“折磨”,那么Docker的出现,简直就像一道救赎之光。传统安装方式,你需要去官网下载对应平台的安装包,处…

2026/8/5 4:57:05 阅读更多 →

最新新闻

航拍坦克士兵军车数据集20943张VOC+YOLO格式

航拍坦克士兵军车数据集20943张VOC+YOLO格式

航拍坦克士兵军车数据集20943张VOCYOLO格式数据集格式:Pascal VOC格式YOLO格式(不包含分割路径的txt文件,仅仅包含jpg图片以及对应的VOC格式xml文件和yolo格式txt文件) 图片数量(jpg文件个数):20943 标注数量(xml文件个数):20943 …

2026/8/5 7:04:04 阅读更多 →
SegFormer:高效Transformer语义分割架构解析与实战指南

SegFormer:高效Transformer语义分割架构解析与实战指南

1. 项目概述:为什么SegFormer值得你花时间?如果你正在计算机视觉领域,特别是语义分割这个赛道上耕耘,无论是做学术研究还是工程落地,最近几年肯定被各种基于Transformer的模型刷过屏。从ViT开始,视觉Transf…

2026/8/5 7:04:04 阅读更多 →
技术人如何通过CNN新闻高效提升英语听力:10分钟四步精听法

技术人如何通过CNN新闻高效提升英语听力:10分钟四步精听法

大家好,我是专注于技术分享与学习笔记的博主。今天我们来聊一个看似与技术无关,实则对开发者、技术学习者乃至任何需要快速获取英文信息的人至关重要的技能——通过CNN新闻提升英文听力。在全球化技术社区中,阅读官方文档、观看技术大会视频、…

2026/8/5 7:04:04 阅读更多 →
HybridCLR与Addressable结合时Script Missing问题解析与解决方案

HybridCLR与Addressable结合时Script Missing问题解析与解决方案

1. 项目概述:当HybridCLR遇上Addressable,一个典型的“脚本丢失”陷阱如果你正在使用Unity的HybridCLR(华佗)热更新框架,并且配合Addressable资源管理系统来构建你的热更新流程,那么你很可能已经或即将踩中…

2026/8/5 7:04:04 阅读更多 →
动物和鸟类物种的图像和声音数据的多模态数据集

动物和鸟类物种的图像和声音数据的多模态数据集

摘要:动物与鸟类数据集是一个包含 35 种物种的多模态数据集,整合图像数据(约 7,980 张,每类 228 张平衡分布)和音频数据(每类 50-100 个声音文件,包含动物发声和鸟类鸣叫)。数据集采…

2026/8/5 7:04:04 阅读更多 →
AI视频风格化实战:本地部署Stable Diffusion打造《猫和老鼠》迷幻特效

AI视频风格化实战:本地部署Stable Diffusion打造《猫和老鼠》迷幻特效

这次我们来看一个名为“猫和老鼠追出幻觉了”的项目。从标题来看,这很可能是一个利用AI图像生成或视频处理技术,将经典动画《猫和老鼠》中的追逐场景进行风格化、幻觉化或超现实化处理的有趣应用。这类项目通常结合了Stable Diffusion、ControlNet等模型…

2026/8/5 7:03:04 阅读更多 →

日新闻

Java缓存框架:JetCache

Java缓存框架:JetCache

TOC 一、简介 JetCache 是一个 Java 缓存抽象框架,为不同的缓存解决方案提供了统一的使用方式。 它提供的注解比 Spring Cache 更加强大。 JetCache 的注解支持原生 TTL、两级缓存以及在分布式环境中的自动刷新功能,同时你也可以通过代码直接操作 Cach…

2026/8/5 0:00:43 阅读更多 →
AD 铺铜设置十字连接,过孔全连接,新版AD的简单设置

AD 铺铜设置十字连接,过孔全连接,新版AD的简单设置

需求:通孔焊盘 十字花;过孔 Via 实心直连;贴片焊盘按需设置 AD 测试版本AD24 很多工程师踩坑:全部统一十字,导致接地过孔阻抗高、大电流发热! 一、快捷键打开规则 PCB 界面按下:D R 展开…

2026/8/5 0:00:43 阅读更多 →
AI素描转换技术深度拆解(2024最新论文+工业级落地代码):从Stable Diffusion ControlNet到LoRA微调全链路解析

AI素描转换技术深度拆解(2024最新论文+工业级落地代码):从Stable Diffusion ControlNet到LoRA微调全链路解析

更多请点击: https://kaifayun.com 第一章:AI生成素描效果 AI生成素描效果是计算机视觉与风格迁移技术融合的典型应用,其核心在于将彩色照片或RGB图像转换为具有手绘质感、明暗对比强烈、边缘清晰的单色素描图像。该过程通常依赖于深度学习模…

2026/8/5 0:00:43 阅读更多 →

周新闻

最大流算法详解:从水管网络到Ford-Fulkerson与Dinic实战

最大流算法详解:从水管网络到Ford-Fulkerson与Dinic实战

1. 从水管网络到最大流:一个核心问题的诞生想象一下,你是一个城市供水系统的总工程师。你的城市有多个水源(水库),需要通过一个复杂的地下管道网络,将水输送到各个居民区。每条管道都有其最大通水能力&…

2026/8/4 13:24:41 阅读更多 →
基于Springboot的企业门户网站(源码+LW+调试文档+讲解)

基于Springboot的企业门户网站(源码+LW+调试文档+讲解)

温馨提示:本人主页置顶文章(点我)开头有 CSDN 平台官方提供的学长联系方式的名片! 温馨提示:本人主页置顶文章(点我)开头有 CSDN 平台官方提供的学长联系方式的名片! 温馨提示:本人主页置顶文章(点我)开头有 CSDN 平台…

2026/8/4 11:41:39 阅读更多 →
MATLAB xcorr函数详解:从互相关原理到四大实战应用

MATLAB xcorr函数详解:从互相关原理到四大实战应用

1. 从一次信号“找茬”说起:为什么我们需要互相关几年前,我在处理一组声学传感器数据时遇到了一个棘手的问题。我有两个麦克风记录了一段相同的音频信号,理论上它们接收到的声音波形应该非常相似,只是由于麦克风位置不同&#xff…

2026/8/4 5:26:40 阅读更多 →

月新闻

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南 【免费下载链接】BaiduNetdiskPlugin-macOS For macOS.百度网盘 破解SVIP、下载速度限制~ 项目地址: https://gitcode.com/gh_mirrors/ba/BaiduNetdiskPlugin-macOS 还在为百度网盘macOS版的龟速下…

2026/8/4 13:38:24 阅读更多 →
终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换

终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换

终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换 【免费下载链接】ncmdump 项目地址: https://gitcode.com/gh_mirrors/ncmd/ncmdump 还在为网易云音乐下载的NCM格式文件无法在其他播放器播放而烦恼吗?ncmdump解密工具帮你轻松解决这个困…

2026/8/4 11:09:16 阅读更多 →
HarmonyOS 应用开发《掌上英语》第81篇: 智能体卡片:为英语学习 App 打造桌面级学习助手

HarmonyOS 应用开发《掌上英语》第81篇: 智能体卡片:为英语学习 App 打造桌面级学习助手

AgentCard 智能体卡片:为英语学习 App 打造桌面级学习助手适用平台:HarmonyOS 7.0 (API 26 Beta)一、引言 HarmonyOS 7.0(API 26 Beta)新增了 AgentCard 智能体卡片能力,这是继 HMAF(鸿蒙智能体框架&#x…

2026/8/4 13:38:40 阅读更多 →