<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[西京刀客]]></title><description><![CDATA[]]></description><link>https://blog.csdn.net/inthat</link><language>zh-cn</language><generator>https://blog.csdn.net/</generator><copyright><![CDATA[Copyright &copy; inthat]]></copyright><item><title><![CDATA[golang- gin在 Kubernetes 环境下的优雅关停]]></title><link>https://blog.csdn.net/inthat/article/details/168119069</link><guid>https://blog.csdn.net/inthat/article/details/168119069</guid><author>inthat</author><pubDate>Fri, 16 Oct 2026 11:04:11 +0800</pubDate><description><![CDATA[本文详解 Gin 服务在 Kubernetes 环境中优雅关停的完整链路。指出 r.Run() 缺乏信号处理，导致滚动更新时出现 502 和连接重置。核心解决方案是：业务代码主动捕获 SIGTERM，调用 http.Server.Shutdown() 停止接收新请求并等待在途请求完成，再依次关闭数据库、Redis 等依赖。强调关停顺序应为“先停 HTTP，后关依赖”，并配合 K8s terminationGracePeriodSeconds 配置（建议 ≥30s），确保流量平稳迁移，彻底避免服务中断。]]></description><category></category></item><item><title><![CDATA[ClickHouse distributed_product_mode 配置｜当分布式表的 `IN`/`JOIN` 子查询里又出现分布式表时怎么办]]></title><link>https://blog.csdn.net/inthat/article/details/164077493</link><guid>https://blog.csdn.net/inthat/article/details/164077493</guid><author>inthat</author><pubDate>Wed, 26 Aug 2026 10:48:17 +0800</pubDate><description><![CDATA[distributed_product_mode 是 ClickHouse 的用户级设置，仅控制一种场景：Distributed 表查询的 IN/JOIN 子查询里又出现多分片 Distributed 表且未写 GLOBAL（双分布式子查询）。四种取值：deny（默认，抛 288 错误）、global（发起节点算一次后广播，正确通用）、local（换本地表，仅共置或全量镜像时正确）、allow（各分片各自重算，N 倍扫描 + N² 连接放大，不应使用）。]]></description><category></category></item><item><title><![CDATA[Apisix ≤ 3.14 与 ≥ 3.15 之间存在不可平滑迁移的边界：会话库lua-resty-session v3 (3.10) 版本 和 v4 (4.x) 对比]]></title><link>https://blog.csdn.net/inthat/article/details/163954026</link><guid>https://blog.csdn.net/inthat/article/details/163954026</guid><author>inthat</author><pubDate>Sat, 22 Aug 2026 10:30:37 +0800</pubDate><description><![CDATA[本文对比了 APISIX 会话管理库 lua-resty-session 的 v3.10 与 v4.x（特别是 4.1.5）版本在 Cookie 处理机制上的关键区别。v4 版本进行了架构重构，采用定长二进制 header（82字节）与无分隔符拼接设计，升级为 AES-256-GCM 加密和 HMAC-SHA256 签名，支持密钥轮换和多分区会话，但移除了算法插拔能力并硬编码分块策略（每块4096B）。与 v3 的可变长分段+竖线分隔结构（AES-256-CBC+HMAC-SHA1）完全不兼容.]]></description><category></category></item><item><title><![CDATA[APISIX 分块 Cookie（Chunked Cookie）]]></title><link>https://blog.csdn.net/inthat/article/details/163968135</link><guid>https://blog.csdn.net/inthat/article/details/163968135</guid><author>inthat</author><pubDate>Sat, 22 Aug 2026 10:07:10 +0800</pubDate><description><![CDATA[分块是无奖惩的技术债。它能让会话跑起来，但把「偶发掉登录」这种最难排查的故障引入了系统。目标应该是不分块，而不是「分块能正常工作」。不配就是全存。这是绝大多数 APISIX OIDC 分块问题的唯一根因，改一行配置常能砍掉 50~70%。v4 的 36864 不是 27KB 以外的余量。它是 cookie 字符总量，扣掉 header、名字开销和 base64 膨胀后，实际能装约 27KB 原始数据。越短越好（v4）。它参与块数计算，长名字会在临界点上多分一块。看到就别犹豫了。]]></description><category></category></item><item><title><![CDATA[可扩展 Kubernetes UI 平台-headlamp]]></title><link>https://blog.csdn.net/inthat/article/details/163370158</link><guid>https://blog.csdn.net/inthat/article/details/163370158</guid><author>inthat</author><pubDate>Fri, 31 Jul 2026 16:09:57 +0800</pubDate><description><![CDATA[文章摘要： Headlamp是Kubernetes官方推荐的Dashboard继任者，支持多集群管理、RBAC权限适配、插件化扩展及桌面/Web双形态部署。其核心优势包括原生多集群支持、按用户真实身份鉴权、以应用为中心的视图及强大的插件系统（如Flux和AI助手）。架构上采用前后端分离设计，确保安全代理K8s API请求。部署灵活，支持桌面端（直接读取kubeconfig）和集群内Helm安装，适合个人开发与团队协作场景。作为CNCF项目，Headlamp从基础监控升级为可扩展的K8s运维平台外壳。]]></description><category></category></item><item><title><![CDATA[APISIX 限流插件 `limit-count`]]></title><link>https://blog.csdn.net/inthat/article/details/161430046</link><guid>https://blog.csdn.net/inthat/article/details/161430046</guid><author>inthat</author><pubDate>Tue, 26 May 2026 20:51:10 +0800</pubDate><description><![CDATA[APISIX限流插件limit-count摘要： 该插件基于固定窗口算法实现请求速率限制，支持配置时间窗口内最大请求数(count)，超限返回429状态码。核心特性包括： 支持本地内存/Redis集群存储计数器，通过policy配置选择存储策略； 灵活定义限流维度，可通过key_type+key组合实现基于IP/用户/Token等维度的精细化控制； 提供多路由共享配额(group)和节点间状态同步能力； 适用于防刷/API调用控制等场景，但不适合精确计费或严格平滑限速需求（推荐使用limit-req插件）。]]></description><category></category></item><item><title><![CDATA[redis 大key使用 UNLINK 命令删除、Redis Set / ZSet 存储上限、ZRemRangeByRank命令]]></title><link>https://blog.csdn.net/inthat/article/details/161147876</link><guid>https://blog.csdn.net/inthat/article/details/161147876</guid><author>inthat</author><pubDate>Sat, 16 May 2026 22:48:55 +0800</pubDate><description><![CDATA[Redis 4.0引入的UNLINK命令实现了异步删除机制，相比DEL命令具有显著优势。UNLINK仅从keyspace中移除key（O(1)时间复杂度），实际内存释放由后台线程完成，特别适合删除大key或批量删除场景，避免主线程阻塞。生产环境中建议优先使用UNLINK替代DEL，但需注意内存释放存在延迟。对于集合类型数据，Redis不限制存储数量但需控制单key大小，建议单Value不超过10KB。ZSet通过ZREMRANGEBYRank可实现容量控制，相比无序的Set更适合需要淘汰机制的场景。合理使用]]></description><category></category></item><item><title><![CDATA[keycloak创建client 接口以及相关配置说明]]></title><link>https://blog.csdn.net/inthat/article/details/160032733</link><guid>https://blog.csdn.net/inthat/article/details/160032733</guid><author>inthat</author><pubDate>Fri, 10 Apr 2026 22:43:28 +0800</pubDate><description><![CDATA[在企业级身份认证体系中，Keycloak 是目前最主流的开源 IAM（Identity and Access Management）解决方案之一，支持 OAuth 2.0、OpenID Connect（OIDC）和 SAML 2.0 协议。Client（客户端）是 Keycloak 中的核心资源，代表一个接入认证体系的应用程序或服务。在调用任何 Admin API 之前，需要先获取具有管理权限的 Access Token。，然后对这个用户分配角色，这样签发出来的 Token 里就会携带对应的权限信息。]]></description><category></category></item><item><title><![CDATA[Apache APISIX CORS 插件来处理跨域问题 ｜allow_credential: true配置约束]]></title><link>https://blog.csdn.net/inthat/article/details/159488374</link><guid>https://blog.csdn.net/inthat/article/details/159488374</guid><author>inthat</author><pubDate>Thu, 26 Mar 2026 09:42:29 +0800</pubDate><description><![CDATA[在 Apache APISIX 中同时配置 allow_origins_by_regex 和 allow_credential: true，却未显式设置 allow_origins 时，会遇到一个隐蔽问题：OPTIONS 预检请求返回 200，但没有任何 CORS 响应头。根因是 allow_origins 默认值为 *，Schema 校验阶段检测到 allow_credential: true 与 * 冲突后直接跳过整个插件，且不会因为配置了 allow_origins_by_regex 而豁免。本文通过]]></description><category></category></item><item><title><![CDATA[http协议header头之X-Forwarded-For (XFF) ｜ APISIX 移除X-Forwarded-For]]></title><link>https://blog.csdn.net/inthat/article/details/159131395</link><guid>https://blog.csdn.net/inthat/article/details/159131395</guid><author>inthat</author><pubDate>Mon, 16 Mar 2026 22:42:47 +0800</pubDate><description><![CDATA[（简称 XFF）是一个 HTTP 请求头，用于在经过代理或负载均衡时记录请求的完整链路 IP。]]></description><category></category></item><item><title><![CDATA[APISIX 中轻量级的“探针“之serverless-pre-function + serverless-post-function]]></title><link>https://blog.csdn.net/inthat/article/details/159088128</link><guid>https://blog.csdn.net/inthat/article/details/159088128</guid><author>inthat</author><pubDate>Mon, 16 Mar 2026 09:26:25 +0800</pubDate><description><![CDATA[serverless-pre-function + serverless-post-function 是 APISIX 的轻量级"探针"组合，本质是在请求生命周期的两端注入自定义逻辑。APISIX 的 serverless-pre-function 和 serverless-post-function 两个插件，允许在路由上直接注入 Lua 代码，零侵入地完成网关层诊断。假设你有一个电商平台，支付回调接口 /api/payment/callback/* 近期频繁超时，上游是第三方支付网关，无法修改其代码。]]></description><category></category></item><item><title><![CDATA[APISIX vars 条件匹配：从路由冲突到精准分流 ｜vars 负向匹配实践]]></title><link>https://blog.csdn.net/inthat/article/details/159087712</link><guid>https://blog.csdn.net/inthat/article/details/159087712</guid><author>inthat</author><pubDate>Sun, 15 Mar 2026 21:12:02 +0800</pubDate><description><![CDATA[在 APISIX 网关中，当多条路由的 URI 存在通配重叠时，仅靠 priority 字段往往无法解决匹配冲突。这是因为 APISIX 采用"约束维度优先"的匹配机制——拥有更多匹配条件（如 hosts + uri）的路由会优先于仅有 uri 的路由被命中，priority 数值只在同维度路由间生效。本文通过实际案例，剖析了路由优先级的真实计算逻辑，并介绍了 vars 条件的负向匹配能力。通过在高优先级通配路由上添加 vars 正则排除条件（如 ["uri", "!", "~~", "^/specific]]></description><category></category></item><item><title><![CDATA[clickhouse判断用户有没有某行为-LIMIT 1 BY 和 SELECT DISTINCT]]></title><link>https://blog.csdn.net/inthat/article/details/159019527</link><guid>https://blog.csdn.net/inthat/article/details/159019527</guid><author>inthat</author><pubDate>Fri, 13 Mar 2026 22:35:57 +0800</pubDate><description><![CDATA[需求是什么？│├── 只判断 "有没有" ──────────→ LIMIT 1 BY ✅(最优) │├── 去重列表（不关心行内容）──→ 两者皆可，LIMIT 1 BY 略优│├── 取最早/最晚一条记录 ────→ GROUP BY + min() /max() ✅│├── 统计数量/求和/平均值 ───→ GROUP BY + 聚合函数 ✅│└── 每组取 TopN ───────────→ LIMIT N BY + ORDER BY(注意排序开销)| 场景 | 推荐写法 |]]></description><category></category></item><item><title><![CDATA[OpenClaw 内置 Cron 原理]]></title><link>https://blog.csdn.net/inthat/article/details/158155659</link><guid>https://blog.csdn.net/inthat/article/details/158155659</guid><author>inthat</author><pubDate>Sat, 28 Feb 2026 23:30:00 +0800</pubDate><description><![CDATA[OpenClaw的定时任务系统采用内置Cron调度器实现，通过维护Cron表达式周期性计算触发时间。任务配置存储在.openclaw/cron/jobs.json文件中，路径由数据目录和固定子路径组成。配置包含任务ID、执行代理、调度计划（支持三种类型：一次性、固定间隔和标准Cron）、执行内容等。系统支持自然语言配置，会自动将任务持久化到指定目录。运行状态包括下次触发时间、上次执行结果等信息，执行时可选择主会话或隔离会话模式。]]></description><category></category></item><item><title><![CDATA[oepnclaw之skills开启以及配置Skills registry (ClawHub)]]></title><link>https://blog.csdn.net/inthat/article/details/158098147</link><guid>https://blog.csdn.net/inthat/article/details/158098147</guid><author>inthat</author><pubDate>Sun, 15 Feb 2026 16:51:11 +0800</pubDate><description><![CDATA[OpenClaw Skill 是以文件夹为单位的"能力描述 + 执行逻辑"组合包，核心是一个SKILL.md文件，AI 通过阅读它来理解技能。Skill 加载路径由中的workspace配置决定。关键配置在这个workspace字段定义了 OpenClaw 的工作区根目录。OpenClaw 会在工作区根目录下寻找skills/优先级位置说明1工作区技能（团队共享）2用户技能（个人专属）3内置技能系统自带，可被覆盖。]]></description><category></category></item><item><title><![CDATA[openclaw架构原理-单进程应用 + 插件式扩展]]></title><link>https://blog.csdn.net/inthat/article/details/158097236</link><guid>https://blog.csdn.net/inthat/article/details/158097236</guid><author>inthat</author><pubDate>Sun, 15 Feb 2026 09:20:54 +0800</pubDate><description><![CDATA[编辑（相对于 docker-compose.yml 目录）在channels"wecom": {"token": "<你的企业微信 Token>","encodingAESKey": "<你的企业微信 EncodingAESKey>"手动注册插件（关键步骤）这是最容易踩的坑！OpenClaw 的 doctor 会自动尝试在中以通道 ID（wecom）注册插件，但实际的插件 ID 是，导致错误。必须手动在注意的 key 必须是 openclaw-wecom（npm 包名去掉前缀），而不是。]]></description><category></category></item><item><title><![CDATA[数据库的三级模式:外模式 、逻辑模式、内模式（三级模式 与 MySQL 的对应关系）]]></title><link>https://blog.csdn.net/inthat/article/details/157872918</link><guid>https://blog.csdn.net/inthat/article/details/157872918</guid><author>inthat</author><pubDate>Sun, 08 Feb 2026 16:27:23 +0800</pubDate><description><![CDATA[数据库三级模式结构是ANSI/SPARC提出的标准体系，包括外模式（用户视图）、概念模式（全局逻辑结构）和内模式（物理存储）。外模式描述局部数据逻辑结构，概念模式定义全体数据关系，内模式管理物理存储方式。MySQL通过视图、表结构和存储引擎分别实现三级模式，并通过两层映射提供数据独立性。但在实际开发中，VIEW使用较少，因其存在性能、维护和功能限制等问题，现代应用更多通过ORM、Service层等方式替代VIEW功能。三级模式作为理论框架，在实际数据库系统中通常被透明化实现。]]></description><category></category></item><item><title><![CDATA[macOS 打出来的 tar 包，Linux 常见告警(tar 包里带了 macOS 的扩展属性（xattr）)]]></title><link>https://blog.csdn.net/inthat/article/details/157589271</link><guid>https://blog.csdn.net/inthat/article/details/157589271</guid><author>inthat</author><pubDate>Sun, 01 Feb 2026 10:17:54 +0800</pubDate><description><![CDATA[macOS与Linux系统间tar包兼容性问题 当在macOS上创建tar包时，系统默认会包含扩展属性，导致在Linux系统解压时出现警告。这是因为两个系统对文件属性的处理方式不同。解决方法是在打包时使用COPYFILE_DISABLE环境变量来排除这些扩展属性，确保tar包在不同系统间的兼容性。]]></description><category></category></item><item><title><![CDATA[Go 语言中的 toolchain 指令-toolchain go1.23.6的作用和目的]]></title><link>https://blog.csdn.net/inthat/article/details/157578404</link><guid>https://blog.csdn.net/inthat/article/details/157578404</guid><author>inthat</author><pubDate>Sat, 31 Jan 2026 08:20:37 +0800</pubDate><description><![CDATA[Go 1.21引入的toolchain指令为模块系统提供精确版本控制。在go.mod中，&quot;toolchain go1.23.6&quot;明确指定构建所需的Go工具链版本，确保开发环境和CI/CD使用一致版本(go1.23.6)，避免兼容性问题。该指令还能自动检查/下载指定版本，优化依赖解析，是现代化Go开发的重要实践。相比仅用&quot;go 1.23.0&quot;，toolchain能精确到补丁版本，显著提升项目稳定性和可维护性，成为Go项目标准化的重要组成部分。]]></description><category></category></item><item><title><![CDATA[MySQL字符集排序规则冲突问题（utf8mb4_unicode_ci和utf8mb4_0900_ai_ci ）]]></title><link>https://blog.csdn.net/inthat/article/details/157414775</link><guid>https://blog.csdn.net/inthat/article/details/157414775</guid><author>inthat</author><pubDate>Wed, 28 Jan 2026 10:15:17 +0800</pubDate><description><![CDATA[MySQL字符集排序规则冲突常见于不同collation表JOIN操作时报错。文章分析了utf8mb4_unicode_ci（基于早期UCA）和utf8mb4_0900_ai_ci（基于UCA 9.0.0）两种排序规则的特点，后者是MySQL 8.0的默认规则。建议新项目优先使用utf8mb4_0900_ai_ci以获得更现代的Unicode支持，老系统可保持utf8mb4_unicode_ci以保证兼容性。生产环境应统一使用数据库默认collation，创建表时需注意是否显式指定排序规则，建议先通过SHO]]></description><category></category></item></channel></rss>