golang

Go

Golang实现插入排序

64 0

package mainimport ("fmt" )func main() {var arr []intarr = []int{3, 4, 9, 6, 7, 1, 2}res := iSort(arr)fmt.Println(res) }func iSort(arr []int) []int {var tmp intcount := len(arr)for i := 1; i < count;

Go

Golang实现二叉树路径遍历

83 0

package mainimport "fmt"type Node struct {left *Noderight *Nodevalue string }var res [][]stringfunc main() {var path []stringe := Node{nil, nil, "5"}d := Node{nil, nil, "4"}c := Node{left: nil, right: &e, value: "3"}b := Node{nil, nil, "6"}a := Node{left

Go

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

44 0

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

Go

Golang判断interface为nil

241 0

对于interface类型的数据,不能通过简单的interface == nil进行判断,不能会出现漏洞 func main() {var data *bytevar in interface{}fmt.Println(data, data == nil)fmt.Println(in, in == nil)in = datafmt.Println(in, in == nil, reflect.ValueOf(in).Kind(), reflect.ValueOf(in).IsNil()) }准确的做法是通

Go

Golang 面向对象编程

46 0

Golang 是面向对象的么?是,也不是。尽管 Go 有类型和方法,并且允许面向对象风格的编程,但没有类型层次结构。Go 的『接口』概念提供了一种不同的实现方式,在某些方面更通用。同时,缺少类型层次结构使 Go 的『对象』感觉上比 C++ 或 Java 等语言中的『对象』轻很多。本文的目的就是通过示例来说明,如何使用 Golang 进行面向对象编程过程化以下是一个关于身份证ID的示例,用于从身份证中提取生日。通常的实现版本如下:func Birthday(id string) string {return

Go

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

42 0

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

Go

kube-apiserver内存溢出问题调查及go tool pprof工具的使用

1114 0

问题描述测试集群三台master,每个master上面的kube-apiserver都频繁的重启。登录其中一台master,发现kube-apiserver的内存占用特别高,每次重启完后内存很快就飙到了20G左右,而且还有继续增长的趋势。因为默认kube-apiserver的静态pod是没有设置memeory limit的,最终api-server会吃光机器的所有内存,导致master机器运行异常。查看容器内存占用的命令:docker stats --no-stream |grep kube-apiser

Go

golang 中的 nil

48 0

源码中的 nil 是这样定义的 // nil is a predeclared identifier representing the zero value for a // pointer, channel, func, interface, map, or slice type. var nil Type // Type must be a pointer, channel, func, interface, map, or slice type所以 nil 可以理解为这些类型的零值,声明一个变量在没