본문 바로가기

전체 글

(433)
[Spring Boot] Spring MVC 아키텍처: 요청 처리 흐름과 주요 컴포넌트 Spring MVC 주요 구성 요소 설명1. 필터 (Filter)역할: 필터는 클라이언트의 요청이 서버에 도달하기 전에 전처리를 수행하는 컴포넌트입니다. 필터는 웹 애플리케이션의 여러 요청과 응답에 대한 공통 작업을 수행할 수 있습니다.용도:로그 기록: 요청의 메서드, URL, 클라이언트 IP 주소 등을 로그로 기록하여 요청 분석에 도움을 줍니다.인증 및 권한 검사: 사용자의 인증 상태를 확인하고, 인증되지 않은 사용자의 요청을 차단합니다.형 변환: 요청 데이터를 적절한 형식으로 변환하거나, 요청에 대한 추가 처리를 수행합니다. 2. 디스패처 서블릿 (DispatcherServlet)역할: 디스패처 서블릿은 Spring MVC의 중앙 관리자로서, 클라이언트의 HTTP 요청을 가로채어 적절한 핸들러로 전달..
[Java] 1급 커넥션 1급 커넥션이란?1급 컬렉션 (First-class Collection)은 소프트웨어 설계 원칙 중 하나로, 특정 도메인 객체를 관리할 때 컬렉션을 포장(wrapper)한 클래스를 사용하는 것을 의미합니다. 객체지향 설계의 응집도와 책임의 단일화(Single Responsibility Principle)를 강화하는 데 도움이 됩니다.  1급 컬렉션의 특징컬렉션 외에 다른 멤버 변수를 가지지 않음1급 컬렉션 클래스는 내부에 단일 컬렉션(리스트, 셋 등)만을 멤버 변수로 가지며, 불필요한 다른 필드를 포함하지 않습니다.불변 객체(Immutable)컬렉션 내부의 데이터는 외부에서 수정할 수 없도록 보장합니다. 따라서 읽기 전용으로 제공하며, 추가/삭제 작업은 새로운 객체를 반환합니다.컬렉션과 관련된 로직을 캡..
[생성 패턴] 싱글톤(Singleton Pattern) Java 예제 싱글톤이란?싱글톤 패턴은 하나의 클래스에 대해 단 하나의 인스턴스만 생성되도록 보장하고, 이 인스턴스에 전역적 접근을 제공하는 디자인 패턴입니다. 프로그램 전체에서 동일한 객체를 공유해야 할 때 사용하는 패턴입니다.   싱글톤 패턴이 필요한 이유하나의 리소스에 대한 일관성 유지데이터베이스 연결 객체나 설정 파일 관리 객체처럼 하나만 존재해야 하는 리소스를 관리할 때 사용합니다.여러 객체가 동일한 자원을 동시에 수정하면 데이터 무결성에 문제가 발생할 수 있습니다.메모리 절약 및 성능 최적화동일한 객체를 여러 번 생성하는 대신 하나의 인스턴스를 재사용하므로 메모리 낭비를 줄일 수 있습니다.글로벌 접근 가능성 제공프로그램 어디서든지 하나의 객체에 접근해야 하는 경우에 사용합니다. 싱글톤 패턴의 구조싱글톤 패턴..
[디자인 패턴] 디자인 패턴이란? 디자인 패턴이란?디자인 패턴은 개발 과정에서 반복적으로 발생하는 문제를 효율적으로 해결하기 위한 재사용 가능한 설계 구조입니다. 이는 소프트웨어 개발 시 직면하는 특정 문제들에 대해 검증된 해결 방식을 제공합니다.  디자인 패턴의 핵심 목표디자인 패턴은 객체 지향 프로그래밍의 4대 특성(캡슐화, 상속, 추상화, 다형성)과 SOLID 원칙에 기반하여 구현됩니다. 주요 목표는 다음과 같습니다:코드 재사용성: 검증된 설계를 여러 프로젝트에 쉽게 활용할 수 있습니다.유지 보수성 향상: 코드의 구조가 명확해져 수정과 관리가 쉬워집니다.확장성: 시스템을 유연하게 설계하여 변경이 필요할 때 쉽게 확장할 수 있습니다.일관성 향상: 개발팀 간에 동일한 문제 해결 방식을 공유해 협업을 원활하게 만듭니다.  디자인 패턴의 ..
[컴퓨터 구조] CPU 속도에 관여하는 것 CPU의 속도에 영향을 미치는 요소CPU는 명령어를 처리하는 부품이며, 명령어 처리 속도가 빠를수록 컴퓨터의 성능이 향상됩니다. CPU의 명령어 처리 속도를 빠르게 할 수 있는 방법은 다음과 같습니다. 1. 클럭 (Clock)클럭의 정의: 컴퓨터 부품은 클럭이라는 신호에 맞춰 작동합니다. 클럭 신호는 컴퓨터의 동작을 제어하는 타이밍 신호로, 신호가 올 때마다 CPU가 작업을 시작합니다.클럭 속도: 클럭 속도는 Hz(헤르츠)로 측정되며, 1초에 n번 신호를 반복한다면 nHz입니다. 예를 들어, 1초에 10번 신호가 오면 10Hz입니다. 일반적인 CPU의 속도는 다음과 같습니다:저가형 CPU: 약 2.5GHz ~ 3.5GHz중급형 CPU: 약 3.5GHz ~ 4.5GHz고급형 CPU: 약 4.0GHz ~ 5..
[프로그래머스 (Kotlin)] 배열의 유사도 코드 힌트1. Set을 활용한 교집합Set 자료구조를 사용하여 두 배열의 교집합을 구하는 방법입니다.Set은 중복을 허용하지 않기 때문에, 공통된 원소만 남길 수 있습니다.2. 포함 여부 확인이 방법은 포함 여부를 체크하는 contains와 개수를 세기 위해 count를 사용하는 간단한 방식입니다.3. for문 사용가장 원초적인 방법이며 코틀린이 처음 공부하는 언어라면 이 방법을 추천합니다.  정답은 더보기 클릭더보기class Solution { fun solution(s1: Array, s2: Array): Int { val set1 = s1.toSet() val set2 = s2.toSet() return (set1.intersect(set2)).size ..
[Python] 넘파이(Numpy) 배열 넘파이(Numpy)란?Numpy는 Python 기반의 수치 해석 라이브러리로, 선형대수 연산 및 다차원 배열 처리를 위한 다양한 함수를 제공합니다. Numerical Python의 약자이며, 과학 컴퓨팅과 데이터 분석에 자주 사용됩니다. Numpy 설치 및 사용 방법pip install numpy# np(줄인말)는 표준화가 되어 있으며 numpy는 np로 사용합니다import numpy as np   Numpy 배열과 파이썬 리스트의 차이점연산 가능 여부np.array([1, 2, 3]) + np.array([4, 5, 6]) # 결과: [5, 7, 9][1, 2, 3] + [4, 5, 6] # 결과: [1, 2, 3, 4, 5, 6] Numpy: 배열 간 수학 연산 가능 Python List: 덧셈..
[자료구조] 큐(Queue) 큐(Queue)란?큐(Queue)는 한쪽에서 데이터를 삽입하고 반대쪽에서 데이터를 삭제하는 선입선출(FIFO, First In First Out) 자료구조입니다.  큐의 현실 예시: 줄 서기식당에서 줄을 서면, 가장 먼저 도착한 사람이 가장 먼저 입장합니다. 이는 큐의 선입선출 특징과 같아 큐를 이해하는 좋은 예시가 됩니다. 큐의 종류원형 큐 (Circular Queue)삽입과 삭제 위치를 원형으로 연결하여 사용합니다.배열의 끝에 도달해도 공간을 재활용할 수 있는 특징이 있습니다.배열 기반 큐에서 공간 낭비를 줄이기 위해 사용됩니다.덱 (Deque: Double-Ended Queue)양쪽에서 삽입과 삭제가 가능한 큐입니다.Java에서는 기존의 Queue보다 Deque를 더 권장합니다.이유: Deque는 ..