자료 구조 선택 가이드
Java에서 Vector는 ArrayList다. Vector가 있기는 하지만 사용할 필요가 없다. Vector와 ArrayList의 차이점은 동기화 처리에 있는데, Vector는 무조건 동기화이기 때문에 단일 쓰레드에서 성능이 떨어지며 멀티 스레드 모델에서도 Collection, Map, synchronizedCollection, synchronizedList을 쓰는게 더 낫기 때문이다.
deque? (발음은 deck)
양쪽에서 삽입/삭제가 가능한 원통형 구조를 생각하면 됨.
C++에서 vector와 map
키-벨류 구조이긴 한데 컨테이너의 사이즈가 작아서 둘 중 뭘쓸까 애매한 경우가 있다. vector
Map이나 Set을 써야 하나? 아니면 Redis를 써야 하나?
둘 간의 주요한 차이는 클러스터링 되어 있는 환경에서 동작하느냐 아니냐다.
2019/07/25 - [Web/etc] - 실제 내부 망 구성도는?
실제 운영 환경에서는 API 서버 다중화를 통해서 여러 서버를 운용하게 되므로, 특정 서버에 올라가있는 변수는 동기화가 안돼서 쓸모가 없는 경우가 많다. 이런 케이스라면 Redis를 사용하는 것이 맞다.
WeakHashMap
- [JVM] 객체 재사용 - Reference 종류, WeakHashMap
- Java – Collection – Map – WeakHashMap (약한 참조 해시맵)
- https://docs.oracle.com/javase/8/docs/api/java/util/WeakHashMap.html
직접 delete로 map에서 삭제해줄 수 있다면 이게 더 괜찮은 방법이나, 이 것이 불가능할 때 WeakHashMap 사용을 고려하게 되는데…
WeakHashMap의 entry가 자동으로 삭제되는 케이스는, key = null이 될 때 라는 점을 기억.

