go值拷贝
概念值类型值类型的数据,默认全部都是深复制,Array、Int、String、Struct、Float,Bool。引用类型引用类型的数据,返回的是值的地址,指针,切片,channel,interfac go中的值拷贝 值传递、指针传递
1036 0
go-GMP
* G — 表示 Goroutine,它是一个待执行的任务; * M — 表示操作系统的线程,它由操作系统的调度器调度和管理; * P — 表示处理器,它可以被看做运行在线程上的本地调度器; 协程调度,工作窃取
1123 0
分布式事务
分布式事务什么是本地事务ACID原子性:是指一个事务是一个不可分割的工作单位,其中的操作要么都做,要么都不做;如果事务中一个SQL语句执行失败,则已执行的语句也必须回滚,数据库退回到事务前的状态。TCC,saga,可靠事件队列
1213 0
go堆栈逃逸分析垃圾回收
堆栈一般堆栈栈一般由操作系统来分配和释放,堆由程序员通过编程语言来申请创建与释放。栈用来存放函数的参数、返回值、局部变量、函数调用时的临时上下文等,堆用来存放全局变量。我们可以这样理解数据存放的规则: 逃逸分析,垃圾回收,三色标记法
905 0
go-map
当查询map["name"]的时候,通过hash函数获取当前key的哈希,通过当前key的哈希获取到对应的正常桶bmap结构的b 如果正常桶没找到,找关联的溢出桶,如果没有关联直接返回nil,如果有关联了还是没找到,直接返回nil 如果正常桶找到了,对比key,并返回 如果正常桶没找到,溢出桶找到了,对比key,并返回 哈希桶,动态扩容,删除map
1063 0
singleFlight源码解析
SingleFlight作用是将并发请求合并成一个请求,以减少对下层服务的压力。应用场景大量的请求同时过来,查询一个已经失效的缓存,导致大量请求打到数据库(缓存击穿)如何使用?这个时候就需要使用singleFlight合并这些请求。
542 0
go select原理及使用场景
go select原理。类似c语言的多路复用,可以同时监听多个channel。当有channel可读可写之前会一直阻塞。两个 `case` 都是同时满足执行条件的,如果我们按照顺序依次判断,那么后面的条件永远都会得不到执行,而随机的引入就是为了避免饥饿问题的发生
573 0
设计模式6原则之:单一职责原则
概念一个类或者模块只负责完成一个职责(或者功能)理解不要设计大而全的类,要设计粒度小、功能单一的类一个类包含了两个或者两个以上业务不相干的功能,那我们就说它职责不够单一,应该将它拆分成多个功能更加单一。单一职责原则
461 0
go defer运行机制
概念Go语言的defer会在当前函数返回前执行传入的函数,它会经常被用于关闭文件描述符、关闭数据库连接以及解锁资源。现象defer先进后出packagemainimport"fmt"f defer闭包,预读
515 0
go panic和recover
概念panic能够改变程序的控制流,调用panic后会立刻停止执行当前函数的剩余代码,并在当前Goroutine中递归执行调用方的defer;recover可以中止panic造成的程序崩溃。它是一个只 recover必须在defer闭包中
464 0