zoukankan      html  css  js  c++  java
  • 深入解析开源项目之Universal-Image-Loader(二)硬盘---缓存篇

    文件命名:

    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;
        }
    }

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

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

    ImageLoader磁盘关系图

  • 相关阅读:
    POJ 1035-Spell checker(字符串)
    No valid host was found
    Does anyone successfully use USB drive in Windows7 guest?
    iptables 问题
    openstack kilo版本控制节点异常流量分析
    openstack 控制节点大流量对外发包,nf_conntrack,table full droping packets
    Error: rpmdb open failed
    openstack message queue
    POJ 1700 经典过河问题(贪心)
    树莓派遥控船项目计划
  • 原文地址:https://www.cnblogs.com/yaowen/p/6363484.html
Copyright © 2011-2022 走看看