golang

Go

手撸golang GO与微服务 Saga模式之5

69 0

缘起 最近阅读<<Go微服务实战>> (刘金亮, 2021.1) 本系列笔记拟采用golang练习之 Saga模式saga模式将分布式长事务切分为一系列独立短事务 每个短事务是可通过补偿动作进行撤销的 事务动作和补动作偿都是幂等的, 允许重复执行而不会有副作用Saga由一系列的子事务“Ti”组成, 每个Ti都有对应的补偿“Ci”, 当Ti出现问题时Ci用于处理Ti执行带来的问题。可以通

Go

sql导入工具自动化

72 0

golang 上代码 可以按照数据库和sql文件 编译后可直接执行import ("fmt""os/exec""strings" )//command是执行的shell,注意如果出错,string(out)的报错内容更详细 func Exec_Shell(command string) (string, error) {cmd := exec.Command("/bin/sh", "-c", command)out, err := cmd.Output()if err != nil{fmt.Print

Go

手撸golang GO与微服务 Saga模式之5

42 0

缘起最近阅读<<Go微服务实战>> (刘金亮, 2021.1)本系列笔记拟采用golang练习之Saga模式saga模式将分布式长事务切分为一系列独立短事务每个短事务是可通过补偿动作进行撤销的事务动作和补动作偿都是幂等的, 允许重复执行而不会有副作用Saga由一系列的子事务“Ti”组成, 每个Ti都有对应的补偿“Ci”, 当Ti出现问题时Ci用于处理Ti执行带来的问题。可以通过下面的两

Go

golang字符串国际化

45 0

gostrings 这是一个go字符串国际化库,根据xml资源文件自动生成go文件,便于字符串统一管理。 背景代码中对字符串硬编码不方便管理。 有多语言的需求。功能特点字符串资源统一放在strings文件夹中,便于管理。 xml配置字符串,便于复用、管理、多语言对比。 编译前用户调用命令,自动生成go文件,运行时效率更好安装 执行go get github.com/xingliuhua/gostrings 使用在项目根目录创建strings文件夹。 在strings文件夹中创建.xml文件(必须是stin

Go

go中sync.Mutex源码解读

69 0

什么是sync.Mutexsync.Mutex是Go标准库中常用的一个排外锁。当一个goroutine获得了这个锁的拥有权后, 其它请求锁的goroutine就会阻塞在Lock方法的调用上,直到锁被释放。 var (mu sync.Mutexbalance int) func main() {Deposit(1)fmt.Println(Balance())} func Deposit(amount int) {mu.Lock()balance = balance + amountmu.Unloc

Go

go中sync.Mutex源码解读

59 0

什么是sync.Mutexsync.Mutex是Go标准库中常用的一个排外锁。当一个goroutine获得了这个锁的拥有权后, 其它请求锁的goroutine就会阻塞在Lock方法的调用上,直到锁被释放。 var (mu sync.Mutexbalance int) func main() {Deposit(1)fmt.Println(Balance())} func Deposit(amount int) {mu.Lock()balance = balance + amountmu.Unloc

Go

go 使用pprof 排查内存泄露

1055 0

go 是自带gc的语言,会自动管理内存,不用像C/C++那样,需要程序员手动释放内存,不用手动管理内存,就能少掉很多头发 go的GC会自动管理内存,但是这不代表go程序就不会内存泄露了。 go常见产生内存泄露的原因就是goroutine没有结束,简单说就是goroutine 被阻塞了,这样就会导致goroutine引用的内存不被GC回收,也就导致了内存写了。当然产生内存泄露的原因还有别的,只是暂时我还没有遇到。不管什么原因产生的内存泄露,最终都是因为异常的引用,导致该被回收的内存没有被gc 回收掉 起因说

Go

手撸golang GO与微服务 Saga模式之4

43 0

缘起最近阅读<<Go微服务实战>> (刘金亮, 2021.1)本系列笔记拟采用golang练习之Saga模式saga模式将分布式长事务切分为一系列独立短事务每个短事务是可通过补偿动作进行撤销的事务动作和补动作偿都是幂等的, 允许重复执行而不会有副作用Saga由一系列的子事务“Ti”组成, 每个Ti都有对应的补偿“Ci”, 当Ti出现问题时Ci用于处理Ti执行带来的问题。可以通过下面的两