
코테를 풀다보면 종종 보이는 StringBuffer와 StringBuilder의 개념을 확실히 잡기 위해 끄적끄적..🟡SringBuffer 및 StringBuilder 클래스를 사용해야 하는 이유는 ?String 클래스는 상수 문자열이기에 String 객체에 포함된

토큰 : 분리한 문자열 의미, 공백이나 줄바꿈 등 구분자를 사용해 문자열 분리✔ 여기서 구분자는 공백, 탭, 줄바꿈, 복귀, 용지 먹임 문자를 의미한다.🔸StringTokenzer 클래스의 주요 생성자StringTokenizer(String s): 주어진 문자열을 기

자료를 쌍으로 관리하는데 필요한 메서드들이 Map 인터페이스에 정의되어 있다. key-value 쌍으로 이루어진 객체의 key 값은 유일하며 value 값은 중복될 수 있다. HashMap은 Map 인터페이스를 구현한 클래스 중 가장 많이 사용한다. HashMap에서

TreeSet은 Set 인터페이스를 구현한 클래스이다. Set 인터페이스를 구현했기에 순서도 정해지지 않고 중복값도 허용하지 않는다.TreeSet은 RB-Tree 구조를 가지고 있다. RB-Tree는 이진탐색트리의 일종으로 저장된 값들이 트리 전체에 골고루 저장되도록

스택은 자료의 입출력이 후입선출(LIFO)의 형태로 일어나는 자료구조를 말한다.위와 같은 형식으로 스택을 선언해준다.스택을 초기화한다.스택이 비어있으면 true, 비어있지 않으면 false를 반환한다.데이터를 스택에 추가하고 해당 값을 반환한다.스택의 가장 위 요소인

LocalDate 클래스는 타임존 개념이 필요없는(시간이 없는 날짜) 날짜 정보를 나타내기 위해 사용된다.public 생성자를 제공하지 않기 때문에 객체 생성 시 now(), of(), parse() 같은 정적 메소드를 사용한다. 기본 형태는 yyyy-mm-dd 형태의

스트림 스트림은 자바 8 API에 새로 추가된 기능으로 스트림은 컬렉션의 저장요소를 하나씩 참조해 람다식으로 처리할 수 있도록 해주는 반복자이다. 특징 람다식으로 요소 처리 코드 제공 내부 반복자를 사용하기에 병렬 처리 쉬움 중간 처리와 최종 처리를 할 수 있음 반

Optional Optional 클래스는 단순히 집계 값만 저장하는 것이 아니라, 집계값이 존재하지 않을 경우 디폴트값을 설정할 수도 있고, 집계 값을 처리하는 Consumer를 등록할 수도 있다. 값 생성하기 Optional은 Wrapper 클래스이기에 값이 있을

BufferedReader와 BufferedWriter는 버퍼를 사용해 읽기와 쓰기를 하는 함수이다.하드디스크는 속도가 느리다. 외부장치와 데이터 입출력도 생각보다 시간이 오래 걸리기 때문에 키보드의 입력이 있을때 마다 바로 이동시키는 것보다 중간에 버퍼를 두어 한번에

정규 표현식이 컴파일된 클래스이다. 정규 표현식에 대상 문자열을 검증하거나 활용하기 위해 사용되는 클래스를 말한다.이 클래스에서는 정규 표현식을 컴파일해 인스턴스를 스스로 만들어야 한다. 이후 만든 패턴을 가지고 Matcher 객체를 생성할 수 있다. 생성된 Match

JDBC :Java DataBase Connectivity의 약자로 자바 / JSP 프로그램 내에서 DB와 관련된 작업을 처리할 수 있도록 도와주는 자바 표준 인터페이스이다.JDBC API를 사용하면 DBMS 종류의 관계없이 DB 작업 처리가 가능하다.java.sql.

Deque는 양쪽 끝에서 삽입 및 삭제 작업을 수행할 수 있는 자료구조이다.Queue, Stack의 기능 모두를 포함하고 있어 유연하게 사용할 수 있다.자바에서 인터페이스로 정의되어 있기에 ArrayDeque, LinkedList 클래스를 사용해 구현할 수 있다.Que

TreeMap은 Java의 java.util 패키지에 포함된 Map 인터페이스로 키를 자동으로 정렬된 상태로 유지하는 이진 검색 트리 기반이다.자동으로 오름차순 정렬 (키 기준)키 중복 허용하지 않음값 중복은 허용키로 null 허용 안함이때 오름차순 정렬이 아닌, 우리

반복문 블록에 이름을 붙이는 기능이다.이 라벨을 활용해 중첩된 반복문 안에서 특정 시점에 한 번에 바깥 루프까지 탈출할 수 있도록 한다.중첩 반복문에서는 break를 쓰면 안쪽 반복문만 종료된다.하지만 특정 조건을 만나면 모든 반복을 끝내가 바깥까지 빠져냐가야 할 때가

운영체제에 종속받지 않고 CPU가 Java 인식하고 실행할 수 있도록 해주는 가상 컴퓨터이다.→ 이 덕분에 자바는 운영체제에 독립적이라는 장점을 가지게 된다.자바 언어 자체는 CPU가 인식하지 못하기에 기계어로 컴파일을 해줘야 하는데 이때 Java는 byte코드로 변환

Junit은 Java에서 독립된 단위테스트를 지원해주는 프레임워크이다.단위 테스트? (Unit Test)특정 소스코드의 모듈이 의도한대로 잘 작동하는지 검증하기 위함Spring에서 단위 테스트는 Spring Container에 올라와있는 Bean을 테스트하는 것코드의

이 글에서는 자바가 강력한 동시성 문제를 해결하기 위해 어떤 도구들을 발전시켜왔는지 다룬다. 스레드를 효율적으로 관리하는 ExecutorService부터 현대적인 비동기 프로그래밍의 핵심인 CompletableFuture, 그리고 병렬 처리의 강력한 도구인 ForkJo

추상 클래스는 클래스지만, 이를 기반으로 인스턴스 생성이 불가능하며 하나 이상의 추상 메서드를 포함할 수 있는 클래스이다. 오직 상속을 통해 하위 클래스에서만 완성될 수 있다.추상화?공통적인 속성과 기능을 정의함으로써 코드 중복을 줄이고 클래스 간 관계를 효과적으로 설

자바에서 멀티스레드를 사용할 때 크게 2가지 방법이 있다.Thread 클래스를 상속받아 run() 메서드 오브라이드Runnable 인터페이스를 구현해 Thread 생성자에게 전달하지만 자바는 다중 상속을 지원하지 않기에 다른 클래스를 상속한 경우 Runnable 인터페

Atomic 클래스란? 자바에서는 멀티스레드 환경에서 하나의 변수를 여러 스레드가 동시에 읽고 쓰게되면 race condition이 발생한다. 이를 해결하려면 synchronized 같은 락을 걸어야 하지만, 락은 성능에 영향을 줄 수 있기에 Atomic 클래스를 사용

API 서버를 운영하다 보면 요청이 몰려 서버가 감당하기 힘든 상황이 발생한다. 이를 방지하기 위해 Rate Limiting 기법을 사용하는데, 그 중 하나가 바로 토큰 버킷이다.버킷에는 일정 개수의 토큰이 들어있음요청이 들어올 때마다 토큰을 1개씩 사용이때 토큰이 없

synchronized는 자바에서 가장 기본적인 동기화 키워드로, 한 번에 하나의 스레드만 특정 블록에 접근하도록 락을 걸어주는 기능이다.사용 간단자동으로 락 획득/해제 가능세밀한 락 제어나 타임아웃 설정은 불가능synchronized는 JVM 수준에서 락을 관리하는