LANGUAGE

[Java] EnumMap이란? 0. 들어가기 전에 체스 미션을 진행하면서, HashMap을 EnumMap으로 리팩토링을 해봤습니다. 처음 쓰는거라 어떤 역할을 하는지 몰라 정리해 봅니다. 1. EnumMap 이란? Enum 타입의 Key를 갖는 특화된 맵 EnumMap은 하나의 Enum을 Key로 갖는다. 또한 HashMap과는 달리 HashMap을 사용하지 않고 Array로 구현이 되어서 효율적이다. 2. EnumMap의 특징 2.1 속도 public class EnumMap extends AbstractMap implements java.io.Serializable, Cloneable { private final Class keyType; private transient K[] keyUniverse..
[Java] LinkedHashMap의 방어적 복사 0. 들어가기전에 이번 블랙잭 미션을 하면서 결과 출력을 할 때, LinkedHashMap을 방어적 복사를 하려고 Map.copyOf()를 쓴 적이 있었다. 하지만, 이 방법은 기존 순서를 유지하지 못했다. 이 글을 통해 순서가 깨지는 이유와 방어적 복사를 하는 방법을 알아보자. 1. LinkedHashMap이란? Hash table and linked list implementation of the Map interface, with predictable iteration order. This implementation differs from HashMap in that it maintains a doubly-linked list running thr..
[Java] JVM - Garbage Collector 0. 들어가기전에 GC는 여러 종류가 있고, 자바 버전별로 기본적으로 채택하는 GC가 다릅니다. JAVA 8에는 Parallel GC, JAVA 9이상 부터는 G1 GC가 사용이 됩니다. Parallel GC까지는 이전 GC와 동작방식이 비슷하지만, G1 GC는 동작하는 방법이 달라 부득이하게 내용이 나뉘게 되었습니다. 1. Garbage Collector 런타임에 실행 중인 프로그램에 대한 메모리 할당 및 회수를 관리하는 자동 메모리 관리 시스템 가비지 컬렉터는 가비지 컬렉션(Garbage Collection)이라는 과정을 통해 자바 어플리케이션에서 자동으로 메모리 관리를 해주는 시스템이다. 그렇다면 '가비지 컬렉션(이하 GC)를 자주 실행하는게 ..
[Java] JVM - 메모리 구조 0. 들어가기 전에 static 변수는 static 영역 메모리에 올라간다. 그래서 GC가 되지 않기 때문에 남용하면 성능 문제를 일으킬 수 있다. 이 문장은 자바와 관련된 내용을 다루는 블로글들을 돌아다니면 한 번쯤 볼 수 있는 문구이다. '문법 공부가 바빠서', '프로젝트가 있어서' 이해가 안되지만 그냥 넘어간적이 한 두 번이 아니다. 그래서 이번엔 이 문장들을 이해하기 위해서 자바의 기초이자 심화과정인 JVM에 대해서 알아보려고 한다. 1. JVM이란? JVM(Java Virtual Machine)은 자바를 실행하기 위한 가상머신이며, 자바 바이트 코드를 OS에 맞게 해석 해주는 역할을 한다. 또한, 프로그램 메모리를 최적화 해주고 관리한다. 자바는 다른 프로그래..
[Java] 롬복의 원리 1. Lombok(롬복)이란? 컴파일 시점에 바이트코드를 조작하여 원하는 코드를 주입해주는 라이브러리 스프링 필수 템 공개된 API가 아닌 Compiler 내부 class를 사용하여 코드를 수정한다는 문제점이 있음 어노테이션 형식으로 동작 ex) @Getter, @Setter, @RequiredArgsConstructor 2. 동작 과정 자바 컴파일러(javac)가 소스파일을 파싱하여 AST 트리를 만듦 롬복은 AnnotationrProcessor에 따라서 AST 트리를 동적으로 수정하고 새 소스코드와 바이트 코드를 분석 및 생성 자바 컴파일러는 수정된 AST를 기반으로 바이트 코드를 생성 3. Annotation Processor 자바 컴파일러 플러그인의 일종 어노테이션에 대한..
[JAVA] JVM 1. JVM(Java Virtual Machine)이란? 자바가 OS에 종속받지 않고 실행할 수 있게 하는 가상 컴퓨터 스택 기반의 가상 머신 기본 자료형외의 모든 자료형들을 심볼릭 레퍼런스를 통해 참조 심볼릭 레퍼런스 : 참고하는 클래스의 특정 메모리 주소의 이름만 가지고 있는 것 GC(Garbage Collection)을 통해 자원(메모리)을 관리 → JVM을 이해하면 한정된 메모리를 효율적으로 사용하여 성능을 향상 시킬 수 있다. 2. 클래스 로더 JVM 내로 클래스 파일(자바 바이트 코드, *.class)을 로드하고, 링크를 통해 배치하는 작업을 수행하는 모듈 자바 바이트 코드 : JVM이 이해할 수 있는 언어로 변환된 자바 소스코드 런타임시 jar 파일 내 저장된 클래스들을 ..
정규식이란? 1. 정의 정규식(Regular Expression)은 특정한 규칙을 가지는 문자열 집합을 표현하는데 사용하는 형식 언어 흔히 regex라고 불림 2. 문법 ^ : not의 의미, 문자의 시작을 의미 - ^[a] : a로 시작하는 문자 $ : 문자의 끝을 의미 - [a]$ : a로 끝나는 문자 [] : 한 개의 문자 - [abc] : a, b, c 중 한 개의 문자 - [^abc] : a, b, c 를 제외하고 한 문자 - [a-z] : a부터 z까지 중 하나 - [a-zA-Z] : 영어 단어 중 하나 {} : 횟수 또는 범위를 나타냄 - {3} : 정확히 3회 - {3, } : 3회 이상 - {3, 5} : 3회 이상 5회 이하 () : 그룹핑 \d : 한 개의 숫자 - [0-9]와 동일 ..
Chapter11 컬렉션 프레임웍 Collections Framework 1. 컬렉션 프레임웍(Collections Framework) 컬렉션(collection) : 여러 객체(데이터)를 모아 놓은 것을 의미 프레임웍(framework) : 표준화, 정형화된 체계적인 프로그래밍 방식, 작업 생산성 증가, 유지 보수 증가. 라이브러리(library) : 다른 사람들이 만들어 놓은 기능들을 모아둔 것. 컬렉션 프레임웍(collection framework) : 다수의 객체를 다루기 위한 표준화된 프로그래밍 방식, 다양한 클래스를 제공(java.util패키지에 포함) 컬렉션 클래스(collection class) : 다수의 데이터를 저장할 수 있는 클래스 1.1 컬렉션 프렘웍의 핵심 인터페이스 List : ..
쿠엔크
'LANGUAGE' 카테고리의 글 목록