[HTTP] WebSocket
·
🌐 Network/📜HTTP
WebSocketIETF(국제 인터넷 표준화 기구)- HTTP 프로토콜의 최신화 및 업데이트 작업은 IETF(Internet Engineering Task Force)**가 주도하고 있다.- IETF 산하 HTTP Working Group은 HTTP의 개선과 표준화를 담당하며, 이를 통해 새로운 버전과 관련 기술들이 정의되고 배포되며, 웹 브라우저는 이러한 HTTP 표준을 기반으로 동작하며, 새로운 표준에 맞춰 업데이트가 되게 된다. 이러한, IETF에서 실시간 통신의 필요성을 느껴 WebSocket 프로토콜을 만들었고, HTTP 프로토콜 기반으로 연결을 설정 하고, 이후에 WebSocket 프로토콜로 전환되어 실시간 양방향 통신을 가능하게 해준다. HTTP -> WebSocket 전환 과정1. HTTP..
[알고리즘 문제] 백준(1145번) - 적어도 대부분의 배수
·
🛠️Backend/Algorithm Problem Solving
[문제]문제다섯 개의 자연수가 있다. 이 수의 적어도 대부분의 배수는 위의 수 중 적어도 세 개로 나누어 지는 가장 작은 자연수이다.서로 다른 다섯 개의 자연수가 주어질 때, 적어도 대부분의 배수를 출력하는 프로그램을 작성하시오. 입력첫째 줄에 다섯 개의 자연수가 주어진다. 100보다 작거나 같은 자연수이고, 서로 다른 수이다. 출력첫째 줄에 적어도 대부분의 배수를 출력한다. 예제 입출력예제 입력예제 출력30 42 70 35 902101 2 3 4 5430 45 23 26 5611703 14 15 92 65195  [문제 해설]일단 다섯개의 자연수를 받기 위한 입력 객체를 만들면 되고, 입력 값 5개의 각각의 배수에 대한 값 중 3개 이상의 값이 같은 경우 또는 가장 작은 경우에 대한 값을 구하는 문제이..
[HTTP] CSR & SSR 이란?
·
🌐 Network/📜HTTP
SSRServer Side Rendering 서버에서 HTML을 만들어서 주는 방식을 의미한다.서버에서 매 요청마다 특정 요청에 맞는 HTML을 만들어서 반환해주는 방식이다.특징으로는 특정 HTML을 보내줌으로써, 매 요청마다 새로고침 되어 렌더링이 된다는 특징이 있다.  CSRClient Side Rendering 클라이언트가 서버에 요청을 보내면 index.html과 javascript 전체를 보내주게 되고, 클라이언트 브라우저 내부에서 받아온 javascript에 기재된 html 코드를 읽어와 동적으로 클라이언트가 직접 화면에 렌더링을 하는 방식을 의미한다.특징으로는 매 요청마다 클라이언트 내부에 있는 html을 동적으로 렌더링하기 때문에 새로고침 없이도 렌더링이 된다. 결론SSR은 서버에서 HTM..
[Spring Framework] IoC 컨테이너 동작 원리
·
🛠️Backend/🌳Spring
(1) IoC 컨테이너의 역할개발자가 정의한 객체들을 Bean으로 IoC 컨테이너에 보관을 해두고, 스프링을 통해 자동으로 의존성 주입을 할 때 Bean을 객체로 만들어 의존성을 주입을 해주는 역할을 한다.( 해당 부분은 스프링 서버가 뜰 때 즉, 초기화 시점에 객체에 대한 의존성 주입이 이뤄진다. )코드적으로 org.springframework.context.ApplicationContext는 Spring IoC 컨테이너를 나타낸다. 핵심객체의 생성과 생명주기를 관리해주는 핵심 컴포넌트이다. (2) IoC 컨테이너의 Bean(객체) 관리 과정IoC컨테이너가 Bean을 관리하는 과정은 크게 7가지가 존재 ( 또한, 빈 생명주기 과정으로도 볼 수 있다. ) ( 해당 과정은 초기화 시점인 스프링 서버가 초기..
[Java Design Pattern] 정적 팩토리 메서드
·
🛠️Backend/☕Java
우선 들어가기에 앞서 정적 팩토리 메서드는 디자인 패턴은 아니지만, 비슷한 결을 가지고 있다. 이러한 디자인 패턴들을 공부할때는 개인적으로 해당 디자인패턴의 장점과 단점을 파악하는 공부 방법이 가장 좋은 것 같다. 이해하기가 더 쉬운듯 (1) 정적 팩토리 메서드란?보통 객체를 생성하는 방법은 "생성자"를 통해 객체를 생성 하는 방법이 있다. 하지만, 이번에 알아 볼 방법은 메서드를 활용해 객체를 생성하는 방법이다. 상황에 따라서 잘 사용하면 유지보수에 매우 좋다. 참고로 정적 팩토리 메서드는 디자인 패턴이 아닌 객체를 생성하는 방법 중 하나이다. 1. 정적- 자바에서 static 키워드를 의미하며, static 키워드는 고정된 메모리 공간을 갖는다.- 클래스가 메모리에 로드될 때 한 번만 생성이 되며, ..
[알고리즘 문제] 백준(1009번) - 분산 처리
·
🛠️Backend/Algorithm Problem Solving
[백준] 분산 처리 문제 ( 브론즈2 )문제재용이는 최신 컴퓨터 10대를 가지고 있다. 어느 날 재용이는 많은 데이터를 처리해야 될 일이 생겨서 각 컴퓨터에 1번부터 10번까지의 번호를 부여하고, 10대의 컴퓨터가 다음과 같은 방법으로 데이터들을 처리하기로 하였다.- 1번 데이터는 1번 컴퓨터, 2번 데이터는 2번 컴퓨터, 3번 데이터는 3번 컴퓨터, ... ,- 10번 데이터는 10번 컴퓨터, 11번 데이터는 1번 컴퓨터, 12번 데이터는 2번 컴퓨터, ...총 데이터의 개수는 항상 a^b개의 형태로 주어진다. 재용이는 문득 마지막 데이터가 처리될 컴퓨터의 번호가 궁금해졌다. 이를 수행해주는 프로그램을 작성하라.입력입력의 첫 줄에는 테스트 케이스의 개수 T가 주어진다. 그 다음 줄부터 각각의 테스트 케..
[Java] 변수 초기화에 대한 이해
·
🛠️Backend/☕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] 요청과 응답에 대한 동작 원리
·
🛠️Backend/🌳Spring
목차 ● 1. 웹 서버 & 웹 애플리케이션 서버 ● 2. 스프링부트 환경 내장 서버 ● 1. 웹 서버란?1. 웹 서버 & 웹 애플리케이션 서버 웹 서버란?1. HTTP 프로토콜을 기반으로 클라이언트의 요청을 받아주고 정적인 리소스를 제공해주는 역할을 한다.2. 정확히는, 정적 리소스를 WAS에서 받아서 해석해서 클라이언트에게 전달해주는 역할을 한다. 웹 애플리케이션 서버란?1. 웹 서버가 존재해야지만 존재할 수 있는 서버이며, 동적인 컨텐츠를 제공해주기 위해 존재하는 서버이다.2. 동적인 컨텐츠로는 DB조회나 다양한 로직 처리 및 계산 등 처리를 해서 웹 서버로 전달을 해주는 역할을 한다.2. 스프링부트 환경 내장 서버 스프링부트는 웹 서버 & 웹 애플리케이션 서버를 합친 서버를 내..
[Java] Annotation 이란? ( 애노테이션 )
·
🛠️Backend/☕Java
(1) Annotation(애노테이션) 이란?1. Annotation 이란?- 번역기를 통해 변역을 해보면 Annotation은 "주석"이라는 의미를 뜻한다. 2. Java 에서 Annotation이란?- Java에서 Annotation은 메타데이터를 코드에 추가하기 위한 방법으로 쓰인다.- 애너테이션은 클래스, 메서드, 변수, 매개변수 등 다양한 요소에 대한 추가적인 정보를 제공하며, 이러한 정보를 컴파일러나 런타임 환경에서 활용할 수 있도록 하기 위해 사용이 된다. 3. 메타데이터란?- 코드에 부가적인 정보를 제공해주는 데이터를 메타데이터 라고 한다.- 코드에 부가적인 정보를 제공하기 위해선 애너테이션을 붙히게 되는데 애너테이션이 즉, 메타데이터이다.예시를 들면, 도서관의 책이 있고, 해당 책은 데이..
대용량 트래픽 개념 및 처리 방법
·
정리가 필요한 글
1. 대용량 트래픽 이란?- 웹 사이트, 서버 또는 애플리케이션이 처리해야 하는 데이터 전송량이나 사용자 요청의 수가 매우 큰 상태를 의미함- 일반적으로는 수백만 명 이상의 동시 사용자, 또는 초당 수천 건 이상의 요청을 처리해야 하는 상황을 의미함 2. 대용량 트래픽 처리하는 방법(1) 서버 확장 방식1. 수평적 확장( scale-out )- 서버의 수를 늘리는 개념이고 주로 로드 밸런서가 중간에서 트래픽을 부하분산을 해 서버의 성능을 올린다2. 수직적 확장( scale-up )- 서버의 성능을 올려주는 개념이고 주로 CPU, 메모리 등 하드웨어 부품의 교체로 성능을 올리는 것을 의미한다. (2) 로드 밸런싱서버와 클라이언트 간의 트래픽을 중간 매개체인 로드밸런서를 만들어 트래픽을 부하해 성능 유지 또..