shikeying
2024-01-11 3b67e947e36133e2a40eb2737b15ea375e157ea0
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
package com.walker.cache;
 
/**
 * 系统默认实现的一个缓存数据对象
 * <p/>系统缓存存储的都是这种对象,其中key是业务定义的key,value才是真正业务要存储的数据
 * <p/>
 * @author MikeShi
 *
 */
public class CacheData implements Cachable {
 
    /**
     * 
     */
    private static final long serialVersionUID = 2760771405355406150L;
    
    private String key;
    private Object value;
    private int hits = 0;//数据访问点击率
    private long timeStamp = System.currentTimeMillis();//数据时间戳,可以被系统更新
    
    public int getHit() {
        return hits;
    }
 
    public String getKey() {
        return key;
    }
 
    public long getTimeStamp() {
        return timeStamp;
    }
 
    public Object getValue() {
        return value;
    }
 
    public void hit() {
        //是否会超过最大值,暂时不做计数
//        hits++;
    }
 
    public boolean isExpired(long timeOut, long currentMillis) {
        return (currentMillis - timeStamp >= timeOut);
    }
 
    public void setKey(String key) {
        this.key = key;
    }
 
    public void setTimeStamp(long currentMillisecond) {
        timeStamp = currentMillisecond;
    }
 
    public void setValue(Object value) {
        this.value = value;
    }
 
    public String toString(){
        StringBuilder sb = new StringBuilder();
        sb.append("[key = ");
        sb.append(key);
        sb.append(", value = ");
        sb.append(value);
        sb.append(", hits = ");
        sb.append(hits);
        sb.append(", timeStamp = ");
        sb.append(timeStamp);
        sb.append("]");
        return sb.toString();
    }
    
    public int hashCode(){
        return key.hashCode();
    }
    
    public boolean equals(Object o){
        if(o == null){
            return false;
        }
        if(o == this){
            return true;
        }
        if(o instanceof Cachable){
            Cachable cd = (Cachable)o;
            if(cd.getKey().equals(this.key)){
                return true;
            }
        }
        return false;
    }
}