2017-05-16 11 views
-1

구글은 다음과 같이 설명되어 있습니다 "loading cache", 제공 : 값 키에서"LoadingCache"란 무엇입니까?

반 영구적 인 매핑. 값은 캐시에 의해 자동으로로드되고 축출되거나 수동으로 무효화 될 때까지 캐시에 저장됩니다.

불행히도, 위의 설명은 대단히 명확하지 않습니다. "자동로드"란 무엇을 의미합니까?

"요청한 키가 캐시에 없으면 캐시에 자동으로 추가됩니다."라는 의미입니다.

다소 (가져 오기() 함수에서)이 문에 의해 지원됩니다

는 "필요한 경우이 캐시와 관련된 값을 먼저 로딩이 값을 반환합니다."

그러나 캐시의 "로드"측면은 "로드 중"이라는 단어로 설명됩니다. 방법은 구글, 이동 : [

+1

당신이 생각하는대로합니다. 그러나 나는 왜이 질문이 전혀 존재하는지 궁금합니다. 왜 먼저 시도하지 않았습니까? Guava의 GitHub 프로젝트 나 인터넷에서 찾아 볼 수있는 엄청난 양의 예제를 고려하면 설치가 복잡하지는 않습니다.당신이하고 있다고 생각하는 것과 똑같이하고 있다는 것을 처음 손에서봤을 것입니다. [load]는 [Wikipedia] (https://en.wikipedia.org/wiki/Cache_(컴퓨팅)), [Guava documentation] (https://github.com/google/)에서 명확하게 사용됩니다. guava/wiki/CachesExplained) (Javadoc이 아니라 실제 문서) 이것이 더 자세한 내용입니다. –

+0

'LoadingCache'에 대한 두 번째 google 결과가 [Guava wiki 페이지 "CachesExplained"] (https://github.com/google/guava/wiki/wiki/CachesExplained)에 링크되어 있습니다. - 여전히 읽고 있다면 더 구체적인 질문을 읽고 따르십시오. 그것의 목적을 이해하지 못한다. – Xaerxess

+0

@ OlivierGrégoire : 저는 자바 프로그래머가 아닙니다. 이것을 시험해 보는 것은 나에게는 사소한 것이 아닙니다. 또한 wiki 기사는 훌륭하지만로드라는 용어는 정확히 두 번 언급되어 있으며 유사한 컨텍스트에서 'put'이라는 용어를 쉽게 찾을 수 있습니다 (https://developer.mozilla.org/en-US/docs 참조)./Web/API/Cache/put). – FuzzyAmi

답변

2

구아바의 위키 문서는 그것의 full definition이 있습니다 (강조는 나의 것)

LoadingCache가 부착 된 CacheLoader와 내장 Cache이다. CacheLoader을 만드는 것은 일반적으로 V load(K key) throws Exception 메서드를 구현하는 것만 큼 쉽습니다. 따라서, 예를 들어, 다음 코드를 사용하여 LoadingCache을 만들 수 있습니다

[...]

LoadingCache이 방법 get(K) 함께 조회하는 표준 방법입니다. 이 값은 이미 캐시 된 값을 반환하거나 캐시의 CacheLoader을 사용하여 캐시에 새로운 값을 원자 적으로로드합니다.CacheLoaderException을 던질 수 있으므로 LoadingCache.get(K)ExecutionException입니다. 확인 된 예외를 선언하지 않는 CacheLoader을 정의한 경우 getUnchecked(K)을 사용하여 캐시 조회를 수행 할 수 있습니다. 그러나 확인 된 예외를 선언하는 캐시에 getUnchecked을 호출하지 않도록주의해야합니다.

강조 표시된 문장은 설명 할 내용을 설명합니다. get(K)을 호출하면 값이 캐시에서 가져 오거나로드됩니다. 코멘트에서


당신은 당신이 로드 무엇에 더 중점을 원했다. 을 캐시에 넣으면 을 넣고을 입력하십시오. 캐시에 물건을 넣지 않지만 캐시가 계산하여 넣으면 캐시 을로드합니다.

+0

내 질문을 확인해 주셔서 감사합니다! 나는 여전히 'X 캐시'를 '원자 적 X로'설명하는 것이 끔찍한 설명이 아니며 의문의 여지가 있음을 (따라서 질문) 생각한다. – FuzzyAmi

+0

"원자 적"과 관련하여 Java의 [ "atomic"정의 (https://docs.oracle.com/javase/tutorial/essential/concurrency/atomicvars.html) : 단일 액션으로 실행되는 코드 "이는 다중 스레드 응용 프로그램에서 중요합니다. 덕분에 –

+0

. 아마도 내가 분명히해야합니다 : 초점은 원 자성에 관한 것이 아닙니다. 그것에 대해 '로딩'비트. 하지만 지금은 분명합니다. – FuzzyAmi