~~~[purchase:1000]
https://www.kancloud.cn/xiaohuamao/golang/purchase
~~~
- 序章
- 第一章 准备工作
- 搭建环境
- 第一个应用程序 Hello World
- 语法结构
- 第二章 变量,常量
- 2.1 命令规则
- 2.2 变量
- 2.3 常量
- 2.4 常量计数器 iota
- 2.5 零值为 nil 的有哪些
- 2.6 类型推断的好处
- 2.7 类型别名
- 2.8 Unicode字符编码
- 2.9 int 是32位还是64位
- 2.10 byte and rune
- 第三章 条件语句
- 3.1 判断语句 if
- 3.2 选择语句 switch
- 3.3 循环语句 for
- 3.4 遍历 range
- 3.5 跳转语句 goto, break, continue
- 3.6 for 和 for range 区别
- 3.7 for 和 for range 犯过的错
- 第四章 数组,切片,集合,协程,通道
- 4.1 数组 array
- 4.2 切片 slice
- 4.2.0 切片知识点
- 4.2.1 切片的底层
- 4.2.2 切片扩容
- 4.2.3 切片的使用1
- 4.2.4 切片的使用2
- 4.2.5 切片的使用3
- 4.2.6 切片的使用4
- 4.2.7 切片的copy, append
- 4.2.8 切片数据按某个字段分组
- 4.2.9 字符串和切片的底层
- 4.2.10 我是否可以将 [] T1 转换为 [] T2 如果 T1 和 T2 有相同的基础类型?
- 4.2.11 切片的排序
- 4.2.12 将切片类型声明为指针类型的场景
- 4.2.13 为什么 Go 不支持 []T 转换为 []interface
- 4.3 集合 map
- 4.3.0 map 知识点
- 4.3.1 map的底层
- 4.3.2 map等量扩容
- 4.3.3 map的使用
- 4.3.4 map无序输出和有序输出
- 4.3.5 并发错误 fatal error: concurrent map writes
- 4.3.6 并发安全字典
- 4.4 协程 goroutine
- 4.4.0 进程、线程、协程知识点
- 4.4.1 goroutine的底层
- 4.4.2 并发和并行
- 4.4.3 goroutine的使用
- 4.5 通道 channel
- 4.5.1 channel相关概念
- 4.5.2 select处理channel
- 4.5.3 for range处理channel
- 4.6 make 和 new 的区别
- 4.7 cap 和 len
- 第五章 函数,结构,方法,接口
- 5.1 函数 function
- 5.1.1 简单使用
- 5.1.2 匿名函数
- 5.1.3 闭包函数
- 5.1.4 递归
- 5.1.5 尾递归
- 5.1.6 迭代
- 5.1.7 回调函数
- 5.2 结构体 struct
- 5.2.1 简单使用
- 5.2.2 Json 序列化和反序列化
- 5.2.3 序列化时过滤字段
- 5.2.4 两个内部结构一样名称不同的结构体能否比较
- 5.3 方法 method
- 5.3.1 简单使用
- 5.4 接口 interface
- 5.4.1 简单使用
- 5.5 T 和 *T
- 第六章 延迟,异常,恢复,指针,反射
- 6.1 延迟 defer
- 6.1.1 例子1
- 6.1.2 例子2
- 6.2 异常 panic 和 恢复 recover
- 6.3 defer 和 panic
- 6.4 指针
- 6.4.1 指针1
- 6.4.2 指针2
- 6.4.3 传值 or 传指针 ?
- 6.4.4 使用指针和不使用指针的场景
- 6.5 指针(补充: 可寻址和不可寻址)
- 6.6 反射
- 第七章 练手项目和后续学习
- 7.X 问题经验
- 7.X.0
- go语言
- 其它
- 7.X.4 数据加一
- 7.X.6 字符串UUID作为主键
- 7.Y 项目经验
- 7.Y.1 按天、周、月、年
- 7.1 留言板1
- 7.2 留言板2
- 7.3 后续学习
- 7.4 学习资料
- 7.5 GoFrame框架
- 7.5.1 字段筛选
- 7.5.2 or
- 7.5.3 修改使用的表
- 7.5.4 序列化
- 7.5.5 模糊搜索
- 7.5.6 模型权限设置
- 7.5.7 路由定义
- 7.6 项目问题
- 7.6.2 小程序和公众号
- 7.6.2.1 消息模板
- 7.6.2.2 获取code
- 7.6.2.3 静默登录
- 7.6.3 git
- 7.6.4 sql 操作
- 7.6.4.1 sql数据统计
- 7.6.4.2 in, find_in_set
- 7.6.5 C盘续命
- 7.6.6 文件共享
- 7.6.7 接口文档, mock提供测试数据
- 7.6.8 已读/未读
- 7.6.9 抓包工具
- 第八章 知识点
- 8.0 其它
- 8.2 sync.Pool
- 草稿
- 8.5 内存逃逸分析
- 8.4 Go 是面向对象语言吗?
- 8.3 编译器
- 8.2 内存对齐
- 8.1 垃圾回收
- 8.0 准备工作
- Go 语言
- 其它知识点
- slice 知识点
- channel 知识点
- goroutine 知识点
- 内存逃逸 堆内存 栈内存
- 网络协议
- 三次握手、四次挥手
- http tcp ip sip smpp diameter
- Mysql
- 慢查询处理
- 索引的优化
- 项目经验
- 游戏开发
- 同步方式
- 第九章 工具包
- v3
- common.go
- common_test.go
- customized.go
- customized_test.go
- slice.go
- slice_test.go
- time.go
- time_test.go
- v4
- common.go
- common_test.go
- customized.go
- customized_test.go
- slice.go
- slice_test.go
- time.go
- time_test.go
- 第X章
- X.0 非技术问题
- 0. 问题
- 1. 棋牌游戏
- 1. 牌
- 2. 出牌规则
- 3. 洗牌
- 2. 区块链交易所
- 3. 项目上遇到的问题
- X.1 Golang
- X. Golang 杂项
- 1. make 和 new 的区别
- 2. 数组和切片的区别
- 3. 使用指针的场景
- 1. 使用指针的场景
- 2. 浅拷贝和深拷贝
- 4. 可比较类型 与 可转json 类型
- 5. Go语言的context包
- 6. 进程、线程、协程
- 7. 指针访问成员变量
- 8. 浮点数精度问题
- 2. 堆和栈,内存逃逸,垃圾回收
- 1. 堆和栈
- 2. 内存逃逸
- 3. 垃圾回收
- 4. 废弃
- 10.0.5
- 10.0.11 堆和栈
- 10.0.12 内存逃逸
- 10.0.5.1 内存逃逸例子
- 10.0.5.2 内存逃逸分析
- 3. 接口和结构体
- 1. 接口
- 2. 结构体
- 3. 简单使用
- 4. 工厂模式
- 4.4.0 概念
- 4.4.1 例子一
- 4.4.2 例子二
- 4.4.3 补充
- 5. 结构体比较
- 4. goroutine 和 channel
- 1. GPM 模型
- 2. CSP模型
- 3. channel
- 4. select
- 5. select的作用
- 5. 互斥锁 读写锁 原子锁
- 1. 为什么需要锁
- 2. 互斥锁
- 3. 读写锁
- 4. 原子锁
- 1.9.4.1 互斥锁性能对比
- 1.9.4.2 原子锁性能对比
- 1.9.4.3 互斥锁 or 原子锁?
- 5. 条件锁
- 6. 计数器
- 7. 并发安全字典
- 1.9.7.1 自制并发安全字典
- 1.9.7.2 官方并发安全字典
- 8. 线程安全
- 9. Mysql 行锁
- 6. map
- 1. 代码找错
- 2. map的key可以使哪些值
- 3. map的底层
- 4. 哈希冲突的解决方式
- 1.连地址法(拉链法)
- 2.开放地址法
- 3.再哈希
- 4.概念
- 7. 排序算法
- 练习
- 冒泡排序
- 选择排序
- 插入排序
- 快速排序
- 归并排序
- 堆排序
- 8. 分布式锁
- X.5 Python
- 5.0 安装包失败
- 5.1 框架
- Scrapy
- X.6 PHP
- 6.1 框架
- ThinkPHP- 6
- 6.2 xhprof 性能分析
- X. PHP杂项
- X.7 Rust
- 第Y章
- Y.2 MySQL
- Y2.MySQL杂项
- 废弃文章
- X. Mysql 杂项
- 1. InnoDB引擎 和 MyISAM引擎区别
- 1. 锁
- 1. 悲观锁和乐观锁
- 2. 查询,更新,插入语句
- 3. 什么是死锁
- 4. 怎么处理死锁
- 2. MySQL 隔离级别
- 1. 事务特征
- 2. 隔离级别
- 3. 废弃
- 3. 索引
- 1. 索引类型和方式、聚簇和非聚簇索引(上)
- 2. 索引类型和方式、聚簇和非聚簇索引(下)
- 3. 回表、覆盖索引、最左前缀、联合索引、索引下推、索引合并
- 4. Mysql 优化
- 1.InnoDB引擎 和 MyISAM引擎区别
- 2.千万级表修改表结构
- 1.锁
- 1. 悲观锁和乐观锁
- 2. 什么是死锁
- 3. 怎么处理死锁
- 2. 隔离级别
- 1. 事务特征
- 2. 隔离级别
- 3. 索引
- 1. 索引类型和方式、聚簇和非聚簇索引(上)
- 2. 索引类型和方式、聚簇和非聚簇索引(下)
- 3. 回表、覆盖索引、最左前缀、联合索引、索引下推、索引合并
- 4. sql优化
- 5. 索引的原理
- Y.3 Redis
- Y.3 Redis杂项
- 废弃文章
- X.3 Redis
- X. Redis 杂项
- 1. Redis Hash
- 2. Redis Sort Set
- 3. 缓存雪崩、缓存击穿、缓存穿透
- 4. 怎么获取随机三条数据
- 1. Redis 持久化方式
- 1. 全量模式 RDB 冷备份(内存快照)
- 2. 增量模式 AOF 热备份(文件追加)
- 2. 分布式锁
- 1. 分布式锁
- 2. 使用Lua脚本保证原子性
- 3. 代码实现
- 3. 管道和事务
- 1. Redis 事务和管道
- 2. 监控、事务
- 4. 数据结构
- 4.1 集合/有序集合 缓存分页数据
- 4.2 哈希表 存储对象信息
- 4.3 队列
- 4.3 位图
- 1. 缓存雪崩、缓存击穿、缓存穿透
- 1. Redis 数据结构
- 1. Hash ( 哈希表 存储对象信息)
- 2. Sort Set/Redis Sort Set (集合/有序集合)
- 3. 队列
- 4. 位图
- 5. 获取随机三条数据
- 2. Redis 持久化方式
- 1. 全量模式 RDB 冷备份(内存快照)
- 2.增量模式 AOF 热备份(文件追加)
- 3. 过期key的删除策略、内存淘汰机制
- Y.4 其它技术
- Y.4 其它技术杂项
- 废弃文章
- X.4 其它技术
- X. 其它技术杂项
- 0. 技术评测
- 1. 分页问题(数据重复)
- 2. 时针分针5点25分多少度
- 4.8 如何排查接口问题
- 4.9 微服务
- 4.10 MongoDB
- 4.11 nginx 负载均衡方式
- 1. 加密解密
- 1. 简单了解
- 2. 签名算法例子
- 3. 代码例子1
- 4. 代码例子2
- 3. 限流,熔断,降级
- 1. 熔断配置
- 2. 熔断例子
- 3. 服务降级
- 4. github.com/alibaba/sentinel-golang
- 4. 面向对象和面向过程
- 4.1.4.1 go语言实现-面向对象
- 4.1.4.2 go语言实现-面向过程
- 2. 网络相关
- 1. 网络相关 1-10
- 1. OSI模型
- 2. TCP 与 UDP
- 3. 三次握手四次挥手
- 4. Http 状态码
- 1xx(信息性状态码)
- 101 服务端代码
- 101 客户端代码
- 2xx(成功状态码)
- 3xx(重定向状态码)
- 302 服务端代码
- 302 客户端代码
- 4xx(客户端错误状态码)
- 5xx(服务器错误状态码)
- 如何排查接口问题
- 5. 网络请求和响应过程
- 6. time_wait
- keep-alive
- 7. too many open file
- 8. http 和 rpc 的区别
- 9. I/O多路复用 select和poll
- 2. 网络相关 11-20
- 11. Websocket
- 5. linux 知识
- 5.1 命令
- netstat (用于查看和管理网络连接和路由表)
- ps 用于查看和管理进程
- ab 压测
- nohup 守护进程
- lsof (List Open File 获取被进程打开文件的信息)
- tail 查看日志
- 5.2 各类linux同步机制
- 5.3 Socket 服务端的实现,select 和epoll的区别?
- Y.5 GoFrame
- 第十章 笔记
- 10.1 Mysql
- 10.1.1 索引优化
- 1.定期分析和优化索引
- 2. 覆盖索引
- 3. 组合索引
- 4. 聚簇索引和非聚簇索引
- 10.1.2 索引类型
- 10.1.3 Mysql Sum 精度问题(float, double精度问题)
- 10.1.4 Mysql事务特性和隔离级别
- 10.1.5 查询优化
- 10.2 Golang
- 10.0.3 range 里用协程
- 10.0.4 代码片段
- 片段一
- 片段二
- 片段三
- 10.0.5 字符串拼接
- 10.0.6 遍历切片用下标还是range?
- 10.0.7 切片删除某个元素
- 10.0.8 对channel的理解
- select case channel 顺序是随机的
- 10.0.9 字符串和切片区别
- 技术扩展阅读