请教一个算法的实现.

问题描述

源数据(无限大,内存装不下):#来源IP.端口,目标IP.端口,字节大小111.195.4.251.4000,111.161.52.199.8000,839111.195.4.251.4000,111.161.52.199.8000,823111.161.52.199.8000,111.195.4.251.4000,431111.161.52.199.8000,111.195.4.251.4000,167......需求:求TOP10,相同来源IP+目标IP的字节和,并按字节大小排序如上面的输出为:111.195.4.251.4000,111.161.52.199.8000,1662111.161.52.199.8000,111.195.4.251.4000,598...请教大家,改怎么设计数据结构?求大神给个思路.用java实现.

解决方案

解决方案二:
”来源IP.端口,目标IP.端口,“不知道你这种形式的数据是不是连续存储在文件中的。如果出现下面这样的情况,暂时还没想到解决办法。如果来源IP.端口,目标IP.端口,是以连续的方式存在文件中。那就建立一个10元素的最小堆。111.195.4.251.4000,111.161.52.199.8000,839111.161.52.199.8000,111.195.4.251.4000,431111.195.4.251.4000,111.161.52.199.8000,823
解决方案三:
引用1楼mxway的回复:

”来源IP.端口,目标IP.端口,“不知道你这种形式的数据是不是连续存储在文件中的。如果出现下面这样的情况,暂时还没想到解决办法。如果来源IP.端口,目标IP.端口,是以连续的方式存在文件中。那就建立一个10元素的最小堆。111.195.4.251.4000,111.161.52.199.8000,839111.161.52.199.8000,111.195.4.251.4000,431111.195.4.251.4000,111.161.52.199.8000,823

这个源内容是tcpdum-nfOqt出来的数据.
解决方案四:
现在的需求是,给你100M的数据,然后找出TOP10.
解决方案五:
引用2楼alexaswx的回复:

Quote: 引用1楼mxway的回复:
”来源IP.端口,目标IP.端口,“不知道你这种形式的数据是不是连续存储在文件中的。如果出现下面这样的情况,暂时还没想到解决办法。如果来源IP.端口,目标IP.端口,是以连续的方式存在文件中。那就建立一个10元素的最小堆。111.195.4.251.4000,111.161.52.199.8000,839111.161.52.199.8000,111.195.4.251.4000,431111.195.4.251.4000,111.161.52.199.8000,823

这个源内容是tcpdum-nfOqt出来的数据.

100M的内存不算大。怎么说内存装不下呢。先使用hashmap或treemap将数据统计好,然后再使用最小堆。
解决方案六:
引用4楼mxway的回复:

Quote: 引用2楼alexaswx的回复:
Quote: 引用1楼mxway的回复:
”来源IP.端口,目标IP.端口,“不知道你这种形式的数据是不是连续存储在文件中的。如果出现下面这样的情况,暂时还没想到解决办法。如果来源IP.端口,目标IP.端口,是以连续的方式存在文件中。那就建立一个10元素的最小堆。111.195.4.251.4000,111.161.52.199.8000,839111.161.52.199.8000,111.195.4.251.4000,431111.195.4.251.4000,111.161.52.199.8000,823

这个源内容是tcpdum-nfOqt出来的数据.

100M的内存不算大。怎么说内存装不下呢。先使用hashmap或treemap将数据统计好,然后再使用最小堆。

数据大小不是固定的,比如他们网络流量比较的时候,每秒就100M.所以我还是想考虑源数据在无限大的情况下实现.
解决方案七:
现在应该没有任何一个计算机可以处理无限大的数据吧
解决方案八:
引用6楼mxway的回复:

现在应该没有任何一个计算机可以处理无限大的数据吧

看来需要大数据处理
解决方案九:
既然是动态产生,那你就通过管道流随时处理,设定一个时间段内的前十,最后再对一个大时间段内的多个前十整体排序,提取前十。
解决方案十:
引用8楼skyhitnow的回复:

既然是动态产生,那你就通过管道流随时处理,设定一个时间段内的前十,最后再对一个大时间段内的多个前十整体排序,提取前十。

用storm处理了.
解决方案十一:
只能分段进行计算了

时间: 2024-10-18 05:58:20

请教一个算法的实现.的相关文章

一个算法的实现

某同学帮国外某MM做的题. 算法描述: 首先将两个字符串和一个临界值作为参数传入函数,比如"aaaaaaaaaa","bbaaababaa",2,然后在函数中依次比较两个字符串的每个字符,当不同的字符数超过指定的临界值后,继续比较,并将大于等于临界值且最大数目的第一个字符串中的相同字符转换为大写,比如,根据以上输入,那么输出为:aaAAAaaaAA.要求:只能用if,else,递归及字符串处理的相关函数. 欢迎各种拍砖. //Code By Pnig0s1992 /

求助!!聚类算法的实现与分析

问题描述 求助!!聚类算法的实现与分析 请问拿成绩作为分析对象,用分级聚类算法怎么实现,请教下主要的思路.希望能给个具体点的实例,谢谢! 解决方案 一个K-means聚类算法的实现代码和分析

聚类算法的实现与分析

问题描述 聚类算法的实现与分析 请问拿成绩作为分析对象,用分级聚类算法怎么实现,请教下主要的思路.希望能给个具体点的实例,谢谢!!!!!! 解决方案 一个K-means聚类算法的实现代码和分析 解决方案二: 觉得这个问题不错,我也遇到这样的问题

C++火车入轨算法的实现代码

 这篇文章主要介绍了C++火车入轨算法的实现代码,有需要的朋友可以参考一下 [问题描述]   某城市有一个火车站,铁轨铺设如图所示.有n节车厢从A方向驶入车站,按进站顺序编号为1~n.你的任务是让它们按照某种特定的顺序进入B方向的铁轨并驶出车站.为了重组车厢,你可以借助中转站C.这是一个可以停放任意多节车厢的车站,但由于末端封顶,驶入C的车厢必须按照相反的顺序驶出.对于每个车厢,一旦从A移入C,就不能再回到A了:一旦从C移入B,就不能回到C了.换句话说,在任意时刻,只有两种选择:A→C和C→B.

java-小弟想请教一个问题.对于大神们来说很简单

问题描述 小弟想请教一个问题.对于大神们来说很简单 小弟的这个程序很简单 但是对于小弟来说实在是太难了 本来前面的已经实现了,但是算总分的时候第二个人的成绩总是要和第一个成绩相加,这是程序这是运行后的结果就想问问大神怎么做把两个人的总分成绩分开 求大神帮帮忙哈 解决方案 zhongfen[i]=bianliang; 下一行加上 bianliang=0; 解决方案二: 变量 bianliang 在每次输入学生姓名是清零.

vc++-请教一个VC++找图的问题

问题描述 请教一个VC++找图的问题 请问下,VC++能找图吗?就是先给定一个图片,然后在指定的地方找这个图片,就像按键 精灵那样一样的. 解决方案 可以,但是算法要自己写,没有现成的函数可以调用 解决方案二: 屏幕截图,然后比较每个像素啊,写一个图片比较的算法,笨点的算法大致思路是,获取被找图第一行像素,然后在屏幕截图上依次比较,找到后是第二行,第三行,,,图形处理可以用第三方图形库,或者用微软在Windows中自带的GDI/GDI+(图形设备接口) 解决方案三: 图片相似度比较,有很多图像处

排序算法的实现及性能分析

排序算法的实现及性能分析 --(java版) 排序是对数据元素序列建立某种有序排列的过程.更确切的说,排序是把一个数据元素序列整理成按关键字递增(或递减)排列的过程. 不过首先,我们必须先解释一下关键字这个词.关键字是要排序的数据元素集合中的一个域,排序是以关键字为基准进行的.而关键字也分为主关键字和次关键字.对于要排序的数据元素集合来说,如果关键字满足数据元素值不同时,该关键字也不同,这样的关键字称为主关键字.不满足主关键字定义的就称为次关键字. 简单来说,排序分为内部排序和外部排序两种.内部

c-循环冗余校验(CRC)算法的实现

问题描述 循环冗余校验(CRC)算法的实现 循环冗余校验(CRC)算法的实现 1.设计要求 (1)利用结构体或数组模拟网络数据包结构. (2)编码实现CRC算法,并将得到的校验位附加到网络数据包相应的位置. (3)根据数据包的长度,随机生成一个数据包产生突变的位置,并对该位置的bit位模拟突变的产生. (4)重新利用CRC算法校验该数据包,并指出产生的结果. (5)CRC能够检出所有的错误吗?如果不能,你能构造出无法检错的实例吗? 2.课程设计报告内容 (1) 给出程序的流程图: (2) 给出程

请教一个DISKPART硬盘分区命令的问题

问题描述 请教一个DISKPART硬盘分区命令的问题 请问下最后面的这个偏移量为什么差这么多,第一分区才1024K后面的都几十G,请问这都是怎么算出来的呀?有什么用呀? 解决方案 偏移量=这个分区之前所有分区容量的总和. 比如最后一个361GB=78GB+126GB+156GB 解决方案二: 偏移量就是相比较磁盘起始地址的差.