这里是全站文章的归档入口,下面是按时间倒序排列的全部文章。若想按主题浏览,请从首页的专题分类进入。
ClickHouse 窗口函数高级实战:排名、聚合、偏移与进阶玩法
窗口函数是 ClickHouse 处理「分组内逐行计算」的核心武器:排名、累计、滑动平均、偏移差值、分位数分布。本文系统讲解窗口函数的语法与窗口框、五大类函数(排名/聚合/偏移/分布/引用)、ClickHouse 默认窗口框与性能注意,以及行转列、TopN、去重等进阶玩法。
posts
这里是全站文章的归档入口,下面是按时间倒序排列的全部文章。若想按主题浏览,请从首页的专题分类进入。
窗口函数是 ClickHouse 处理「分组内逐行计算」的核心武器:排名、累计、滑动平均、偏移差值、分位数分布。本文系统讲解窗口函数的语法与窗口框、五大类函数(排名/聚合/偏移/分布/引用)、ClickHouse 默认窗口框与性能注意,以及行转列、TopN、去重等进阶玩法。
把 C 项目渐进迁移到 Zig 是降低维护成本、获得内存安全的现实路径。本文系统讲解迁移策略(绿色字段 vs 渐进)、translate-c 自动转换、@cImport 混合编译、C 与 Zig 类型/指针/错误/内存模型对比、逐模块迁移的边界设计,以及构建系统双语言集成的完整工作流。
BEAM 运行时与进程调度深度解析:BEAM 虚拟机架构(寄存器/模拟器)、进程与调度器(Scheduler)模型、调度策略(公平/抢占/削减)、ETS 与进程协作、内存管理与垃圾回收、复制式写语义(COW)、性能监控与调优、与 OS 线程的映射。
AutoML 与超参自动调优实战:人工调参的痛点、网格/随机/贝叶斯搜索原理、Optuna 与 TPE 采样、早停与剪枝、并行搜索、特征自动选择、AutoML 工具(AutoGluon/FLAML)、端到端流水线与落地边界。
系统覆盖 TypeScript 端到端 API 类型安全:tRPC 类型化过程、OpenAPI 规范与代码生成(openapi-typescript/swagger-typescript-api)、GraphQL Codegen、Schema 优先 vs Code 优先、前后端共享类型、运行时验证与类型生成对比,以及 API 类型生成的选型矩阵。
本节把条件类型与 infer 拼成类型级的数据结构与算法:以元组模拟数组与单链表、用元组长度实现类型级加减乘除与比较、用对象类型充当字典并按键值反查键名,再借逆变合并把联合转成元组。由此说明 TypeScript 类型系统为何是图灵完备的,以及这种能力在编译时间、错误信息与可维护性上的真实代价。读完本节,你能判断一个类型工具该手写还是该改用代码生成。
本节讲解 infer 在条件类型中做模式匹配与类型提取的规则:推断位置受协变与逆变影响的结果、同一推断变量出现在多处时的合并规则,以及在模板字面量类型中捕获子串、解析路由参数的技巧。随后引入递归条件类型,讲清递减输入与显式终止分支这两条铁律,并用累积参数避免结果反转。读完本节,你能用 infer 与递归实现真实的类型级提取工具,并知道如何规避深度超限报错。
本节从条件类型的语法与可赋值性判定讲起,重点剖析「分发」这一最反直觉的行为:为什么裸类型参数会让联合类型被逐成员展开、如何用元组包裹关闭分发、never 在分发中的特殊性,以及它与映射类型、键重映射组合后如何实现按键值类型筛选字段。读完本节,你能读懂主流工具库的类型定义,并写出行为可预测、不会误分发的条件类型工具。
长连接上线前还有三块拼图没补齐:它会静默假死、断了要能自动恢复、单实例的订阅表在多副本部署下会失效。本节先讲清心跳为什么必须由应用层承担、ping/pong 与业务保活如何配合、指数退避加抖动如何避免重连风暴,再讲断线后的状态补偿与消息幂等,最后用 Redis 发布订阅把广播从单机扩展到集群,并给出背压、慢消费者与可观测性的落地方案。
当服务端只需单向推送时,WebSocket 是过重的选择。本节讲透 SSE 的文本帧格式、id 与 retry 字段的作用、服务端如何用 ReadableStream 输出事件流、客户端 EventSource 的自动重连为何常常失效,以及需要 POST 与自定义请求头时如何改用 fetch 读取。还给出事件契约的类型化写法与流式 JSON 增量解析,并指出代理缓冲与超时这几个必踩的坑。
WebSocket 是长连接,一条通道上会流动几十种语义完全不同的消息,而 JSON.parse 返回的 any 会让类型安全在最需要它的地方失效。本节用判别联合为消息族建模:挑选有限且显式的字面量判别键、让 switch 自动收窄、用 never 做穷尽检查、在 JSON 边界用 Zod 做运行时校验,并给出前后端共享协议包与版本协商的落地方式。
从 SpringApplication.run() 追到 ApplicationContext 可用:拆开 refresh() 的十二个步骤各自做了什么,标出 BeanFactoryPostProcessor 与 BeanPostProcessor 的介入时机,把本机实测启动日志逐行对回框架阶段,并给出断点位置与扩展点清单。
从 SecurityFilterChain bean 与 lambda DSL 讲起,梳理 4.x 的 Security starter 改名、过滤器链的执行顺序与各自职责、401 与 403 的分工、密码编码器与 UserDetailsService 的落地写法,并给出多链共存的常见配置陷阱。
本节把图书服务的查询需求变成方法名:讲清 findBy/readBy 等前缀与条件关键字的语法规则,给出 And、Between、Containing、In、OrderBy、IgnoreCase、Top 等关键字全表,说明属性路径导航与 @Query 的取舍,并用 @Modifying 实现更新删除、用投影接口只取需要的列。
本节从协议角度讲清 dunder:用实测证明隐式调用只在类型上查找、绕过实例字典,拆开迭代协议的 __iter__ 与 __getitem__ 回退、比较协议的 __eq__/__hash__ 联动、NotImplemented 触发的反射运算与子类优先规则,并用 dis 的 BINARY_OP/COMPARE_OP 把运算符还原成方法调用。
本节用实测把 obj.attr 的查找顺序拆开:沿 type.__mro__ 找数据描述符、实例 __dict__、非数据描述符的优先级,逐一验证 property/staticmethod/cached_property 各自是哪一类描述符,并用 dis 的 LOAD_ATTR 与 member_descriptor 说明 __slots__ 的底层实现。
本节从 CPython 实现层拆开「一切皆对象」:用 id/type/sys.getsizeof 实测 PyObject 的引用计数与类型指针,用 sys.getrefcount 观察 3.12+ 的不朽对象(PEP 683),用 dis 反汇编说清名字绑定只是字典指向对象,并给出小整数缓存与字符串驻留的真实边界。
回到最前线的防御:用 Pydantic 与 pathlib 把不可信输入挡在门外并真跑路径遍历拦截,讲透密码哈希、危险函数禁用、依赖供应链的威胁模型、锁文件加 hash 校验、pip-audit 扫描与 SBOM 思路,最后落到最小权限加固清单。
认证之后是授权:本节对比 ACL/RBAC/ABAC 三种模型,用角色到权限集合实现 RBAC 并接进 FastAPI 依赖,再讲透多租户的独立库、独立 schema 与行级 tenant_id 三种隔离方案,并写出能真跑的越权测试用例验证边界。
认证回答「你是谁」:本节用标准库 hmac/hashlib 手写 HS256 的 JWT 签发与校验并真跑,讲透算法混淆、过期与时钟偏移三类坑,再把 Bearer 依赖接进 FastAPI,最后梳理 OAuth2 授权码流程与 PKCE 的工程要点。