모든 기록

14 / 20 페이지
스프링 핵심 원리 기본편

스프링 핵심 원리 (2) - 관심사의 분리

1. 개요 이전 글에서 좋은 객체 지향 설계의 핵심은 다형성이고, 이를 실제로 잘 활용하기 위한 지침이 SOLID 원칙이라는 것을 정리했다. 이번 글에서는 애플리케이션에 새로운 할인 정책을 추가해보면서 다형성만으로는 OCP와 DIP를 지킬 수 없다는 것을 직접 확인하고…

·7분
프로그래머스

프로그래머스 - 디스크 컨트롤러 (lv2) C++

문제 디스크 컨트롤러 문제 풀이 아이디어 운영체제의 프로세스 스케줄링 알고리즘 중 하나를 구현하는 문제로, 비선점형(Non preemptive) 방식으로 동작하는 스케줄러를 작성해야 한다. 우선순위 큐를 이용하면 될 것 같다는 것은 운영체제를 공부한 사람이라면 어렵지…

·2분
JAVA

JAVA (27) - Executor 기초

1. 개요 자바에서 멀티스레드 프로그래밍을 할 때 new Thread() 를 통해 직접 스레드를 생성하고 관리하는 방식은 여러 한계를 지닌다. 스레드 생성과 파괴에 소요되는 오버헤드가 크고, 무분별한 스레드 생성은 시스템 자원 고갈로 이어질 수 있다. 자바 5부터 도입…

·7분
JAVA

JAVA (26) - synchronized와 동기화

1. 개요 멀티스레드(Multi thread) 환경에서는 여러 스레드가 하나의 공유 자원에 동시에 접근하여 값을 읽거나 수정할 수 있다. 이때 적절한 제어가 이루어지지 않으면 데이터의 일관성이 깨지는 신뢰성 문제가 발생한다. 자바에서는 이러한 멀티스레드 환경에서 발생할…

·11분
JAVA

JAVA (25) - Thread 와 Runnable

1. 개요 자바(Java) 애플리케이션은 기본적으로 하나의 메인 스레드(Main Thread)에서 코드를 순차적으로 실행한다. 하지만 네트워크 통신, 파일 입출력, 복잡한 연산 등 시간이 오래 걸리는 작업을 처리할 때는 작업이 끝날 때까지 프로그램 전체가 대기하는 현상…

·4분
JAVA

JAVA (24) - Optional

1. 개요 자바 프로그래밍에서 가장 흔하게 발생하는 예외 중 하나는 NullPointerException (NPE)이다. NPE를 방지하기 위해 과거에는 코드 곳곳에 if (obj != null) 과 같은 조건문을 가득 채워 넣어야 했고, 이는 코드의 가독성을 크게 떨…

·6분
JAVA

JAVA (23) - 람다와 스트림

1. 개요 Java 8에서 도입된 가장 큰 변화 중 하나는 함수형 프로그래밍 스타일의 도입이다. 그 중심에는 람다식(Lambda Expression)과 스트림 API(Stream API)가 존재한다. 람다식을 통해 코드를 더욱 간결하고 직관적으로 작성할 수 있게 되었으…

·13분
JAVA

JAVA (22) - 가비지 컬렉션

1. 개요 자바(Java)는 C나 C++과 달리 개발자가 객체의 메모리를 직접 해제하지 않는다. JVM(Java Virtual Machine)의 가비지 컬렉터(Garbage Collector)가 더 이상 사용할 수 없는 객체를 찾아 메모리를 자동으로 회수하기 때문이다.…

·10분