多维索引容器(multi_index_container)的使用

C++ STL库为我们提供了vector/list/queue/(unordered)set/(unordered)map等各类容器,这些容器各自有各自的特点。有的提供链表类型的连续访问(vector/list/queue),有的提供平衡二叉树的数据组织结构(set/map),有的提供基于Hash的随即定位访问(unordered_set/unordered_map)。但有些时候,单一类型的访问并无法满足我们的需求,例如,有这样一个需求,需要我们实现一个LRU Cache。LRU的意思是:Least Recently Used,即最近最久未被使用的意思。LRU Cache的意思是:如果一个数据在最近一段时间没有被访问到,那么在将来它被访问的可能性也很小,基于这个原则,我们希望该类Cache的空间已经存满数据时,应当把最久没有被访问到的数据淘汰。

Golang程序调试工具介绍(gdb vs dlv)

通过log库输出日志,我们可以对程序进行异常分析和问题追踪。但有时候,我也希望能有更直接的程序跟踪及定位工具能够帮助我们更方便快捷的追踪、定位问题,最直观的感觉还是使用调试器。Linux平台下,原生的C/C++程序,我们往往使用gdb进行程序调试,切换到Golang,我们同样还是可以使用gdb进行调试。同时我们还可以使用golang实现的调试器dlv进行调试。以下内容是我对gdb以及dlv使用及对比总结

|