2012-04-20 62 views
0

我正在创建一个用于从多个URL中获取链接的工具。我想存储这些信息,然后测试他们的状态。我期望不得不测试大量的链接,大约60,000。所以我的问题是决定如何存储要测试的链接。以Java存储数据。文本文件,csv或其他方法?

我想要做的是为我要刮的URL创建文本文件。我将不得不为约40个文本文件创建我将要抓取的URL(我所抓取的URL是相同的URL,只是区域化的)。

  • 创建大量文本文件会导致性能问题吗?
  • 我会最好将网址存储在一个数组中,然后将 数组写入文本文件,或者我应该只是将文本的URL写入文本 文件吗?或者,还有更好的方法?
  • 有没有比存储在文本文件更好的方法? (我真的不 想使用一个数据库,但如果有一个很好的情况下它,我可能是 相信)
+2

为什么你需要存储它们?如何存储将被使用?您是否考虑过小型数据库引擎,例如SQLite? – 2012-04-20 12:42:27

+0

它不是完全必要的。我对编程相当陌生,我在想,如果我要将数据存储在数组中,那么需要使用很多内存,从而导致性能问题?在数组中存储如此多的信息串会使用大量的内存吗? – Peck3277 2012-04-20 13:02:09

+0

Java使用UTF-16,每个字符大约2个字节。猜测每个URL 200个字符,你会得到:60000 * 200 * 2 = 24 MB。应该很容易适应RAM。 – 2012-04-20 16:04:22

回答

1

恕我直言,最简单的方法是使用serialization保存您的信息。例如,序列号为Map<String, Set<String>>的网址。多个文件也应该工作,没有任何严重的性能影响。但它稍长实现

另一种方法 - 注册于mongolab并使用免费帐户。 (这不是广告,我只是喜欢这个服务)你不需要安装任何东西,只需下载mongo驱动程序,然后继续

+0

如果我正确阅读序列化文章(而且我可能不是),那么这是否意味着我可以将信息存储在内存中并在稍后调用? 会使用这种方法来存储大量的大型数组字符串〜60,000会占用大量的内存并导致性能问题?我很新的编程:/ – Peck3277 2012-04-20 13:04:41

+1

你是对的以后回忆。 6万个琴弦并不是那么多。无论如何,你可以调整JVM(为你的程序分配更多的内存)。这不是关于性能,而是关于内存消耗。你不应该担心这一点。 – Anton 2012-04-20 13:08:35

+0

这听起来几乎正是我需要的。最后一个问题。当你在一个类中序列化一个对象时,你能否在你的应用程序的任何其他地方反序列化它? – Peck3277 2012-04-20 13:16:26

相关问题