본문 바로가기

전체 글93

[Spring] Day 16 - Spring Bean Spring Bean이란? Bean Container와 @Component, @Bean 완벽 이해Java Backend 취업 준비 Day 16Spring Bean / Bean Container / Component Scan / @Component / @BeanJava와 Spring을 공부하다 보면 Bean, Bean Container, Component Scan, Dependency Injection 같은 용어를 자주 만나게 됩니다.처음에는 annotation만 외우기 쉽지만, 실제 면접에서는 다음과 같은 질문을 받을 수 있습니다.Spring Bean이란 무엇인가?Spring은 Bean을 어떻게 생성하고 관리하는가?@Component와 @Bean의 차이는 무엇인가?오늘은 Spring의 객체 관리 방식의 .. 2026. 10. 6.
[Spring] Day 15 - Spring IoC와 DI 이해하기 Java Core 학습 14일을 마치고 오늘부터 본격적으로 Spring 학습을 시작했다.이번 Spring 학습의 목표는 단순히 annotation을 외우는 것이 아니라, Spring이 객체를 어떻게 생성하고 관리하며 객체 간 의존성을 어떻게 연결하는지 이해하는 것이다.Day 15에서는 Spring의 가장 기본이 되는 **IoC(Inversion of Control)**와 **DI(Dependency Injection)**를 학습했다.1. Spring은 왜 사용하는가?Java로 애플리케이션을 개발하다 보면 객체를 직접 생성하고 객체 사이의 관계를 직접 연결하게 된다.예를 들어 UserService에서 UserRepository를 사용하는 경우 다음과 같이 작성할 수 있다. public class UserS.. 2026. 10. 5.
[Java] Day 14 - 종합 복습 + 면접 준비 오늘은 Java 학습 14일 차이자 2주 학습의 마지막 날입니다.Day 1부터 Day 13까지 Java 기본 문법부터 JVM, Thread, 동시성까지 학습했기 때문에 오늘은 새로운 내용을 추가하기보다는 지금까지 배운 내용을 하나의 흐름으로 연결해서 복습하고 면접 질문에 답할 수 있는지 확인하는 것을 목표로 했습니다.특히 백엔드 개발자 면접에서는 단순히 Java 문법을 알고 있는 것보다,"왜 사용하는가?""내부적으로 어떻게 동작하는가?""어떤 상황에서 선택하는가?"를 설명하는 것이 중요합니다.이번 글에서는 2주 동안 학습한 내용을 크게 세 가지 영역으로 정리해 보겠습니다.JavaJVMConcurrency1. Java1-1. OOPOOP(Object-Oriented Programming)는 프로그램을 객체.. 2026. 10. 4.
[Java] Day 13 - volatile + Lock + CompletableFuture 오늘은 Java 동시성 학습의 핵심인 volatile, Atomic, Lock, ReentrantLock, tryLock, CompletableFuture를 공부했다.Day 12에서는 여러 스레드가 동시에 공유 자원을 변경하면서 발생하는 Race Condition을 학습했다면, Day 13에서는 이런 동시성 문제를 해결하기 위해 어떤 도구를 선택해야 하는지 알아보았다.오늘 학습의 핵심은 다음과 같다.volatile→ 메모리 가시성Atomic→ 단순 연산의 원자성Lock→ 임계 영역 보호tryLock→ Lock 획득 여부를 제어CompletableFuture→ 비동기 작업 실행 및 결과 조합1. volatile1-1. volatile이 필요한 이유멀티스레드 환경에서는 하나의 스레드가 변경한 값을 다른 스레.. 2026. 10. 3.
[Java] Day 12 - 동시성 문제 ⭐⭐⭐ Java 학습 Day 12에서는 **동시성 문제(Concurrency Problem)**를 학습했습니다.이번 학습의 핵심은 여러 Thread가 하나의 공유 데이터를 동시에 변경할 때 발생하는 Race Condition을 직접 확인하고, synchronized와 AtomicInteger를 이용해 해결하는 것입니다.특히 백엔드 개발에서는 재고 차감, 주문 처리, 쿠폰 발급, 포인트 차감, 카운터 증가 등 여러 요청이 동시에 하나의 데이터를 변경하는 상황이 자주 발생합니다.1. 동시성 문제란?여러 Thread가 동시에 실행되는 환경에서는 하나의 공유 데이터에 여러 Thread가 접근할 수 있습니다.예를 들어 재고가 100개라고 가정해 보겠습니다.Stock = 1001000개의 Thread가 동시에stock--.. 2026. 10. 2.
[Java] Day 11 - Thread 오늘은 Java의 Thread와 Thread Pool의 기본 구조에 대해 학습했다.백엔드 개발에서는 동시에 여러 요청을 처리해야 하는 경우가 많기 때문에 Thread에 대한 이해가 중요하다. 특히 실무에서는 Thread를 직접 생성하기보다는 ExecutorService와 Thread Pool을 이용해 작업을 관리하는 경우가 많다.이번 학습에서는 다음 내용을 정리했다.ProcessThreadRunnableCallableFutureExecutorExecutorServiceThread Pool1. ProcessProcess는 쉽게 말하면 실행 중인 프로그램이다.예를 들어 다음과 같은 프로그램을 실행하면 각각 운영체제에서 하나의 Process로 동작할 수 있다.ChromeIntelliJ IDEAMySQLJava.. 2026. 10. 1.
[Java] Day 10 - Garbage Collection 1. Garbage Collection이란?Java를 공부하면서 자주 듣는 개념 중 하나가 GC(Garbage Collection)입니다.GC는 JVM의 Heap 메모리에서 더 이상 사용되지 않는 객체를 찾아 메모리를 회수하는 기능입니다.C/C++과 같은 언어에서는 개발자가 직접 메모리를 할당하고 해제하는 경우가 많지만, Java에서는 JVM이 GC를 통해 사용하지 않는 객체의 메모리를 자동으로 관리합니다.간단하게 표현하면 다음과 같습니다.객체 생성 ↓Heap에 저장 ↓더 이상 참조하지 않음 ↓GC 대상 ↓메모리 회수2. GC는 객체가 더 이상 사용되지 않는다는 것을 어떻게 알까?GC는 단순히 변수에 값이 null인지 확인하는 방식으로 객체를 판단하지 않습니다.핵심은 Reachability.. 2026. 9. 26.
[위스키 리뷰] 발렌타인 싱글몰트 글렌버기 16년 스몰배치 오늘 리뷰할 위스키는 발렌타인 싱글몰트 글렌버기 16년 스몰배치입니다.발렌타인이라고 하면 보통 블렌디드 위스키를 먼저 떠올리게 되는데, 이번에 마셔본 제품은 글렌버기(Glenburgie) 싱글몰트입니다.개인적으로 글렌버기는 처음 마셔봤는데, 첫 잔을 마시자마자 나온 생각은 딱 하나였습니다."오, 이거 괜찮다!"올해 마셔본 위스키 중에서는 가장 맛있게 느껴졌습니다.발렌타인 싱글몰트 글렌버기 16년 스몰배치발렌타인 공식 홈페이지에 따르면 이 제품은 마스터 블렌더 샌디 히슬롭(Sandy Hyslop)이 독창적이고 풍부한 아로마를 만들기 위해 72개의 아메리칸 오크 캐스크를 직접 선별해 만든 제품이라고 합니다.글렌버기 특유의 과일 캐릭터와 아메리칸 오크에서 오는 달콤한 풍미가 주요 특징이라고 합니다.공식 테이스.. 2026. 9. 15.
[Java] Day 9 - JVM Memory ⭐⭐⭐ Java 개발을 하다 보면 다음과 같은 질문을 자주 만나게 됩니다.객체는 메모리 어디에 생성될까?new로 객체를 생성하면 내부적으로 어떤 일이 일어날까?Stack과 Heap은 어떤 차이가 있을까?user = null을 하면 객체는 바로 삭제될까?Garbage Collector는 어떤 기준으로 객체를 삭제할까?GC Root는 무엇일까?이번 Day 9에서는 JVM의 메모리 구조를 이해하고, Java 객체와 Reference가 실제 메모리에서 어떤 관계를 가지는지 학습했습니다.1. JVM Memory 구조JVM의 메모리 구조를 개념적으로 보면 다음과 같습니다.JVM ├── Heap ├── Stack ├── Metaspace └── PC Register각 영역의 역할은 다음과 같습니다.영역주요 역할Heap객체와.. 2026. 9. 15.
[Java] Day 8 - Exception Java 스터디 2주 차를 시작하면서 오늘은 Exception(예외 처리)에 대해 학습했습니다.백엔드 개발에서는 잘못된 요청, 존재하지 않는 데이터, 재고 부족, 인증 실패 등 다양한 예외 상황이 발생합니다.따라서 단순히 오류가 발생했을 때 프로그램을 종료시키는 것이 아니라, 예외를 적절하게 발생시키고 처리하는 방법을 이해하는 것이 중요합니다.오늘은 Java의 예외 구조부터 try/catch, finally, throw, throws, 그리고 실무에서 자주 사용하는 Custom Exception까지 정리했습니다.1. Exception이란?프로그램을 실행하다 보면 정상적인 흐름에서 벗어나는 상황이 발생할 수 있습니다.예를 들어 다음 코드를 실행하면:int result = 10 / 0;다음과 같은 예외가 발.. 2026. 9. 14.
[Java] Day 7 - Stream API 정리 Java Stream API 정리Java 학습 7일차.이번에는 실무 Java 코드에서 자주 사용하는 Stream API를 학습했다.Stream은 단순히 데이터를 반복 처리하는 문법이 아니라, 여러 데이터 처리 작업을 하나의 파이프라인으로 연결해서 표현할 수 있도록 해준다.오늘은 filter, map, flatMap, sorted, distinct, limit, groupingBy, toMap, reduce 등을 학습하고 상품 데이터를 대상으로 실습해 보았다.1. Stream이란?Stream은 Collection 등의 데이터를 처리하기 위한 API다.데이터를 직접 저장하는 자료구조가 아니라, 데이터를 원하는 형태로 가공하기 위한 처리 흐름이라고 이해하면 쉽다.List numbers = List.of(1, .. 2026. 9. 12.
[Java] Day 6 - Lambda + Functional Interface Java 학습 6일 차.이번에는 Java에서 함수형 프로그래밍을 지원하기 위해 제공하는 Lambda(람다)와 Functional Interface(함수형 인터페이스)를 학습했다.특히 Predicate, Function, Consumer, Supplier의 차이와 익명 클래스와 Lambda의 차이, Method Reference까지 정리했다.🎯 학습 목표Lambda의 개념을 이해한다.Functional Interface가 무엇인지 이해한다.Predicate / Function / Consumer / Supplier의 차이를 이해한다.익명 클래스와 Lambda의 차이를 이해한다.Method Reference를 사용할 수 있다.1. LambdaLambda란?Lambda는 메서드를 하나의 값처럼 표현할 수 있.. 2026. 9. 11.
반응형