golang 知识全解
2024-04-11 11:11:52 2 举报
使用
AI智能生成
go体系视图,欢迎补充
作者其他创作
大纲/内容
GMP模型
协程goruntine
并发控制
管道
waitGroup
context
接口
DeadLine()
Done()
Err()
Value()
空context
CancelContext
DeadLineContext
TimeOutContext
ValueContext
sync
sync
Mutex
RWMutex
WaitGroup
cond
Once
Cond
Signal()
Wait()
Broadcast()
Once
OnceFunc()
OnceValue()
OnceValues()
原子操作
锁
RWMutex
Mutex
内存分布
state int32
Locked
是否被锁定
Woken
是否有协程已经被唤醒
Starving
饥饿
Waiter
用来计数
sema uint32
自旋
条件
自旋次数要足够少,通常为4,即最多四次
cpu核数量大于1
p > 1
协程调动中的可运行队列为空
模式
Normal 模式
Starving 模式
协程调度 runtime
线程模型
N:1模型
1:1模型
M:N模型
GMP
调度策略
队列轮转
系统调用
工作量窃取
抢占式调度
内存管理
理解
垃圾回收(GC)
策略
标记清除法
三色标记法
写屏障技术
混合写屏障
阶段
内存逃逸
栈空间不足
返回指针
interface
闭包
指针
反射
反射
反射可以将interface类型转为反射对象
反射可以将反射对象还原成interface对象
反射对象可以修改value值,前提是必须是可寻址的。可以用.elemn()寻址
如何获取一个结构体的所有tag?
管道
阻塞条件
ok代表了什么
select 和 for..range
切片
定义数组、切片
数组和切片的区别
切片扩容
append的本质
切片表达式
异常处理
error
基础error
链式error
fmt.ErrorPrint(%w,error)
errors.Unwrap()
errors.Ls()
errors.As()
defer
延迟函数的参数在defer语句出现时就已经确定了
延迟函数按后进先出的顺序执行
延迟函数可能操作主函数的具名返回值
panic
recover
字符串
字符串拼接
如何高效地拼接字符串
fmt.Sprintf()
+
strings.Buffer()
strings.Builder()
strings.join()
接口
细节
0 条评论
下一页