Published onNovember 26, 2024如何安全地存储密码在数据库network-securitydatabasebackend安全存储密码需要三步:哈希将密码不可逆转为指纹,避免明文泄露;加盐为每个用户生成唯一盐,抵御彩虹表攻击;延展重复哈希多次,延缓暴力破解。结合 bcrypt 等算法,确保密码保护更安全高效,切勿直接存储明文密码。
Published onNovember 25, 2024Go Generate 完全指南backendgoGo 的代码生成功能虽然简单,但非常强大和实用。通过 go generate 命令,我们可以实现自动化重复性代码的生成,实现类似泛型功能(在 Go 1.18 之前特别有用),生成高效的查找表和常量,自动化字符串表示的生成,集成各种代码生成工具。通过正确使用这些功能,我们可以大大提高 Go 开发的效率和代码质量。
Published onNovember 22, 2024基于 Postgres 的通知模式(Notifier Pattern)backendgodatabasePostgres 的 LISTEN/NOTIFY 功能通过通知器模式优化了连接管理,减少了每个程序需要的数据库连接数量,避免了为每个主题创建多个连接。通过使用缓冲通道和非阻塞发送,通知器能够高效处理大量通知。同时,结合上下文超时机制和“让它崩溃”策略,可以确保系统在出现问题时快速恢复。PgBouncer 的会话池模式支持 LISTEN,提高连接效率。
Published onNovember 21, 2024Go 1.22 中更优秀的 HTTP 服务器路由backendgoGo 1.22 将引入增强版 HTTP 路由多路复用器,提供更强大的路径匹配和方法路由能力。新的 ServeMux 支持通配符、方法限定和细粒度路由,有望减少对第三方路由库的依赖,为 Go Web 开发带来便利。
Published onNovember 18, 2024深入理解 Go 的 Context 包backendgoGo 的 context 包提供了强大的工具,用于管理请求范围内的超时、取消和数据传递。通过函数如 WithCancel、WithTimeout 和 WithValue,开发者可高效处理并发任务和资源释放,是构建健壮程序的重要组件。