数据库教程FGMT51‑PostgreSQL实例管理与参数文件

数据库教程FGMT51‑PostgreSQL实例管理与参数文件

前言

PostgreSQL是企业级开源关系型数据库,实例的启动停止、参数文件、控制文件、日志、系统目录、扩展插件是DBA日常运维的核心基础。很多故障来源于对参数加载机制不理解、控制文件损坏、系统表索引损坏、扩展插件管理不当。风哥教程本文基于fgedu‑net‑cn1主机开展全套实操,硬件规格64G内存,8颗CPU ;数据库实例名fgedudb,业务测试用户名fgedu,软件与数据根目录统一使用/fgedudb。风哥 itpux‑com

本套风哥教程面向PostgreSQL DBA、运维工程师、数据库架构师;覆盖psql客户端工具、pg_ctl服务端工具、三大核心配置文件postgresql.conf、pg_hba.conf、pg_ident.conf;参数文件源码层面加载逻辑;pg_control控制文件原理与损坏恢复;数据库日志体系;系统表与系统视图;系统目录索引损坏故障处理;PostgreSQL扩展插件管理实操。风哥教程本文分为前言与大纲、核心理论知识、实战操作演练、风哥针对本文总结四大模块;实战包含大量可直接复制Shell、SQL脚本,读者可以在测试主机完整复现实例管理、故障恢复全流程。网上搜索风哥教程可以学习全套数据库教程

内容大纲

  1. PostgreSQL实例管理整体综述,实验主机硬件环境规划,工具与文件整体梳理
  2. 核心理论:psql客户端、pg_ctl服务端工具;三大配置文件分工;GUC参数框架与参数加载源码逻辑;postgresql.conf参数分类(适配64G内存8CPU);pg_hba.conf主机认证、pg_ident.conf用户名映射;pg_control控制文件内部字段;WAL与实例崩溃恢复原理;数据库日志分类;系统表/系统视图作用;索引损坏诱因;扩展插件体系原理
  3. 适配64G内存8CPU服务器postgresql.conf生产参数模板;各类故障风险汇总
  4. 实战1:psql客户端管理工具全套元命令实操,变量、输出、脚本执行
  5. 实战2:pg_ctl服务端工具实操,实例启动、停止、reload重载、状态查看
  6. 实战3:postgresql.conf参数管理实操,区分reload重载与restart重启参数,pg_settings系统视图查询
  7. 实战4:pg_hba.conf主机访问控制配置实战,访问权限故障复现
  8. 实战5:pg_ident.conf用户名映射配置实战
  9. 实战6:pg_control控制文件原理,模拟控制文件损坏,pg_resetwal应急恢复完整案例
  10. 实战7:PostgreSQL日志文件配置实战,错误日志、CSV日志、慢查询日志配置
  11. 实战8:系统表、系统视图查询实操,pg_catalog、information_schema、pg_stat_statements
  12. 实战9:系统目录索引损坏故障模拟,amcheck检测、REINDEX重建索引故障处理
  13. 实战10:扩展插件管理实操,安装、创建、查看、删除扩展,pg_stat_statements、amcheck插件实战
  14. PostgreSQL实例上线验收检查清单,生产环境最佳实践,高频故障排查

一、核心理论知识

本章节为本套风哥教程理论基础,理解PostgreSQL实例文件体系,区分不同配置文件职责,理解GUC参数加载逻辑,掌握控制文件、日志、系统目录、扩展插件底层原理,规避实例启动失败、权限异常、数据损坏类生产故障。风哥教程 113257174

1.1 工具体系概述

  1. psql :交互式客户端工具,DBA最主要操作入口;支持元命令\d\l\x,可以执行SQL、执行脚本、导出数据、修改会话变量。
  2. pg_ctl:服务端管理工具,负责实例initdb初始化、start/stop/restart/reload、status状态查看;发送SIGHUP信号触发配置文件重读,不需要重启数据库。
  3. 其他配套工具:pg_resetwal控制文件修复、pg_dump逻辑备份、pg_repack在线重建索引等。

1.2 三大核心配置文件分工

  1. postgresql.conf :实例主参数文件,内存、IO、WAL、连接、日志、autovacuum全部参数;GUC统一管理;分为reload可热加载参数必须重启生效参数
  2. pg_hba.conf:Host‑Based‑Authentication基于主机认证,控制客户端来源IP、数据库、用户、认证方式;reload生效,不需要重启实例。
  3. pg_ident.conf:操作系统用户名映射,把操作系统系统用户映射成数据库内部用户,用于ident认证模式。

文件路径可以通过postgresql.conf内hba_fileident_file修改,不强制放在数据目录。网上搜索风哥教程可以学习全套数据库教程

1.3 GUC参数框架与参数加载源码逻辑

PostgreSQL内部GUC(Grand Unified Configuration)统一管理全部参数,源码层面将参数划分为不同上下文context,决定参数生效方式:

  1. internal:编译写死,不可修改。
  2. postmaster :实例进程级别,修改后必须重启实例 ,例如max_connectionsshared_buffers
  3. sighup:收到SIGHUP信号(pg_ctl reload)即可热加载,无需重启实例,autovacuum、日志、部分WAL参数。
  4. superuser:超级用户会话可以SET修改,会话生效。
  5. user:普通用户会话SET修改。

参数加载优先级从高到低:命令行postgres -c > postgresql.auto.conf > postgresql.conf > 编译内置默认值。

postgresql.auto.conf:ALTER SYSTEM命令自动写入,优先级高于postgresql.conf,不建议手工编辑该文件。

1.4 64G内存8CPU生产postgresql.conf关键参数

ini 复制代码
#内存配置
shared_buffers = 16GB
work_mem = 64MB
maintenance_work_mem = 4GB
effective_cache_size = 48GB
#连接
max_connections = 800
#WAL预写日志
wal_level = replica
max_wal_size = 16GB
min_wal_size = 4GB
wal_buffers = 16MB
#自动vacuum
autovacuum = on
autovacuum_max_workers = 6
autovacuum_naptime = 15s
#日志配置
logging_collector = on
log_directory = '/fgedudb/pg_log'
log_filename = 'postgresql‑%Y%m%d_%H%M%S.log'
log_min_duration_statement = 1000
log_connections = off
log_disconnections = off
listen_addresses = '*'
port = 5432

shared_buffers官方建议为物理内存25%,64G内存设置16GB;effective_cache_size设置物理内存75%。风哥数据库教程 itpux‑com

1.5 pg_control控制文件原理

pg_control存放在数据目录global子目录,二进制文件,记录集群全局元数据:数据库版本、WAL当前位置、数据库ID、多事务ID、时间线ID、数据库状态(shut down/ in production)。

注意:pg_control损坏不会直接丢失业务数据表数据,但是实例无法启动;pg_resetwal属于应急最后手段,运行之后数据库存在事务不一致风险,执行完成需要立刻逻辑导出全量数据重建集群,不可以直接继续业务运行。

1.6 PostgreSQL日志分类

  1. 服务器错误日志:实例启动停止、报错、认证失败、后台进程异常;
  2. CSV日志:结构化CSV格式日志,便于程序分析;
  3. SQL慢语句日志:执行时间超过阈值SQL;
  4. WAL预写日志:崩溃恢复、复制使用,不属于文本日志,属于二进制事务日志。

1.7 系统表、系统视图原理

  • pg_catalog:核心系统目录,pg_database、pg_class、pg_index、pg_user全部基础系统表;
  • information_schema:SQL标准兼容视图,便于跨数据库兼容查询;
  • pg_stat_*统计视图:统计会话、SQL、索引IO;部分需要开启扩展插件例如pg_stat_statements。
    系统目录索引损坏诱因:磁盘硬件故障、内存错误、软件BUG;现象:查询系统目录报错、实例启动崩溃。amcheck扩展插件用于校验索引逻辑一致性。

1.8 扩展插件Extension体系原理

PostgreSQL高度依赖扩展插件增强能力;分为内置contrib插件、第三方插件;CREATE EXTENSION加载,DROP EXTENSION卸载;插件对象注册在系统目录,支持版本升级;常用插件:pg_stat_statements、amcheck、pg_repack。

1.9 风险点汇总

  1. 修改postgresql.conf分不清sighup与postmaster上下文,reload之后参数不生效,pending_restart标记为true;
  2. pg_hba.conf语法写错,reload直接导致所有新连接拒绝;
  3. pg_resetwal工具滥用,没有做备份直接运行,数据库遗留部分提交事务,业务数据逻辑损坏;
  4. 直接手工编辑postgresql.auto.conf,参数冲突;
  5. 系统目录索引损坏,直接重启无法修复,必须REINDEX SYSTEM重建系统索引;
  6. 扩展插件版本和大版本不兼容,加载实例直接报错。

网上搜索风哥教程可以学习全套数据库教程

二、实战操作演练

环境说明:

实验主机fgedu‑net‑cn1,硬件规格64G内存8CPU;PostgreSQL软件根目录/fgedudb/pgsql;数据目录/fgedudb/pgdata;日志目录/fgedudb/pg_log;操作系统用户postgres;数据库端口5432;业务库fgedudb,业务用户fgedu

前置初始化数据目录:

bash 复制代码
mkdir -p /fgedudb/pgdata /fgedudb/pg_log
chown -R postgres:postgres /fgedudb
chmod 700 /fgedudb/pgdata
su - postgres
/fgedudb/pgsql/bin/initdb -D /fgedudb/pgdata -U postgres -W

实战1:psql客户端管理工具全套元命令实操

bash 复制代码
su - postgres
/fgedudb/pgsql/bin/psql -d postgres -p 5432

基础元命令实操

sql 复制代码
\l          --查看所有数据库
\du         --查看用户角色
\dn         --查看schema
\c fgedudb  --切换数据库
\x on       --扩展输出模式,行转列
\dt         --显示普通表
\di         --显示索引
\df         --函数列表
\dv         --视图列表
\set pager off --关闭分页
\i /fgedudb/test.sql --执行外部SQL脚本
\o /fgedudb/out.txt --输出重定向到文件
\q          --退出psql

执行SQL创建业务测试库用户

sql 复制代码
CREATE DATABASE fgedudb;
CREATE USER fgedu WITH PASSWORD 'fgedudb';
GRANT ALL ON DATABASE fgedudb TO fgedu;
\c fgedudb fgedu
CREATE TABLE t_test(id int primary key,info text,create_time timestamp);
INSERT INTO t_test VALUES(1,'test01',now());
SELECT * FROM t_test;

psql执行操作系统shell命令,\!

sql 复制代码
\! ls -l /fgedudb/pgdata

实战2:pg_ctl服务端工具实操

pg_ctl是实例服务端管理工具,全部操作需要使用postgres操作系统用户

bash 复制代码
su - postgres
export PGDATA=/fgedudb/pgdata

#查看实例运行状态
/fgedudb/pgsql/bin/pg_ctl status -D ${PGDATA}

#启动实例
/fgedudb/pgsql/bin/pg_ctl start -D ${PGDATA}

#重载配置文件,发送SIGHUP信号,不中断业务连接
/fgedudb/pgsql/bin/pg_ctl reload -D ${PGDATA}

#正常关闭,等待会话结束(shutdown smart)
/fgedudb/pgsql/bin/pg_ctl stop -D ${PGDATA} -m smart

#快速关闭,断开现有会话(fast)
/fgedudb/pgsql/bin/pg_ctl stop -D ${PGDATA} -m fast

#立即关闭,类似crash,不做检查点(immediate)
/fgedudb/pgsql/bin/pg_ctl stop -D ${PGDATA} -m immediate

注意:immediate模式关闭,下次启动会触发WAL崩溃恢复。

实战3:postgresql.conf参数管理实操

编辑/fgedudb/pgdata/postgresql.conf,写入适配64G‑8CPU参数模板片段。

登录psql查看参数元信息,区分参数生效上下文

sql 复制代码
--查看全部参数,pending_restart=true代表需要重启实例
SELECT name,setting,context,pending_restart,short_desc FROM pg_settings ORDER BY context;

--查询内存相关参数
SELECT name,setting,unit,context FROM pg_settings WHERE name LIKE '%shared_buffers%' OR name LIKE '%work_mem%';

演示ALTER SYSTEM写入auto.conf,不需要手工编辑auto.conf

sql 复制代码
ALTER SYSTEM SET log_min_duration_statement=500;

执行reload重载配置

bash 复制代码
/fgedudb/pgsql/bin/pg_ctl reload -D /fgedudb/pgdata

查看postgresql.auto.conf文件内容

bash 复制代码
cat /fgedudb/pgdata/postgresql.auto.conf

重点:context为postmaster的参数,reload不会生效,pending_restart变为true,必须执行pg_ctl restart才生效。风哥数据库教程 itpux‑com

实战4:pg_hba.conf主机访问控制配置实战

/fgedudb/pgdata/pg_hba.conf,每行一条认证规则,从上往下匹配,匹配即停止。

修改配置,增加允许业务网段密码访问,本地trust认证

复制代码
local   all             all                                     trust
host    all             all             127.0.0.1/32            scram‑sha‑256
host    all             all             10.0.0.0/24             scram‑sha‑256

保存之后执行reload重载,不需要重启数据库

bash 复制代码
/fgedudb/pgsql/bin/pg_ctl reload -D /fgedudb/pgdata

psql查看hba加载后的规则视图

sql 复制代码
SELECT * FROM pg_hba_file_rules;

故障模拟:写一条语法错误的pg_hba.conf,执行reload;新连接全部拒绝,旧连接不受影响;修正语法,再次reload恢复访问。网上搜索风哥教程可以学习全套数据库教程

实战5:pg_ident.conf用户名映射配置实战

pg_ident.conf实现ident操作系统用户映射,格式:映射名 操作系统用户 数据库用户

编辑/fgedudb/pgdata/pg_ident.conf

复制代码
fgedu_map        postgres        postgres
fgedu_map        os_fgedu        fgedu

pg_hba.conf引用映射配置

复制代码
local   all         all         ident map=fgedu_map

执行reload生效

bash 复制代码
/fgedudb/pgsql/bin/pg_ctl reload -D /fgedudb/pgdata

实战6:pg_control控制文件,模拟控制文件损坏pg_resetwal应急恢复案例

⚠重要提示:pg_resetwal是最后应急手段,不是修复工具,执行后数据存在逻辑不一致风险,操作前务必备份全部pgdata目录,执行完成立刻逻辑全量导出重建集群,禁止直接继续业务

  1. 正常运行状态查看pg_control内容,pg_controldata工具读取二进制控制文件
bash 复制代码
su - postgres
/fgedudb/pgsql/bin/pg_controldata -D /fgedudb/pgdata

输出可以看到:Database cluster state、Latest checkpoint location、NextMultiXactId等关键字段。

  1. 模拟故障:停止实例,人为删除pg_control文件,模拟控制文件介质损坏
bash 复制代码
/fgedudb/pgsql/bin/pg_ctl stop -D /fgedudb/pgdata -m fast
mv /fgedudb/pgdata/global/pg_control /fgedudb/pgdata/global/pg_control.bak

尝试启动实例,实例启动失败,报控制文件缺失。

  1. 使用pg_resetwal强制重置控制文件
bash 复制代码
/fgedudb/pgsql/bin/pg_resetwal -f /fgedudb/pgdata
  1. 尝试启动实例
bash 复制代码
/fgedudb/pgsql/bin/pg_ctl start -D /fgedudb/pgdata

实例可以启动,但集群事务信息被重置,必须立刻执行全量逻辑备份

bash 复制代码
/fgedudb/pgsql/bin/pg_dumpall -U postgres -f /fgedudb/full_dump.sql
  1. 重建全新initdb集群,导入dump,完成真正修复;原损坏pgdata目录归档留存,不能直接用于业务。

实战7:PostgreSQL日志文件配置实战

修改postgresql.conf日志相关参数

ini 复制代码
logging_collector = on
log_directory = '/fgedudb/pg_log'
log_filename = 'postgresql‑%Y%m%d_%H%M%S.log'
log_min_duration_statement = 1000
log_connections = off
log_destination = 'csvlog,stderr'
log_truncate_on_rotation = on
log_rotation_age = 1d
log_rotation_size = 100MB

创建日志目录,权限postgres

bash 复制代码
mkdir -p /fgedudb/pg_log
chown postgres:postgres /fgedudb/pg_log

pg_ctl reload生效

bash 复制代码
/fgedudb/pgsql/bin/pg_ctl reload -D /fgedudb/pgdata

查看日志文件

bash 复制代码
ls -l /fgedudb/pg_log

实战8:系统表与系统视图查询实操

sql 复制代码
--查看数据库信息
SELECT datname,datdba,encoding FROM pg_database;

--查看表、索引元数据
SELECT relname,relkind,reltuples FROM pg_class WHERE relnamespace='public'::regnamespace;

--查看用户角色
SELECT rolname,rolsuper,rolcanlogin FROM pg_roles;

--information_schema视图
SELECT table_name,table_schema FROM information_schema.tables WHERE table_schema='public';

--加载pg_stat_statements扩展之后,查看SQL统计(后面插件实战)
SELECT queryid,query,total_time,calls FROM pg_stat_statements ORDER BY total_time DESC LIMIT 10;

实战9:系统目录索引损坏故障模拟与处理

使用amcheck插件校验系统目录索引一致性,模拟系统索引损坏,执行REINDEX SYSTEM重建系统全部索引。

加载amcheck扩展插件

sql 复制代码
CREATE EXTENSION amcheck;

校验pg_class系统目录B‑Tree索引

sql 复制代码
SELECT bt_index_check(indexrelid) FROM pg_index WHERE indrelid='pg_class'::regclass;

故障场景:硬件故障造成pg_class索引逻辑损坏,查询系统目录报错,实例部分功能异常。

重建系统全部目录索引

sql 复制代码
REINDEX SYSTEM postgres;

重建单个系统索引

sql 复制代码
REINDEX INDEX pg_class_oid_index;

注意REINDEX SYSTEM会对系统目录加排他锁,业务高峰期谨慎执行。

上51CTO搜索风哥可以学习全套数据库教程

实战10:扩展插件Extension管理实操

contrib内置插件,pg_stat_statements、amcheck。

10.1 加载pg_stat_statements,SQL性能统计插件

修改postgresql.conf,共享预加载库

ini 复制代码
shared_preload_libraries = 'pg_stat_statements'

shared_preload_libraries属于postmaster上下文,修改必须重启实例

bash 复制代码
/fgedudb/pgsql/bin/pg_ctl restart -D /fgedudb/pgdata

数据库内创建扩展

sql 复制代码
CREATE EXTENSION pg_stat_statements;
--查看top消耗SQL
SELECT query,calls,total_time FROM pg_stat_statements ORDER BY total_time DESC limit 10;
10.2 amcheck索引一致性校验插件
sql 复制代码
CREATE EXTENSION amcheck;
--校验普通业务表索引
SELECT bt_index_check(indexrelid) FROM pg_index WHERE indrelid='t_test'::regclass;
10.3 查看已安装扩展,删除扩展
sql 复制代码
\dx --psql元命令查看扩展列表
SELECT extname,extversion FROM pg_extension;
DROP EXTENSION IF EXISTS amcheck;
10.4 插件升级ALTER EXTENSION
sql 复制代码
ALTER EXTENSION amcheck UPDATE TO '1.4';

2.11 PostgreSQL实例上线验收检查清单

  1. 操作系统环境:数据目录、日志目录权限为postgres,目录权限700;磁盘空间充足。
  2. 参数文件检查:postgresql.conf适配64G‑8CPU硬件;区分reload与restart参数,pending_restart无异常残留;postgresql.auto.conf无手工编辑痕迹。
  3. 访问认证:pg_hba.conf访问规则符合安全规范;pg_ident.conf映射按需配置;使用pg_hba_file_rules视图校验语法无错误。
  4. 日志配置:logging_collector开启;日志目录路径正确;慢SQL阈值配置生效。
  5. 控制文件:pg_controldata查看集群状态正常;定期备份pgdata全局目录。
  6. 系统目录:使用amcheck校验核心系统目录索引无逻辑损坏;
  7. 扩展插件:业务需要扩展正常加载;shared_preload_libraries库配置正确,插件版本匹配数据库大版本。
  8. 启停演练:pg_ctl start/reload/stop各模式演练,确认实例启停正常;
  9. 文档:记录关键参数变更记录,pg_resetwal风险应急手册。

2.12 高频故障排查

  1. 修改参数reload之后不生效:查看pg_settings的context,如果是postmaster,必须重启实例;
  2. 远程连接无法访问:检查listen_addresses、pg_hba.conf规则,reload是否执行;
  3. 实例启动失败,报pg_control相关错误:控制文件损坏,优先从备份恢复pgdata;pg_resetwal仅作为最后应急手段;
  4. amcheck报索引不一致:硬件内存/磁盘优先排查;业务索引执行REINDEX;系统索引执行REINDEX SYSTEM;
  5. CREATE EXTENSION失败:shared_preload_libraries没有配置,需要重启实例;插件文件缺失,contrib包没有完整安装;
  6. pg_hba.conf语法错误:reload成功但是新连接全部失败,查看数据库错误日志定位行号修正。

三、风哥针对本文总结

本套风哥教程完整讲解PostgreSQL实例管理与参数文件全套知识,覆盖psql客户端、pg_ctl服务端工具;postgresql.conf、pg_hba.conf、pg_ident.conf三大配置文件;GUC参数源码加载逻辑;pg_control控制文件原理与pg_resetwal应急恢复案例;数据库日志配置;系统表系统视图;系统目录索引损坏故障处理;Extension扩展插件管理,适配64G内存8CPU硬件生产参数模板。

  1. PostgreSQL参数受GUC统一框架管理,参数分为不同context上下文;sighup上下文参数执行pg_ctl reload发送SIGHUP信号即可热加载,不中断业务;postmaster上下文参数修改必须重启实例,可以通过pg_settings视图查看pending_restart标记;禁止手工编辑postgresql.auto.conf,推荐使用ALTER SYSTEM命令修改。
  2. 三大配置文件分工明确:postgresql.conf控制内存、WAL、日志等实例参数;pg_hba.conf控制客户端主机访问认证,从上向下匹配规则;pg_ident.conf用于操作系统‑数据库用户名映射;pg_hba.conf语法错误会造成新连接全部拒绝,旧连接不受影响。
  3. pg_control二进制控制文件存放集群全局元数据,文件损坏实例无法启动;pg_resetwal仅作为灾难最后应急手段,该工具不会真正修复数据,执行完成集群存在事务逻辑不一致风险,必须立刻逻辑全量导出,重建全新实例导入数据,不能直接继续业务运行,有条件优先使用备份集恢复
  4. 系统表、系统视图存放于pg_catalog;硬件磁盘、内存故障会造成系统目录索引损坏;amcheck扩展插件可以做索引逻辑一致性校验;系统索引损坏使用REINDEX SYSTEM重建全部系统目录索引,注意该操作持有排他锁,避开业务高峰。
  5. Extension扩展插件是PostgreSQL增强能力核心;部分插件例如pg_stat_statements需要配置shared_preload_libraries预加载,该参数需要重启实例;插件可以创建、查看、升级、删除,注意插件版本和数据库大版本必须匹配。
  6. 64G内存8CPU硬件生产环境,shared_buffers设置16GB,effective_cache_size设置48GB,work_mem、maintenance_work_mem根据业务查询复杂度合理配置;日志开启logging_collector,配置慢SQL捕获,便于故障排查。
  7. 上线前完成实例启停、reload重载演练;定期备份pgdata数据目录;掌握pg_resetwal风险边界,严禁在生产环境随意执行该工具;配置变更完整留存文档。

全部Shell、SQL脚本,建议读者在fgedu‑net‑cn1测试主机完整复现工具使用、参数配置、故障模拟,掌握PostgreSQL实例底层运维能力,再落地企业PostgreSQL生产运维项目。

相关推荐
蓝速科技1 小时前
桌面双屏翻译机量产调试:三类场景兼容性破局方案丨蓝速科技
运维·数据库·人工智能·科技·技术分享
达梦数据2 小时前
DMDRS空间数据类型说明:Oracle、DM8、MySQL空间数据类型映射
数据库·mysql·oracle
白远山2 小时前
24小时自助健身房系统开发实战:从需求分析到完整指南
java·开发语言·数据库·数据挖掘·需求分析
达梦数据2 小时前
DMDRS服务与模块的运行步骤
数据库
lusklusklusk3 小时前
Oracle索引组织表,SQLServer聚集索引,Mysql Innodb表的数据行不是在磁盘上像排队一样严格连续地存放
mysql·postgresql·oracle·sqlserver
让学习成为一种生活方式3 小时前
PMGD:植物线粒体基因组数据库--Journal of Integrative Plant Biology
数据库
达梦数据3 小时前
达梦数据复制软件DMDRS搭建部署示例:源数据库DM8到目标数据库DM8一对一数据同步
数据库
IT_Octopus4 小时前
从一个应用开发者的角度,搞懂大数据查询的完整链路
java·大数据·数据库
Htr_4 小时前
Creem 2.0 使用指南:面向 AI 构建时代的资金平台
android·数据库·人工智能·ui·photoshop