Post

자료 구조 선택 가이드

enter image description here

Java에서 VectorArrayList다. Vector가 있기는 하지만 사용할 필요가 없다. VectorArrayList의 차이점은 동기화 처리에 있는데, Vector는 무조건 동기화이기 때문에 단일 쓰레드에서 성능이 떨어지며 멀티 스레드 모델에서도 Collection, Map, synchronizedCollection, synchronizedList을 쓰는게 더 낫기 때문이다.

deque? (발음은 deck)

양쪽에서 삽입/삭제가 가능한 원통형 구조를 생각하면 됨.

C++에서 vector와 map

키-벨류 구조이긴 한데 컨테이너의 사이즈가 작아서 둘 중 뭘쓸까 애매한 경우가 있다. vector를 사용하는 경우라면, obj의 어떤 항목을 key로 사용해서 원하는 데이터를 얻기 위해서 검색하게 될텐데, 이 때 그냥 for문으로 이터레이션하지말고, `std::find , std::find\_if`를 사용하도록 한다.

Map이나 Set을 써야 하나? 아니면 Redis를 써야 하나?

둘 간의 주요한 차이는 클러스터링 되어 있는 환경에서 동작하느냐 아니냐다.

2019/07/25 - [Web/etc] - 실제 내부 망 구성도는?

실제 운영 환경에서는 API 서버 다중화를 통해서 여러 서버를 운용하게 되므로, 특정 서버에 올라가있는 변수는 동기화가 안돼서 쓸모가 없는 경우가 많다. 이런 케이스라면 Redis를 사용하는 것이 맞다.

WeakHashMap

직접 delete로 map에서 삭제해줄 수 있다면 이게 더 괜찮은 방법이나, 이 것이 불가능할 때 WeakHashMap 사용을 고려하게 되는데…

WeakHashMap의 entry가 자동으로 삭제되는 케이스는, key = null이 될 때 라는 점을 기억.

시간이 지나면 자동으로 만료되는 Map

[Java] Cache

This post is licensed under CC BY 4.0 by the author.