PB远程连接SQL Server:动态IP下的配置与排查全指南
简介面向使用PowerBuilder的开发者这份资源包聚焦客户端远程访问SQL Server数据库时因公网IP动态变化导致的连接中断问题适用于外网、异地等网络环境。内容完整涵盖数据访问接口配置、动态域名解析、数据库远程连接启用、防火墙端口放行、连接池复用和连接失败重试等关键技术点兼顾服务器端与客户端设置适合具备一定数据库开发经验、希望提升远程部署能力的中高级程序员。压缩包共25个文件约73KB包含工程源文件、窗口对象、工作区定义和批处理脚本能够完整呈现从网络检测到连接配置的流程。示例代码和配置脚本可直接复用有助于减少动态IP环境下的排障时间。已有610人学习下载是处理动态IP数据库连接问题的实用资料值得相关开发者参考。1. PB远程连接SQL Server动态IP翻车点往往不在PB代码“PB 远程连接 SQL Server 数据库支持动态IP”是我这些年做企业系统时被问过最多的问题之一。分公司或移动办公的客户端要连总部的 SQL Server但总部出口是动态公网IP或者服务器所在内网用DHCP地址一变化连接串里写死的IP就成了废址PB 永远只弹一句“连接失败”真正原因被整条链路吞掉了。这篇文章把链路拆开看SQL Server 侧到底要开哪几项配置、PB 走 ODBC 还是直连、动态IP用域名还是拉取IP兜底最后给你一份可以直接照做的排查清单。适合正在维护 PB C/S 系统、需要跨公网或跨网段连库的人尤其是连接地址还写在代码里、每次改IP都要重新编译客户端的团队。2. 先把SQL Server放出去四种配置与动态IP对链路的三处冲击PB 代码写得再对SQL Server 不放出来也一样连不上。先不说动态IP先把静态IP下能连通的配置跑通动态IP才有意义。常见错误是只勾了“允许远程连接”这一项端口没开、防火墙没放、协议还是动态端口远程结果全部失败。这块很玄学的原因在于SQL Server 的远程访问不是单个开关而是协议、端口、身份验证、防火墙四件事一起生效。2.1 动态IP对连接链路的三处冲击第一处是出口地址变化。客户端发的第一个包是连接请求目的地址就是连接串里的地址这个地址不对后面的三次握手根本不会发生。第二处是域名解析缓存。哪怕你用了域名DNS TTL 和客户端本地缓存也可能让解析结果还停留在旧IP拨号后新IP生效要等一段时间。第三处是服务器本身地址变化。SQL Server 监听地址如果绑定的是某个旧IP即使路由把流量送到了服务器服务也不回应表现为 TCP 端口探测失败。因此动态IP不只看公网出口还要看服务器网卡地址是否固定。处理顺序是先让 SQL Server 在任意IP下都能监听再做端口固定最后决定客户端连域名还是连IP。顺序反了后面全是坑。2.2 放行 SQL Server 远程连接端口、协议、身份验证、防火墙最小清单我列了一张最小清单按顺序做少一项都可能是翻车点。配置项位置推荐值作用TCP/IP 协议SQL Server 配置管理器 → SQL Server 网络配置 → 协议启用允许客户端走 TCP而不是只允许本机共享内存端口同界面 → TCP/IP 属性 → IPAllTCP 端口填 1433TCP 动态端口清空固定监听端口动态IP环境必须固定身份验证模式SQL Server Management Studio → 服务器属性 → 安全性SQL Server 和 Windows 身份验证模式远程跨域场景用 SQL 登录避免 Windows 域认证跨网络失效防火墙Windows 防火墙入站规则放行 TCP 1433 或自定义端口这是远程连接的第一道墙十次里有五次是它配置完成后必须重启 SQL Server 服务。重启后在 SQL Server 本机执行下面这条命令确认监听已经起来Get-NetTCPConnection -LocalPort 1433 -State Listen | Select-Object Address, Port这段代码的作用是查看当前机器上 1433 端口是否有进程在监听。如果输出0.0.0.0:1433或某个内网IP加端口说明服务侧已放开。如果输出为空回配置管理器检查 TCP/IP 是否启用、端口是否填对、动态端口是否没清空。不要在没确认监听的情况下就跳到客户端侧排查那是在浪费时间。2.3 固定端口比什么都重要动态IP场景下的端口选择动态IP和动态端口碰在一起就是灾难。SQL Server 默认可能启用动态端口实例每次启动时向系统申请临时 TCP 端口这个端口会变客户端连接串里的端口自然失效。解决办法是关掉动态端口固定 1433或者用 14330 一类的非标准端口。我的建议是内网监听端口保持 1433 不变公网映射时换一个非标准外部端口这样既避开针对默认端口的扫描也不用改 SQL Server 内部配置。公网侧端口选择有一个容易被忽略的现场问题某些运营商对家用宽带的常用端口有限制1433 这类数据库默认端口可能被会话管理策略掐掉。表现是内网用IP能连公网用IP超时换一个不常用的高位端口立刻能通。我在 5.3 节还会单独展开。所以做远程连接时别把 1433 当成唯一答案端口映射里外部端口尽量用 91433、14330 这种看起来不起眼的高位端口。3. PB连SQL Server两种姿势ODBC与连接串的取舍SQL Server 放出来后回到 PB 客户端。PB 连 SQL Server 有两条主流路线一条走 ODBC 数据源另一条走 PB 的直连驱动MSS Microsoft SQL Server。选错路线会导致后面的动态IP方案不好落地所以先把两者的区别讲清楚。3.1 ODBC 与直连事务对象怎么选连接方式底层依赖优点缺点ODBC DSNWindows ODBC 数据源依赖驱动老版本 PB 兼容性好DSN 里写服务器、端口很直观每台客户端都要建 DSN32 位和 64 位必须对上分发麻烦直连 MSSPB 自带或已安装的 SQL Server 驱动接口不需要逐台配置 DSN连接参数全在代码里改地址方便对 PB 版本和驱动匹配敏感不同版本参数略有差异我的选择标准很简单客户端数量少、网络环境固定用 ODBC客户端多、要支持远程动态IP优先直连。因为动态IP方案最终都要把“地址”变成一个可变的字符串ODBC DSN 里的地址写在系统配置里每次改地址要么改 DSN要么动代码直连则可以在程序里读配置、拉IP、拼连接串灵活得多。但从历史系统迁移的角度说老 PB 项目多数已经在用 DSN先把 ODBC 跑通再谈替换也不迟。3.2 最稳的 ODBC 连接INI 配置 PB 最小可跑通代码ODBC 方式下我一般把连接参数全部放进一个 INI 文件PB 启动时读取而不是在代码里写死。文件内容是这样的[Database] DBMSODBC DSNpb_sql_remote UIDpb_user PWDdb_pass_here Databaseerp_db ServerAddressdbhost.example.com,1433读取配置并连接的核心代码string ls_ini, ls_dsn, ls_uid, ls_pwd ls_ini client.ini ls_dsn ProfileString(ls_ini, Database, DSN, pb_sql_remote) ls_uid ProfileString(ls_ini, Database, UID, pb_user) ls_pwd ProfileString(ls_ini, Database, PWD, ) SQLCA.DBMS ODBC SQLCA.AutoCommit False SQLCA.DBParm ConnectStringDSN ls_dsn ;UID ls_uid ;PWD ls_pwd CONNECT USING SQLCA; IF SQLCA.SQLCode 0 THEN MessageBox(连接失败, SQLCA.SQLErrText) END IF代码说明ProfileString从 INI 读取配置找不到时返回默认值DBParm里的ConnectString本质是 ODBC 连接串DSN 名字必须和 Windows ODBC 管理器里建的数据源一致。AutoCommit False是让事务交给程序控制远程数据库场景下不要开着自动提交跑业务逻辑。参数说明PWD 字段是明文生产环境建议加密存储PB 侧配合解密函数还原别把数据库口令直接暴露在安装包里。这个方案的好处是替换 INI 就能更新连接信息但前提是每台客户端都已经建好同名 DSN否则就会遇到“未发现数据源名称”这类联动问题。3.3 直连方式更省事连接串里直接写域名和端口从较新的 PB 版本开始我更常用直连 MSS。它不依赖系统 DSN只需要客户端装了对应的 SQL Server 驱动。代码更短SQLCA.DBMS MSS Microsoft SQL Server SQLCA.AutoCommit False SQLCA.ServerName dbhost.example.com,1433 // 域名或IP后面紧跟端口中间是英文逗号 SQLCA.Database erp_db SQLCA.LogID pb_user SQLCA.LogPass db_pass_here CONNECT USING SQLCA; IF SQLCA.SQLCode 0 THEN MessageBox(连接失败, SQLCA.SQLErrText) END IF参数说明ServerName的格式是“主机地址,端口”这是远程直连最常用的写法但个别 PB 版本对逗号端口的解析并不一致。如果你测试时发现端口没生效查一下当前 PB 版本对应的数据库接口文档没有文档就试试只写主机名并预先固定驱动默认端口。LogID和LogPass对应 SQL Server 登录名和口令不是 Windows 用户。直连方式最大的价值在于ServerName可以是变量这样动态IP方案就有了操作空间。第4章的三种落地就是建立在这个前提下展开的。4. 支持动态IP的三种落地域名优先、拉取IP兜底、配置集中动态IP的核心不是“动态”两个字本身而是地址会变。你没法让运营商分配一个固定公网IP但你可以让客户端始终用一个不变的名字去访问或者让客户端在连接前先问“现在数据库在哪个IP”。下面按推荐程度排三个方案。4.1 首选方案动态域名 端口映射彻底屏蔽IP变化最省心的做法是动态域名。路由器上开 DDNS把动态公网IP绑定到一个固定二级域名IP 怎么变都不影响客户端连接串。实施分四步。第一步在内网搭好 SQL Server按第2章固定 1433 端口。第二步在路由器上启用 DDNS绑定一个自己拥有的域名登记成功后路由器会自动定期更新域名解析记录。第三步在路由器做端口映射把公网侧端口比如 91433转发到内网 SQL Server 机器 IP 的 1433。第四步客户端连接串写dbhost.example.com,91433不写 IP。这个方案优点是几乎不用改 PB 代码缺点是 DDNS 依赖路由器或第三方动态域名服务解析生效需要时间。另一个隐性坑是路由器重启后端口映射规则可能失效DDNS 服务也可能偶尔不更新。所以我一般会准备一个备用域名同时在客户端配置文件里保留“上次成功IP”给系统加一层保险。4.2 兜底方案PB 启动时拉取最新 IP动态拼接连接串没有动态域名或者不想依赖第三方解析服务时可以在服务器上放一个极简 HTTP 文本接口内容就是当前公网IP。例如服务器上放一个current_ip.txt由定时任务更新。PB 连接前先请求这个文本地址拿到 IP 再拼进连接串。OLEObject lo_http string ls_url, ls_ip integer li_ret ls_url http://dbstatus.example.com/current_ip.txt // 这个地址自身要固定 lo_http CREATE OLEObject li_ret lo_http.ConnectToObject(MSXML2.XMLHTTP) IF li_ret 0 THEN lo_http.open(GET, ls_url, false) // false 同步请求 lo_http.send() ls_ip Trim(Left(lo_http.responseText, 15)) // IPv4 最多15个字符 lo_http.DisconnectObject() IF ls_ip THEN ls_ip ProfileString(client.ini, Database, LastIP, ) END IF ELSE ls_ip ProfileString(client.ini, Database, LastIP, ) END IF DESTROY lo_http IF ls_ip THEN SQLCA.ServerName ls_ip ,1433 END IF代码说明这里用 OLE 对象调MSXML2.XMLHTTP是老 PB 环境里最通用的 HTTP 请求方式不依赖 PB 版本自带 HTTPClient。open的第三个参数false表示同步请求程序会等结果返回再继续简单但可靠。send()发的是空请求体因为这是一个 GET。responseText拿到的就是文本文件内容Left函数配合 15 个字符限制确保只截取 IPv4 地址部分。Trim只去掉空格如果文本文件带换行后续还要处理所以要求服务器端生成文件时不要输出换行符。这个方案只依赖那个 HTTP 地址本身是固定的它不需要跟着数据库服务器一起变所以天然稳定。坑在于公网到文本服务器的连通性如果差客户端会在拉 IP 阶段就失败因此必须有“上次成功 IP”做兜底这就是第4行和第11行里ProfileString那段逻辑的用途。LastIP这个值建议在每次连接成功后写回 INI下次失败时优先使用。4.3 连接超时与重试别让用户等一个永远等不到的远程库动态IP切换后第一次 CONNECT 经常是失败的因为 DNS 缓存或路由还没收敛。不写重试的客户端只会弹一个错误窗口用户只能自己反复点登录。PB 里做三次重试成本很低。先在窗口或应用的 Declare Global External Functions 中声明 Windows API 延时函数FUNCTION void Sleep(ulong ms) LIBRARY kernel32.dll ALIAS FOR Sleep重试逻辑integer li_i string ls_err for li_i 1 to 3 CONNECT USING SQLCA if SQLCA.SQLCode 0 then exit else ls_err SQLCA.SQLErrText if li_i 3 then Sleep(2000) // 等2秒再试 end if next if SQLCA.SQLCode 0 then MessageBox(远程数据库连接失败, ls_err) end if参数说明Sleep(2000)表示等 2000 毫秒三次重试大约耗费 4 秒。如果地址正确但是账号口令错误重试没有意义ls_err会显示登录失败相关文本。我建议把ls_err原样写进日志文件不要只给用户看“连接失败”四个字。网络层超时和登录层拒绝是两回事日志里有了原始错误文本远程排查时能省很多电话沟通。4.4 配置文件优先改地址不用重新编译客户端不管用哪种动态IP方案最终地址都要有存储位置。我强烈建议把数据库地址相关配置全部抽到 INI 文件而不是埋进 PB 源码。INI 文件在 3.2 的基础上增加两个字段[Database] ServerNamedbhost.example.com,1433 LastIP203.0.113.10,1433 UseDynamicIP1PB 读取逻辑string ls_server ls_server ProfileString(client.ini, Database, ServerName, ) if Trim(ls_server) then ls_server ProfileString(client.ini, Database, LastIP, ) end if SQLCA.ServerName ls_server这段代码说明优先读ServerName里面的值是域名加端口如果为空回退到LastIP用上次成功地址。日常运维改地址时只需要动 INI程序一次编译、到处运行不用再为一次 IP 变化重新发布客户端。注意 INI 文件要和主程序放在同一个可写目录否则更新失败如果客户端目录被权限锁定就需要把配置文件放到用户目录并调整读取路径。5. 远程连接失败排查五条高频避坑记录以下五条是 PB 远程连接 SQL Server 现场最常见的坑每条都按“现象 → 原因 → 解决”的结构写。遇到问题先按这个顺序过一遍比你抓瞎改连接串快得多。5.1 本机能连、远程超时先查 TCP/IP 启用状态现象SQL Server 所在机器自己连库正常远程客户端连不上报错是 TCP Provider 相关文字或直接超时。原因SQL Server 的 TCP/IP 协议根本没启用本机连接用的是共享内存远程只能走 TCP自然不通。解决到 SQL Server 配置管理器里启用 TCP/IP固定端口重启服务然后验证Get-NetTCPConnection -LocalPort 1433 -State Listen这条命令有输出说明服务至少在一个 TCP 端口上监听。没输出就回配置管理器看协议状态和端口值别急着怀疑 PB。5.2 IP能连、域名连不上先查动态域名解析现象连接串里写公网IP能登进去改成域名就报超时。原因DDNS 解析还没更新或者客户端 DNS 缓存仍指向旧 IP。解决在客户端执行nslookup dbhost.example.com看返回地址是不是当前公网IP。如果不是手动触发路由器或 DDNS 客户端更新然后执行ipconfig /flushdns清一次本地 DNS 缓存。如果企业内网有多级 DNS还要确认没有策略拦截外部域名。这一步能排除的坑非常多不要跳过去。5.3 端口映射做了还失败换一个非标准端口再试现象路由器端口映射里设置了 1433 到 1433公网访问还是超时内网访问正常。原因部分宽带运营商对 1433 这类数据库默认端口有会话限制也可能路由器公网回环不好用。解决把外部端口改成 91433 或 14330 这类高位端口映射到内部服务器 IP 的 1433客户端连接串同步改成dbhost.example.com,91433。测试时不要用内网机器回访公网IP来验证用一台真正的外部机器或者手机蜂窝网络测。手机网络能通说明路由映射和端口选择都正常手机也超时继续查路由和运营商策略。5.4 PB报“未发现数据源名称”是DSN和驱动的匹配问题现象PB 程序一启动连接直接弹“未发现数据源名称并且未指定默认驱动程序”。原因程序是 64 位的ODBC 管理器里建的 DSN 是 32 位的两个配置库互不相通或者客户端根本没装对应驱动。解决确认 PB 程序编译位数打开同一位数的 ODBC 数据源管理器重建 DSN驱动安装对应版本的 SQL Server 驱动位数要和程序一致。这个坑在直连方式下不会出现所以第3章才建议新方案优先直连。5.5 服务器内网IP变了SQL Server监听还停在新地址上现象服务器网卡从固定 IP 改成 DHCP之后远程再也连不上本机服务重启1433 端口也没有监听。原因SQL Server 配置管理器里 TCP/IP 绑定的是旧 IP没有跟随网卡更新。解决打开 TCP/IP 属性在 IPAll 里设置 TCP 端口为 1433并让上方的具体 IP 项都处于“已启用”状态不要只留一个旧 IP。设置完重启服务再用Get-NetTCPConnection -LocalPort 1433 -State Listen确认。如果服务器网段经常变建议在网络层面做 DHCP 保留把 SQL Server 机器的 MAC 地址绑到固定 IP这比每次折腾 TCP 绑定更好维护。6. 把连接测试写成启动自检别只靠用户截图报错上面这些坑很多不是代码本身能解决的但你的程序至少应该告诉用户“卡在哪一层”而不是让用户把报错截图发到群里再猜。我第一次被这种截图误导是很多年前的事用户远程连不上截图里只有“连接失败”三个字我以为是 PB 代码问题追了两小时最后发现是防火墙规则没生效。后来养成了一个习惯应用启动时先做一次数据库连接自检自检失败时明确区分网络问题和登录问题。写一个全局自检函数boolean gf_database_selfcheck() string ls_cfg_file, ls_server, ls_db, ls_user, ls_pwd ls_cfg_file client.ini ls_server ProfileString(ls_cfg_file, Database, ServerName, ) ls_db ProfileString(ls_cfg_file, Database, Database, erp_db) ls_user ProfileString(ls_cfg_file, Database, UID, pb_user) ls_pwd ProfileString(ls_cfg_file, Database, PWD, ) SQLCA.DBMS MSS Microsoft SQL Server SQLCA.AutoCommit False SQLCA.ServerName ls_server SQLCA.Database ls_db SQLCA.LogID ls_user SQLCA.LogPass ls_pwd CONNECT USING SQLCA; if SQLCA.SQLCode 0 then DISCONNECT USING SQLCA; return true else SetProfileString(ls_cfg_file, Database, LastError, SQLCA.SQLErrText) return false end if end function在应用入口调用if gf_database_selfcheck() false then MessageBox(数据库连接自检未通过, ProfileString(client.ini, Database, LastError, 未知错误) ~r~n请检查网络或联系管理员) // 失败时继续走离线流程或直接退出 end if这个函数的逻辑是用当前配置发起一次真实 CONNECT成功就断开并返回 true失败就把底层错误文本写回到 LastError用户看到的是具体错误原因而不是一句“连接失败”。网络超时的错误文本里通常有“超时”字样账号错误的文本里通常有“登录”字样这就能让电话排查快很多。自检函数还有一层意义主程序打开后不会再弹第二次连接错误避免用户在界面上反复点确定。我个人的习惯是在自检失败后自动再做一轮“域名 → LastIP”切换先用域名连一次失败后把 ServerName 换成 LastIP 再连一次两个都失败才提示用户。动态IP切换那几十秒的抖动往往在这一轮切换里就无声过去了。这套逻辑不复杂但确实能省掉大量“为什么刚才还能连现在不能连”的售后消息。希望帮到你。本文还有配套的精品资源点击获取

相关新闻

Dynamo节点包从安装到排错:结构、部署、验证与实战全解析

Dynamo节点包从安装到排错:结构、部署、验证与实战全解析

简介:面向建筑、工程与设计领域Dynamo用户的定制节点包,内含一批预封装节点,用于扩展Dynamo原生功能,覆盖几何建模、数据处理、参数化设计等常见场景,帮助非程序员通过拖拽连线完成自动化与复杂计算。压缩包采用rar格式…

2026/10/9 17:08:43 阅读更多 →
OpenSCA开源组件分析工具:离线精准扫描与SBOM合规实践

OpenSCA开源组件分析工具:离线精准扫描与SBOM合规实践

简介:本资源为OpenSCA开源软件成分分析工具(CLI版)的完整源码包,面向中高级程序开发者、安全工程师及DevSecOps实践者,用于在项目开发与CI/CD流程中自动化识别第三方组件、检测已知漏洞(如CVE)、…

2026/10/9 17:08:42 阅读更多 →
每个注册用户都有自已的二级域名:泛解析+IIS URL重写+Session 共享的落地配置

每个注册用户都有自已的二级域名:泛解析+IIS URL重写+Session 共享的落地配置

/* 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 17:07:40 阅读更多 →

最新新闻

淘宝商品视频下载保存详解:开发者工具、缓存提取等4种方法

淘宝商品视频下载保存详解:开发者工具、缓存提取等4种方法

先说明一点:这篇内容纯粹是写给普通买家和刚起步的淘宝卖家看的,目的是解决“怎么把商品主图视频、详情页视频保存到本地”这个日常需求。不涉及任何违规抓取、批量采集、破解接口之类的黑科技,所有方法都在正常操作范围内,放心看…

2026/10/9 17:43:01 阅读更多 →
水杉输入法整句输入原理:词语格与kenlm三元语言模型的打分机制

水杉输入法整句输入原理:词语格与kenlm三元语言模型的打分机制

水杉输入法整句输入原理:词语格与kenlm三元语言模型的打分机制 【免费下载链接】msime-windows 水杉输入法 Windows 产品:TSF、Server、GUI、设置页与安装器。内测:tg: https://t.me/msimegroup QQ Group: 829919142 项目地址: https://git…

2026/10/9 17:43:01 阅读更多 →
uniapp运行鸿蒙报错“打开 undefined”?三步排查+手动流程

uniapp运行鸿蒙报错“打开 undefined”?三步排查+手动流程

很多人在 HBuilderX 里点“运行到鸿蒙”,等了几分钟,发现日志里只多了一句话:“运行方式:打开 undefined,导入 dist\dev.app-harmony 运行”。项目没启动,模拟器没反应,编辑器也没被唤起来。我也…

2026/10/9 17:43:01 阅读更多 →
OpenClaw工具拆解之sandboxed_write+sandboxed_edit:把settings改到TaoToken后如何验证沙箱写入与编辑

OpenClaw工具拆解之sandboxed_write+sandboxed_edit:把settings改到TaoToken后如何验证沙箱写入与编辑

/* 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 17:43:00 阅读更多 →
模型测试——性能测试:用 vLLM 与 SGLang 搭建可复现的压测基线

模型测试——性能测试:用 vLLM 与 SGLang 搭建可复现的压测基线

/* 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 17:43:00 阅读更多 →
校园线上超市小程序源码拆解:从业务模型到二次开发实践

校园线上超市小程序源码拆解:从业务模型到二次开发实践

记得第一次拿到这类“可白嫖源码”的校园线上超市平台项目,我的操作和大多数人一样:解压、打开微信开发者工具、导入、然后坐等报错。等我把页面加载出来、点了几下能正常跳转之后,才意识到自己对这套系统的理解还停留在“能跑”的阶段。项目…

2026/10/9 17:42:00 阅读更多 →

日新闻

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 阅读更多 →