문제

상관 관계 사용 사례 :

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
                                         }
                                    });
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top