golang
文章平均质量分 78
VanciorH
untitled
展开
-
Kubernetes controller源码分析小记(基于release-1.21)
在学习讲解执行kubectl run ...命令时发生了什么的这篇文章时,想到一个问题,既然controller是状态驱动的,只有当资源发生了改变才会触发controller的处理,那如果在处理资源的过程中controller挂掉,因为apiserver是无状态的,不存在事件交付处理过期等机制,那这个资源就一直处于未处理的状态吗。例如新建了一个deployment,再deployment controller准备新增replicaset的时候挂掉,那这个deployment会一直没有replicaset吗。原创 2021-09-16 21:55:10 · 326 阅读 · 0 评论 -
Golang逃逸分析小记
简要的来说,go对变量进行逃逸分析的目的是决定变量应该放在栈上还是堆上,当然变量尽可能地要放在栈上(因为goroutine的栈是可以动态扩缩容的,而不是仅限于操作系统设定的,这样当函数返回时变量占用的内存空间就自动回收了),而堆上的内存就需要使用GC机制去进行管理。 对变量进行逃逸分析可以使go语言中在语言层面提供一些语法糖,例如如下写法是很常见的: func NewString() *string { s := "" return &s } 而如果在C++中这样写,则很明显返回了一个栈变量的原创 2021-09-12 20:06:16 · 243 阅读 · 0 评论 -
Golang string参数传递小记
Golang中string类型作为函数参数进行传递的时候背后是怎么实现的呢?本文通过查看Golang汇编结果进行一些insight。 编译Golang汇编命令: GOOS=linux GOARCH=amd64 go tool compile -S -N xxx.go > xxx.s 第一个案例——简单的函数参数传递 Go代码: package main //go:noinline func foo(s string) { s = "this is a change" } func main() {原创 2021-01-04 20:17:48 · 3271 阅读 · 0 评论 -
Golang(不存在)的包管理
Golang(不存在)的包管理Golang开发与GOPATHGovendorGo Modules after 1.11go get被墙问题 最近开始上手Golang,竟然一开始在包管理上就碰到不少问题,搜了一大圈,因此开一篇博文记录一下在Golang package managing里爬过的坑。 Golang的包管理不像Python那样健全,无论是使用conda还是pip,都可以很方便的指定版本,...原创 2019-07-17 21:40:27 · 617 阅读 · 0 评论 -
Golang reflect和interface{}
preliminary empty interface,type assertion,type switch 探究这个问题的缘由:使用sort.Slice(slice interface{}, less func(i int, j int) bool)函数,比如下面的代码示例,我传入sort.Slice的第一个参数是对象而不是指针,如果算作值传递的话应该会引起对象拷贝,sort.Slice函数只是...原创 2019-08-16 22:54:35 · 767 阅读 · 0 评论