标签:c data-structures algorithm histogram ip-address
我需要一个简单的类来计算网络监控系统中IP地址的分布(直方图).可能存在1到1010个数据包,其中包含1到232个地址(如果我们有IPv6接口,则更多).我理想的是一个C类,它会自动创建直方图,然后,当达到限制时,开始通过某种前缀路由组合不太流行的节点.
有人知道这样的事情,还是我需要写呢?
谢谢!
解决方法:
您所描述的内容听起来像是Count-Min sketch数据结构的完美用例.该数据结构用于近似来自数据流的各种元素的频率,并且可以被调谐以精确地消耗一定量的存储器.此外,给定固定的内存限制,您可以调整它的准确程度以及与您希望的确切答案的接近程度.我的理解是,谷歌使用这种数据结构来识别频繁的搜索,而不必使用大量的磁盘空间.
另外,数据结构永远不会低估给定值的真实频率.也就是说,如果您想查询您查看给定IP地址的频率,Count-Min草图将始终为您提供一个不小于真实数字的值.
Count-Min草图非常容易实现 – 您只需要一堆不同的哈希函数和一个2D数组.您还可以找到Count-Min草图at Google’s page on the data structure.的各种不同实现
希望这可以帮助!
标签:c,data-structures,algorithm,histogram,ip-address 来源: https://codeday.me/bug/20190729/1569584.html
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。