rpc调用文件格式

关于字段编码值 这个是是为了双方能够识别各自的字段,需要注意的是由于这个是为了识别同一个字段的,所以一个结构体中的字段编码值应当保持不同 #可能如果存在别名的话是可以相同的,待考证最好在1-16,否则会多占8位,传输会多一个字节类型定义后不可更改...

go并发模型研究

前言 go的所有并发模型都是由sync.Mutex提供的同步原语来实现的,底层则进一步依赖操作系统原语,比如Linux 中的 futex(快速用户空间互斥体)Mutex 几种状态未锁定(Unlocked):这种情况下任何goroutine都可以通过调用Lock方法来获取锁;已锁定(Locked):当...

k8s的外网访问策略

目前的一个临时结论k8s只注重容器编排,即容器间通信的能力外网流量还是需要先到pod的宿主机网络,然后在宿主机尝试访问外网...

mysql锁

1.写操作在数据库底层都会加写锁,读操作通过加上for update也可以加上写锁2.默认读操作不加读锁,可以通过lock in share mode 加读锁3.全局锁,通常用于备份,使用命令FLUSH TABLES WITH READ LOCK,直到 UNLOCK TABLES解除...

ACID事务隔离级别

读未提交 RU(Read Uncommitted)  允许一个事务读取另一个事务尚未提交的数据,即脏读(Dirty Read)读提交 RC(Read Committed)  一个事务提交之后才能读取另一个事务提交的数据。避免了脏读,但可能出现不可重复读和幻读。可重复读 RR(Repeatable R...

go 随机字符串高效方法

也是docker containerd的生成方法func GetRandomString2(n int) string { randBytes := make([]byte, n/2) rand.Read(randBytes) return fmt.Sprintf("%x...

布隆过滤器

简介1970年由布隆提出,至今仍广泛应用原理根据数据量定义一个长度为n的bitMap(bitMap的长度要和hash值能产出对应起来,n越大,越消耗性能)定义k个hash函数给存在的键求得值,在bitMap上标1(k和长度n关联,k越大,误判越低)有数据来时,通过n个hash函数计算,只有求得的bi...

缓存击穿、雪崩、穿透

缓存雪崩现象:大量缓存key由于设置了相同过期时间后在同时失效,导致大量请求同时打到数据库解决:随机过期时间定时器在过期之前刷缓存穿透现象:非正常的key被大量请求,导致流量打到数据库解决:合法性校验布隆过滤器缓存击穿现象:热点key被同时请求,导致流量打到数据库,常见于秒杀解决:请求数据库加red...

git reflog和git log

git log展示当前分支下的commit 记录git reflog则提供所有分支的操作记录和跳转,拉取记录(主要是指head指针的移动):...

微信小程序文件类操作

注意点:①该函数较新,旧版本微信无法使用,完善的小程序需要判断②vant-app的Toast组件可能会有冲突,暂时请直接用微信的loadingwx.chooseMessageFile({      count: 1,      type: 'file',      success(r...