Go Programing
Go Programing Skills 接口型函数 example // net/http 标准库 type Handler interface { ServeHTTP(ResponseWriter, *Request) } type HandlerFunc func(ResponseWriter, *Request) func (f HandlerFunc) ServeHTTP(...
Go Programing Skills 接口型函数 example // net/http 标准库 type Handler interface { ServeHTTP(ResponseWriter, *Request) } type HandlerFunc func(ResponseWriter, *Request) func (f HandlerFunc) ServeHTTP(...
Distrubuted Cache Project 项目地址 github Introduction 模仿groupcache, go语言版的memcached 缓存大量存在于计算机系统中 Redis CDN 设计分布式缓存需要考虑 资源控制, 淘汰策略, 并发, 分布式节点通信等问题 Reason 内存kv缓存的...
Go JWT token 生成token import "github.com/golang-jwt/jwt/v5" func GenerateJWT(username string) (string, error) { token := jwt.NewWithClaims(jwt.SigningMethodHS256, jwt.MapClaims{ "username": use...
Go password encryption 密码加密 import "golang.org/x/crypto/bcrypt" func HashPassword(pwd string) (string, error) { hash, err := bcrypt.GenerateFromPassword([]byte(pwd), 12) return string(hash), er...
Go Middlewares Auth Handle Func func AuthMiddleWare() gin.HandlerFunc { return func(ctx *gin.Context) { token := ctx.GetHeader("Authorization") if token == "" { ctx.JSON(http.StatusUnautho...
SQL Preprocess Why 优化MySQL服务器重复执行SQL的方法, 可以提升服务器性能, 提前让服务器编译, 一次编译多次执行, 节省后续编译的成本 避免SQL注入问题 Query // 预处理查询 func prepareQuery(id int) { sqlStr := "select id, name, age from stu where id >...
Go Connect DB import mysql driver import ( "database/sql" _ "github.com/go-sql-driver/mysql" ) init db // 定义一个全局对象db var db *sql.DB // 定义一个初始化数据库的函数 func initDB() (err error) { // DSN:Data ...
Go CRUD Query query one row // 查询单条数据示例 QueryRow func queryOne(id int) { sqlStr := "select id, name, age from stu where id=?" var u Student // 非常重要: 确保QueryRow之后调用Scan方法, 否则持有的数据库链接不会被释放 err :...
Process Request http.Request // 重要字段 type Request struct { Method string URL *url.URL Header Header Body io.ReadCloser Form url.Values PostForm url.Values MultipartForm *multipart.Fo...
Web Server 创建web server http // func ListenAndServe(addr string, handler Handler) error // handler == http.DefaultServeMux if nil http.ListenAndServe("localhost:8080", nil) // 配置server server :=...