[Spring] 싱글톤 패턴(Singleton pattern)
·
Spring/Spring
1. 싱글톤 패턴(Singleton pattern) 싱글톤 패턴은 디자인 패턴의 한 종류로, 단 하나의 유일한 객체를 만들기 위한 코드 패턴이다. 자주 사용되는 객체나, 메모리를 많이 차지하는 객체 등을 싱글톤으로 만들면, 자원을 효율적으로 사용할 수 있습니다. 보통 싱글톤 패턴이 적용된 객체가 필요한 경우는 그 객체가 리소스를 많이 차지하는 역할을 하는 무거운 클래스일때 적합하다. ● 일반적으로 클래스는 필요에 따라 여러 개의 인스턴스를 생성할 수 있습니다. 이러한 인스턴스들은 각각 독립된 상태와 행동을 가질 수 있습니다. ● 싱글톤 패턴을 사용하면, 해당 클래스의 인스턴스는 오직 하나만 생성됩니다. 이 하나의 인스턴스는 전역적으로 접근 가능하며, 여러 모듈들이 이를 공유하게 됩니다. 이렇게 하면 여러..
[OOP] C3. 자바와 객체지향
·
Java/OOP
1. 클래스(개념), 객체(실체) 클래스는 분류에 대한 개념이지 실체가 아니다. 하지만 객체는 실체다. 클래스는 사람이고, 객체는 손흥민이다. 클래스는 펭귄이고, 객체는 뽀로로이다. 클래스와 객체를 구분하는 방법 중 하나는 나이를 물어보는 것이다. ● 사람의 나이는 몇 살인가? VS 손흥민의 나이는 몇 살인가? ● 펭귄의 나이는 몇 살인가? VS 뽀로로의 나이는 몇 살인가? 클래스를 실체가 아닌 개념으로써 받아들여야 자바 프로그래밍에서 혼동하지 않게 된다!! 2. 추상화 : 모델링 객체 지향의 추상화는 모델링을 의미합니다. 추상화는 구체적인 개념이나 객체를 분해하여 그 중에서 관심 있는 특성만을 가지고 재조합하는 과정을 말합니다. 구현하고자 하는 것을 하나의 클래스로 모델링, 추상화하게 되는데 여기서 클..
[Spring] 한글 인코딩 에러 해결(한글 ➡️ ??)
·
Spring/Spring
1. 문제 정의 Spring Boot로 개발한 웹 애플리케이션에서 한글이 '?'로 표시되는 문제를 겪을 수 있습니다. 이는 대부분 인코딩 설정 문제 때문입니다.인코딩: 데이터를 특정한 규칙에 따라 다른 형태나 형식으로 변환하는 과정을 의미합니다. 특히 웹 애플리케이션에서의 인코딩은 주로 문자 데이터를 어떤 문자 체계(예: UTF-8, EUC-KR 등)를 사용하여 바이트 코드로 변환할 것인지를 결정하는 방식을 말합니다.2. 해결 방법이 문제를 해결하는 가장 간단한 방법은 application.properties 또는 application.yml파일에server.servlet.encoding.force-response=true 설정을 추가하는 것입니다.2.1) application.properties 파일인..
[OOP] ==과 equals()의 차이점
·
Java/OOP
1. 자바에서 ==와 equals()의 차이점 자바에서 매우 중요한 개념인 == 연산자와 equals() 메서드의 차이점에 대해 알아보려고 합니다. 이 두 가지는 모두 객체를 비교하는 데 사용되지만, 그 방식과 결과는 상황에 따라 매우 다를 수 있습니다. 그러니 자세히 살펴보도록 하겠습니다. 2. == 연산자 2.1) 기본 데이터 타입(리터널 선언) - 값 자바에서 == 연산자는 주로 기본 데이터 타입의 값을 비교할 때 사용됩니다. byte, short, int, long, float, double, char, boolea 등의 값이 같은지 비교할 때는 == 연산자를 사용하면 됩니다!! // 리터널로 선언 int a = 2024; int b = 2024; System.out.println(a == b);..
[DB] 데이터베이스 정규화: 중복을 최소화하고 일관성을 유지하는 방법
·
Data Base/DB 모델링
정규화(Normalization)란? 정규화는 데이터베이스의 테이블을 적절하게 분해하여 중복을 제거하고, 관련 데이터를 논리적으로 그룹화하는 과정입니다. 이를 통해 데이터의 일관성과 무결성을 유지하면서 데이터베이스의 성능과 유지보수성을 향상시킬 수 있습니다. 정규화는 여러 단계로 나누어지며, 각 단계는 테이블의 구조를 최적화하는 데 도움을 줍니다. 주요한 정규화 수준은 다음과 같습니다. 1차 정규화(1NF) 1차 정규화는 테이블의 컬럼이 원자값(Atomic Value)을 갖도록 하는 것을 의미합니다. 즉, 테이블의 컬럼에는 중복되는 값이 없어야 합니다. 중복되는 데이터는 새로운 테이블로 분리하여 관계를 맺습니다. 2차 정규화(2NF) 2차 정규화는 1차 정규화를 만족하면서, 부분 함수적 종속성(Parti..
[OOP] 업캐스팅(Upcasting), 다운캐스팅(Downcasting)
·
Java/OOP
Parent p = new Child(); //업캐스팅 -p는 Parent형. Child c = (Child) p; //다운캐스팅! -p는 Child형. 업캐스팅(upcasting)과 다운캐스팅(downcasting)은 객체 지향 프로그래밍에서 클래스의 상속과 관련된 개념이다. 말 그대로 업캐스팅은 하위 클래스에서 상위 클래스로 형 변환하는 것을 의미한다 다운캐스팅은 상위 클래스에서 하위 클래스로 형 변환을 하는것을 의미 한다. 업캐스팅 (Upcasting) 업캐스팅은 하위 클래스의 객체를 상위 클래스의 객체로 변환하는 것을 말합니다. 이 변환은 자동으로 이루어집니다. class Mammal { void walk() { System.out.println("Mammal is walking"); } } cl..
[BaekJoon] 1931번 회의실 배정(Kotlin)
·
Problem Solving
https://www.acmicpc.net/problem/1931 1931번: 회의실 배정 (1,4), (5,7), (8,11), (12,14) 를 이용할 수 있다. www.acmicpc.net 1. 문제 그리디 알고리즘 문제이고 나는 그림을 그려 문제에 접근하였다. 2. 코드 import java.util.* fun main(){ val sc = Scanner(System.`in`) var n = sc.nextInt() var arr = Array(n){Array(2){0}} var end = 0 var cnt = 0 for(i in 0 until n){ arr[i][0] = sc.nextInt() // 시작시간 arr[i][1] = sc.nextInt() // 종료시간 } arr.sortWith(co..
[OOP] C6. SOLID: 효율적인 객체지향 설계를 위한 5대 원칙
·
Java/OOP
0. 객체 지향 설계 5원칙 SOLID SOLID는 객체 지향 설계 5원칙을 앞 글자를 따서 만든 말이다. 소프트웨어의 결합도는 낮추고, 응집도는 높이는 고전 원칙을 객체 지향의 관점에서 재정립한 것이라고 할 수 있다. ● 결합도 모듈(클래스) 간의 상호 의존 정도를 나타낸다. 결합도가 낮으면 모듈 간의 상호 의존성이 줄어들어 객체의 재사용이나 수정, 유지보수가 용이하다 . ● 응집도 하나의 모듈 내부에 존재하는 구성 요소들의 기능적 관련성을 말한다, 응집도가 높은 모듈은 하나의 책임에 집중하고 독립성이 높아서 재사용이나 기능의 수정, 유지보수가 용이하다. 1. Single Responsibility Principle (단일 책임 원칙) 클래스는 단 한개의 책임을 가져야 한다. 클래스를 변경하는 이유는 ..
[OOP] 가비지 컬렉션(Garbage Collection) - 생성과 소멸
·
Java/OOP
1. 가비지 컬렉션(Garbage Collection) 가비지 컬렉션은 영어로 Garbeage Collection으로 줄여서 GC라고도 부릅니다. 가비지 컬렉션은 자바의 메모리 관리 방법 중의 하나로 JVM의 Heap 영역에서 동적으로 할당했던 메모리 영역 중 필요 없게 된 메모리 영역을 주기적으로 삭제하는 프로세스를 말합니다. 2. 가비지 컬렉터(Garbage Collector) 가비지 컬렉터는 가비지 컬렉션을 수행하는 실제 동작을 담당하는 컴포넌트입니다. 자바 가상 머신(JVM)에서 실행되며, 가비지 컬렉션 알고리즘에 따라 사용하지 않는 객체를 탐지하고 제거합니다. 가비지 컬렉터는 자동으로 동작하며, 개발자가 직접 메모리 관리를 신경쓰지 않아도 됩니다. ● C와 C++ 같은 Unmanaged lang..
[OOP] Call by Value 와 Call by Reference
·
Java/OOP
'Call by Value'와 'Call by Reference'에 대해 알아보겠습니다. 이 두 개념은 함수에 인자를 전달하는 방식에 대한 이해를 돕고, 자바 코드의 동작을 예측하는 데 도움이 됩니다. 1. Call by Value(값에 의한 호출) 'Call by Value'는 함수에 인자를 전달할 때 인자의 값만을 복사해서 전달하는 방식을 말합니다. 이 방식에서는 원본 변수의 값이 함수 내에서 변경되더라도, 원본 변수에는 영향을 주지 않습니다. 자바에서 원시 타입(primitive types) 변수를 전달할 때 'Call by Value' 방식이 적용됩니다. 예를 들어, 아래의 코드를 보겠습니다. public class Main { static void updateValue(int value) { v..
JoonYong
'분류 전체보기' 카테고리의 글 목록 (5 Page)