Golang
VampireWeekend
I want my dreams to rescue me
展开
-
Golang - go build编译项目时出现signal: killed (virtualbox + vagrant + ansible + ubuntu16.04)
今天在虚拟机上测试项目,需要make一下代码来更新项目。虚拟机搭建好之后,执行到go build时,出现如下信息:go build k8s.io/api/core/v1: /usr/local/go/pkg/tool/linux_amd64/compile: signal: killedgoogle之后,发现原因可能为虚拟机内存不够。查看虚拟机内存,发现只有1024g。因为是用vagra...原创 2020-04-08 11:32:59 · 3810 阅读 · 1 评论 -
Golang - 如何将interface{}转换为slice遍历
今天写代码时需要把interface{}转为数组并遍历,于是使用断言:func (cd *commandDefinition) tableOutputForGetCommands(obj interface{}) { ele, ok := obj.([]interface{}) //cannot use dataSlice (type []common.TableOutput) as t...原创 2020-03-18 18:44:08 · 17649 阅读 · 2 评论 -
Golang并发编程——Goroutine底层实现详解
线程的分类线程的实现可以分三类:用户级线程,内核级线程和混合式线程。用户级线程用户级线程是指不需要内核支持而在用户程序中实现的线程,它的内核的切换是由用户态程序自己控制内核的切换,不需要内核的干涉。但是它不能像内核级线程一样更好的运用多核CPU。库调度器从进程的多个线程中选择一个线程,然后该线程和该进程允许的一个内核线程关联起来。内核线程将被操作系统调度器指派到处理器内核。用户级线程是一...转载 2020-01-03 23:08:27 · 1698 阅读 · 0 评论 -
Golang进阶面试题整理
1. 简述Golang的方法有什么特别之处函数的定义声明没有接收者。方法的声明和函数类似,他们的区别是:方法在定义的时候,会在func和方法名之间增加一个参数,这个参数就是接收者,这样我们定义的这个方法就和接收者绑定在了一起,称之为这个接收者的方法。Go语言里有两种类型的接收者:值接收者和指针接收者。使用值类型接收者定义的方法,在调用的时候,使用的其实是值接收者的一个副本,所以对该值的任何操作,不会影响原来的类型变量。-------相当于形式参数如果我们使用一个指针作为接收者,那么就会其作用了原创 2020-01-03 15:00:24 · 17777 阅读 · 3 评论 -
高性能Golang之临时对象池
优化原因Slice扩充机制初始化一个slice,初学者会用:make([]int64, 0)高级一些的程序员都会知道,这样第一次分配内存相当于没有分配,如果要后续append元素,会引起slice以指数形式扩充,可以参考下面的代码,追加了3个元素,slice扩容了3次。a := make([]int64, 0)fmt.Println(cap(a), len(a))for i :=...转载 2019-09-10 15:27:53 · 548 阅读 · 0 评论