300x250
✍️ Stack, Heap, Thread 결론부터 말하면 ThreadLocal이란 Thread마다 독립적인 변수를 갖도록 지원하는 클래스이다. 쉽게 말하면 Thread마다 독립적으로 읽고 쓰는 변수를 제공하는 클래스이다. ThreadLocal을 이해하기 전에 JVM 메모리 정책을 가볍게 짚고 넘어갈 필요가 있다. Java 8 이후 기준, 메서드 파라미터와 지역 변수는 Stack에 할당되고 그 외의 것들은 Heap에 할당된다. 엄밀히 말하면 틀린 설명이지만 메서드에 정의된 것들은 Stack, 그 외의 것들은 Heap 영역이라고 생각하자. Thread(이하 쓰레드)란 한 프로세스 내에서 실행되는 흐름의 단위이다. 한 프로세스당 기본적으로 하나의 쓰레드를 갖는데 이를 메인 쓰레드라고 부른다. 만약 별도의 쓰레..
📝 Contents 어노테이션 개념과 샘플 코드 ✍️ Annotation 자바 어노테이션은 잘만 사용하면 매우 유용한 자바의 문법이다. 기본적인 종류는 한정되지만 원하는 대로 커스텀 어노테이션을 만들 수 있어서 적재적소에 활용 가능하다. 먼저 어노테이션은 1. 문서화 2. 컴파일러 체크 3. 메타데이터 용도로 사용된다. 문법적으로 @기호가 붙은 심볼을 사용하며 패키지, 클래스, 메서드, 프로퍼티, 변수에 명시할 수 있다. 어노테이션이 붙은 코드를 컴파일 시에 수집해서 API 문서화에 사용되기도 하지만 JavaDoc이라는 좋은 문서화 도구가 있기에 문서화는 가장 비중이 낮은 어노테이션 사용법이다. 이외에도 컴파일 타임에 에러나 경고를 발생시켜 개발자에게 위험 요소를 알리는 목적으로도 사용된다. (= @Ov..
✍️ Map to Set 1. Simple Loop Map map = new HashMap(); map.put(1, "이말년"); map.put(2, "침착맨"); map.put(3, "주호민"); Set ids = new HashSet(); for (int id : map.keySet()) { ids.add(id); } Set names = new HashSet(); for (String name : map.values()) { names.add(name); } System.out.println(ids); System.out.println(names); // [1, 2, 3] // [침착맨, 이말년, 주호민] 2. Constructor Map map = new HashMap(); map.put(1, "..
✍️ Map to List @AllArgsConstructor @ToString public class Member { private int id; private String name; } Map.keySet() : Key 값들을 Set으로 반환 Map.values() : Value 값들을 Collection으로 반환 1. Constructor Map map = new HashMap(); map.put(1, "이말년"); map.put(2, "침착맨"); map.put(3, "주호민"); List ids = new ArrayList(map.keySet()); System.out.println(ids); // [1, 2, 3] List names = new ArrayList(map.values()); Sy..
✍️ Set to Map 보통 Set을 Map으로 바꾸는 작업은 Primitive 타입보단 Class 타입에 많이 사용하는 듯하다. @Getter @AllArgsConstructor @ToString public class Member { private int id; private String name; } 1. Java 8 Stream API Member Id가 Key, Member name이 Value가 되도록 매핑할 수 있다. Set memberSet = new HashSet(); memberSet.add(new Member(1, "갱플랭크")); memberSet.add(new Member(2, "카밀")); memberSet.add(new Member(3, "클레드")); Map idToName..
✍️ Set to List @Getter @AllArgsConstructor @ToString public class Member { private int id; private String name; } 1. Java 8 Stream API Set memberSet = new HashSet(); memberSet.add(new Member(1, "침착맨")); memberSet.add(new Member(2, "주호민")); memberSet.add(new Member(3, "김풍")); List memberList = memberSet.stream().collect(Collectors.toList()); System.out.println(memberList); // [Member(id=1, name=침..