语言
go性能调优
pprof使用,性能调优、内存泄露查看
go中sync.map底层
golang的内存分配机制
golang的context包
锁、mutex实现、原子类
string类型转为[]byte过程 :https://zhuanlan.zhihu.com/p/270626496
redis
redis的zset应用场景、底层实现
sql
go sql防止注入:
- 所有的查询语句建议使用数据库提供的参数化查询接口,参数化的语句使用参数而不是将用户输入变量嵌入到SQL语句中,即不要直接拼接SQL语句。例如使用database/sql里面的查询函数Prepare和Query,或者Exec(query string, args …interface{})。
- 严格限制Web应用的数据库的操作权限,给此用户提供仅仅能够满足其工作的最低权限,从而最大限度的减少注入攻击对数据库的危害。
- 检查输入的数据是否具有所期望的数据格式,严格限制变量的类型,例如使用regexp包进行一些匹配处理,或者使用strconv包对字符串转化成其他基本类型的数据进行判断。
- 对进入数据库的特殊字符(’"\尖括号&*;等)进行转义处理,或编码转换。Go 的text/template包里面的HTMLEscapeString函数可以对字符串进行转义处理。
- 在应用发布之前建议使用专业的SQL注入检测工具进行检测,以及时修补被发现的SQL注入漏洞。网上有很多这方面的开源工具,例如sqlmap、SQLninja等。
- 避免网站打印出SQL错误信息,比如类型错误、字段不匹配等,把代码里的SQL语句暴露出来,以防止攻击者利用这些错误信息进行SQL注入。
sql练习
操作系统
mmap操作原理 :
直接io与mmap区别
epoll:
网络
tcp的粘包问题
四次挥手为什么
分布式系统设计
分布式系统一致性保证:
https://www.cnblogs.com/soundcode/p/5590710.html
etcd的raft算法:
https://blog.csdn.net/daaikuaichuan/article/details/98627822
https://zhuanlan.zhihu.com/p/32052223
负载均衡的算法
etcd和zk的区别
秒杀、抽奖、推荐 系统设计
算法应用
。。。