java - 用哈希缩短长网址?

标签 java hash url-shortener

我有一个文件缓存,文件是从不同的网址下载的。我想按其网址名称保存每个文件。不过,这些名称可能会很长,而且我使用的是 FAT32 文件系统的设备 - 因此,在耗尽实际磁盘空间之前,长名称就会耗尽资源。

我正在寻找一种缩短文件名的方法,已经得到了对字符串进行哈希处理的建议。但我不确定哈希值对于两个不同的字符串是否保证是唯一的。如果两个哈希 url 具有相同的哈希值,如果我不小心获取了错误的图像,那就太糟糕了。

最佳答案

您可以生成 UUID对于每个 URL 并将其用作文件名。

UUID 是唯一的(或“实际上唯一的”)并且长度为 36 个字符,因此我猜文件名不会有问题。

从版本 5 开始,JDK 附带了一个用于生成 UUID 的类 (java.util.UUID)。如果有办法将 UUID 与 URL 关联起来,您可以使用随机生成的 UUID,或者可以使用基于名称的 UUID。基于名称的 UUID 始终相同,因此以下情况始终正确:

String url = ...
UUID urlUuid = UUID.nameUUIDFromBytes(url.getBytes);
assertTrue(urlUuid.equals(UUID.nameUUIDFromBytes(url.getBytes)));

关于java - 用哈希缩短长网址?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7274969/

相关文章:

php - 相同字符串的 base64_encode() 值是否不同?

url-shortener - URL 缩短器可以防止难看的词吗?

nginx - 如何在lua或nginx中获取查询参数?

java - 异常 : Session Issue ids for this class must be manually assigned before calling save(): org. me.Testservices.TblUsers

java - *已编辑*警报对话框仅适用于一个实例 (Android)

encryption - 将低级 OpenSSL API 迁移到高级 OpenSSL API 所需的建议

ruby-on-rails - URL 缩短器如何大规模工作(例如 t.co 在 Twitter 的情况下)

Java - 将 docx 转换为 pdf 文档

java - protected 抽象方法在父类包装实例的子类中不可见

javascript - 希望使用 javascript 数组作为散列键,使用任何数组元素检索