전체 글

개발 공부 기록. https://github.com/junseoparkk
📙 CS/📙 Design Pattern

[Design Pattern] Singleton Pattern (싱글톤 패턴)

1️⃣ Singleton Pattern Singleton Pattern (싱글톤 패턴) 은 하나의 클래스가 오직 하나의 인스턴스만 가지는 패턴이다. 싱글톤 인스턴스는 최초 생성시 하나만 만들어지며, 해당 인스턴스를 다른 모듈이 공유하며 사용한다. Java에서 가장 기본적인 싱글톤의 형태는 다음과 같다. public class Singleton{ //객체는 하나의 인스턴스만 가진다. private static Singleton instance = new Singleton(); //생성자를 'private'로 제한하여 외부에서 싱글톤 객체를 만들지 못하게 한다. private Singleton() { } //get 메서드만을 통해서 싱글톤 객체를 얻을 수 있다. public static Singleton g..

📙 CS/📙 Algorithm

[Algorithm] Time Complexity : 시간 복잡도

1️⃣ Time Complexity : 시간 복잡도 우선 시간 복잡도를 알기 위해선 알고리즘(Algorithm) 의 개념을 이해해야 한다. 사전에 의하면 알고리즘은 수학과 컴퓨터 과학, 언어학 또는 관련된 분야에서 어떠한 문제를 해결하기 위해 정해진 일련의 절차이며, 계산을 실행하기 위한 단계적 절차를 의미한다. 즉, 문제 풀이에 필요한 계산 절차 또는 처리 과정의 순서를 말한다. 그렇다면 좋은 알고리즘, 효율적인 알고리즘은 무엇일까? 어떻게 보면 연산의 횟수와 데이터의 크기에 따른 알고리즘의 수행 시간이 적을수록 효율적인 알고리즘이라고 할 수 있다. 이를 계산하기 위한 방법이 시간 복잡도이며, 주로 'Big-O (빅-오)' 표기법을 사용한다. 이는 알고리즘의 수행 시간을 평가하는 척도라고 할 수 있다...

📕 Coding Test/📕 백준

[JAVA] 백준 1009: 분산처리

https://www.acmicpc.net/problem/1009 1009번: 분산처리 입력의 첫 줄에는 테스트 케이스의 개수 T가 주어진다. 그 다음 줄부터 각각의 테스트 케이스에 대해 정수 a와 b가 주어진다. (1 ≤ a < 100, 1 ≤ b < 1,000,000) www.acmicpc.net 문제 재용이는 최신 컴퓨터 10대를 가지고 있다. 어느 날 재용이는 많은 데이터를 처리해야 될 일이 생겨서 각 컴퓨터에 1번부터 10번까지의 번호를 부여하고, 10대의 컴퓨터가 다음과 같은 방법으로 데이터들을 처리하기로 하였다. 1번 데이터는 1번 컴퓨터, 2번 데이터는 2번 컴퓨터, 3번 데이터는 3번 컴퓨터, ... , 10번 데이터는 10번 컴퓨터, 11번 데이터는 1번 컴퓨터, 12번 데이터는 2번 ..

📗 Back-end/📗 Spring

[Spring] Spring Container (스프링 컨테이너) - (1)

1️⃣ Spring Container (스프링 컨테이너) Spring 에서 'ApplicationContext' 는 '스프링 컨테이너' 라고 한다. 이는 DI, IoC 와도 관련이 있는데, 스프링 컨테이너를 통해 DI가 자동으로 되기 때문이다. 스프링 컨테이너가 동작하는 원리를 간단하게 설명하면 다음과 같다. @Configuration 이 붙은 클래스를 설정 정보로 사용한다. 위 클래스에서 작성된 모든 메소드를 모두 호출하여 반환된 객체를 스프링 컨테이너에 등록한다. 스프링 컨테이너에 등록된 객체를 '스프링 빈' 이라고 하며, @Bean 이 붙은 메소드명을 이름으로 사용한다. 스프링 컨테이너에서 필요한 스프링 빈을 찾아서 사용한다. @Configuration public class AppConfig(){..

📒 Language/📒 Java

[Java] == 연산자, equals() 메소드, 객체 비교

어떠한 값이나 객체가 동등한지 비교할 때 우리는 == 연산자 또는 equals() 함수를 사용한다. 먼저 이 둘의 차이점을 알아보자. 1️⃣ == 연산자 동등 비교 연산자로, boolean 타입인 true / false 를 반환한다. 만약 두 피연산자의 값이 같다면 true, 다르면 false 를 반환한다. 두 객체의 메모리 공간이 같은지 확인하는 참조 비교 방식이다. 모든 타입에 적용할 수 있다. public class Main{ public static void main(String[] args){ { System.out.println(1 == 1);//true System.out.println(2.3 == 2.2);//false System.out.println('a' == 'b');//false ..

📗 Back-end/📗 Spring

[Spring] DI, IoC

1️⃣ DI (Dependency Injection) DI (Dependecy Injection) 는 "의존성 주입" 이라는 뜻이다. 저번에 공부했던 SOLID 에 등장한 OCP, DIP 등을 지킬 수 있도록 스프링이 지원해주는 기능이다. 즉, new 연산자를 통해 직접 구현 객체를 생성하는 것이 아닌, 외부에서 객체를 생성한 뒤 주입시켜주는 방식이다. 여기서 말하는 외부는 스프링 컨테이너를 말한다. 예를 들어 'MemberRepository' 라는 인터페이스가 있다고 하자. 그 아래에 'MemoryMemberRepository', 'JdbcRepository' 등이 구현 객체로 있다. 그렇다면 MemberRespository 를 생성할 때 어떤 객체에 의존하면 될까? 여기서 DI 를 적용하기 위해선 둘..

📒 Language/📒 Java

[Java] 자바의 정석 연습문제 - Chapter 2 : Variable

개요 자바의 정석 연습문제를 처음부터 풀어보며 모르거나 헷갈리는 기본 개념을 확실히 익히고자 한다. 연습문제를 풀이하는 것이 아닌 내가 공부하면서 중요하다고 생각하거나 잘 몰랐던 개념을 기록할것이다. 문제 [2-3] : 리터럴, 변수, 상수, 키워드의 개념 1. 리터럴 (literal) : 소스 코드 내에서 직접 입력된 값, 종류에 따라 정수, 실수, 문자, 논리 리터럴로 나뉜다. 이는 상수 (constant) 와 같은 의미지만, 상수는 한 번 저장하면 변경할 수 없는 변수로 정의하다는 점에서 구분된다. 2. 변수 (variable) : 변수는 값을 저장할 수 있는 메모리의 공간을 의미한다. 이는 프로그램 내에서 수시로 값이 변경될 수 있다. 또한 변수에는 복수 개의 값이 아닌 하나의 값만 저장할 수 있..

📒 Language/📒 Java

[Java] 클래스(class), 객체(object), 인스턴스(instance)

클래스 (Class) 클래스는 객체 지향 프로그래밍에서 설계도와 같은 역할을 한다. 현실 세계에서 어떤 물건을 만들기 위한 설계도가 필요하듯이, 클래스는 객체를 정의하고 만드는데 필요한 설계도이다. 클래스에는 객체를 구성하는 멤버가 명시된다. 구성 멤버로는 필드 (field), 생성자 (constructor), 메소드 (method) 가 있다. 필드 (field) : 객체의 고유 데이터, 상태 정보 등의 속성을 가진다. 선언 형태는 변수와 비슷하다. 생성자 (constructor) : 객체 생성시 초기화를 담당하며, 오버로딩이 가능하다. 메소드 (method) : 객체의 동작을 나타내며, 특정 기능을 수행할 수 있다. 기본 구조는 다음과 같으며, 파일 이름과 동일한 이름의 클래스에만 'public' 을 ..

박갈
미 개발 구역