분류 전체보기
-
Spring Boot에서 사용되는 다양한 Bean 등록 방법Spring&SpringBoot 2025. 2. 10. 09:23
Spring Boot에서 사용되는 다양한 Bean 등록 방법들과 각각의 장단점을 표로 정리하고, 가장 많이 이용되는 두 가지의 예시를 작성해둔 문서입니다. Spring Boot에서 Bean을 등록하는 방법 자동 등록수동 등록활용 상황@Component 계열 어노테이션으로 Bean 등록✅❌일반적인 Spring Boot 프로젝트Java 설정을 통한 Bean 등록❌✅외부 라이브러리 또는 복잡한 의존성 관리 필요XML 설정을 통한 Bean 등록❌✅레거시 프로젝트 유지보수@Import를 사용한 Bean 등록✅✅설정 클래스를 묶어서 관리FactoryBean을 사용한 동적 Bean 등록✅✅특정 조건에 따른 동적 객체 생성ApplicationContext.registerBean를 통한 동적 Bean 등록❌✅런타임에 B..
-
웹 서버(Web Server)와 웹 애플리케이션 서버(Web Application Server, WAS)의 차이웹 개발 2025. 2. 10. 09:06
웹 서버(Web Server)와 웹 애플리케이션 서버(Web Application Server, WAS) 의 차이를 Application이란 단어를 중점으로 비교합니다.웹 애플리케이션 서버(Web Application Server, WAS)의 구조도를 보고, 웹 애플리케이션 서버(Web Application Server, WAS)안에 웹 서버(Web Server)가 있음을 확인한 후웹 서버(Web Server)와 웹 애플리케이션 서버(Web Application Server, WAS)를 분리하는 이유에 대한 이야기를 추가적으로 합니다.최종적으로 웹 서버(Web Server)와 웹 애플리케이션 서버(Web Application Server, WAS)의 종류를 확인한 후 마무리되는 문서입니다. 1. 웹 서..
-
슬라이딩 윈도우(Sliding Window)알고리즘 2025. 2. 7. 01:08
슬라이딩 윈도우(Sliding Window)에 대해 이야기합니다. 브루트포스(Bruteforce, 완전 탐색)와 비교한 코드 조각을 기입해뒀습니다. 슬라이딩 윈도우로 풀 수 있는 백준 문제도 끝에 첨부합니다."슬라이딩 윈도우를 가볍게 이해하기"가 목표라면 도움이 되는 문서입니다. 슬라이딩 윈도우(Sliding Window)는 "고정된 크기 또는 가변 크기의 윈도우(부분 구간)를 한 칸씩 이동하면서, 이전 계산 결과를 활용하여 중복 연산을 줄이는 기법"입니다.윈도우는 말 그래도 "구간"입니다. 중복 연산을 줄이는 기법이란 건, 아래 예제에서 얘기할 브루트 포스(Bruteforce)과 비교하면 이해할 수 있습니다. 슬라이딩 윈도우는 연속된 배열의 합이나 특정 패턴을 구할 때 사용됩니다. 특정 패턴을 ..
-
프레임워크와 라이브러리의 차이점소프트웨어 개발 개념 2025. 2. 3. 10:00
이 문서를 작성하게 된 이유에 대해서 설명하고, 프레임워크와 라이브러리의 간단 개념과 차이점을 서술한 문서입니다. 구체적인 예시에서는 Spring Framework와 일반 Java 라이브러리를 통해 예시를 듭니다.INTRO : 왜 프레임워크와 라이브러리가 헷갈릴까요?왜 프레임워크와 라이브러리의 차이에 대해서 이야기하는 문서들이 많을까요?두 개념이 "편리한 개발을 위해서" 이용되는 도구라는 공통점 때문일 거라 생각합니다. 프레임워크, 라이브러리 둘 다 미리 만들어진 코드의 집합이고,그리고 그 코드가 개발자가 필요로 하는 기능을 포함하고 있다면, 직접 구현하는 수고를 덜 수 있습니다. 이 두 가지 이점은 코드의 재사용과 생산성을 높이는 역할을 합니다.동일한 기능이 필요할 때, 직접 구현하는 대신 기존 코드를..
-
Spring Framework가 탄생하게 된 배경Spring&SpringBoot 2025. 2. 3. 09:28
Spring 프레임워크 등장 배경을 간단히 서술한 문서입니다. Spring Framework가 나오기 전에는 앤터프라이즈 애플리케이션 개발에 EJB(Enterprise JavaBeans)라는 프레임워크가 있었습니다.그러나 EJB에는 복잡성과 높은 결합도, 무거운 컨테이너, 느린 초기화, 유연성 부족, 테스트의 어려움 등의 문제가 있었습니다. 복잡성과 높은 결합도EJB 에는 클래스(*컴포넌트라 부릅니다. 이 뒤로는 전부 컴포넌트라 표현하겠습니다.) 간 의존성이 매우 강하게 결합돼 있었습니다.클래스 A가 클래스 B에 의존한다면 B 객체를 먼저 생성해야하는 순서에 제약이 생깁니다.EJB를 사용할 때는 개발자가 JNDI(Java Naming and Directory Interface)를 이용해 수동으로 의존성을..
-
Gradle을 사용한 Spring Boot 프로젝트의 구조와 설정Spring&SpringBoot 2025. 1. 31. 01:19
Gradle을 사용한 Spring Boot 프로젝트의 구조와 설정을 정리한 문서입니다.복습 용으로, 개인 학습과 문서화 연습의 성격이 강합니다.개발환경IDE : IntelliJ IDEA Ultimate 2024.3.1.1JDK : JetBrains Runtime (JBR) 17.0.12빌드 도구 : Gradle 8.12.1 프로젝트 환경Java : 17Spring Boot : 3.4.2JDK : JetBrains Runtime (JBR) 17.0.12 빌드 도구 : Gradle 8.12.1 Spring Boot 프로젝트 생성Type : Gradle프로젝트 타입이자, 빌드 용 툴을 설정합니다.해당 문서는 Gradle을 사용한 Spring Boot 프로젝트 구조를 복습하는 과정이기에 Gradle을 선택했습..
-
O(n)과 O(log n)의 성능 차이알고리즘 2025. 1. 22. 11:02
Big O의 O(n)과 O(log n)의 성능 비교실생활에서 O(n)만큼의 시간이 드는 행위, O(log n)만큼의 시간이 드는 행위를 찾고, 코드로 구현해 실행 결과를 확인한 뒤, 성능 차이를 비교한 문서입니다. Big O에서 O(n)과 O(log n)O(n)과 O(log n)은 시간 복잡도와 공간 복잡도를 표현하는 점근 표기법(Big O 표기법의) 중 하나이다. 입력 데이터의 크기를 n이라고 할 때, 연산 횟수가 최대 n만큼 필요한 경우를 O(n), log n 만큼 필요한 경우 O(log n) 으로 표현한다.예를 들어 데이터의 크기가 1백만 개(1_000_000)일 때,O(n)은 1_000_000 번을, O(log n)은 (*일반적으로 log의 밑은 10이나, Big O 에서 log의 밑은 2) 약..
-
HashSet 의 내부 동작 방식Java 2025. 1. 22. 11:01
HashSet의 내부 동작 방식과 포함된 중복 제거 메커니즘에 대해 서술한 문서입니다.HashSet의 실제 코드를 읽어 보며 분석합니다. 공부하는 과정을 메모해둔 것으로 메서드 등을 찾는 용도로 읽기에는 부적절합니다. HashSet 클래스 코드더보기더보기더보기/* * Copyright (c) 1997, 2021, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it * under the terms of the GNU Gene..