文件命名:

FileNameGenerator,HashCodeFileNameGenerator,Md5FileNameGenerator

package com.nostra13.universalimageloader.cache.disc.naming;

/**
* Generates names for files at disk cache
*/
public interface FileNameGenerator {
/** Generates unique file name for image defined by URI */
String generate(String imageUri);
}
package com.nostra13.universalimageloader.cache.disc.naming;

/**
* Names image file as image URI {@linkplain String#hashCode() hashcode}
*/
public class HashCodeFileNameGenerator implements FileNameGenerator {
@Override
public String generate(String imageUri) {
return String.valueOf(imageUri.hashCode());
}
}
package com.nostra13.universalimageloader.cache.disc.naming;

import com.nostra13.universalimageloader.utils.L;

import java.math.BigInteger;
import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException; /**
* Names image file as MD5 hash of image URI
*/
public class Md5FileNameGenerator implements FileNameGenerator { private static final String HASH_ALGORITHM = "MD5";
private static final int RADIX = 10 + 26; // 10 digits + 26 letters @Override
public String generate(String imageUri) {
byte[] md5 = getMD5(imageUri.getBytes());
BigInteger bi = new BigInteger(md5).abs();
return bi.toString(RADIX);
} private byte[] getMD5(byte[] data) {
byte[] hash = null;
try {
MessageDigest digest = MessageDigest.getInstance(HASH_ALGORITHM);
digest.update(data);
hash = digest.digest();
} catch (NoSuchAlgorithmException e) {
L.e(e);
}
return hash;
}
}

看完内存缓存的分析,再来看看磁盘缓存的逻辑。

相关的接口和类的关系如下:

最新文章

  1. linux phpexcel导出后打不开
  2. spring-boot 热部署 intellij IDE
  3. C#-2 wpf 项目编程结构设计
  4. web测试安全性常见问题
  5. NODE学习:利用nodeJS去抓网页的信息
  6. jsp-------------之分页技术(一)
  7. C++程序的编写和实现
  8. Codevs_1690_开关灯_(线段树)
  9. NLPIR.user Not valid license or your license expired! Please feel free to contact pipy_zhang@msn.com
  10. 《第一行代码》学习笔记16-碎片Fragment(1)
  11. MBProgressHUD 问题
  12. MyBatis之基于XML的属性与列名映射
  13. monitoring with Prometheus
  14. 项目中BigDecimal与Double使用场景
  15. 如何快速掌握DDT数据驱动测试?
  16. python调试之pdb
  17. Educational Codeforces Round 55 (Rated for Div. 2) B. Vova and Trophies
  18. Mysql 5.7 基于组复制(MySQL Group Replication) - 运维小结
  19. python-跨域问题
  20. PCA原理分析

热门文章

  1. [POJ2728] Desert King 解题报告(最优比率生成树)
  2. Asp.Net中使用水晶报表(下)
  3. exsi主机之间使用scp拷贝文件超时问题
  4. inceptionnet
  5. TP5 安装
  6. zabbix4.0 使用nginx前端安装
  7. HDU 3277 Marriage Match III
  8. php如何截取出视频中的指定帧作为图片
  9. Python3小白初体验
  10. iRedMail邮件系统配置简易视频安装教程