深入解析开源项目之Universal-Image-Loader(二)硬盘---缓存篇
2024-10-01 18:31:57
文件命名:
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;
}
}
看完内存缓存的分析,再来看看磁盘缓存的逻辑。
相关的接口和类的关系如下:
最新文章
- linux phpexcel导出后打不开
- spring-boot 热部署 intellij IDE
- C#-2 wpf 项目编程结构设计
- web测试安全性常见问题
- NODE学习:利用nodeJS去抓网页的信息
- jsp-------------之分页技术(一)
- C++程序的编写和实现
- Codevs_1690_开关灯_(线段树)
- NLPIR.user Not valid license or your license expired! Please feel free to contact pipy_zhang@msn.com
- 《第一行代码》学习笔记16-碎片Fragment(1)
- MBProgressHUD 问题
- MyBatis之基于XML的属性与列名映射
- monitoring with Prometheus
- 项目中BigDecimal与Double使用场景
- 如何快速掌握DDT数据驱动测试?
- python调试之pdb
- Educational Codeforces Round 55 (Rated for Div. 2) B. Vova and Trophies
- Mysql 5.7 基于组复制(MySQL Group Replication) - 运维小结
- python-跨域问题
- PCA原理分析