不会飞的章鱼

熟能生巧,勤能补拙;念念不忘,必有回响。

Go高级工程师_作业3_封装⼀个数据结构MyMap,实现它所需要的API

作业

  • 必做:封装⼀个数据结构 MyMap,实现并发安全的Load,Store,Delete,LoadAndDelete,LoadOrStore⼏个API(禁⽌使⽤ sync.Map),不⽤考虑性能
  • 选做:编写 benchmark,⽐较 MyMap 与 sync.Map 的同名函数性能差异,输出相应的性能报告(注意,你应该使⽤ RunParallel),将性能⽐较结果输出为 markdown ⽂件
  • 选做:使⽤ channel 实现⼀个 trylock,模板 trylock.go
  • 选做:修复 deadlock.go 的死锁
  • 选做:在 context 学习过程中,我们知道,在⼦节点中 WithValue 的数据,⽗节点是查不到的。请实现⼀个 MyContext,其 WithValue ⽅法赋值的 k,v 在⽗节点中也可以查得到。模板:mycontext.go
  • 选做难度++:实现,或封装社区的 timewheel,使⽤ benchmark 或 pprof ⽐较⼤量 timer 存活时,内置 timer 和 timewheel 的性能差异。不要求提交代码,只需要性能对⽐报告 markdown。
------ 本文结束------
如果本篇文章对你有帮助,可以给作者加个鸡腿~(*^__^*),感谢鼓励与支持!