[Java Design Pattern] 정적 팩토리 메서드
·
Java Design Pattern
우선 들어가기에 앞서 정적 팩토리 메서드는 디자인 패턴은 아니지만, 비슷한 결을 가지고 있다. 이러한 디자인 패턴들을 공부할때는 개인적으로 해당 디자인패턴의 장점과 단점을 파악하는 공부 방법이 가장 좋은 것 같다. 이해하기가 더 쉬운듯 (1) 정적 팩토리 메서드란?보통 객체를 생성하는 방법은 "생성자"를 통해 객체를 생성 하는 방법이 있다. 하지만, 이번에 알아 볼 방법은 메서드를 활용해 객체를 생성하는 방법이다. 상황에 따라서 잘 사용하면 유지보수에 매우 좋다. 참고로 정적 팩토리 메서드는 디자인 패턴이 아닌 객체를 생성하는 방법 중 하나이다. 1. 정적- 자바에서 static 키워드를 의미하며, static 키워드는 고정된 메모리 공간을 갖는다.- 클래스가 메모리에 로드될 때 한 번만 생성이 되며, ..
[알고리즘 문제] 백준(1009번) - 분산 처리
·
Algorithm Problem Solving
[백준] 분산 처리 문제 ( 브론즈2 )문제재용이는 최신 컴퓨터 10대를 가지고 있다. 어느 날 재용이는 많은 데이터를 처리해야 될 일이 생겨서 각 컴퓨터에 1번부터 10번까지의 번호를 부여하고, 10대의 컴퓨터가 다음과 같은 방법으로 데이터들을 처리하기로 하였다.- 1번 데이터는 1번 컴퓨터, 2번 데이터는 2번 컴퓨터, 3번 데이터는 3번 컴퓨터, ... ,- 10번 데이터는 10번 컴퓨터, 11번 데이터는 1번 컴퓨터, 12번 데이터는 2번 컴퓨터, ...총 데이터의 개수는 항상 a^b개의 형태로 주어진다. 재용이는 문득 마지막 데이터가 처리될 컴퓨터의 번호가 궁금해졌다. 이를 수행해주는 프로그램을 작성하라.입력입력의 첫 줄에는 테스트 케이스의 개수 T가 주어진다. 그 다음 줄부터 각각의 테스트 케..
[Java] 변수 초기화에 대한 이해
·
Java
문득 알고리즘 문제를 풀다 변수 초기화에 대해서 의문을 품게 되었었다. (1) 문제 발생import java.util.Scanner;public class Main { public static void main(String[] args) { Scanner scanner = new Scanner(System.in); int n = scanner.nextInt(); int f = scanner.nextInt(); int len = Integer.toString(n).length(); String result = ""; // 의문을 갖게 된 부분 String text = ""; // 의문을 갖게 된 부분 for(int..
[Spring MVC] 요청과 응답에 대한 동작 원리
·
Spring MVC
목차    ●  1. 웹 서버 & 웹 애플리케이션 서버    ●  2. 스프링부트 환경 내장 서버    ●  1. 웹 서버란?1. 웹 서버 & 웹 애플리케이션 서버 웹 서버란?1. HTTP 프로토콜을 기반으로 클라이언트의 요청을 받아주고 정적인 리소스를 제공해주는 역할을 한다.2. 정확히는, 정적 리소스를 WAS에서 받아서 해석해서 클라이언트에게 전달해주는 역할을 한다. 웹 애플리케이션 서버란?1. 웹 서버가 존재해야지만 존재할 수 있는 서버이며, 동적인 컨텐츠를 제공해주기 위해 존재하는 서버이다.2. 동적인 컨텐츠로는 DB조회나 다양한 로직 처리 및 계산 등 처리를 해서 웹 서버로 전달을 해주는 역할을 한다.2. 스프링부트 환경 내장 서버 스프링부트는 웹 서버 & 웹 애플리케이션 서버를 합친 서버를 내..
[Java] Annotation 이란? ( 애노테이션 )
·
Java
(1) Annotation(애노테이션) 이란?1. Annotation 이란?- 번역기를 통해 변역을 해보면 Annotation은 "주석"이라는 의미를 뜻한다. 2. Java 에서 Annotation이란?- Java에서 Annotation은 메타데이터를 코드에 추가하기 위한 방법으로 쓰인다.- 애너테이션은 클래스, 메서드, 변수, 매개변수 등 다양한 요소에 대한 추가적인 정보를 제공하며, 이러한 정보를 컴파일러나 런타임 환경에서 활용할 수 있도록 하기 위해 사용이 된다. 3. 메타데이터란?- 코드에 부가적인 정보를 제공해주는 데이터를 메타데이터 라고 한다.- 코드에 부가적인 정보를 제공하기 위해선 애너테이션을 붙히게 되는데 애너테이션이 즉, 메타데이터이다.예시를 들면, 도서관의 책이 있고, 해당 책은 데이..
대용량 트래픽 개념 및 처리 방법
·
카테고리 없음
1. 대용량 트래픽 이란?- 웹 사이트, 서버 또는 애플리케이션이 처리해야 하는 데이터 전송량이나 사용자 요청의 수가 매우 큰 상태를 의미함- 일반적으로는 수백만 명 이상의 동시 사용자, 또는 초당 수천 건 이상의 요청을 처리해야 하는 상황을 의미함 2. 대용량 트래픽 처리하는 방법(1) 서버 확장 방식1. 수평적 확장( scale-out )- 서버의 수를 늘리는 개념이고 주로 로드 밸런서가 중간에서 트래픽을 부하분산을 해 서버의 성능을 올린다2. 수직적 확장( scale-up )- 서버의 성능을 올려주는 개념이고 주로 CPU, 메모리 등 하드웨어 부품의 교체로 성능을 올리는 것을 의미한다. (2) 로드 밸런싱서버와 클라이언트 간의 트래픽을 중간 매개체인 로드밸런서를 만들어 트래픽을 부하해 성능 유지 또..
[Java] JVM 동작 원리
·
Java
IDE는 자바 프로그램의 실행 명령어들을 대신 입력을 해주어 명령어를 몰라도 코드를 실행 할 수 있게 해준다. 이러한 추상화 덕분에 편리하지만 이러한 지식 없이 자바를 공부한다면 공부의 효율성이 떨어질 수 있다는 단점이 있다. JVM(Java Virtual Machine) 동작 원리JVM은 "java ClassName" 명령어를 통해 실행을 시킬 수 있게 된다. ClassName은 반드시 main 메서드가 들어있는 주 클래스여야 한다. JVM이 실행이 된 후 JVM의 부트스트랩 클래스 로더가 필요한 클래스 파일인 java.lang 패키지의 클래스 파일들을 먼저 로드 해준다. 이후, 애플리케이션 클래스 로더가 main 메서드 주 클래스를 로드를 해주게 된다. 이러한 과정이 다 끝나면, JVM은 main 메..
[Spring Framework] (3) - IoC 컨테이너 & Bean 개념 이해 하기
·
Spring Framework
1. IoC Container ( 스프링 컨테이너 )앞서 살펴본 IoC는 "제어의 역전", IoC Container에게 제어의 권한을 넘긴다고 설명을 했었다. IoC Container는 객체를 의존성 주입을 시켜주기 위한 객체들을 모두 컨테이너에 넣어서 보관을 하게 된다. 해당 컨테이너는 내부의 객체들을 관리합니다. 과정으로는 먼저 컨테이너에 의해 인스턴스화 되고, 인스턴스화 된 객체들은 의존성 주입이 자동으로 됩니다.이렇듯, IoC Container는 Bean(객체) 들을 관리하며, 자동으로 의존성을 주입해주는 역할을 한다. * IoC Container가 관리하는 객체들은 모두 Bean이다. - IoC 컨테이너는 자바의 객체로써 존재한다.- 대표적인 구현체로는 BeanFactory 와 이를 확장한 인터..
[Spring Framework] (2) - IoC & DI 개념 이해 하기
·
Spring Framework
1. IoC (Inversion of Control)Inversion of Control의 뜻은 "제어의 역전"이다. 여기서 말하는 제어는, 객체를 직접 생성하거나 찾는 방식에서 벗어나 Spring Framework의 IoC 컨테이너 에게 제어의 권한을 넘김으로써, IoC 컨테이너가 필요할 때 알아서 객체를 생성하고 필요한 의존성을 알아서 주입을 해주는 방식을 의미한다.- 객체의 제어를 외부에서 담당하게 한다는 폭 넓은 개념- IoC Container에게 제어 권한을 넘긴다는 개념 * IoC Container : Spring Framework가 의존성 주입을 자동을 해주기 위한 "Bean"들의 집합과 "Bean"들을 관리해주는 공간이다.* Bean : Spring Framework가 관리하는 객체들을 "..
[Spring Framework] (1) - Spring & Spring Framework 차이
·
Spring Framework
개요Spring과 Spring Framework 단어에 대해 명확한 차이를 알고 있어야 Spring Framework를 더욱 쉽게 이해를 할 수 있을 것이다. 단어의 뜻은 정확하게 해석을 해놔야 나중에 헷갈리지 않는다.  1. Spring 이란?Spring의 처음은 Spring Framework라는 이름으로 시작을 했지만, 시간이 지남에 따라 Spring Framework 기반 위에 다른 프로젝트들이 추가 되면서 Spring은 Spring Framework 및 다른 프로젝트들을 다 포괄하는 단어가 되었다.- Spring은 Spring Framework 기반으로 구축이 된 프로젝트들을 일컫는다.- Spring은 오픈소스이며, Spring 내의 모든 프로젝트 또한 오픈소스이다.  2. Framework 란?..