본문 바로가기

전체 글59

Java Custom Exception 우선 해당 글은 자바의 Exception에 대해 알고 있어야 이해를 할 수 있다. 만약 CheckedExcetion, UncheckedException에 대한 개념을 모른다면 다른 곳에서 찾아본 후 글을 읽어보도록 하자. 이번 포스팅은 다음과 같은 내용을 다룬다.1) Custom Exception 사용 이유2) CheckedException, UncheckedException의 선택 기준Custom Exception을 왜 사용해야 할까?이번에 예외처리를 공부하면서 문득 의문이 들었다. Custom 예외를 사용하지 않더라도 이미 Runtime Exception을 상속받는 우리에게 친숙한 예외가 존재한다. ex) IllegalArgumentExcetpion(), IllegalStateException(), .. 2025. 3. 4.
Stream Stream의 단계는 3가지가 있다.1. 생성하기2. 가공하기3. 결과 만들기 생성하기- Array의 스트림 생성String[] arr2 = {"1", "2", "3", "4", "5"};Stream stream = Arrays.stream(arr2); 만약 String이 아닌 int[] 배열이 들어온다면, 자동적으로 IntStream이 생성된다.int[] array = {1, 2, 3, 4, 5};IntStream stream1 = Arrays.stream(array);  - Collection의 스트림 생성Stream stream = arrList.stream(); 스트림 생성은 매우 간단하다. 필자가 느끼기에 자주 쓰인다고 느끼는 Stream은 위의 두 형태지만, 다른 형태의 Stream 또한 생성.. 2025. 2. 25.
함수형 인터페이스 함수형 인터페이스란? java는 기본적으로 객체지향 언어이기 때문에 순수 함수와 일반 함수를 다르게 취급하고 있으며, Java에서는 이를 구분하기 위해 함수형 인터페이스가 등장했다. 람다를 사용하려면 함수가 하나인 인터페이스를 사용해야 하고, 이를 함수형 인터페이스라고 한다.예시를 통해 살펴보자.public interface MyLambdaFunction { int max(int a, int b);}a, b 중 더 큰 값을 고르는 인터페이스가 있다. 이 코드를 구현하면 기본적으로 익명 클래스를 통해 구현할 수 있다. 코드는 다음과 같다public static void main(String[] args) { MyLambdaFunction myLambdaFunction = new MyLambdaF.. 2025. 2. 25.
우테코 Level1 1주차 회고 우테코 1주차를 진행하며 느낀점을 기록해보려고 한다. 우테코 level 1 에서의 목표level 1을 시작하며, 개인적인 목표를 세웠었다. 바로 나만의 루틴을 만들고 익숙해지는 것이었다.나만의 루틴 만들고 익숙해지기우아한 테크코스는 단기간 교육이 아닌, 10개월이라는 장기간 활동이다. 이에 맞게 나만의 루틴이 필요하다고 생각했다. 내가 정한 루틴은 다음과 같다. - 등교 전 아침운동 하기 제일 어렵고, 중요한 루틴이 아닐까 생각한다. 밤에 운동을 갈 수도 있지만, 이후에 어떤 일정이 생길지 몰라 오전에 운동을 하기로 결정했다. 필자의 원래 생활패턴은 새벽 3-4시 취침 / 오후 1시 기상이었고 오전에 운동을 하는건 나에게 있어 굉장히 어려운 일이었다. 하지만 우테코 생활에 앞서 체력과 건강은 매우 중요한.. 2025. 2. 16.
Thread(3) - volatile, synchronize, lock volatile과 메모리 가시성 문제처음 들어보는 용어다. 이게 뭘까? 영한님의 예시 코드를 보면서 이해를 하는 게 가장 빠르다. 살펴보자. public class VolatileFlagMain { public static void main(String[] args) { MyTask task = new MyTask(); Thread t = new Thread(task, "work"); t.start(); sleep(1000); task.runFlag = false; log("main 종료"); } static class MyTask implements Runnable { boolean runFlag =.. 2025. 1. 19.
Thread(2) - 스레드의 상태 스레드의 상태는 다음과 같다. NEWRUNNABLEBLOCKEDWAITINGTIMED_WAITINGTERMINATED각각의 상태에 대해서 예시코드를 살펴보며 이해해보자. Newpublic class Example { public static void main(String[] args) { Thread thread = new Thread(new ExampleTask()); System.out.println(thread.getState()); thread.start(); System.out.println(thread.getState()); } static class ExampleTask implements Runnable { @O.. 2025. 1. 15.