第 3 页 - golang
0
评论
140
浏览

Go channel有什么特点?

channel有2种类型:无缓冲、有缓冲channel有3种模式:写操作模式(单向通道)、读操作模式(单向通道)、读写操作模式(双向通道)     写操作...

0
评论
185
浏览

Go channel的底层实现原理?

概念:Go中的channel 是一个队列,遵循先进先出的原则,负责协程之间的通信(Go 语言提倡不要通过共享内存来通信,而要通过通信来实现内存共享,CSP...

0
评论
142
浏览

Go map和sync.Map谁的性能好,为什么?

Go 语言的 sync.Map 支持并发读写,采取了 “空间换时间” 的机制,冗余了两个数据结构,分别是:read 和 dirtytype Map str...

0
评论
136
浏览

Go map如何扩容?

扩容时机:在向 map 插入新 key 的时候,会进行条件检测,符合下面这 2 个条件,就会触发扩容if !h.growing() && ...

0
评论
141
浏览

Go map 的负载因子为什么是 5?

什么是负载因子?负载因子(load factor),用于衡量当前哈希表中空间占用率的核心指标,也就是每个 bucket 桶存储的平均元素个数。负载因子 =...

0
评论
123
浏览

Go map冲突的解决方式?

比较常用的Hash冲突解决方案有链地址法和开放寻址法:链地址法当哈希冲突发生时,创建新单元,并将新单元添加到冲突单元所在链表的尾部。开放寻址法当哈希冲突发...

0
评论
144
浏览

Go map如何查找?

Go 语言中读取 map 有两种语法:带 comma 和 不带 comma。当要查询的 key 不在 map 里,带 comma 的用法会返回一个 boo...

0
评论
141
浏览

Go map为什么是非线程安全的?

map默认是并发不安全的,同时对map进行并发读写时,程序会panic,原因如下:Go 官方在经过了长时间的讨论后,认为 Go map 更应适配典型使用场...

0
评论
122
浏览

Go map遍历为什么是无序的?

使用 range 多次遍历 map 时输出的 key 和 value 的顺序可能不同。这是 Go 语言的设计者们有意为之,旨在提示开发者们,Go 底层实现...

0
评论
152
浏览

Go map的底层实现原理

Go中的map是一个指针,占用8个字节,指向hmap结构体源码包中src/runtime/map.go定义了hmap的数据结构:hmap包含若干个结构为b...

0
评论
173
浏览

Go slice为什么不是线程安全的?

先看下线程安全的定义:多个线程访问同一个对象时,调用这个对象的行为都可以获得正确的结果,那么这个对象就是线程安全的。若有多个线程同时执行写操作,一般都需要...

0
评论
144
浏览

Go slice扩容机制?

扩容会发生在slice append的时候,当slice的cap不足以容纳新元素,就会进行扩容,扩容规则如下如果新申请容量比两倍原有容量大,那么扩容后容量...

0
评论
124
浏览

Go slice深拷贝和浅拷贝

深拷贝:拷贝的是数据本身,创造一个新对象,新创建的对象与原对象不共享内存,新创建的对象在内存中开辟一个新的内存地址,新对象值修改时不会影响原对象值实现深拷...

0
评论
148
浏览

Go array和slice的区别?

1)数组长度不同数组初始化必须指定长度,并且长度就是固定的切片的长度是不固定的,可以追加元素,在追加时可能使切片的容量增大2)函数传参不同数组是值类型,将...

0
评论
135
浏览

Go slice的底层实现原理

切片是基于数组实现的,它的底层是数组,可以理解为对 底层数组的抽象。源码包中src/runtime/slice.go 定义了slice的数据结构:type...

0
评论
149
浏览

Go内置函数make和new的区别?

首先纠正下make和new是内置函数,不是关键字变量初始化,一般包括2步,变量声明 + 变量内存分配,var关键字就是用来声明变量的,new和make函数...

0
评论
108
浏览

Go defer关键字的实现原理?

定义:defer 能够让我们推迟执行某些函数调用,推迟到当前函数返回前才实际执行。defer与panic和recover结合,形成了Go语言风格的异常与捕...

0
评论
122
浏览

Go函数参数传递到底是值传递还是引用传递?

先说下结论:Go语言中所有的传参都是值传递(传值),都是一个副本,一个拷贝。参数如果是非引用类型(int、string、struct等这些),这样就在函数...

0
评论
147
浏览

Go函数返回局部变量的指针是否安全?

一般来说,局部变量会在函数返回后被销毁,因此被返回的引用就成为了"无所指"的引用,程序会进入未知状态。但这在 Go 中是安全的,Go 编译器将会对每个局部...

0
评论
109
浏览

Go方法值接收者和指针接收者的区别?

如果方法的接收者是指针类型,无论调用者是对象还是对象指针,修改的都是对象本身,会影响调用者;如果方法的接收者是值类型,无论调用者是对象还是对象指针,修改的...

0
评论
155
浏览

Go方法与函数的区别?

在Go语言中,函数和方法不太一样,有明确的概念区分。其他语言中,比如Java,一般来说函数就是方法,方法就是函数;但是在Go语言中,函数是指不属于任何结构...

0
评论
117
浏览

Go有哪些数据类型?

0
评论
142
浏览

Go有哪些关键字?

0
评论
143
浏览

Go程序的基本结构?

0
评论
142
浏览

GC 如何调优

通过 go tool pprof 和 go tool trace 等工具 控制内存分配的速度,限制 Goroutine 的数量,从而提高赋值器对 CPU ...

0
评论
149
浏览

Go 语言中 GC 的流程是什么?

Go1.14 版本以 STW 为界限,可以将 GC 划分为五个阶段:GCMark 标记准备阶段,为并发标记做准备工作,启动写屏障 STWGCMark 扫描...

0
评论
138
浏览

Go channel有无缓冲的区别?

无缓冲:一个送信人去你家送信,你不在家他不走,你一定要接下信,他才会走。 有缓冲:一个送信人去你家送信,扔到你家的信箱转身就走,除非你的信箱满了,他必须等...

0
评论
118
浏览

Go 语言内存分配,什么分配在堆上,什么分配在栈上

题目来源:知乎答案:自由Go 语言有两部分内存空间:栈内存和堆内存。栈内存由编译器自动分配和释放,函数调用的参数、返回值以及局部变量大都会被分配到栈上。堆...

0
评论
103
浏览

简单介绍一下go的内存分配机制?有mcentral为啥要mcache?

题目来源:知乎答案:树枝1.介绍内存分配机制GO语言内存管理子系统主要由两部分组成:内存分配器和垃圾回收器(gc)。内存分配器主要解决小对象的分配管理和多...

0
评论
119
浏览

runtime

题目来源:一点资讯答案:树枝1.理解goruntimegolang 的 runtime 在 golang 中的地位类似于 Java 的虚拟机,不过 go ...

0
评论
117
浏览

协程怎么停顿?

题目来源:shopee1.使用for-rangefor-range从channel上接收值,直到channel关闭,该结构在Go并发编程中很常用,这对于从...

0
评论
106
浏览

golang: pprof使用

题目来源:腾讯答案:树枝首先都介绍什么是pprofpprof是golang自带的性能分析工具,可以查看应用的运行状态,分析程序CPU,内存,gorouti...

0
评论
178
浏览

性能调优怎么做

题目来源:腾讯答案:树枝1.首先要了解调优的基本思路1.对外接口协议不能改变 2.了解需求和代码演进过程 3.确定资源消耗类型 4.控制运算数据输入量 5...

0
评论
135
浏览

golang调度能不能不要p

题目来源:腾讯答案:树枝1.介绍golang调度器中P是什么?Processor的简称,处理器,上下文。 2.简述p的功能与为什么必须要P它的主要用途就是...

0
评论
113
浏览

借助额外的数据结构比如slice等,对key进行排序,遍历slice得到顺序输出

题目来源:BIGO答案:树枝1.解题思路我们现在有一个“有序的切片”根据这个切片将map有序输出2.这里写的是一个模板,根据具体的slice与map来写出...

0
评论
94
浏览

实现chan struct{}不占用内存空间,实现传递信号的通道

题目来源:BIGO答案:树枝// 空结构体的宽度是0,占用了0字节的内存空间。 // 所以空结构体组成的组合数据类型也不会占用内存空间。 channel ...

0
评论
113
浏览

如何排查线上程序问题

题目来源:字节跳动答案:树枝线上问题排查思路(如忽然访问变慢)链路追踪(zipkin skywalking等),确认问题在哪条链路上(是否是因为调用别人的...

0
评论
85
浏览

go语言中结构体指针为空,赋给一个interface{}为什么

题目来源:字节跳动答案:树枝1.空结构体有以下几大特点不占用内存地址。地址不变2. 空接口的内部实现保存了对象的类型和指针

0
评论
88
浏览

defer问题

题目序号:(5296)题目来源:富途证券频次:1答案1:(Kjj)defer数据结构:type _defer struct { sp u...

0
评论
107
浏览

你能介绍一下go的包管理工具吗?除了gomod还知道哪些?

题目序号:(5327)题目来源:美团频次:1答案1:(Kjj)1、GOPATH对于外部依赖的管理,在go 1.5之前go没有像java使用maven来管理...

0
评论
132
浏览

go的map的底层数据结构,查询复杂度

题目序号:(5328)题目来源:金山频次:1答案1:(Kjj)map底层数据结构:map底层数据结构前文已经整理过了,这里不做赘述。查询复杂度:空间复杂度...

0
评论
139
浏览

如何实现只开100个协程

题目来源:答案:sunrise// 利用 channel 的缓存区实现 func main() { var wg sync.WaitGroup ...

0
评论
128
浏览

介绍go语言的gmp协程调度模

答案:sunriseG-M-P分别代表:G: Goroutine,Go协程,是参与调度与执行的最小单位M: Machine,指的是系统级线程P: Proc...

0
评论
110
浏览

go的GC和Python的GC

题目序号:(4425) 题目来源:知乎频次: 1答案:ZbbxdPython :引用计数式 GC,每个对象自身包含一个被引用的计数器,当计数器归零时自动得...

0
评论
104
浏览

go的值传递和引用传递

题目序号:(4426,4451) 题目来源:知乎频次: 2答案:Zbbxd值传递只会把参数的值复制⼀份放进对应的函数,两个变量的地址不同,不可相互修改。地...

0
评论
108
浏览

java 实例放在哪个区,常量放在哪个区

题目来源:字节跳动答案:村雨实例放在哪个区不要掉以轻心的一口回答在堆中!!!一般在java程序中,new的对象是分配在堆空间中的,但是实际的情况是,大部分...

0
评论
98
浏览

简单介绍一下go的内存分配机制?有mcentral为啥要mcache?

题目来源:知乎答案:flyGo 的内存分配借鉴了 Google 的 TCMalloc 分配算法,其核心思想是内存池 + 多级对象管理。内存池主要是预先分配...

0
评论
111
浏览

go的反射

题目来源:疯狂猜图答案:flyGo语言中的反射是由 reflect 包提供支持的,它定义了两个重要的类型 Type 和 Value 任意接口值在反射中都可...

0
评论
96
浏览

go性能调优怎么做的?

题目来源:度小满答案:fly内存优化A、将小对象合并成结构体一次分配,减少内存分配次数Go runtime底层采用内存池机制,每个span大小为4k,同时...

0
评论
106
浏览

golang开发用什么框架

题目来源:百度答案:小禾先生golang框架图示Web框架gingin是一个知名且简约的Golang Web应用框架。该框架拥有各种开发所需的库合功能。许...