主要工具: ss OpenSSL Postgres 生成证书 mkdir -p ~/pg-certs && cd ~/pg-certs 生成CA: `opens...
本文将演示如何使用 Next.js (App Router) + Tailwind CSS 作为前端,以及 Go + Gin 作为后端,完成 Google OAuth2.0 登录并在前端展示用户信息。 参考官方文档: https://developers.google.com/identity/protocols/oauth2/web-server?hl=zh-cn#libraries 示例代码已上传至GIthub仓库: https://github.com/x-mingg/google-oauth 前置准备 Node.js 18+ / npm Go 1.21+ Go...
📝 前言 在企业应用开发中,邮件告警是一个非常重要的功能模块。当系统出现异常、服务宕机或需要及时通知相关人员时,邮件告警能够确保信息及时传达。本教程将手把手教你如何使用Go语言实现一个功能完善的邮件告警系统。 🎯 学习目标 通过本教程,你将学会: 使用Go语言的net/smtp包发送邮件 配置Gmail和腾讯企业邮箱的SMTP服务 实现TLS/SSL加密连接 发送HTML格式的精美邮件 设计灵活的告警级别系统 实现邮件服务的配置化管理 📋 目录 前置准备 [邮箱SMTP服务设置](#邮箱smtp服务设置...
go-cache 包 轻量级内存缓存 线程安全,支持过期 适合小规模数据缓存 go-cache 简介与安装 go-cache 是一个线程安全的内存缓存库,支持过期时间。 go get github.com/patrickmn/go-cache 基础使用 `go import ( "github.com/patrickmn/go-cache" "time" ) func basicCacheUsage() ...
resty 包 比 net/http 更简洁的 API 内置重试、超时、拦截器 适合构建 API 客户端 resty 简介与安装 resty 是一个简单易用的 HTTP 和 REST 客户端库,灵感来自 Ruby 的 rest-client。 go get github.com/go-resty/resty/v2 基础使用 `go import "github.com/go-resty/resty/v2" // 创建客户端...
funk 包 快速开发首选,但注意性能开销 生产环境热路径建议用原生循环 Go 1.18+ 可用泛型替代 funk 简介与安装 funk 是一个提供函数式编程工具的 Go 包,类似于 JavaScript 的 Lodash。 go get github.com/thoas/go-funk 常见操作 查找与过滤 `go import "github.com/thoas/go-funk" type User struct ...
摘要: 如果项目中包含大量合约交互,推荐使用此方式,封装通用的合约调用,避免重复造轮子。
前言 在 Web3 开发中,与智能合约的交互是核心功能。但直接使用 ethers.js 或 web3.js 进行合约调用时,我们常常会遇到这些问题: 开发痛点: 🔴 代码重复:每次调用都要重复创建 Provider、Signer、Contract 实例 🔴 错误处理混乱:各种异常分散在业务代码中,难以统一管理 🔴 性能低下:频繁创建连接对象,缺少复用机制 🔴 网络不稳定:区块链 RPC 节点经常超时,缺少重试机制 🔴 维护困难:业务逻辑和技术细节耦合,改一处动全身 本文目标: 通过生产环境实...
前言 在 Go Web 开发中,数据验证是一个必不可少的环节。github.com/go-playground/validator/v10 是 Go 生态中最流行的验证库之一,但其默认的错误信息对用户并不友好。本文将详细介绍如何自定义验证错误信息,让你的 API 返回更加友好、易懂的错误提示。 问题场景 使用原生 validator 时,错误信息通常是这样的: ` Key: 'User.Email' Error:Field validation for 'Email' failed on the 'required' tag Key: 'User.Age' Erro...
本教程将指导您从零开始搭建一个完整的 gRPC 通信系统,使用 TypeScript 作为客户端,Go 作为服务端。 目录 环境准备 项目结构 步骤一:创建 Proto 文件 步骤二:搭建 Go 服务端 步骤三:搭建 TypeScript 客户端 步骤四:运行测试 故障排查 环境准备 必需软件 在开始之前,请确保已安装以下软件...