go必知必会

目录

new和make的区别

go context使用场景

sync.Pool

多图详解Go的sync.Pool源码 - luozhiyun`s Blog

Channel

channel读写问题

sync.WaitGroup

 Defer

panic和recover

map实现

​编辑

sync.map

go数组原理和实现

go切片

go string字符串

mutex互斥锁

读写锁

条件变量 sync.Cond

uinptr和unsafe.Pointer的区别

内存对齐

结构体tag

讲一讲内存逃逸

单核 CPU,开两个 Goroutine,其中一个死循环,会怎么样?

GMP为什么要有P

当go服务部署到线上了,发现有内存泄露,该怎么处理

go什么情况下会GC

sysmon在go中有什么作用

go的GMP

go调度中阻塞都有那些方式,调度器怎么处理

go内存管理

​编辑

go函数调用规则

go 接口 interface

gopark

go struct 能不能比较

主协程如何等其余协程完再操作

http包的内存泄漏

在使用 map 时尽量不要在 big map 中保存指针?为什么

go func() 的创建流程(假设已经初始化了整个进程,在运行时)

go性能调优

init函数的执行顺序

主 Goroutine 的一生

单例模式

 1.常见的 GC 实现方式有哪些?Go 语言的 GC 使用的是什么? #

3.STW是什么意思

4.有了 GC,为什么还会发生内存泄露?

形式1:预期能被快速释放的内存因被根对象引用而没有得到迅速释放 #

形式2:goroutine 泄漏 #

5.什么是写屏障、混合写屏障,如何实现?

6.go的gc执行过程

2.三色标记法

7.根对象是什么

8.触发go gc的时机是什么

9.如果内存分配速度超过了标记清除的速度怎么办? #

10.Go 的垃圾回收器有哪些相关的 API?其作用分别是什么?

11.Go 的 GC 如何调优?



new和make的区别

new是一个分配内存的内置函数,传入参数是类型,不是值,返回的值是指向该类型新分配的零值 的指针,我们平常在使用指针的时候是需要分配内存空间的,未分配内存空间的指针直接使用会使 程序崩溃;

make函数是专门支持 slice 、 map 、 channel 三种数据类型的创建,make内置函数分配并初始 化一个 slice 、 map 、 chan ;类型,使用make初始化切片如果指定长度,会初始化值为零值;

go context使用场景

1.超时控制

2.协程间传递数据

CancelContext,

TimeoutContext,

DeadLineContext,

ValueContext

sync.Pool

多图详解Go的sync.Pool源码 - luozhiyun`s Blog<

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小卒曹阿瞒

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值