技术博客

sync中的Cond、Once、Map

Cond 使协程进入阻塞状态,等待其它线程完成某件事后,使协程继续工作 var mu sync.Mutex cond := sync.NewCond(&mu) //传入的是Locker接口,也就是不限定必须是Mutex,实现了Lock和Unlock就可以 sharedResource := 0

Administrator 发布于 2025-08-12

golang中gorm的读写分离

gorm是golang的orm框架。 读写分离的前提是数据库实现了主从复制,依赖相关文档:https://gorm.io/docs/dbresolver.html 安装依赖 go get gorm.io/driver/mysql #MYSQL驱动 go get gorm.io/gorm #GORM框

Administrator 发布于 2025-08-12

访问限制器/限流器 - rate limiting

削峰(peak shaving、traffic smoothing)手段之一 golang 限制API或功能的访问频率,username也不一定是用户名,可以是IP或其它标识 package main import ( "golang.org/x/time/rate" "time" ) va

Administrator 发布于 2025-07-25

gin+session

引入依赖 go get github.com/gin-contrib/sessions 注入 var router = gin.Default() store := cookie.NewStore([]byte("password")) //将存储的数据加密后保存在用户的浏览器,这是加密的密钥 st

Administrator 发布于 2025-07-17

cron

golang的定期、定时任务 github: https://github.com/robfig/cron 依赖 go get github.com/robfig/cron 实例 c := cron.New() //用本地时间时区 c := cron.NewWithLocation(time.

Administrator 发布于 2025-03-10

记一次HTTP请求403的解决办法

情况总结 情况A:全部请求都是403 情况B:程序刚运行的开头几次请求是403,然后大部分是正常(穿插一些403) 情况C:全部正常 前言 昨天遇到一个问题,用Go写的程序访问HTTPS,在请求头、COOKIES都是正确的情况下,返回403代码。于是开始研究TLS(SSL的版本)、证书、加密套件、密

Administrator 发布于 2025-01-14

protobuf和gRPC

protobuf(protocol buffer)是google开发的数据序列化协议,特点有高效、轻量级、用来在不同的系统之间交换结构化数据,尤其适合网络通信和存储。pb序列化后是紧凑的二进制格式 gRPC是由google开发的高效远程调用框架。 以下用golang来写gRPC服务 安装pb编绎器

Administrator 发布于 2024-12-29

etcd

还是和zk一样只使用它的分布式锁 嘿嘿..... etcd分布式锁的原理就是新增键值对。 ttl设置5秒并不是最大持有锁5秒;实测效果:如果etcd客户端没有断开连接,也没有执行释放,那么锁会一直持有;因为锁绑定一个租约(lease),租约的时间是设定的ttl时间,租约会自动续期。释放时,会移除le

Administrator 发布于 2024-12-14

zookeeper

我只尝试了分布式锁,至于其它功能,如队列等没有尝试。 在创建包含二级路径的节点时,一级路径必须先创建 集群模式下,在创建节点时,会即时同步到其它follower(observer会稍迟) 经过测试,在不同的电脑中,连不同的IP,只要在一个集群中创建相同节点时,只有一个会成功(可以确保唯一),可以以此

Administrator 发布于 2024-12-04

MQTT协议服务搭建

MQTT是一种基本发布/订阅形式的消息协议 本次用的锁控板是控制快递柜的锁,共16路,需要插一张电话卡提供流量,用商家提供的工具将锁控板连接的服务器IP改成了自己搭建的MQTT,用GOLANG做后端控制开锁。 下载&安装应用:下载链接 1.将安装目录下的pwfile.example修改为pwfile

Administrator 发布于 2024-11-30
上一页 下一页