PostgreSQL 18即将支持UUIDv7:告别测试中的ID排序烦恼

2025-01-02

PostgreSQL即将在18版本中支持UUIDv7,这是一种改进的UUID生成方法。它不仅保留了UUIDv4的随机性优势,还通过利用时间戳和一个12位的亚毫秒计数器,保证了在同一数据库后端生成的UUID的单调递增性。这对于测试尤其有用,因为测试数据将自动按顺序排列,避免了手动排序的麻烦,提高了测试效率和可靠性。虽然单调性不保证跨数据库后端,但对于大多数测试场景来说已经足够。这项改进预计在2025年末的PostgreSQL 18版本中正式发布。

阅读更多
开发 UUIDv7

Stripe悄然发布V2 API:RESTful改进与DX转变

2024-12-29

Stripe在十月低调发布了V2 API,与V1版本相比,它将请求主体从表单编码改为JSON,并引入了HATEOAS风格的分页。V2 API旨在提高速度,并通过`include`参数控制子对象加载。此外,它还尝试实现真正的幂等性,以更好地处理失败请求。然而,V2 API在REST动词的使用和资源建模上仍有改进空间。作者认为,如今的优秀开发体验(DX)更依赖于高质量的SDK,而非完美的REST API。

阅读更多
开发

初识 SQLite

2024-07-11

文章讲述了作者初次接触 SQLite 数据库的体验和感受。作者一开始认为自己对 SQLite 有一定了解,但在实际使用过程中发现了一些令人惊讶的“怪癖”,例如不支持 ALTER COLUMN 和 DROP CONSTRAINT 等常用操作,并且数据类型系统也比较特殊。尽管 SQLite 有一些 impressive 的特性,例如流处理,但作者认为与 PostgreSQL 相比,SQLite 的使用体验仍然比较糟糕。

阅读更多
未分类

关于实现深色模式的笔记

2024-06-28

这篇文章详细介绍了如何在一个网站上高质量地实现深色模式,并指出了常见错误,例如:没有将深色模式设置为三种状态(浅色、深色、自动)、页面加载时出现闪烁、没有处理其他标签页的主题更改以及没有响应操作系统的主题更改等。文章还介绍了如何使用JavaScript、本地存储和CSS媒体查询等技术来解决这些问题,并提供了一些代码示例。

阅读更多
未分类

彻底消除 N+1 查询:Go 中的两阶段数据加载和渲染模式

2024-05-28

文章介绍了N+1查询问题,并重点阐述了在Go语言中使用两阶段数据加载和渲染模式来解决该问题的方法。该模式将数据加载和渲染分成两个阶段:加载阶段将所有需要的数据一次性加载到内存中,渲染阶段则仅从内存中读取数据进行渲染,从而避免了重复查询数据库。文章还讨论了该模式在处理嵌套资源时的优势,以及如何将其推广到其他编程语言。

阅读更多

适用于使用 Postgres 应用程序的通知程序模式

2024-05-14

本文介绍了 Postgres 中 listen/notify 的强大功能,并提出了一种名为“notifier pattern”的优化方案。该方案使用单一连接处理所有通知,减少连接资源浪费,并通过缓冲通道和可中断接收循环确保系统稳定性。文章还探讨了处理连接异常的策略,建议采用“let it crash”的思想,即在连接异常时重启程序,以确保系统恢复到健康状态。

阅读更多