Go
2023-05-03 22:32:25 0 举报
AI智能生成
Go 语言知识点总结。
作者其他创作
大纲/内容
并发编程
协程(Goroutine)
状态协程
何时委托?
由调用者控制并发
同步调用
异步调用
回调函数
生命周期管理
通道(Channel)
数据传递
管理应用生命周期
多通道选择
基本规则
等待组(WaitGroup)
实现细节
Add 和 Done
Wait
使用须知
锁(Lock)
互斥锁(Mutex)
race detector
实现细节
申请者释放
非公平竞争
自旋锁
避免饥饿
使用须知
扩展功能
TryLock
获取 Waiter 数量等指标
线程安全队列
读写锁(RWMutex)
应用实例
实现细节
RLock 和 RUnlock
Lock
Unlock
使用须知
条件(Cond)
实现细节
扩展功能
阻塞队列
单例(Once)
实现细节
使用须知
对象池(Pool)
实现细节
Get
Put
使用须知
内存泄漏
内存浪费
Work Pool
上下文(Context)
实现细节
WithValue
WithCancel
WithTimeout
WithDeadline
管理 Goroutine 生命周期
使用须知
参数传递
级联取消
超时调用
作用域
原子操作(Atomic)
基本使用
Add
CAS
Load 和 Store
Value
底层原理
撕裂写
内存屏障
功能扩展
无锁队列
使用须知
信号量(Semaphore)
P/V 操作
标准库实现
Acquire 和 Release
Channel 实现
功能扩展
Worker Pool
使用须知
并发设计模式
顺序执行
单例模式
对象池
对象缓存
限流器
通道
互斥锁
单向通道
异步任务
周期任务
取消任务
定时任务
流式管道
Fan In / Fan Out
All Done
Or Done
流水线模式
Map Reduce
信号通知
内存模型
先行发生规则
初始化零值
写入大于单机机器字的变量
同步场景
初始化
Goroutine 创建
Goroutine 销毁
Channel 通信
Channel 关闭
缓冲 / 无缓冲 Channel
实例
锁
Once
错误的同步
设计模式(WIP)
编码规范(WIP)
性能优化(WIP)
底层原理
编译原理
编译过程
词法分析
语法分析
类型检查
中间代码生成
机器码生成
编译优化
编译流程
逃逸分析
内联优化
静态单赋值
公共子表达式消除
循环不变式外提
尾递归优化
分支预测优化
内存管理
内存分配
堆和栈
初始化
分配器
堆管理
缓存管理
自由列表
活跃对象列表
分配缓存
并发模型
分配算法
内存复制
优化
使用栈分配
使用零拷贝
避免碎片
预分配
内存池
缓存
避免使用无用的缓存
增量预分配
内存释放
手动释放
自动释放
标记 - 清除
堆和栈
标记过程
清除过程
分代收集
写屏障
并发清除
并发标记
标记终止
清除
增量式收集
任务分解
并发标记
增量式清除
调度器
Goroutine
调度模型
非抢占式调度
M 和 G 的关系
P 的作用和状态转换
全局队列和本地队列
手工触发和自动触发
优化与扩展
GOMAXPROCS
抢占调度和时间片
本地队列大小和全局队列大小
自适应和负载均衡
同步与通信
语言特性
数据类型
基本类型
数字类型
整型 (Integer)
有符号与无符号
特殊整形
浮点型 (Floating-point)
运算与精度丢失
复数 (Complex)
布尔型 (Boolean)
字符串 (String)
[]byte
字符 (Rune)
复合类型
数组 (Array)
内存布局
值类型
固定大小
索引访问
切片(Slice)
底层数组
切片结构
切片操作
动态扩容
内存管理
源码实现
结构体(Struct)
内存布局
方法
嵌入
映射 (Map)
哈希表
哈希函数
负载因子
哈希冲突
并发安全
源码实现
引用类型
指针(Pointer)
取地址操作
解引用操作
指针算术
函数参数
通道(Channel)
发送与接收
缓冲与非缓冲
同步原语
源码实现
接口 (Interface)
隐式实现
接口值
底层值为 nil
nil 接口值
空接口
完整性检查
类型断言
类型选择
类型转换
与 Java 对比
表达式和语句
循环
通道选择
延迟执行
分支选择
函数调用
高阶函数
闭包
与 Java 对比
类型系统
错误处理
错误接口
多返回值
错误传播
panic 与 recover
运行时栈管理
异常处理
defer 函数执行
与 Java 对比
泛型
基本使用
泛型类型
泛型函数
约束
使用须知
使用简单泛型类型和约束
使用接口作为约束
适当的命名约定
泛型类型的零值
泛型代码的类型推断
与 Java 对比
反射
类型描述符
接口
应用实例
类型分支
深度比较
Struct Tag
修改变量的值
判断实现接口类型
函数调用
类型转换
万能设值
Unsafe
基本概念
类型转换
原子操作
面向对象
结构体和方法
接口
封装
继承与组合
多态
与 Java 对比
工程化(WIP)
工程构建
工作区
源码文件
包
init
重置包级变量值
实现对包级变量的复杂初始化
实现注册模式
包管理(Deprecated)
标准库
I/O
文本
字符串
时间日期
Epoch
格式化时间
随机
文件嵌入
网络
HTTP Server
HTTP Client
序列化
Struct Tag
Go Module
模式切换
版本机制
引入依赖
升 / 降级依赖的版本
添加主版本号大于 1 的包
升级到不兼容版本
移除依赖
结合 Vendor 使用
测试
单元测试
基准测试
性能分析
第三方工具
工具链
0 条评论
下一页