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...

多态

实现方式1.通过接口来实现,即函数指定接口为参数时,所有实现了这个接口的对象都可以作为参数传入2.接口数组或者切片可以存放实现这个接口的所有不同类型的对象类型断言1.通过接口参数传进来的变量,如果需要将其赋给某个具体的值,需要执行断言操作,即 b=a.(B)  //B即是b的类型名,但是这种情况下,...

select关键字

它是一个控制结构,可以看成是只用于管道的switch,每个case都必须是管道操作,它将随机选取一个可运行的case,如果,所有都不可运行,则它将阻塞,它具备一下性质1.每个 case 都必须是一个通信2.所有 channel 表达式都会被求值3.所有被发送的表达式都会被求值 // 2和3总结下就是...

gin set-session不生效

主要原因少path    store.Options(sessions.Options{        MaxAge: 3600 * 3,        Path:  "/",    })...