想问一个问题,是关于鉴定文档是够被修改过的

u011191275 2013-07-13 01:54:06
比如我的D盘下面有一个tmp.txt,里面的内容是我从网页上面下载得到的源代码:

比如这里的:
http://outlet.lenovo.com/SEUILibrary/controller/e/outlet_us/LenovoPortal/en_US/catalog.workflow:item.detail?GroupID=445&Code=1291XF7


这样的一个商品,我每次检索的时候,都会把他的这个网页的源代码保存到d盘的tmp.txt中;

但是有这样的一个情况,这个商品可能在几天之后价格会发生改变,那么我的去修改这个txt文件。
目前经过人工测试,改变的情况不多,可是我目前处理是,无论他改不改变,我都把信息重新写到txt中,这样一来我在测试数据较多的情况,就会有点鸡肋。


问这么一个问题,我怎样和这个txt比对,发现网页中的数据改变之后,才去重新把对应webpage上面的源代码下载下来?

听过这么一个词,叫做全文hash的。但是没搜索到这方面的文档。
...全文
143 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
ri_aje 2013-07-14
  • 打赏
  • 举报
回复
引用 10 楼 u011191275 的回复:
[quote=引用 9 楼 ri_aje 的回复:] [quote=引用 3 楼 u011191275 的回复:] [quote=引用 2 楼 ri_aje 的回复:] 就是把两个文本都视为超长的字符串,然后计算各自运行 hash 编码,然后再比较编码,编码的一致性等同于文档的一致性,看到编码不一样的话,再更新文本即可。
这个会不会很慢?[/quote] 除非你有先验知识,否则怎么也得遍历一边文件,才能有把握的回答是否一致的问题。 或者就是有人事先帮你算好了,比如 #6 说的第二种情况。[/quote] 假如我使用内存数据库,会怎样?[/quote] 这跟使用什么存储技术没关系,这是个逻辑问题,或者说算法问题。抛开计算机不谈,假如我给你两个文件,不告诉你关于他们内容的任何信息,然后问你他们是否一样,你怎么办?恐怕除了老老实实的遍历一遍没有什么其他可靠的方法了吧。计算机只是能够快速的执行人类的逻辑,但计算机不可能超越逻辑的。
ri_aje 2013-07-14
  • 打赏
  • 举报
回复
引用 12 楼 u011191275 的回复:
[quote=引用 11 楼 ri_aje 的回复:] [quote=引用 10 楼 u011191275 的回复:] [quote=引用 9 楼 ri_aje 的回复:] [quote=引用 3 楼 u011191275 的回复:] [quote=引用 2 楼 ri_aje 的回复:] 就是把两个文本都视为超长的字符串,然后计算各自运行 hash 编码,然后再比较编码,编码的一致性等同于文档的一致性,看到编码不一样的话,再更新文本即可。
这个会不会很慢?[/quote] 除非你有先验知识,否则怎么也得遍历一边文件,才能有把握的回答是否一致的问题。 或者就是有人事先帮你算好了,比如 #6 说的第二种情况。[/quote] 假如我使用内存数据库,会怎样?[/quote] 这跟使用什么存储技术没关系,这是个逻辑问题,或者说算法问题。抛开计算机不谈,假如我给你两个文件,不告诉你关于他们内容的任何信息,然后问你他们是否一样,你怎么办?恐怕除了老老实实的遍历一遍没有什么其他可靠的方法了吧。计算机只是能够快速的执行人类的逻辑,但计算机不可能超越逻辑的。[/quote] 第一次的时候,当然需要得到整个数据啊, 不过得看怎么处理才能利用第一次的结果。比如全文hash这样的[/quote] 全文 hash 不也是遍历吗,你能少 hash 一部分文本即得出是否一样的可靠结论吗?
u011191275 2013-07-14
  • 打赏
  • 举报
回复
引用 11 楼 ri_aje 的回复:
[quote=引用 10 楼 u011191275 的回复:] [quote=引用 9 楼 ri_aje 的回复:] [quote=引用 3 楼 u011191275 的回复:] [quote=引用 2 楼 ri_aje 的回复:] 就是把两个文本都视为超长的字符串,然后计算各自运行 hash 编码,然后再比较编码,编码的一致性等同于文档的一致性,看到编码不一样的话,再更新文本即可。
这个会不会很慢?[/quote] 除非你有先验知识,否则怎么也得遍历一边文件,才能有把握的回答是否一致的问题。 或者就是有人事先帮你算好了,比如 #6 说的第二种情况。[/quote] 假如我使用内存数据库,会怎样?[/quote] 这跟使用什么存储技术没关系,这是个逻辑问题,或者说算法问题。抛开计算机不谈,假如我给你两个文件,不告诉你关于他们内容的任何信息,然后问你他们是否一样,你怎么办?恐怕除了老老实实的遍历一遍没有什么其他可靠的方法了吧。计算机只是能够快速的执行人类的逻辑,但计算机不可能超越逻辑的。[/quote] 第一次的时候,当然需要得到整个数据啊, 不过得看怎么处理才能利用第一次的结果。比如全文hash这样的
u011191275 2013-07-13
  • 打赏
  • 举报
回复
引用 9 楼 ri_aje 的回复:
[quote=引用 3 楼 u011191275 的回复:] [quote=引用 2 楼 ri_aje 的回复:] 就是把两个文本都视为超长的字符串,然后计算各自运行 hash 编码,然后再比较编码,编码的一致性等同于文档的一致性,看到编码不一样的话,再更新文本即可。
这个会不会很慢?[/quote] 除非你有先验知识,否则怎么也得遍历一边文件,才能有把握的回答是否一致的问题。 或者就是有人事先帮你算好了,比如 #6 说的第二种情况。[/quote] 假如我使用内存数据库,会怎样?
ri_aje 2013-07-13
  • 打赏
  • 举报
回复
引用 3 楼 u011191275 的回复:
[quote=引用 2 楼 ri_aje 的回复:] 就是把两个文本都视为超长的字符串,然后计算各自运行 hash 编码,然后再比较编码,编码的一致性等同于文档的一致性,看到编码不一样的话,再更新文本即可。
这个会不会很慢?[/quote] 除非你有先验知识,否则怎么也得遍历一边文件,才能有把握的回答是否一致的问题。 或者就是有人事先帮你算好了,比如 #6 说的第二种情况。
u011191275 2013-07-13
  • 打赏
  • 举报
回复
引用 5 楼 adlay 的回复:
[quote=引用 4 楼 u011191275 的回复:] [quote=引用 1 楼 adlay 的回复:] 就计算 CRC 就行了
那个是怎样的原理?[/quote] Google 就行了, 就是一个校验和.[/quote] 那玩意用在这上面貌似不太明白,能稍微解释一下吗?
u011191275 2013-07-13
  • 打赏
  • 举报
回复
引用 6 楼 qq120848369 的回复:
方案一:对内容算md5/sha1。 方案二:HTTP协议本身已经支持文档更新检查,关注etag/If-None-Match以及Last-Modified/If-Modified-Since,我认为这是最佳的选择。
所以我觉得全文hash会影响速度啊。毕竟网页的源代码会很多,有用的信息只有那么一些
qq120848369 2013-07-13
  • 打赏
  • 举报
回复
方案一:对内容算md5/sha1。 方案二:HTTP协议本身已经支持文档更新检查,关注etag/If-None-Match以及Last-Modified/If-Modified-Since,我认为这是最佳的选择。
www_adintr_com 2013-07-13
  • 打赏
  • 举报
回复
引用 4 楼 u011191275 的回复:
[quote=引用 1 楼 adlay 的回复:] 就计算 CRC 就行了
那个是怎样的原理?[/quote] Google 就行了, 就是一个校验和.
u011191275 2013-07-13
  • 打赏
  • 举报
回复
引用 1 楼 adlay 的回复:
就计算 CRC 就行了
那个是怎样的原理?
u011191275 2013-07-13
  • 打赏
  • 举报
回复
引用 2 楼 ri_aje 的回复:
就是把两个文本都视为超长的字符串,然后计算各自运行 hash 编码,然后再比较编码,编码的一致性等同于文档的一致性,看到编码不一样的话,再更新文本即可。
这个会不会很慢?
ri_aje 2013-07-13
  • 打赏
  • 举报
回复
就是把两个文本都视为超长的字符串,然后计算各自运行 hash 编码,然后再比较编码,编码的一致性等同于文档的一致性,看到编码不一样的话,再更新文本即可。
www_adintr_com 2013-07-13
  • 打赏
  • 举报
回复
就计算 CRC 就行了

64,654

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧