当前位置: 首页 > 面试题库 >

基于Java光盘的哈希图

浦修文
2023-03-14
问题内容

我正在使用网络爬虫(请不要建议现有的,这不是一种选择)。我按照预期的方式工作。我唯一的问题是,当前我正在使用一种服务器/客户端模型,其中服务器进行爬网和处理数据,然后将其放置在中央位置。

此位置是从我编写的类创建的对象。在内部,该类维护一个定义为HashMap<String, HashMap<String, String>>

我将数据存储在地图中,使网址成为键(我保持这些网址唯一),而hasmap值存储该网址的相应数据字段,例如标题,值等

我偶尔会序列化所使用的内部对象,但是蜘蛛是多线程的,并且一旦我说有5个线程对内存需求进行爬网,就会成指数增长。

到目前为止,hashhtml" target="_blank">map的性能非常出色,在2.r分钟内以大约30秒的CPU时间抓取了15K
url,因此我真的不需要像大多数论坛用户所建议的那样指向现有蜘蛛的方向。

谁能建议一个可能支持并发读写的基于快速光盘的解决方案?数据结构不必相同,只需要能够将相关的元标记值一起存储等。

提前致谢


问题答案:

我建议为此使用EhCache,即使您要构建的并不是真正的缓存。EhCache允许您配置缓存实例,以使其溢出到磁盘存储中,同时将最新的项目保留在内存中。也可以将其配置为永久磁盘,即在关机时将数据刷新到磁盘,并在启动时将其读回内存。最重要的是,它基于键值,因此已经适合您的模型。它支持并发访问,并且由于磁盘存储是作为单独的线程进行管理的,因此您不必担心磁盘访问的并发性。

另外,您可以考虑使用适当的嵌入式数据库,例如Hypersonic(或许多其他类似风格的数据库),但这可能会需要更多工作。



 类似资料:
  • 创建简单的javafx 11“hello world”应用程序。创建自定义JRE时出错。 错误代码: 操作系统:ubuntu 19.10 $java——版本openjdk 11.0.6 2020-01-14 openjdk运行时环境(构建11.0.6 10-post-Ubuntu-1ubuntu119.10.1)openjdk 64位服务器虚拟机(构建11.0.6 10-post-Ubuntu-1

  • 我是相对较新的PHP,刚刚开始掌握盐的点,当谈到散列密码(我想?)。不管怎样,这是我的问题... 现在我有一个mysql数据库,用户名,密码,盐字段。密码字段长度为64个字符,盐字段为3个字符。在注册时,每个用户名被分配一个随机的盐。我对此没有任何问题(我相信)。首先,通过以下方式散列用户所需的密码: 然后,通过以下过程将用户所需的密码与pbkdf2中包含的盐进行散列,并将其输入数据库: 我的问题

  • 问题内容: 我对哈希表的基本概念感到困惑。如果我要编码一个哈希,我什至会开始吗?哈希表和普通数组之间有什么区别? 基本上,如果有人回答了这个问题,我想我的所有问题都会得到回答:如果我有100个随机生成的数字(作为键),那么我将如何实现哈希表,以及为什么它比数组有优势? 伪代码或Java将被视为一种学习工具… 问题答案: 到目前为止的答案已经帮助定义了哈希表并解释了一些理论,但是我认为一个示例可能会

  • 考虑@data是一个带有日期、类、名称和等级字段的Active记录数组。假设我想以两个哈希结束,一个是每个名称的所有日期的唯一集合;另一个按类、日期和名称细分以显示等级。 > 导致错误: nil:NilClass的未定义方法“[]=”

  • 问题内容: 我对加密/哈希知之甚少。 我必须对加密密钥进行哈希处理。Java中的示例是这样的… 现在,如果我错了,请纠正我,但是上面的代码使用MD5算法对字符串进行了哈希处理。 当我在C#中哈希相同的字符串时,我希望得到相同的结果。 我当前的C#代码看起来像这样… 但是末字节结果不匹配。 Java得到… C#得到… 我需要C#代码才能获得与Java代码相同的结果(不是相反),有什么想法吗? 谢谢。