Note:目录同级为 代码展示,可在Goland中运行
- 1 os操作系统模块
- 1.1 os中FileInfo底层的文件描述符和相关信息
- 1.2 os文件操作
- 1.3 io包底层Reader和Writer接口
- 1.3.1 os,bytes,strings包
- 1.4 io断点续传
- 1.5 FilePath包
- 2 bufio缓存读写
- 1 线程模型分类及Goroutine切换原则(GPM模型)
- 2 runtime模块和GC
- 3 多goroutine的缓存一致性(涉及cpu伪共享)
- 4 线程池(池化技术)
- 5 channel导致goroutine泄漏分析及处理
- 1 值传递-数组
- 2 引用传递-指针切片和指针数组
- 3 切片和数组参数传递性能对比
- 4 底层数据结构
- 5 nil切片和空切片
- 6 扩容策略
- 7 不同类型的切片间互转
- 8 带索引初始化数组和切片
- 9 使用copy替代原切片进行切片
- 1 指针类型转换及修改值
- 2 指针分类及unsafe包使用
- 指针修改结构体成员
- 指针获取切片长度和容量
- 指针获取Map的元素数量
- 3 获取并修改结构体私有变量值
- 4 切片与字符串零拷贝互转(指针和反射方式)
- 5 结构体的内存对齐
- 1 创建型模式
- 2 结构型模式
- 3 行为型模式
- 4 函数选项:成例模式-->在日志库zap中实现
- 4.1 未使用函数选项初始化结构体的现状
- 4.2 区分必填项和选项
- 4.3 带参数的选项模式
- 5 插件式编程-->grpc中实现
- 6 同步模式(sync同步原语以及扩展原语)
- 6.1 waitGroup同步等待组对象
- 6.2 使用互斥锁(sync.Mutex)实现读写功能和直接使用读写锁(sync.RWMutex)性能对比
- 6.3 Once源码分析
- 6.4 并发安全的sync.Map与sync.RWMutex封装的map对比及源码分析
- 6.5 Pool对象池模式( 非连接池 !)-->官方包对象池fmt
- 6.6 Cond条件变量通知所有协程及NoCopy机制-->熔断框架hystrix-go实现
- 6.7 atomic原子操作源码分析-->zerolog源码中实现
- 6.8 ErrorGroup获取协程中error
- 6.9 信号量Semaphore
- 6.10 SingleFlight避免缓存击穿
- 1 函数
- 2 高级函数filter,map,reduce
- 2.1 简单实现filter,map,reduce
- 2.2 简单案例
- 2.3 复杂实现:泛型及类型检查
- 2.4 一个应用依托于很多服务,在没有强依赖关系下,优雅地实现并发编排任务
- 3 一等公民案例
- 网络管理中问题需求
- 网络管理中三种处理对比
- 3.1 通过同享内存通信
- 3.2 通过通信(具体数据)共享内存
- 3.3 通过通信(函数)共享内存
-
1 http服务端高级封装演变
Note:内部运行代码待优化
- 1 Go调用自定义C函数-未模块化
- 2 Go调用自定义C函数-模块化
- 3 Go重写C定义函数
- 4 cgo引入其他包的变量错误
- 5 #Cgo语句
- 6 Go获取C函数的errno
- 7 C的void返回
- 8 Go调用模块化C++库
- 9 调用静态C库
- 10 调用动态C库
- 11 Golang使用pkg-config自动获取头文件和链接库的方法
- 1 queue双端单向队列(泛型)
- 2 加解密
- 2.1 对称式加密
- 2.2 数字签名(hmac,md5,sha1,sha256)
- 2.3 非对称加密算法rsa
- 3 随机算法(伪随机和真随机)
- 4 排序算法分类及图解(sort包源码分析)
- 5 Jwt源码分析及中间件使用
- 6 Privacy Enhanced Mail Certificate (pem文件)生成
- 7 Base64编码解析
- 8 trie前缀树
- 0 错误(err)和异常(exception)区别及处理方式
- 1 自定义错误类型打印错误栈
- 2 扩展包pkg.errors
- 3 Gin的错误recover分析(panic和recover源码分析)
- 4 errCode错误码自动化生成
- 5 error如何正确比较
- 6 收集多个errors-->go-multierror实现
- 1 不同类型为nil时的地址和size大小
- 2 不同类型与nil的比较
- 3 不同类型nil时的特点