我有一个Perl脚本,我为自己的个人用途编写,定期从网站上获取图像文件.然后它将这些图像保存到文件夹中.从fetch到fetch,这些图像文件通常是相同的,如果我可以绕过它,我不想保存重复项.
我的问题:比较/检查它们是否相同的最佳方法是什么?
到目前为止,我唯一真正的想法是打开现有文件句柄,md5,md5来自fetch的$ response->内容,然后比较它们.那会有用吗?
有没有更好的办法?
编辑:
哇,已经有很多很棒的建议了.如果我告诉你这个脚本每天都通过cron运行会有帮助吗?即保证每天都在同一时间运行?另外:我正在查看其中一些最后修改的标题,并且它们看起来不是100%准确,即有一些在一周前的最后修改时我知道图像是最近的比起那个来说.我假设那是因为从那时起服务器上的图像文件本身没有被修改......这对我没什么帮助...
我需要为Perl中的一堆数据生成校验和,我遇到了这个Digest :: MD5模块.看起来它符合要求,但我想我会在这里询问是否有人有任何建议或可能知道更好的模块使用,甚至可能更合适的摘要算法.正在散列的是大约10个表的数据(一次一个逻辑元组).这将是我第一次使用校验和,所以任何提示,技巧,陷阱都将非常感激.
编辑:据我所知,Digest:MD5没有任何问题,但我从未使用它,也不熟悉哈希算法.我希望有经验的人能告诉我我是否在正确的轨道上.在走得太远之前,只是想要一点确认.
我正在尝试复制Java中的PHP中可用的CRC32散列函数.Java中现有的CRC32类返回不同的哈希,我相信这是因为我的字节数组中的Java字节是无符号-128到128而不是0-255.
我没想到的是如何解决这种情况.我已经看过使用Guava的UnsignedBytes,但我找不到将其作为参数的散列方法.我可以使用它来编写我自己的散列函数,但坦率地说,我对它的工作方式或一般的逐位算术都不够,以使其合理.
用最简单的术语我试图CRC32有一个字符串并返回十进制表示.
我试图生成一系列数据包来模拟TCP 3路握手程序,我的第一步是捕获真正的连接数据包,并尝试从同一台机器重新发送相同的数据包,但它不起作用首先.
最后我发现用tcpdump捕获的数据包并不是我的计算机发出的数据包,TCP的校验和字段发生了变化,这让我想到即使TCP校验和不正确也可以建立tcp连接.
所以我的问题是如何计算校验和字段?它是由tcpdump还是硬件修改的?为什么会改变?这是tcpdump的错误吗?或者是因为省略了计算.
以下是我从主机和虚拟机器上捕获的屏幕截图,你可以看到在不同的机器上捕获的相同数据包除了TCP校验和之外都是相同的.
并且小窗口是我的虚拟机,我使用命令"ssh 10.82.25.138"从主机生成这些数据包
我有一个通过TLS保护的JAX-RS Web服务。因此,加密非常重要,因此我决定使用RawCap检查网络流量并使用WireShark对其进行分析。这样做时,我偶然发现了以下消息:
Header checksum: 0x0000 [incorrect, should be 0xac15 (may be caused by "IP checksum offload"?)]
Run Code Online (Sandbox Code Playgroud)
我非常确定这对我的RESTEasy客户端来说不是问题,因为通过FireFox检索资源会导致相同的消息。
我正在编写一个简单的程序来发送/接收TCP数据包并将其合并到一个更大的项目中.我卡在校验和部分,我计算的数字与wireshark数字不匹配.
对于校验和功能,我重新使用Mike Muss的代码如下:
static int
in_cksum(u_short *addr, int len)
{
register int nleft = len;
register u_short *w = addr;
register int sum = 0;
u_short answer = 0;
/*
* Our algorithm is simple, using a 32 bit accumulator (sum), we add
* sequential 16 bit words to it, and at the end, fold back all the
* carry bits from the top 16 bits into the lower 16 bits.
*/
while (nleft > 1) {
sum += *w++; …
Run Code Online (Sandbox Code Playgroud) 我使用Paramiko将文件放入SFTP服务器:
import paramiko
transport = paramiko.Transport((host, port))
transport.connect(username=username, password=password)
sftp = paramiko.SFTPClient.from_transport(transport)
sftp.put(local_path, remote_path)
Run Code Online (Sandbox Code Playgroud)
现在,我想检查一下是否有效.我的想法是我比较本地文件和远程文件(位于SFTP服务器上)的校验和.
Paramiko功能是否允许这样做?如果是这样的话,究竟是如何运作的?
当您更改工作目录中的文件时,git确切地知道更改了哪个文件.怎么知道的?
Q1)它是否在提交时计算校验和,并在事件驱动的更改时重新计算它,例如在工作目录中创建的新文件.
Q2)除了工作目录文件之外,您的本地驱动器是否将其余文件保留在某个位置,随着您包含更多项目而增加?C:\Users\<USER NAME>\Downloads\.git\objects
添加了我试图跟踪的新文件夹,我的驱动器看起来更加饱满,现在我想要撤消我试图跟踪的文件夹,如何回收该空间.我试图用GIT做一些奇特的事情,比如跟踪我本地项目文件和其他文档的变化,这样我就可以看到已更改的文档并仅使用这些文件更新我的备份.
我对两种方法感到困惑,在此两种方法中,对数组进行规范化并且其总和必须为1.0:
要标准化的数组:
array([ 1.17091033, 1.13843561, 1.240346 , 1.05438719, 1.05386014,
1.15475574, 1.16127814, 1.07070739, 0.93670444, 1.20450255,
1.25644135])
Run Code Online (Sandbox Code Playgroud)
方法1:
arr = np.array(values / min(values))
array([ 1.25003179, 1.21536267, 1.32415941, 1.12563488, 1.12507221,
1.23278559, 1.23974873, 1.14305788, 1.00000000, 1.28589392,
1.34134236])
arr1 = arr / sum(arr) # Sum total to 1.0
array([ 0.09410701, 0.09149699, 0.09968761, 0.08474195, 0.08469959,
0.09280865, 0.09333286, 0.08605362, 0.07528369, 0.09680684,
0.1009812 ])
Run Code Online (Sandbox Code Playgroud)
方法2:
arr = np.array((values - min(values)) / (max(values) - min(values)))
array([ 0.73249564, 0.63092863, 0.94966065, 0.3680612, 0.3664128 ,
0.68197101, 0.70237028, 0.41910379, 0.0000000, 0.83755771,
1.00000000])
arr2 …
Run Code Online (Sandbox Code Playgroud) 我正在研究为给定文件生成校验和的Java代码.我正在使用Gogole的Guava库进行散列.这是代码 -
import com.google.common.hash.HashCode;
import com.google.common.hash.HashFunction;
import com.google.common.hash.Hashing;
private HashCode doHash(File file) throws IOException {
HashFunction hc = Hashing.murmur3_128();
HashCode hsCode = hc.newHasher().putBytes(com.google.common.io.Files.asByteSource(file).read()).hash();
return hsCode;
}
Run Code Online (Sandbox Code Playgroud)
我运行此代码的文件大小为2.8GB.它抛出以下错误 -
Exception in thread "main" java.lang.OutOfMemoryError: 2945332859 bytes is too large to fit in a byte array
at com.google.common.io.ByteStreams.toByteArray(ByteStreams.java:232)
at com.google.common.io.Files$FileByteSource.read(Files.java:154)
...
Run Code Online (Sandbox Code Playgroud)
我可以在这里使用其他数据结构吗?或者我应该寻找另一种策略来将文件提供给哈希函数?