Golang技术栈归结
2023 ***
golang中使用原子操作监听配置更新 atomic.Value的用法 / sync.Cond等待通知 / 加载json文件 / 获取文件hash值
压测合集 wrk/sysbench/ghz
kratos项目中使用gorm的Transaction的方法介绍 事务开始时使用tx / 使用依赖注入初始化Transaction / 使用ctx传递tx
kratos项目集成kafka介绍 还有将yaml配置文件加载到biz层使用的方法
kratos项目使用中间件Middleware介绍 注意server/http.go中httpServer除了中间件的各种配置项(还有CORS配置、封装响应体结构) / 在ctx中传递uid /
kratos项目使用错误码介绍 注意server/http.go中封装的响应结构的写法
Kratos项目中使用dtm分布式事务 app_server有使用etcd注册与发现服务&pkg包使用gconv包转换结构体及结构体切片 /
2022 ***
Golang中使用HTTP连接池及实际案例 *** netstat命令
xorm+postgreSQL实现事物与in查询 *** xorm事物/xorm拼接in操作/insert遇到主键冲突 on conflict do nothing或update
golang生成随机字符串 ***2种方法/还有性能测试的代码
Golang中slice操作的一些问题 *** slice引用类型的特殊问题
Golang获取随机float64(正数)数据与随机int数据(可以是负数) *** decimal包的使用
Golang处理小数四舍五入与不进行四舍五入的用法 *** decimal包的使用
gorm更新数据遇到的空值问题 *** gorm使用map修改空值/structs包结构体转map/validator包校验结构体
使用channel控制并发数以及超时的写法 ***还有超时的写法
sync.Once的基本使用以及拓展 单例模式/带返回错误/查询是否初始化过
golang实现等待通知机制的方法 sync.Cond / sync.Waitgroup / channel实现
golang中goroutine泄漏的问题以及解决方案 goroutine泄漏/退出协裎
2021 ***
使用go-retryablehttp包实现http“链接池”效果 还有waitGroup控制并发请求的写法/加锁保证并发安全
Go struct类型的map结构体成员不能修改的问题 ***
使用mysqldump同步两台服务器中不同数据库相同表结构的表 shell脚本手动同步MySQL
Golang中使用recover捕获panic的操作及遇到的一个坑
项目中使用进程内缓存的一些经验及注意事项 *** 进程缓存使用及注意事项
postgreSQL数据备份与迁移的完美实践 *** pgdump/pgrestore
MySQL与postgreSQL在left join查询时的区别
使用waitgroup在循环中开Goroutine处理并发任务 **
MySQL与PostgreSQL中解决插入主键冲突的问题 *** on conflict do / ON DUPLICATE KEY
Golang结构体与JSON相互转换时的小技巧 结构体标签中将float64数据类型解析为string
Golang结构体序列化与反序列化时初始值的问题 *** omitempty标签/
Redis内存使用率增长的一些解决思路 ******
Python VS Golang
浅谈Python与Golang中的“惰性求值” *** 闭包与goroutine的惰性求值/waitGroup的写法/惰性查询/惰性计算
Python与Golang中给列表中字典按照某个key排序的实现以及Go中给切片中的结构体排序 ***给列表中的 字典/结构体 按照key排序
在Golang中实现与Python装饰器类似功能的方法 ***Go中实现类似Python装饰器的效果
Python与Golang中“类的归一化设计”实现与对比 ***
Golang中实现Python里面in操作的方法 ***第三方实现的一个hashset包
封装方法
go语言结构体转map的方法 ***
Golang中map转结构体的不同方法 *** 注意带下划线字段的处理
golang基础数据类型转换小结 (int/float/string/byte相互转换)*****
golang时间与时区相关操作总结(时间时区操作)*****
各种结构相互转换 (相对较乱,后面再拆分总结)
go操作Redis封装的方法 ***暂时只有list相关的方法/返回interface保证结构体必须实现某些方法
使用golang实现的一个LRU缓存模块 *没有redis的话可以使用这个低级的缓存/加锁保证并发安全
常用操作
go常用操作 ***一些操作小技巧
Golang序列化与反序列化操作总结及一些实践经验 *** JSON序列化与反序列化
零碎杂谈
Golang函数或方法传递nil值的一个坑 ***type不一样的nil的坑/完整的http请求/支持GET与POST请求/POST参数的构建
实践指南
使用Go处理SDK返回的嵌套层级数据并将所需字段存入数据库(一)
使用Go解析HTTP返回数据为struct并存入数据库的操作 *** HTTP数据转json/json转结构体/结构体数据写入数据库/GORM查询单个及多条数据/时间字符串转时间戳
利用递归的方式获取restful风格有nextUrl接口返回的数据
使用go的http获取三方API的数据 *请求数据并将结果解析为map/string(有bug,后面加上使用连接池以及完善有err返回的写法)
doris中的临时分区以及golang删除doris临时分区的操作
使用Go解压文件总结
使用Go处理HTTP压缩文件数据总结 *** 解压的2种思路/自定义错误/http连接池/判断文件夹存在
学习记录
gin框架学习
官方文档中的许多实例
https://gin-gonic.com/zh-cn/docs/examples/ ***
个人笔记
gin框架入门练习笔记 * 获取参数/重定向/路由/中间件/运行服务等
gin项目的路由拆分与注册 *(实际项目大概结构)