go专题
未读go-redis笔记go-redis 是 Go 语言中用于操作 Redis 数据库的流行客户端库。以下是学习和使用 go-redis 时需要掌握的 必学知识点,涵盖核心概念、常用功能和最佳实践:
1. 基础知识(1) 安装和引入
安装:使用以下命令安装 go-redis 库:
1go get github.com/redis/go-redis/v9
引入:在代码中引入库:
1import "github.com/redis/go-redis/v9"
(2) 连接 Redis
创建客户端:通过 redis.NewClient 创建 Redis 客户端。
1234567891011121314151617181920import ( "context" "github.com/redis/go-redis/v9")func main() { ctx := context.Background() rdb := redis.NewClient(&redis.Options{ ...
go专题
未读go配置管理viperViper 提供了丰富的 API 来处理配置管理的各种场景,下面详细讲解其常用 API 及核心功能:
安装1go get github.com/spf13/viper
简介Viper,直译为眼镜蛇,是一个针对 go 应用程序的完整的配置文件解决方案,可以处理几乎所有类型的配置需求和格式,方便管理项目的配置文件,并且具有以下特色:
默认值设置
支持格式 JSON, TOML, YAML, HCL, envfile,Java properties
支持实时监测和重载配置文件
支持环境变量中读取
支持远程配置系统读取配置并监测变化
支持读取命令行标记
支持缓冲区读取
支持显示设置值
一、常用 API 及功能详解1. 配置读取相关 API
Get(key string) interface{}:获取任意类型的配置值
GetString(key string) string:获取字符串类型
GetInt(key string) int:获取整数类型
GetBool(key string) bool:获取布尔类型
GetFloat64(key str ...
gin学习笔记官方文档:Gin Web Framework (gin-gonic.com)
仓库地址:gin-gonic/gin: Gin is a HTTP web framework written in Go (Golang)
官方示例:gin-gonic/examples: A repository to host examples and tutorials for Gin. (github.com)
gin常用API
类别
API 方法
描述
路由引擎创建与配置
gin.New() *gin.Engine
创建一个空白的路由引擎,不包含默认中间件
路由引擎创建与配置
gin.Default() *gin.Engine
创建一个默认路由引擎,内置 Logger 和 Recovery 中间件
路由引擎创建与配置
r.Run(addr …string) error
启动 HTTP 服务器
路由引擎创建与配置
r.RunTLS(addr string, certFile string, keyFile string) error
启动 HT ...
那些年踩过的坑
未读Go编译运行时的一些坑一.Golang编译运行缓慢的解决方法原因:在最近的Windows11更新中,微软给用户更新了一个类似于杀毒软件的服务进程PCManager Serivice Store,该进程会对于go代码的编译和运行进行强制检查,消耗大量的cpu和运存时间,导致go语言代码运行效率底下。对此,只需要在服务进程中将其停止运行即可。
罪魁祸首就是下图这个微软电脑管家
解决方法:多的不说,直接删除,本人9.21亲测有效
以管理员身份运行powershell,运行以下脚本,一键复制粘贴解决
1234567891011121314151617181920212223242526272829303132333435363738394041# ===============================# 强制删除 Microsoft PC Manager# ===============================Write-Host "=== 停止并删除 PC Manager 服务 ===" -ForegroundColor Cyan$services = ...
jwt
一.JWT简介官方仓库:golang-jwt/jwt: Community maintained clone of https://github.com/dgrijalva/jwt-go
官方文档:jwt package - github.com/golang-jwt/jwt/v4 - Go Packages
一、JWT 是什么 & 工作原理JWT(JSON Web Token) 是一种开放标准(RFC 7519),用于在客户端和服务端之间安全地传递 JSON 格式的信息。
结构: JWT 分为三部分,用 . 连接:
1Header.Payload.Signature
Header(头部)
声明类型(JWT)和算法(HS256、RS256 等)。
1234{ "alg": "HS256", "typ": "JWT"}
Payload(负载)
存放业务信息,比如用户 ID、用户名、过期时间等。
12345{ ...
casbin一.常用APICasbin 在 Go 里常用的 API,这些 API 都是围绕 Enforcer(执行器)来操作的。
1. Enforcer 初始化123456789// 从模型文件 + 策略文件e, _ := casbin.NewEnforcer("model.conf", "policy.csv")// 从模型文件 + Adapter(如 MySQL)a, _ := gormadapter.NewAdapter("mysql", "root:123@tcp(127.0.0.1:3306)/")e, _ := casbin.NewEnforcer("model.conf", a)// 加载策略(必须调用)e.LoadPolicy()
2. 权限校验123456ok, err := e.Enforce("alice", "data1", "read")if ok { fmt.Println(&q ...
go日志库
一.📌 Go zap 日志速查表1. 安装1go get go.uber.org/zap
2. 创建 Logger123logger, _ := zap.NewDevelopment() // 开发模式 (console, 带颜色)logger, _ := zap.NewProduction() // 生产模式 (JSON, 适合采集)defer logger.Sync()
3. 两种 Logger12sugar := logger.Sugar() // 语法糖,易用logger.Info("严格模式日志") // 强类型,性能好
4. 日志级别(从低到高)zap 默认 日志级别过滤机制:低于设定级别的日志不会输出。
方法
说明
Debug
调试日志
Info
信息日志
Warn
警告
Error
错误
DPanic
开发模式 panic
Panic
记录并 panic
Fatal
记录并退出程序
5. Sugared Logger 用法12sugar.Infof("用户 %s 登 ...
go发送邮件
🚀 Go 发送邮箱验证码 (基于 gomail)安装依赖1go get gopkg.in/gomail.v2
后端代码 (main.go)123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596package mainimport ( "encoding/json" "log" "math/rand" "net/http" "time" "gopkg.in/gomail.v2")// 邮件配置const ( smtpHost = "smtp.example.com" // SMTP 服务器地址,例如 smtp.qq.co ...
go生成验证码一.两种验证码实现方法 Go 里比较常见的验证码实现方式主要有两种:
方案一:使用 github.com/dchest/captcha步骤
引入依赖
1go get github.com/dchest/captcha
生成验证码
调用 captcha.NewLen(6) 生成验证码 ID(6 位长度)。
通过 captcha.WriteImage(w, id, width, height) 输出 PNG 图片。
校验验证码
使用 captcha.VerifyString(id, userInput) 进行验证。
前端展示
前端 <img src="/captcha/image?id=xxx"> 显示验证码图片。
提交时携带 id + code 调用 /captcha/verify 接口验证。
思路
dchest/captcha 直接在后端生成 PNG 图片,前端 <img> 标签展示。
适合传统 Web 项目,结构清晰。
优点:简单、稳定、广泛使用。
缺点:只能输出图片,不方便前端组件化或跨端(比如 Ap ...
正则表达式
前言:这里主要记载go操作正则表达式,若没学过正则表达式,请前往正则表达式30分钟入门教程学习
常用正则表达式.pdf
一.Go regexp包常用API
📌 正则表达式对象创建12re, err := regexp.Compile(`\d+`) // 编译正则,返回 errorre := regexp.MustCompile(`\d+`) // 编译正则(失败会 panic,常用)
📌 匹配相关
方法
说明
示例
MatchString(s)
判断是否匹配
re.MatchString("abc123") // true
Match(b []byte)
判断字节切片是否匹配
re.Match([]byte("123"))
📌 查找匹配
方法
返回
示例
FindString(s)
第一个匹配的字符串
"abc123xyz" → 123
FindAllString(s, n)
所有匹配,n=-1 表示不限制
"12 34 56" ...

