엄범

enter image description here

 

Java에서 `` Vector``는 `` ArrayList``다.

`` Vector``가 있기는 하지만 사용할 필요가 없다.

`` Vector``와 `` ArrayList``의 차이점은 동기화 처리에 있는데, `` Vector``는 무조건 동기화이기 때문에 단일 쓰레드에서 성능이 떨어지며 멀티 스레드 모델에서도 Collection, Map, synchronizedCollection, synchronizedList을 쓰는게 더 낫기 때문이다.

 

C++에서 vector와 map

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

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

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

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

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

이런 케이스라면 Redis를 사용하는 것이 맞다.

 

WeakHashMap

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

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