比如,当我们查看一个网络数据包(或者网络会话)的时候,可以用一个五元组来标识它:srcIP,srcPort,dstIP,dstPort,TCP/UDP。那么如果要用一个hash表来保存这个会话的信息的话,key应该是怎样的?
目前我采用的是string来做key,将五元组转化为一个"srcIP_srcPort_dstIP_dstPort_TCP/UDP"字符串。但是我觉得这样子效率应该不好,一是每次在字符串和五元组之间转换效率不高;二是利用这个key来查表的效率不高。可否用一个struct来做key呢?hash函数又该如何设计?
可以定义一个类型,里面包括这几个字段,类可以作为key
你的方法本身跟类其实差不多,直接字符串来做hash。效率不高指的什么。
一开始用了一个类似srcip^123^dspip^456.....的一个超级复杂的算法,最后发现还不如srcip+srcport+dstip+dstport+protocol来的好。想多了。。。