문제
상관 관계 사용 사례 :
read input
if (correlation-id is already generated for this input)
{
lookup the correlation-id from the cache;
return correlation-id;
}
else
{
generate the correlation-id;
cache it;
return correlation-id;
}
제약 조건 : - 입력 레코드의 수는 500K까지 이동할 수 있으므로 강력한 참조를 사용하고 싶지 않습니다. -현재 한 방향 해시를 생성하고 싶지 않습니다 (일방 통화 해시를 사용하면 캐시 할 필요가 없음을 알고 있습니다).
누군가 ComputingMap을 사용하는 방법을 말해 줄 수 있습니까? Javadoc에는 "약한/소프트 키에 정체성 평등을 사용하는 것"이라는 메모가 있기 때문에 이것을 묻습니다.
해결책
Google Guava/Collection 클래스 및 소프트 또는 약한 키 또는 값을 사용하면 맵에 대한 강력한 참조가 필요합니다. 약/소프트 키가 있으면 조회는 ID로 완료되므로 항상 캐시 미스를 얻을 수 있습니다. 따라서 쓰레기 수집기가 캐시에서 GC 항목을 원한다면 값을 부드럽거나 약하게 만들어야합니다.
Google이 향후 동등한 기능을 추가 할 것이므로 equals () 또는 ==를 원한다면 진술 할 수 있으며 강력하거나 약하거나 부드러운 참조를 선택 하여이 선택을 할 수 없습니다.
튜플 객체를 구현하는 것은 ()와 hashcode ()를 구현하기 때문에
new MapMaker()
.softValues()
.makeComputingMap(new Function<Tuple,String>() {
public String apply(Tuple t) {
// generate the correlation-id
}
});
제휴하지 않습니다 StackOverflow