技术文章 Phil Eaton - databases
文章从零构建一个基于 Go 和 Pebble 的简易文档数据库,支持通过 HTTP 插入、按 ID 获取和搜索 JSON 文档,代码控制在 500 行以内。作者实现了一个简化版 Lucene 查询语言,包括带引号字段名/值、嵌套路径、相等和范围比较以及隐式 AND。为了加速等值查询,系统在独立索引库中存储“路径=值”到文档 ID 列表的映射,并在搜索时对多个等值条件取交集;基准测试显示 year=1918 的查询从约 1 秒降至 0.03 秒。文章明确指出现有实现不支持范围索引、全文搜索和数组字段,且索引存储采用逗号分隔的 ID 字符串,适合作为理解文档数据库基本原理的教学项目而非生产系统。
推荐收录:文章提供了可运行的 Go 实现,完整覆盖查询解析、路径求值、基于 Pebble 的存储和等值索引构建,并给出了索引前后的性能对比,具有清晰的动手教学价值。适合后端工程师、数据库初学者或希望理解 Lucene 风格查询和倒排索引简化模型的读者。可迁移价值在于展示如何用少量代码实现可扩展的键值查询与索引设计,同时明确标出范围查询、数组和全文搜索等未覆盖边界,避免误导。
技术文章 Phil Eaton - databases
本文是一篇面向 PL/pgSQL 初学者的实践教程,从基础函数定义、命名参数、OUT 参数和递归函数入手,逐步过渡到字符串与数组操作、自定义复合类型,最终实现一个能解析 JSON 对象子集的词法分析器和语法解析器。作者强调目标不是生产级代码,而是熟悉语言特性,因此明确排除了嵌套对象、数组、Unicode 和小数等复杂场景。文中给出了完整可运行代码、测试脚本和错误处理示例,展示了如何利用 PL/pgSQL 的内置 SQL 函数、数组操作和自定义类型完成命令式编程任务。
推荐收录,因为文章不是简单罗列语法,而是通过实现字符串转数组、递归斐波那契和 JSON 解析器三个递进式例子,让读者理解 PL/pgSQL 的函数声明、控制流、复合类型和错误处理机制。对需要在 PostgreSQL 中编写存储过程、触发器或复杂业务逻辑的开发者来说,文中的代码模式和调试方法具有直接参考价值,且作者对语言边界和适用场景的说明清晰克制。
工程实践 GitHub Engineering 2026/08/10
本文介绍 GitHub Copilot SDK for Java,一个不绑定特定框架且支持自带密钥(BYOK)的 Java AI 客户端库。作者以 Jakarta EE 11 房地产线索管理 Agent 为例,详细展示注解式(@CopilotTool)与 Lambda 式工具定义、系统消息定制、Agent 循环(sendAndWait)及事件流处理。重点说明如何通过 Jakarta Concurrency 的 ManagedThreadFactory 创建虚拟线程执行器,确保工具回调携带容器上下文,从而无缝集成 CDI、JPA 和 WebSocket。文章还涵盖生产级关注点,如工具集访问控制与权限策略,但强调当前为预览版,注解 API 需实验性编译标志,且示例中简化了权限校验。整体为 Java 服务端 AI 工程化提供了可复用的集成模式与架构取舍。
推荐收录。本文不是浅层的产品介绍,而是深入展示了 GitHub Copilot SDK 在真实企业 Java 应用中的集成细节,包括工具定义、上下文传播、并发模型与实时事件推送,具有明确的工程参考价值。其模式与约束(如虚拟线程执行器、工具集控制)可直接迁移到其他 Java 服务端 AI 集成场景,尤其适合追求框架中立和供应商中立的开发者。
技术文章 Cloudflare Blog 2026/08/03
本文宣布 Cloudflare Workers 和 Containers 新增对入站 TCP 连接和 gRPC 的支持。核心特性包括:新的 connect(socket) 处理器让 Worker 能直接接受来自 Spectrum 代理的 TCP 套接字,并可将套接字路由到其他 Worker、Durable Objects 或容器;在 Cloudflare 容器中运行双向流式 gRPC 服务器,实现全双工通信;以及通过内置的 gRPC-web 与 gRPC 互转,使 Worker 既能作为 gRPC 服务端提供 unary 和 server-streaming API,也能作为客户端调用外部 gRPC 服务。文章通过代码示例展示了从 Worker 接受套接字并转发到容器,以及使用 @connectrpc/connect 库编写 gRPC 服务的方法。这使得开发者能够在 Cloudflare 全球网络上部署任意语言的现有 gRPC 应用,特别适合低延迟语音 AI 等场景。但功能目前处于私有测试阶段,协议转换可能引入额外开销,且仅支持 TCP 协议,尚未涉及 UDP。
推荐收录,因为文章详细阐述了 Cloudflare 将 TCP 入站和 gRPC 引入无服务器平台的技术方案,包括 Socket 路由、容器集成和协议转换等关键设计,并提供了可运行的代码示例。对于从事云原生开发、平台工程或需要构建低延迟实时服务的工程师而言,这些机制有助于理解如何将现有 TCP/gRPC 应用迁移到边缘计算环境,具有可迁移的架构参考价值。注意功能仍处 beta 阶段,部分细节可能变化。
个人心得 Julia Evans 2026/07/21
作者记录了自己尝试使用 Django 构建 2010 年代风格网站(后端渲染 HTML、最小化 JavaScript、SQL 数据库)的学习过程和个人体验。她重点分享了几项让她感到愉快的 Django 特性:可组合的查询集(QuerySet)方法让查询条件封装和复用变得可读且模块化;内置模板过滤器(如 urlize、linebreaksbr、date、querystring)极大简化了 HTML 生成和链接拼接;自动数据库迁移系统使模型变更和演进成本极低。在代码组织上,她放弃了基于类继承的视图,转而采用函数式视图,感觉更直观。她还提到对 Django 性能的困惑,如模板缓存被误关闭、不确定性能预期与优化方向。全文是从业者视角的具体经验分享,而非系统教程。
这是一篇真实的开发者实践反思,聚焦于 Django 框架中提升效率和可读性的具体特性(查询集封装、模板过滤器、自动迁移)以及个人在代码组织和性能调校上的取舍。对正在学习或评估后端渲染栈、尤其是小型到中型 Web 应用的开发者来说,文中列举的便利点与踩坑经历具有直接的可迁移参考价值。
工程实践 知乎 - 鹅厂架构师 2026/05/12
这篇文章复盘了一次老 Django 接口的线上性能排查,围绕 10000+ 条数据、7MB 响应体和高频调用场景,逐步验证了 ORM 对象构造、values() 直出、字段裁剪、JSON 序列化、gzip 等多个假设。作者最终通过 TTFB/Total 对比、本机回环测试和代码审查,发现真正的瓶颈不是数据库或网络,而是把完整字符串错误地交给 StreamingHttpResponse 导致逐字符输出,修复后接口从 13.6 秒降到 1.7 秒。文章还总结了如何用数据而不是直觉定位 HTTP 性能问题,并说明了该结论对真正流式接口与大对象返回的适用边界。
推荐收录,因为它不是单纯的“改一行代码变快”故事,而是完整展示了从经验判断到数据验证、从错误归因到根因定位的工程排查过程。对做 Web 后端、Python/Django、线上性能治理的读者都有很强的迁移价值,尤其适合理解 TTFB、响应体输出链路和“看起来没错的代码”带来的隐性性能坑。
工程实践 Lyft Engineering 2025/12/15
文章复盘了 Lyft 将 Python 服务从 3.8 升级到 3.10 后,某个服务在测试环境出现延迟尖刺、下游 5xx 和内存缓慢增长的排障过程。作者先用统计指标和基于 tracemalloc 的内部内存 профiler 采样,并尝试通过 USR2 信号在 gunicorn worker 上抓取堆栈;但由于启用了 preload,信号处理器只在 leader 进程注册,导致 worker 被误杀。关闭 preload 后,采样堆栈最终指向 pynamodb/botocore/urllib3 的连接池路径。根因是 urllib3 1.26.16 在 gevent 场景下与 weakref.finalize 和 monkey patch 存在不兼容,连接未能及时归还池中,进而引发池耗尽、请求阻塞以及内存上涨。团队先回退到 1.26.15 解除故障,后续在 gevent v25.4.1 与修复后的 urllib3 组合上恢复升级。文章同时说明 Python 版本并非直接元凶,问题更像是依赖版本与协程运行时组合触发的隐性缺陷。
推荐收录,因为文章给出了从延迟、内存增长到信号采样、preload 坑位和依赖回退的完整证据链,不是单纯经验谈。适合做 Python Web 服务、gunicorn/gevent/urllib3 兼容性和生产排障的参考,但结论强依赖具体版本组合,迁移时需重新验证。
技术文章 Crunchy Data Blog 2025/12/04
这篇文章以 Postgres 的 EXPLAIN 输出为切入点,系统讲解了常见扫描类型及其适用场景,帮助读者从执行计划中判断查询为何快或慢。文章依次解释了顺序扫描、索引扫描、位图索引扫描与位图堆扫描、并行顺序扫描、并行索引扫描以及索引仅扫描,并配合真实的 EXPLAIN ANALYZE 示例展示各自的计划形态和指标。作者不仅说明了这些扫描方式的工作机制,还强调了优化器的选择逻辑,例如小表、返回比例较高或需要随机访问过多时,顺序扫描可能优于索引扫描。对于索引仅扫描,文章进一步讨论了覆盖索引带来的收益,以及写放大、索引体积和适用列数等边界条件。整体上,这是面向 PostgreSQL 性能排查与执行计划阅读的实用入门,但内容仍以常见扫描类型为主,未深入展开代价模型或更复杂的连接/排序计划。
文章直接给出了多种 EXPLAIN 扫描节点的真实输出和判读方法,适合做 PostgreSQL 性能排查、SQL 优化和执行计划入门参考。它的可迁移价值在于帮助读者建立“选择哪种扫描方式、为什么会选它”的心智模型,但内容主要覆盖基础扫描类型,深层优化仍需结合具体工作负载。
技术文章 PlanetScale Blog 2024/01/25
这篇文章系统介绍了如何在 MySQL 中表示和处理地理空间数据,先区分了实体、空间两类地理对象,再说明 POINT、LINESTRING、POLYGON 及其多几何类型在表中的存储方式。作者进一步解释了 WKT、WKB 和 MySQL 内部格式的区别,以及 SRID 如何决定坐标系和计算语义。文中给出了创建带 SRID 4326 的空间列、添加 SPATIAL KEY 的建表示例,并演示了距离、面积、包含、相交、缓冲、并集和差集等常用空间函数。最后比较了 MySQL 8 与 5.7 在 SRS 感知和空间索引上的改进,指出旧版本常在平面坐标和最小外接矩形上计算,精度和可用性都受限。整体适合作为入门到实操的参考,但示例主要覆盖基础用法,复杂 GIS 场景仍需结合具体投影与数据分布验证。
文章直接给出了 MySQL 空间数据类型、SRID、空间索引和常用函数的示例,证据充分,适合需要在数据库中存取地理位置、做邻近查询或范围分析的开发者。它的可迁移价值在于把“如何建表、如何查询、MySQL 8 为什么更准确”讲清楚;主要限制是停留在基础教程层面,复杂投影和大规模 GIS 负载还需进一步验证。
工程实践 Datadog Engineering 2021/09/30
文章复盘了一个基于 Akka 的 Java 应用性能问题,核心症状来自 ForkJoinPool 的调度与并发执行方式不匹配,导致吞吐和延迟出现异常。作者借助 Datadog Continuous Profiler 观察线程与 CPU 热点,先确认问题并不在业务逻辑本身,而是在运行时线程池和任务切分策略上。随后文章说明如何用持续剖析数据定位瓶颈、验证假设,并据此调整实现以降低线程争用和调度开销。它的价值在于把“性能优化”从经验调参变成可观测、可验证的工程流程。适用对象主要是 JVM、Akka 或类似 actor/线程池模型的服务,但具体结论依赖真实负载与 profiling 数据,不宜直接照搬到不同并发模型。
推荐收录,因为标题和摘要都明确指向“用持续剖析定位 Akka/JVM 性能瓶颈”,且直接给出了 ForkJoinPool 这一具体问题点。适合做 JVM 服务、线程池调优和可观测性实践的参考,尤其对需要把性能分析从猜测转为证据链的工程场景有迁移价值。