본문 바로가기

전체 글

(471)
[생성 패턴] 싱글톤(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는 ..
[OS] 동기화 기법 뮤텍스 락, 세마포 동기화의 중요성: 레이스 컨디션과 임계 구역공유 자원이란?프로세스나 스레드가 공유하는 자원을 공유 자원(shared resource)이라고 합니다. 공유 자원은 메모리, 파일, 전역 변수, 입출력 장치 등 다양합니다.여러 프로세스나 스레드가 동시에 동일한 공유 자원에 접근할 경우, 예기치 않은 문제가 발생할 수 있습니다.  레이스 컨디션 문제다음은 두 개의 스레드가 count라는 공유 변수를 각각 100번씩 증가시키는 예제입니다.public class RaceConditionExample { static int count = 0; // 공유 변수 public static void main(String[] args) { Thread t1 = new Thread(new Counter(..
[Spring Boot] Filter란? 필터를 활용한 요청 및 응답 로깅 Filter란?Filter는 클라이언트의 요청과 응답을 가로채는 역할을 합니다. 스프링 프레임워크에서는 필터가 DispatcherServlet 이전과 이후에 동작하며, 웹 컨텍스트 영역에서 실행됩니다. 스프링 부트에서는 기본적으로 톰캣 서버가 제공되며, 필터는 톰캣 서버와 DispatcherServlet 사이의 요청 및 응답을 제어할 수 있습니다.  Filter의 활용데이터 변환 및 조작요청 또는 응답 데이터를 변환하거나 가공합니다.요청 로깅 (Logging)클라이언트의 요청 데이터를 기록합니다.인증 및 권한 확인요청에 대한 인증과 권한을 필터 단계에서 확인합니다.필터 체인(Filter Chain) 구성여러 필터를 연속적으로 실행해 특정 작업을 처리할 수 있습니다.  예시: 학생 등록 시스템에서 발생할 ..