본문 바로가기

BE/Java5

[JAVA] ConcurrentHashMap은 뭘까? (synchronizedMap, HashMap과의 비교) 서론여러 강의나 예제를 보면 동시성을 생각하면 concurrentHashMap을 사용하라고 한다. 왜일까? 그리고 도대체 뭘까?  ConcurrentHashMap 이란?!- Java의 java.util.concurrent 패키지에 포함된 동시성 map- 여러 스레드가 동시에 데이터를 안전하게 읽고 쓸 수 있도록 설계된 자료구조- 기본적으로 동시성 제어를 위해 여러 메커니즘을 사용하여 성능 저하 없이 스레드 안전성을 제공​ ConcurrentHashMap의 특징과 동작 방식1. 세분화된 잠금  - ConcurrentHashMap은 내부적으로 세그먼트(segment)나 버킷(bucket) 수준에서 잠금을 관리. 이는 전체 맵이 아닌 일부에만 잠금을 걸어 여러 스레드가 병렬로 작업할 수 있게 함  - Java.. 2024. 6. 3.
[JAVA] HashMap과 HashTable의 차이 서론어느날 Youtube에서 강연을 보다가 "hashMap과 hashTable의 차이 다들 잘 알고계시죠~? 면접에도 많이 나오잖아요." 라고 말씀하셨는데 나는 들어만 봤고, 그냥 남들 다 쓰니까 사용했지 정확한 차이같은건 모르고 있었고 알려하지 않았었기에.. 이번 기회에 정리해보려고 한다! Hash(해시)가 뭔데?먼저 Hash가 뭔지에 대해서 알아보자!해시(Hash)는 데이터구조와 알고리즘에서 중요한 개념으로, 데이터를 고정된 크기의 해시값으로 매핑하는 함수와 그 결과로 생긴 값을들 효율적으로 저장하고 검색하는 방법이다. 따라서 해시 기반 데이터 저장 구조에서는 데이터 검색과 저장이 매우 빠르게 진행된다.​ Hash Function(해시함수)가 뭔데?임의의 크기를 가진 데이터를 고정된 크기의 해시 값(.. 2024. 6. 3.
[JAVA] 자바 intersection type이 뭔지 알아보자! (with 람다) ❗️이 글을 보기 위해선 java generic(제네릭)이 선행되어야 한다. 잘 모른다면 아래 두 개의 포스트를 먼저 읽고 오는 것을 추천한다. https://suhyeon-developer.tistory.com/23 [JAVA] Generic 한 걸음 나아가기! (2) 실전편 ❗️제네릭이 뭔지 궁금하다면 이전 포스트를 참고하길 바란다. https://suhyeon-developer.tistory.com/23 s.compareTo(elem) > 0).count(); } public static void main(String[] args) { // Integer 배열에 대해 countGreaterThan 메서드 suhyeon-developer.tistory.com intersection type이 뭐야? .. 2023. 12. 26.
[JAVA] Generic 한 걸음 나아가기! (2) 실전편 ❗️제네릭이 뭔지 궁금하다면 이전 포스트를 참고하길 바란다. https://suhyeon-developer.tistory.com/23 s.compareTo(elem) > 0).count(); } public static void main(String[] args) { // Integer 배열에 대해 countGreaterThan 메서드 호출 Integer[] arr1 = new Integer[]{1, 2, 3, 4, 5}; System.out.println(countGreaterThan(arr1, 4)); // arr1에 대해 4보다 큰 값의 개수 출력 // String 배열에 대해 countGreaterThan 메서드 호출 String[] arr2 = new String[]{"a", "b", "c", .. 2023. 12. 23.