분류 전체보기

· spring
Docker 설치 1. 도커 설치 전 패키지 업데이트sudo apt-get update  2. 도커 설치를 위한 패키지 설치sudo apt-get install apt-transport-https ca-certificates curl gnupg-agent software-properties-common  3. 도커의 공식 GPG키 추가curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -  4. 도커의 공식 apt 저장소 추가sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable"  5..
· spring
소프트웨어 아키텍처의 종류로 MSA 프로젝트를 구현하려고 한다.MSA로 구현하려면 바로 구현하기보다 우선 모놀리식 아키텍처로 구현 하고 넘어가는 것이 좋다.그럼 왜 바로 구현하면 안될까 ?  모놀리식 아키텍처와 MSA 아키텍처모놀리식 아키텍처는 비교적 간단하고 배포가 용이하다. 개인 프로젝트나 팀프로젝트를 시작하면서 설계할 때 대용량 트래픽이나 사용자를 고려하고 구현하지만 처음 구현을 시작할 때 부터 MSA로 구현하게 된다면 시간 비용이 많이 들게 된다.     사진과 같이 모놀리식은 서비스가 모두 같은 데이터 베이스와 연결되어 있어 결합성이 높다. 관리가 간편하기에 처음 프로젝트를 시작할 땐 모놀리식으로 구현한 후 기본적인 서비스가 완성되면 MSA로 나누게 된다. 이 때, 바로 MSA로 넘어가게 되면 ..
컬렉션 프레임워크- 데이터를 저장하는 자료구조와 데이터를 처리하는 알고리즘을 구조화 하여 클래스로 구현해놓은 것- 라이브러리 방식으로 작동하고, 다양한 컬렉션을 정의하는 인터페이스와 이를 구현하는 클래스를 제공한다. 💡 Array(배열) vs Collection(컬렉션)배열은 정적 메모리 할당을 하지만 컬렉션은 동적 메모리 할당을 수행한다.int[] array = new int[4];HashMap map = new HashMap();이 때, 배열인 array는 4칸짜리 공간밖에 쓰지 못하지만 컬렉션인 map은 필요한 만큼 추가할 수 있다.   🚩 Array 정렬Integer[] arr = {8,7,6,5,4};Arrays.sort(arr);System.out.println(Arrays.toString..
API URI는 리소스만을 식별하기에 메소드로 이에 따른 행위를 분리한다.예를 들어 "회원"이라는 리소스를 가지고 메소드를 사용해 행위를 한다고 가정해보자. 회원  목록 조회 : /members회원 조회 : /members/{id}회원 등록 : /members/{id}회원 수정 : /members/{id}회원 삭제 : /members/{id} 이렇게 URI를 사용하게 되는데, 이것은 리소스를 식별한 것이고 메서드의 종류에 따라 하는 행위가 달라진다.대표적인 주요 메서드와 기타 메서드로 나뉜다.  HTTP 메서드 종류주요 메서드GET : 해당 리소스를 조회클라이언트가 서버로 회원목록을 조회하면 서버에서 클라이언트로 응답데이터를 출력한다.바디 메세지를 사용하기도 하지만 거의 사용되지 않는다.POST : 요청..
Stateless : 무상태 프로토콜서버가 클라이언트의 상태를 보존하지 않는다.서버의 확장성이 크므로 응답 서버를 자유롭게 바꿀 수 있고, 무한한 서버를 증설할 수 있다. 클라이언트가 추가적으로 데이터를 전송해주어야 한다. Stateful : 상태유지 프로토콜서버가 클라이언트의 상태를 보존한다.확장성이 크지 않고, 응답 서버가 다운이 되면 클라이언트 차원에서 처음부터 다시 시작해야 한다.  둘 중 하나만 사용하기 어렵다. 로그인이 필요없는 단순한 서비스 소개 화면에는 Stateless를 사용하고, 로그인은 서버에 상태를 유지하여 개발한다. (일반적으로 브라우저 쿠키와 서버 세션 등을 이용하여 상태를 유지한다.) 실무에서는 상태 유지를 최소한만 사용한다.   Connectionless : 비연결성    클..
IP(Internet Protocol)비연결성/비신뢰성으로 인해 데이터가 정확하게 전달되지 못하거나 소실이나 순서 변경 우려가 있다.    TCP(Transmission Control Protocol)전송 제어 프로토콜 : 신뢰할 수 있는 프로토콜로, 현재는 대부분 TCP를 사용한다. 연결지향 : 3-way-handshake로 클라이언트가 SYN(접속요청)을 서버에 보내고 서버에서 SYN+ACK(요청수락)를 클라이언트에 보내고 클라이언트는 다시 서버에게 ACK를 보낸다. 그래서 서로 가상으로 연결되면 데이터를 전송한다. 현재는 마지막 ACK와 함께 데이터 전송이 가능하다.데이터 전달 보증 : 클라이언트에서 전송이 되고 나면 서버에서 안전하게 데이터가 전달이 되었다고 알려 전달이 보증된다.순서 보장 : 순..
CSR과 SSR의 차이를 알아보자.이 차이를 알아보기 위해서는 먼저 SPA와 MPA의 개념을 알면 이해가 쉽다. SPA (Single Page Application)하나의 페이지로 구성된 홈페이지라서 CSR이 적합하다.데이터를 수정하거나 조회할 때 동적으로 페이지를 구성해서 새로고침 되지 않고 다른 페이지로 넘어가지 않는다.Vue, React 프레임워크로 만든 홈페이지가 여기 속한다.  MPA (Multiple Page Application)여러개의 페이지로 구성된 홈페이지라서 SSR이 적합하다.PHP나 JAVA가 여기에 속한다. 그러나 PHP나 JAVA로 단일 페이지를 구성하면 그것은 SPA이다.   CSR (Client Side Rendering) HTML 결과를 javascript를 사용해 웹 브라..
✔️ Deque은 양방향에서 데이터를 추가하거나 제거할 수 있는 자료구조addFirst/offerFirst: 덱의 앞쪽에 요소를 추가합니다.addLast/offerLast: 덱의 뒤쪽에 요소를 추가합니다.removeFirst/pollFirst: 덱의 앞쪽 요소를 제거하고 그 값을 반환합니다.removeLast/pollLast: 덱의 뒤쪽 요소를 제거하고 그 값을 반환합니다.  import java.util.ArrayDeque;import java.util.Deque;Deque deque = new ArrayDeque();deque.offerFirst(1); // 덱 앞쪽에 1 추가deque.offerLast(2); // 덱 뒤쪽에 2 추가System.out.println(deque.peekFirst())..
✔️ Queue는 선입선출(FIFO, First In First Out)의 특성을 가진 자료구조offer/enqueue: 큐의 끝에 요소를 추가합니다.poll/dequeue: 큐의 첫 번째 요소를 제거하고 그 값을 반환합니다.peek: 큐의 첫 번째 요소를 조회합니다. import java.util.LinkedList;import java.util.Queue;Queue queue = new LinkedList();queue.offer(1); // 큐에 1 추가queue.offer(2); // 큐에 2 추가System.out.println(queue.peek()); // 큐의 첫 번째 요소 조회: 1queue.poll(); // 큐의 첫 번째 요소 제거System.out.println(queue.peek(..
alreadycow
'분류 전체보기' 카테고리의 글 목록