新闻详情

新闻详情

首页 / 资讯中心 / 详情

Nakama 的 PostgreSQL 驱动基石:pgx v5 从 v5.0 到 v5.11 的演进、安全加固与连接串解析变革

发布时间:2026/10/2 1:47:16来源:尧图网络
Nakama 的 PostgreSQL 驱动基石:pgx v5 从 v5.0 到 v5.11 的演进、安全加固与连接串解析变革
后端即时通讯社交游戏开发【免费下载链接】nakamaScalable open-source game backend server: multiplayer, matchmaking, leaderboards, chat, and social features for games.项目地址https://gitcode.com/GitHub_Trending/na/nakama点击查看免费下载pgx 是 Nakama 游戏后端所依赖的 PostgreSQL 驱动库当前仓库锁定版本 v5.11.0见 go.mod其 v5 系列自 2022 年 9 月发布以来经历了从架构重构到连接字符串解析重写、从协议 3.2 支持到多轮安全加固的持续演进。本文以仓库内 vendor/github.com/jackc/pgx/v5/CHANGELOG.md 为核心骨架结合 Nakama 服务端对 pgx 的实际调用方式见 server/db.go系统梳理 pgx v5 各版本的关键能力、破坏性变更与安全修复帮助读者理解驱动底层行为并为升级与排障提供可落地的依据。一、Nakama 与 pgx驱动在项目中的实际集成方式在讨论版本演进之前先厘清 pgx 在 Nakama 中扮演的角色。从 server/db.go 的源码结构看Nakama 对 pgx 的使用非常典型涵盖连接配置、连接池、事务与错误处理多个层面连接配置DbConfig将 Nakama 配置中的数据库地址规范化为postgres://URI不足前缀时自动补全默认补充sslmodeprefer默认用户root、默认数据库nakama最终通过pgx.ParseConfig生成*pgx.ConnConfig见 server/db.go#L42-L69。连接与池管理通过stdlib.OpenDB(connConfig)创建*sql.DB再设置SetConnMaxLifetime、SetMaxOpenConns、SetMaxIdleConns见 server/db.go#L122-L135并周期性用connConfig.LookupFunc做 DNS 地址重解析、在地址变化时排空连接池轮换连接见 server/db.go#L150-L238。事务抽象ExecuteInTxPgx/executeInTxPostgresPgx直接以pgx.Tx与pgx.TxOptions为接口针对 CockroachDB 走executeInTxCockroachPgx分支见 server/db.go#L408-L476。类型系统核心账号逻辑大量使用pgtype.Timestamptz、pgtype.FlatArray[string]、pgtype.NewMap()见 server/core_account.go用于扫描timestamp与字符串数组列。错误分类通过errors.AsType[*pgconn.PgError]判断数据库错误码并引用pgerrcode.SerializationFailure等常量处理序列化冲突重试见 server/api_account.go、server/console_user_reset_password_acl_test.go。理解了这一集成面后续版本变更对 Nakama 的影响就非常直观连接字符串解析、TLS 行为、日期时间扫描、消息体长度限制等任何底层变化都会传导到上述代码路径。二、v5.0 架构重构Codec/Value 拆分与查询执行模式统一pgx v5.0.02022-09-17是一次根本性重构也是理解后续所有版本的基础。CHANGELOG 中记录了以下核心变化1. 包合并github.com/jackc/pgtype、github.com/jackc/pgconn、github.com/jackc/pgproto3全部并入主仓库消除了多仓库发版不同步、issue 分散的问题。这也是当前仓库 vendor 目录下 vendor/github.com/jackc/pgx/v5 内部同时存在pgconn/、pgtype/、pgproto3/、pgxpool/、stdlib/的原因。2. pgtypeNULL 表示与 Codec/Value 分离类型的Status字段Undefined/Null/Present被替换为Valid bool与database/sql的 NULL 语义对齐并使零值可直接使用所有 nil无论 typed 还是 untyped统一表示 NULL。Codec 与 Value 拆分解码/编码职责从值对象中剥离Codec只负责编解码值类型通过实现接口如PointScanner/PointValuer被 Codec 识别。这一设计解决了PostgreSQL binarynumeric扫描进 Gofloat64这类非 1:1 映射的难题。数组与范围类型所有数组类型统一由ArrayCodec处理不再逐类型代码生成Array[T]支持多维数组范围类型由RangeCodecRange[T]、多值范围由MultirangeCodecMultirange[T]处理用户自定义范围类型因此变得容易。Bytea 拆分原Bytea/GenericBinary被替换为四种选择[]byte常规、DriverBytes复用驱动内存、免拷贝免分配、PreallocBytes预分配切片、UndecodedBytes完全不解码、直接接触原始字节。类型改名pgtype.ConnInfo→pgtype.Mappgtype.DataType→pgtype.Typepgtype.None→pgtype.FiniteBit/Varbit→BitsCID/OID/OIDValue/XID→Uint32Hstore定义为map[string]*stringJSON/JSONB类型移除直接用[]byte或stringInet/Cidr改用netip.Addr/netip.PrefixMacaddr改用net.HardwareAddr。数字类型字段带位宽Int2/Int4/Int8/Float4/Float8/Uint32的字段如Int→Int64与database/sql约定对齐pgtype.Int8与sql.NullInt64结构完全一致、可直接互转。与 shopspring/decimal、gofrs/uuid 的集成被抽离到独立仓库精简了依赖树。3. 查询执行模式QueryExecMode与命名参数自动预处理语句缓存与 simple 协议的使用被统一为查询执行模式QueryExecMode。NamedArgs通过新的QueryRewriter接口实现对 SQL 与参数的任意重写——这是后来 CHANGELOG 反复提及simple 协议占位符注入修复的架构背景。4. 行扫描与批量查询的新范式RowScanner接口允许单个参数扫描整行CollectRowsRowTo*系列函数、CollectOneRow、ForEachRow替代QueryFunc简化结果收集。批处理人体工学改进Queue返回QueuedQuery其Query/QueryRow/Exec可注册结果回调在BatchResults.Close时自动调用解决了构建批处理与读取结果两处代码难以对应的老问题。SendBatch 智能使用 pipeline 模式10 个唯一参数化语句执行 100 次旧实现需 11 次网络往返每个 prepare/describe 各 1 次 执行 1 次pipeline 模式将 prepare/describe 合并为一次往返总计仅 2 次往返。日志被替换为追踪钩子tracelog提供对 v4 logger 的适配器支持接入 OpenTelemetry 等自定义追踪第三方 logger 集成全部外置。5. 其他值得注意的变化CommandTag变为不透明类型ResultReader.Values()在调用NextRow()/Close()后不可再持有引用。pgconn 全面改用非阻塞 IOv5.4.0 又改回 goroutine deadline 方案CheckConn()通过非阻塞读检查连接活性可发现数据库重启/网络中断而不必执行查询。连接读缓冲区的内存所有权归属驱动需要保留的值必须显式拷贝避免小块值钉住大块内存。三、v5.11.02026-09-07连接串解析对齐 libpq 与日期时间重写这是当前仓库锁定的版本go.mod也是行为变化最密集的一次发布升级前必须评估对存量连接串与日期时间处理的影响。新特性Go 1.27 原生类型扫描stdlib 支持driver.RowsColumnScanner数组、范围等 PostgreSQL 类型可直接扫描进 Go 值无需pgtype.Map.SQLScanner最小 Go 版本仍为 1.25。Rows.TypeMap暴露解码行所用的类型映射包括由RowsFromResultReader创建、无底层Conn的行自定义Rows实现含 mock必须新增该方法。Config.MaxProtocolMessageBodyLen可配置最大入站协议消息体大小由 carter-ya 贡献。只读/主备哨兵错误新增ErrReadOnlyConnection、ErrReadWriteConnection、ErrPrimaryConnection、ErrStandbyConnection供target_session_attrs校验使用errors.Is判断。pgxpool 的pool_ping_timeout可在连接串中配置Config.PingTimeout默认值为零零与负值表示不设超时。行为变化一libpq 兼容的 URI 解析器pgconn 的postgres://...URI 解析不再使用net/url改为与 libpq 精确对齐的新解析器通过与 libpq 本身的差分模糊测试验证。边缘行为变化包括行为旧行为新行为对齐 libpq查询值中的解码为空格字面量畸形百分号编码参数被静默丢弃解析错误%00被拒绝URI 组件首尾空格保留裁剪内部空格为解析错误需%20#片段分隔符普通数据userinfo 终止符最后一个任何/之前的第一个重复查询参数首个生效最后一个生效ssltrue不支持作为sslmoderequire的别名JDBC 兼容重复规则同上多主机端口对齐所有主机同端口按位置对齐postgres://h1,h2:5433/db表示 h1:5432、h2:5433端口数无法匹配时报could not match N port numbers to M hostsIPv6 地址裸::1可作主机必须加方括号postgres://[::1]/db空主机列表元素h1,,h2丢弃取默认主机空端口?port/port非法端口错误默认端口 5432空端口优先于PGPORTASCII 控制字符tab/换行等整个 URI 被net/url拒绝普通数据字节仅字面 NUL 仍被拒绝防止 NUL 注入启动消息参数与 libpq 的差异保留未识别的 URI 查询参数仍被接受转为运行时参数或 pgx 专属选项解析错误消息不回显未经脱敏的连接串并对可识别的密码字段尽力脱敏畸形输入结构歧义时无法保证完全脱敏。行为变化二libpq 兼容的 keyword/value 解析器host... user...形式的连接串同样重写为与 libpq 精确对齐同样经差分模糊测试验证反斜杠转义反斜杠转义其后任意字符并被丢弃旧实现只处理\\和\。Windows 证书/密钥路径因此必须双写反斜杠sslcertC:\path\to\cert会读成C:pathtocert须写为sslcertC:\\path\\to\\cert。尾部反斜杠非引号值中尾部反斜杠转义字符串结尾、被丢弃并终止值旧实现报invalid backslash引号值内被转义的终止符导致字符串未闭合仍是错误。keyword 内空白keyword 内部出现空白如application_namemy app hostx现在是解析错误missing after us in connection info string而不再静默丢掉两个参数并把app host当运行时参数发给服务器。未识别 keyword 仍被接受libpq 会拒绝空user仍被丢弃使PGUSER与 OS 用户生效。行为变化三日期/时间文本格式手写解析器date、timestamp、timestamptz的文本值不再依赖time.Parse/time.Format改为手写解析器与编码器处理 PostgreSQL ISO 日期时间格式Go 的布局语言无法表达可变宽度年份与 BC 纪元。文本扫描路径对timestamp/timestamptz约快 2.5 倍。修复的缺陷BC 闰年 2 月 29 日编码不再静默变成 3 月 1 日4713-02-29 BC现在正确输出此前写成4713-03-01 BC。BC 闰日可扫描此前报day out of range。9999 年之后的年份可扫描10000-01-02 03:04:05此前无法解析导致 simple 协议及文本格式结果中 PostgreSQL 范围高端的timestamp/timestamptz不可读。simple 协议中time.Time参数正确编码 BC 日期。微秒之后的小数秒按服务器同款round half to even舍入PostgreSQL 只发六位小数此变化仅影响其他来源的值。行为变化可能影响现有应用date拒绝不可能日期而非归一化2024-02-30曾返回2024-03-01与2024-13-01曾返回2025-01-01现在都是错误timestamp/timestamptz原本就拒绝。三种类型在二进制与文本格式下都拒绝超出 PostgreSQL 范围的日期timestamptz还拒绝超出有符号 32 位秒范围的时区位移但接受 POSIX 时区发出的宽偏移如16。文本格式扫描的timestamptz现在返回time.Local或设置了ScanLocation时的该位置与二进制格式一致。旧行为中文本路径保留time.Parse从服务器偏移推导出的位置两种格式可能报告不同的Location()/Zone()。连带影响Timestamptz.MarshalJSON现在写客户端偏移而非服务器偏移——服务器发05:30的值在 UTC-8 客户端上序列化为2024-01-01T13:34:05-08:00而非2024-01-02T03:04:0505:30DecodeDatabaseSQLValue也以同一位置交付time.Time。若需固定位置将 codec 的ScanLocation设为time.UTC。相关错误消息有变化。此外pgconn 现在仅在连接串、环境变量、服务文件均未提供用户时才解析 OS 用户账户避免受限容器环境中的多余账户查询与崩溃Unix 下$HOME用于密码/服务/TLS 文件的默认路径而非 OS 账户主目录。其他修复Begin/BeginTx可恢复错误后保持连接Exec在反分配失效缓存语句失败时调用TraceQueryEnd按实际发送的语句名反分配失败的 prepare 并跳过未完成的 Parse避免泄漏预处理语句LoadTypes不再用错误的ArrayCodec覆盖box/point等标量 codeccursorFETCH等场景在缓存描述为空时取回字段描述batch 无行返回或混用Batch.ExecStatement时保持描述与结果格式对齐pipeline 处理空查询/纯注释查询并在 bind 错误后丢弃过期语句数据ArrayCodec.Delimiter支持非逗号分隔符含box[]的分号分隔符文本数组元素含内部空白时加引号范围边界含分隔符/引号/反斜杠时转义并区分空串边界与无界范围Numeric精度保持与科学计数法、JSON 中Infinity/-Infinity编解码、NaN/无穷转整数报错而非 panic、二进制 numeric 零值解码死循环修复多级指针扫描修复codec 全链路边界检查读取代价与畸形长度/计数/尾部数据拒绝hstore 文本解析的初始分配上限pgconn 引号值末尾反斜杠不再 panic错误消息对 URI 查询参数中的password/sslpassword脱敏含pass%77ord这类百分号拼写asyncClose先 drain socket 再关闭以产生 TCP FIN 而非 RST来自 CrowdStrikeStartupMessage.Encode拒绝参数名/值中的 NUL 字节防application_namex\x00user\x00admin改变登录角色这类注入keyword/value 串中的 NUL 由ParseConfig拒绝。四、v5.10.02026-06-03针对恶意服务器的系统性加固本版由 CrowdStrike 的 Sean Chittenden 主导目标是对抗恶意或失陷 PostgreSQL 服务器require_auth限制服务器可用的认证方法缓解sslmodeprefer下的降级攻击。ParseConfigOptions.ConnStringAllowedKeys限制连接串允许的 key。StructArgs/StrictStructArgs面向命名查询的实参类型。ErrConnClosed哨兵错误并从connLockError解包。pgxpool获取连接前先检查连接是否过期。安全加固主连接使用 TLS 时CancelRequest也走 TLS服务端 SCRAM 迭代次数设上限Frontend 最大消息体长度默认约 1 GiBhstore、数组、range/multirange/tsvector 的二进制解码均按剩余消息字节限界畸形几何文本返回错误而非 panic。修复二进制格式下charOID 18扫描进*stringtyped-nildriver.Valuer在数组/复合 codec 中的处理CopyData.Data十六进制解码连接期间上下文取消的数据竞争parseKeywordValueSettings尾部空白pgxpoolMaxLifetimeDestroyCount与获取时过期检查的 ping 顺序等。五、v5.9.x安全修复与协议 3.2 时代v5.9.22026-04-18占位符混淆型 SQL 注入GHSA-j88v-2chj-qfwx漏洞条件是使用非默认的 simple 协议 SQL 中出现美元引号字符串字面量 字符串外存在被解释为占位符的文本 占位符值由攻击者控制attackValue : $tag$; drop table canary; -- _, err tx.Exec(ctx, select $tag$ $1 $tag$, $1, pgx.QueryExecModeSimpleProtocol, attackValue)CHANGELOG 明示这在刻意构造的场景之外不太可能发生。这也解释了为什么 Nakama 中所有数据库访问都经由database/sql默认走扩展协议与预处理语句而不是直接驱动 simple 协议。v5.9.12026-03-22修复使用缓存预处理语句时 batch 结果格式损坏的问题。v5.9.02026-03-21要求 Go 1.25。新能力SCRAM-SHA-256-PLUS通道绑定、PostgreSQL 18 的 OAuth 认证、PostgreSQL 协议 3.2、tsvector 类型支持。网络流量显著下降缓存预处理语句时跳过不必要的 Describe Portal 消息预处理语句默认自动使用同时降低本地内存占用。默认空用户匹配 libpq 行为取当前 OS 用户。LRU 语句缓存改用自定义链表与节点池、日期扫描以手写解析替代正则、RowsAffected提速。修复Pipeline 在服务器发多个 FATAL 时的 Close panic、ContextWatchergoroutine 泄漏、stdlib 在ResetSession时丢弃带打开事务的连接、ColumnTypeLength误用 BPCharArrayOID、32 位平台消息长度解析、numeric 扫描溢出、int2/int4 下溢错误消息等并抵御多种畸形二进制消息导致的 panic/OOM。六、v5.8.0 至 v5.5.0持续优化与连接池能力补全v5.8.02025-12-26要求 Go 1.24移除 golang.org/x/crypto 依赖OptionShouldPing控制ResetSession的 ping 行为MaxConns设为 MaxInt32 时避免溢出pgxpool 后台 goroutine 更快关闭pgxpool ping 超时Rows.FieldDescriptions处理空查询未知类型按格式码扫描为 string 或 []byteAfterNetConnect钩子加入pgconn.Config从math/rand迁移到math/rand/v2iobufpool 与 stmtcache 失效优化ColumnTypeLength对 varbit 返回类型长度数组/复合 codec 处理 typed nil。v5.7.xv5.7.6ParseConfigError用于pgx.ParseConfig/pgxpool.ParseConfigpgxpool 的PrepareConn钩子QueryContext分配减少pgtype.Uint32的 JSON 编解码pgxpool 的ShouldPing行为配置zeronull int 类型实现Int64Valuer/Int64ScannerCopyFrom 收到终止连接消息时的 panic 修复batch 出错时语句缓存失效修复。v5.7.5sslnegotiation连接选项PGTZ、PGOPTIONS环境变量支持TraceLog在 debug 级别记录 Acquire/Release更早释放 Rows 占用的内存移除 PlanScan 记忆化以修复先扫描某类型破坏另一类型扫描的罕见问题基准测试显示记忆化无实际收益。v5.7.4回退 JSONnull扫描变更。v5.7.3pgxpool.Stat 暴露EmptyAcquireWaitTimeSQL 净化器性能改进json(b) 扫描、sql.Scanner、自动解引用之间的混淆修复xml 类型Values()返回 []bytepipeline 模式可发送 Flush 消息pgtype.Timestamp的 JSON 行为对齐 PostgreSQLMinIdleConns加入 pgxpool更贴近 libpq 的连接回退行为。v5.7.2batch prepare 失败时的prepared statement already exists修复tx 选项支持 commit query前后端消息体大小限制xid8 类型pgtype.UUID.String()编码/扫描无限递归防护。v5.7.1tracelog.TraceLog数据竞争修复puddle 升级移除 linkname 方式导入 nanotime。v5.7.0sslrootcertsystemLoadTypes单次 SQL 查询加载多类型XMLCodec 像 json 一样编码/扫描 XML 列MultiTraceTraceLogConfig自定义 TimeKeypgx.ErrNoRows包装sql.ErrNoRows以兼容 database/sql二进制 uint32 扫描进 string/TextScannerinterval 编码允许 0s 并去除多余空格RowToStructByName 的 snake_case 归一化与 db tag 冲突修复。v5.6.02024-05-25StrictNamedArgsmacaddr8 类型SeverityUnlocalized字段RowToStructByPos/Name性能优化pgconn 可自定义 context 取消行为ScanLocation加入pgtype.Timestamp[tz]Codec即 5.11 中提到的固定时区手段的来源pgconn 自定义数据SafeToRetry处理包装错误失败的连接尝试汇总所有错误LargeObject.Read优化连接池 acquire/release 追踪TCP 连接使用 Go 默认 keepalive。v5.5.xv5.5.5SQL 净化改用空格而非括号解决负数产生行注释的同时避免破坏set foo to $1等任意表达式不允许的场合。v5.5.4修复CVE-2024-27304——单个查询或 bind 消息超过 4GB 时消息大小整数溢出导致一个超大消息被拆成攻击者可控的多个消息造成 SQL 注入CollectRows空结果返回空切片simple 协议编码json.RawMessage修复等。v5.5.3prepared statement already exists修复CopyFrom 文本值自动转换改进ltree 类型Batch/QueuedQuery 部分属性公开AppendRowsUUID 字节转字符串优化LargeObject 单次 1GB 以上读写修复。v5.5.2NamedArgs 支持下划线开头pgproto3 最大消息体长度RowToStructByNamesnake_caseOnPgError 集中错误处理pipeline 关闭检查。v5.5.1CopyFromFuncPgConn.Deallocate使用协议 Close 消息使失效事务中也能反分配语句、修复预处理语句映射失效问题simple 协议净化器对非法$0占位符返回错误而非 panic。v5.5.0CollectExactlyOneRowOpenDBFromPool由*pgxpool.Pool创建*database/sql.DBPrepare 可按 SQL 自动命名语句缓存语句名确定且稳定SendBatch尊重 context 取消CancelRequest 等待服务器确认改善 PgBouncer 兼容性Float4/Float8 的 JSON 编解码。七、v5.4 至 v5.0回归与兼容v5.4.0放弃平台特定系统调用实现的非阻塞 IO回归 goroutine deadline 方案v4 思路 改进恢复在 ssh.Conn 及非 TCP/Unix socket 上使用 pgx.Conn 的能力实现显著简化、跨平台问题更少。默认类型注册改为跨连接共享每连接节省约 100KB 内存pgtype.Type/pgtype.Codec注册后必须不可变QueryRow.Scanpanic 时确保释放连接BeforeClose加入 pgxpoolbool 类型别名、行转结构体含未导出内嵌结构体、batch 错误路径等大量修复新增RowTo(AddrOf)StructByNameLax。v5.3.x同程序内 v4/v5 stdlib 共存sql.Scanner修复jsonpath 文本格式CopyFrom 查询缓存减少往返driver.Value 中 bytea 应为 []byte支持重命名基础类型上的 sql.Scanner多主机名部分解析失败仍可连接大量内存分配削减。v5.2.0tracelog.TraceLog实现pgx.PrepareTracerConn.LoadType支持 range/multirangenumeric 扫描进 uint/uint64 的修复。v5.1.0puddle v2.1.2修复 pgxpool 竞态与死锁QueryRewriter.RewriteQuery返回 errorGetSSLPassword支持5 位数字年份的日期文本编码domain 类型Conn.LoadType()支持RowToStructByName/RowToAddrOfStructByNameConn.DeallocateAll()。v5.0.4/v5.0.3/v5.0.2/v5.0.1CollectOneRow优先 PostgreSQL 错误driver.Valuer边缘处理避免死循环/崩溃日期文本编码月份/日期恒为两位指针到指针到重命名类型的扫描NULL 在 PG 与 Go 类型不兼容时仍可扫描32 位原子操作修复Float8MarshalJSONLseg 文本编码加[/]sqlScannerWrapper NULL 处理。八、升级与运维实践要点基于上述版本脉络结合 Nakama 的集成方式给出面向工程实践的检查清单连接字符串是最大行为面v5.11 将 URI 与 keyword/value 解析器全面对齐 libpq。存量连接串若有、裸 IPv6、重复参数、多主机混合端口、反斜杠路径Windowssslcert/sslkey等写法升级后行为会变化——建议升级前用pgx.ParseConfig对生产连接串做一次回归验证。Nakama 的 server/db.go#L42-L69 恰好是pgx.ParseConfig的直接调用点可借此快速验证。日期时间语义变更timestamptz文本扫描现在统一返回time.Local或ScanLocationMarshalJSON输出客户端偏移。需要固定位置时显式设置 codec 的ScanLocation为time.UTC涉及 BC 日期、超 9999 年份、2024-02-30这类非法日期的输入要按拒绝而非归一化处理。安全底线保持pgx在最新修补版本5.9.2 的占位符注入、5.5.4 的 CVE-2024-27304、5.10 的服务器侧加固都值得跟进尽量不要使用 simple 协议执行含美元引号字符串的查询。连接池与探测pgxpool 的pool_ping_timeout、MinIdleConns、OptionShouldPing、MaxConnLifetime非正值视为无限等行为直接影响 Nakama 这类长生命周期服务在高负载下的连接健康度MaxProtocolMessageBodyLen可用于限制恶意服务器的超大消息。错误处理范式v5 中pgconn.PgErrorpgerrcode是分类数据库错误的官方路径Nakama 在 server/api_account.go 等处使用errors.AsType[*pgconn.PgError]配合ErrConnClosed、只读/主备哨兵错误可用errors.Is精确分支。pgx v5 的演进主线始终清晰以 libpq 兼容性为锚点收敛连接串行为以安全加固对抗恶意服务器以类型系统重构换取扩展性与性能。对 Nakama 而言这个驱动不仅承担 SQL 读写更是事务、连接池轮换、错误分类等核心路径的底层支柱——理解其版本变更就是理解 Nakama 数据库层的运行边界。赞分享后端即时通讯社交游戏开发【免费下载链接】nakamaScalable open-source game backend server: multiplayer, matchmaking, leaderboards, chat, and social features for games.项目地址https://gitcode.com/GitHub_Trending/na/nakama点击查看免费下载相关推荐pgx v5 版本演进深度解析从 v5.0 架构重构到 v5.10 安全加固Agent Substrate 的 PostgreSQL 实践pgx v5 版本演进深度解析从 v5.0 架构重构到 v5.10 安全加固Agent Substrate 的 PostgreSQL 实践 本文基于 Ag人工智能AI AgentAgent 沙箱云原生容器运行时零信任pgx v5 版本演进全解析从 5.0 架构重构到 5.9.2 安全加固pgx v5 版本演进全解析从 5.0 架构重构到 5.9.2 安全加固 pgx 是纯 Go 实现的 PostgreSQL 驱动与工具集既提供暴露 LIST文档教程人工智能Sliver 仓库中的 pgx v5 版本演进全解从 5.0 架构重构到 5.10 安全加固Sliver 仓库中的 pgx v5 版本演进全解从 5.0 架构重构到 5.10 安全加固 导读 pgx github.com/jackc/pgx/v5网络安全上一篇Mac Mouse Fix 完整指南3 步让普通鼠标拥有触控板级体验下一篇Diffusion as Shader模型训练全流程从数据准备到模型微调创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
网站建设高端定制企业官网
RELATED

相关资讯

更多精彩内容,欢迎继续阅读

较早相关资讯

最新相关资讯

MCP服务本地化部署实战:从stdio到HTTP,打造安全可控的AI工具链 2026/10/2 2:43:50

MCP服务本地化部署实战:从stdio到HTTP,打造安全可控的AI工具链

1. 为什么大家都在把 MCP 往本地拉先说清楚 MCP 是什么。MCP(Model Context Protocol)是一套让 AI 大模型与外部工具、数据源打交道的开放协议,核心思路是给 AI 配一个标准化的“USB-C 接口”,无论是文件系统、数据库、浏览器&…

阅读更多 →
DeepSeek Harness实战:用Vibe Coding构建可复用AI编码工作流 2026/10/2 2:43:50

DeepSeek Harness实战:用Vibe Coding构建可复用AI编码工作流

DeepSeek Harness 最近在开发圈里讨论度不低,但很多人下载完只是把它当成一个“聊天窗口”来用,点两下启动就不知道下一步了。它真正值得用的地方,是把 DeepSeek 的模型能力接进本地开发工作流,用自然语言直接推进编码任务&#x…

阅读更多 →
SSM+Vue交通规则考试系统:从数据库设计到部署实战 2026/10/2 2:43:50

SSM+Vue交通规则考试系统:从数据库设计到部署实战

每年这个时候,都有一批人对着毕设题目发愁。如果你拿到的是“基于SSMVue的交通规则考试系统”这个题,恭喜你,这套组合拳在毕设圈里属于最稳的一类:后端是SpringSpringMVCMyBatis这套老牌SSM组合,前端是Vue,…

阅读更多 →
导盲犬拐杖检测数据集VOC+YOLO格式4635张2类别训练与避坑指南 2026/10/2 2:43:50

导盲犬拐杖检测数据集VOC+YOLO格式4635张2类别训练与避坑指南

简介:本数据集面向计算机视觉开发者与目标检测学习者,聚焦导盲犬与盲杖两类目标的识别任务,可用于辅助出行场景下的智能感知模型训练与算法验证。资源同时提供Pascal VOC与YOLO两种标注格式,包含jpg原图及一一对应的xml、txt标注文…

阅读更多 →
基于Ruoyi前后端分离MES源码实战:从部署到二次开发 2026/10/2 2:43:43

基于Ruoyi前后端分离MES源码实战:从部署到二次开发

简介:这份资源是基于Ruoyi框架的前后端分离MES制造执行系统源码,面向制造业信息化开发者、Java后端与前端工程师,以及希望快速搭建生产管理平台的技术团队。系统覆盖系统管理、主数据、物料产品管理、工作站设置、生产排产、节假日与工作日设…

阅读更多 →
若依前后端分离MES源码实战:从部署到二次开发全流程 2026/10/2 2:43:43

若依前后端分离MES源码实战:从部署到二次开发全流程

简介:这份资源是基于Ruoyi框架的前后端分离MES源码,面向制造业信息化开发者、Java后端与前端工程师,以及需要快速搭建生产管理系统原型的团队。系统覆盖系统管理、主数据、物料产品管理、工作站设置、生产管理、生产排产、节假日与工作日设置…

阅读更多 →

今日资讯

本周资讯

本月资讯

看完文章仍有疑问?

联系尧图顾问,获取一对一建站咨询

立即免费咨询 📞 400-888-8888
📞 ✉