Language/Java 5

BlockingQueue<E> vs ConcurrentHashMap<K, V>

부제: BlockingQueue를 설명하려다 생산자-소비자 패턴만 설명하게 된 상황에 대하여.... 저번 글에 작성한 ConcurrentHashMap과 동일하게 thread-safe한 자료구조이다. 그러나 사용 용례가 다른 면이 있기에, 이 둘의 공통점과 차이점, 특히 차이점을 중심으로 글을 작성해보려고 한다. https://manjyuv.tistory.com/16" data-og-description="ConcurrentHashMap해시맵(Map)의 동시성 버전으로, 다수의 스레드가 동시에 데이터를 삽입, 수정, 삭제할 수 있도록 안전한 구조를 제공합니다.Hashtable과 비슷하지만 HashMap과 달리 이 클래스는 null" data-og-host="manjyuv.tistory.com" data-o..

Language/Java 2024.10.13

ConcurrentHashMap<K, V>

ConcurrentHashMap해시맵(Map)의 동시성 버전으로, 다수의 스레드가 동시에 데이터를 삽입, 수정, 삭제할 수 있도록 안전한 구조를 제공합니다.Hashtable과 비슷하지만 HashMap과 달리 이 클래스는 null을 키나 값으로 사용하는 것을 허용하지 않습니다.Like Hashtable but unlike HashMap, this class does not allow null to be used as a key or value.  Java 1.5에서 도입되었으며, Java 8에서는 ConcurrentHashMap에 대한 동시성 API가 개선되었으며, HashMap과 달리 ConcurrentHashMap은 멀티스레드 환경에서 안전하게 사용할 수 있습니다.public class Concurre..

Language/Java 2024.10.03

String과 Char

파이썬으로 코테를 풀던 시절에는 문자, 문자열에 대해 신경을 쓸 필요가 전혀 없었다.그냥 '가 쓰고 싶으면 '를 쓰고, "가 쓰고 싶으면 "를 쓰면 됐다..그러나 자바로 코테를 풀기로 시작하고 나니, 이런 거에 신경을 써야 한다...  자바는 String과 Char 타입을 "와 '로 구분한다는 것을 이번에 처음 알았다...    Char(문자)란?한 개의 문자 값에 대한 자료형을 의미한다.유니코드 문자 하나를 표현한다. 자바는 UTF-16 인코딩을 사용하므로, 0에서 66,535 사이의 정수값으로 표현된다.원시형 데이터 타입이다(primitive type)값을 직접 변경할 수 있다.기본 타입이므로 메모리 상에서 스택(stack)에 저장된다.이로 인해 접근 속도가 빠르다.크기가 2바이트(16비트)이며, 유..

Language/Java 2024.09.14

Integer.parseInt()란 무엇인가?

백준에서 자바로 문제를 풀 때 가장 많이 쓰는 것 중 하나가 아닐까 싶다.import java.util.*;import java.io.*;BufferedReader br = new BufferedReader(new InputStreamReader(System.in));StringBuilder sb = new StringBuilder();int t = Integer.parseInt(br.readLine());기본적으로 위의 저 5줄은 박고 시작하는 편이다. br.readLine()으로 입력을 받고 나서, 그 입력받은 String을 Integer로 변환해주는 수단임은 쉽게 유추할 수 있다. 그럼 이것은 어떻게 작동할까?인텔리제이를 이용해서 내부 구조를 하나씩 까본다.   public static int..

Language/Java 2024.09.08

[Java] StringBuilder vs System.out.println() 성능 비교

메인 언어로 파이썬을 쓰지만코테는 파이썬이 최고, 자바만 됐던 코테또토에버를 경험하고 나서는 자바로도 코테 연습을 조금씩 하고 있습니다.사실 StringBuilder를 생활화 하라는 이야기를 듣기만 했지, 아직까지는 sout이 편해서 System.out.println()을 도배하면서 썼습니다. 그러나, 최근 풀었던 문제에서 sout로 도배했더니 시간초과가 났습니다. 코드는 아래에 첨부하겠습니다.   풀이한 문제https://www.acmicpc.net/problem/15651 시간초과 난 코드import java.util.*;import java.io.*;public class Main { static int result[]; public static void main(String[] args..

Language/Java 2024.08.06