社区
Java SE
帖子详情
如何用文件做大容量缓冲区,实现同时读写?(类似生产者消费者)
tangwing
2009-12-05 09:38:12
最近做一个网络入侵检测系统,模块间需要传递的数据量很大,我们觉得应当使用文件做为缓冲但需要实现同时的高效读写,还请高人指点下!谢谢了!
...全文
318
14
打赏
收藏
如何用文件做大容量缓冲区,实现同时读写?(类似生产者消费者)
最近做一个网络入侵检测系统,模块间需要传递的数据量很大,我们觉得应当使用文件做为缓冲但需要实现同时的高效读写,还请高人指点下!谢谢了!
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
14 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
tangwing
2009-12-06
打赏
举报
回复
[Quote=引用 12 楼 yidinghe 的回复:]
引用 3 楼 tangwing 的回复:
感谢楼上指点!有些启示!这里再补充一下,数据量非常大,平均大约有每秒200M的样子,所以恐怕不能放内存里。
那就有两个问题:
1、磁盘读写速度能不能满足 200M/s?
2、CPU 能不能处理的过来?
如果其中一个做不到,那就要升级硬件,或者分流到多台机器去处理。
[/Quote]
我也是最近才意识到这个严重的问题,还好不必分析所有数据包,同一连接的数据包只需提取一次特征值即可。现在主要还是处理缓冲的问题。
justinavril
2009-12-05
打赏
举报
回复
[Quote=引用 3 楼 tangwing 的回复:]
感谢楼上指点!有些启示!这里再补充一下,数据量非常大,平均大约有每秒200M的样子,所以恐怕不能放内存里。
[/Quote]
200M/s?嗯...数据量确实挺大!
捏造的信仰
2009-12-05
打赏
举报
回复
[Quote=引用 3 楼 tangwing 的回复:]
感谢楼上指点!有些启示!这里再补充一下,数据量非常大,平均大约有每秒200M的样子,所以恐怕不能放内存里。
[/Quote]
那就有两个问题:
1、磁盘读写速度能不能满足 200M/s?
2、CPU 能不能处理的过来?
如果其中一个做不到,那就要升级硬件,或者分流到多台机器去处理。
tangwing
2009-12-05
打赏
举报
回复
[Quote=引用 10 楼 fengboxjtu556 的回复:]
如果是linux,可以写在内核态,效率很高的。
linux的netfilter机制就可以实现入侵检测。
[/Quote]
对 那个能实现一部分辅助功能不过自然不是很专业。我们把数据全部截获并作出分析,在捕获模块和分析模块的连接处就产生了数据传递缓冲的问题。
fengboxjtu556
2009-12-05
打赏
举报
回复
如果是linux,可以写在内核态,效率很高的。
linux的netfilter机制就可以实现入侵检测。
tangwing
2009-12-05
打赏
举报
回复
呜呜……
tangwing
2009-12-05
打赏
举报
回复
感谢楼上指点!有些启示!这里再补充一下,数据量非常大,平均大约有每秒200M的样子,所以恐怕不能放内存里。
捏造的信仰
2009-12-05
打赏
举报
回复
同时读写的缓冲要不就放在内存,要不就放在不同的文件。可以这样:整个读写包括写线程和读线程,写线程每分钟新建一个文件(如200912050957.buffer.tmp),将缓冲写进去,写完之后将其重命名(如200912050957.buffer);读线程则读取创建最早的已写完的文件(如 .buffer 文件),这样就可以实现用文件作为缓冲。当然还有一些细节比如应用重新启动后如何恢复读写等。
rumlee
2009-12-05
打赏
举报
回复
有开源的缓存,如oscache等。
tangwing
2009-12-05
打赏
举报
回复
晕!又被淹了!不带这么玩儿的,再顶!
tangwing
2009-12-05
打赏
举报
回复
感谢大家!自顶一下
whut0802
2009-12-05
打赏
举报
回复
平均大约有每秒200M的样子,哈哈,大大滴,帮顶下吧
苍蝇①号
2009-12-05
打赏
举报
回复
有多少读友多少写,读写之间有什么关系,每一条记录的大小多少?这写都要考虑的
【Linux线程】Linux多线程实践:深入
生产者消费者
模型
本文是Linux多线程中
生产者消费者
模型的学习指南。介绍了该模型基本概念,它能解耦数据生成与处理、平衡速度差异。还阐述基于BlockingQueue和环形队列的
实现
方式,以及POSIX信号量的使用,帮助读者掌握在Linux多线程环境
实现
高效稳定模型的技巧。
java
实现
生产者消费者
问题(附带源码)
本文详细介绍了使用Java
实现
生产者消费者
问题。先阐述该问题的描述、应用场景及同步通信方式,接着给出项目设计方案,包括共享
缓冲区
、生产者、消费者等模块。随后展示完整代码并进行解读,最后总结项目知识点、解决的问题,还探讨了扩展方向,助于解决并发问题。
【Qt】生产者-消费者模式学习笔记
本文深入讲解Qt下的生产者-消费者模式,涵盖线程安全的数据
缓冲区
设计、QThread与QTimer的正确使用、跨线程通信机制及常见问题解决方案,重点分析互斥锁、条件变量和invokeMethod的应用场景,适合多线程编程学习与实践参考。
生产者-消费者问题
本文深入探讨了
生产者消费者
问题,一种经典的线程同步问题,分析了两种典型模型,并提供了基于互斥锁、条件变量及Posix信号量的代码
实现
案例。
生产消费者模型 &&
读写
者模型
本文详细介绍了生产消费者模型和
读写
者模型。生产消费者模型通过阻塞队列或环形队列解耦生产者和消费者,需考虑线程同步与互斥。
读写
者模型适用于多读少写场景,有读者优先和写者优先策略,还存在写者饥饿问题及相应解决方法。
Java SE
62,621
社区成员
307,251
社区内容
发帖
与我相关
我的任务
Java SE
Java 2 Standard Edition
复制链接
扫一扫
分享
社区描述
Java 2 Standard Edition
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章