lsof 命令详解:窥探进程文件描述符

2025-06-06

这段代码使用 `lsof -p $(echo $$)` 命令列出了当前 zsh 进程的所有打开文件。输出显示了进程 ID、用户、文件描述符、文件类型、设备、文件大小和路径等信息,直观地展示了进程与哪些文件系统资源发生交互。对于理解进程行为、排查文件句柄泄漏等问题非常有用。

阅读更多
开发

Axum 中基于 Cookie 的身份验证:从提取器到中间件

2025-06-05

本文探讨了在 Rust 的 Axum 框架中实现基于 Cookie 的用户身份验证的两种方法。首先,作者介绍了使用自定义提取器 `CookieJwt` 从请求中提取 JWT 令牌,并根据 JWT 的有效性来决定显示用户配置文件还是登录按钮。然而,这种方法在处理复杂的认证场景和保持代码整洁方面存在不足。随后,作者改进了方法,使用 Axum 中间件来处理身份验证逻辑,这使得代码更清晰、可重用,并能更好地处理各种身份验证场景,例如不同权限级别的用户访问控制。文中详细介绍了中间件的实现过程,包括 JWT 的验证、刷新令牌的处理以及对不同请求类型的支持,最终实现了更健壮和灵活的用户身份验证系统。

阅读更多
开发

告別查詢構建器:直接用SQL写查询更优雅

2025-01-25

这篇文章探讨了在编写数据库查询时,直接使用SQL语句而非借助查询构建器的优势。作者以多个例子说明,通过巧妙运用SQL的特性(如`IS NULL`、`COALESCE`、`ARRAY_REMOVE`、`STRING_TO_ARRAY`等),可以简洁地处理可选参数、数组、分页和批量更新等常见场景,减少Rust代码的复杂度,并提高代码可读性和可测试性。作者认为,直接使用SQL不仅能减少代码量,还能更容易地进行数据库测试和调试。

阅读更多
开发