- 博客(6)
- 收藏
- 关注
原创 【mysql】记录锁、间隙锁与临键锁
记录锁(Record Locks)A record lock is a lock on an index record.作用:阻止其他事务插入/删除/更新该记录使用示例:SELECT c1 FROM t WHERE c1 = 10 FOR UPDATE; /* 此处假定c1列建了唯一索引,故仅锁住一行 ,注意与下面的Next-key Locks区分 */ 注:记录锁仅作用在索引上,如果没有索引,InnoDB 会创建一个隐藏的聚集索引,然后使用记录锁间隙锁(Gap Locks)A
2022-05-07 20:15:34 1295
原创 【golang】使用reflect实现根据json tag对结构体数组排序
需求描述:调用方通过指定结构体某字段(如示例1中的project_id),后端服务基于该字段排序后将结构返回;难点:后端视角与前端视角不一样,对于指定的字段,不能直接排序解决方法:法1:列举法法2:反射机制示例1:// 带json tag的结构体type Data struct { ProjectId string `json:"project_id,omitempty"` ProjectName string `json:"project_name,omitempty"`}//
2022-04-15 10:11:24 667
原创 [golang]给slice赋值或者遍历slice得到的结果不是预期结果
问题根源: 存的是指针(地址)还是变量值,变量值变化 != 地址变化给slice赋值结果不预期示例: var array []int // slice不初始化,需要结合append使用;直接使用会panic var pointerArray []*int for i := 0; i < 3; i++ { array = append(array, i) } for _, v := range array { pointerArray = append(pointerArray,
2022-04-12 20:21:31 886
原创 【golang】Functional Options 让调用更简洁
A nice way to deal with setting options in a Go package接口设计目标:接口调用理应尽可能简洁;相比直接使用结构体初始化接口参数,functional-options初始化方式可以做的更好如下两种方式的默认调用func NewServer(cfg Config) { // 根据cfg初始化}NewServer(Config{}) // 调用默认配置,调用必须传入cfgfunc NewServer(opt ...Opt){ // 根据op
2022-03-28 16:37:32 1720
原创 【golang】time.Parse 统一时区
UTC:世界标准时间(英語:Coordinated Universal Time,法語:Temps Universel Coordonné,简称UTC)是最主要的世界時間標準CST :UTC+8时区名称,中国标准时间是其一,详见维基百科释义GMT:格林尼治平均时间(Greenwich Mean Time),前世界标准时示例: layout := "2006-01-02 15:04:05" now := time.Now().Format(layout) t1, _ := time.Parse(l
2022-03-22 21:58:06 2366
原创 【golang】http request正确设置host
问题:直接在Header中设置Host是否可以生效?问题背景:需要区分Host调用不同环境的接口,但Host设置有问题导致接口调用失败服务端代码示例func StartServer(addr string) error { http.HandleFunc("/hello", SayHello) if err := http.ListenAndServe(addr, nil); err != nil { return err } return nil}func SayHello(rsp
2022-03-22 18:49:50 5961
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人