기본 콘텐츠로 건너뛰기

최근 업데이트

[AWS] Kinesis 개념 정리

최근 글

[DATA STRUCTURE] HEAP

What is  Binary Heap ? Let us first define a Complete Binary Tree. A complete binary tree is a binary tree in which every level, except possibly the last, is completely filled, and all nodes are as far left as possible (Source  Wikipedia ) A  Binary Heap  is a Complete Binary Tree where items are stored in a special order such that value in a parent node is greater(or smaller) than the values in its two children nodes. The former is called as max heap and the latter is called min heap. The heap can be represented by binary tree or array. Why array based representation for Binary Heap? Since a Binary Heap is a Complete Binary Tree, it can be easily represented as array and array based representation is space efficient. If the parent node is stored at index I, the left child can be calculated by 2 * I + 1 and right child by 2 * I + 2 (assuming the indexing starts at 0). public   class   HeapSort  {      void   sort ( int []  arr ) {          int   n  =  arr . length ;          for  ( int

[DATA STRUCTURE] 큐 QUEUE

큐[QUEUE]의개념 Queue is an abstract data structure, somewhat similar to Stacks.  Unlike stacks, a queue is open at both its ends. One end is always used to insert data (enqueue) and the other is used to remove data (dequeue).  Queue follows First-In-First-Out methodology, i.e., the data item stored first will be accessed first. First In First Out Basic Operation Queue operations may involve initializing or defining the queue, utilizing it, and then completely erasing it from the memory. Here we shall try to understand the basic operations associated with queues − enqueue() − add (store) an item to the queue. dequeue() − remove (access) an item from the queue. Few more functions are required to make the above-mentioned queue operation efficient. These are − peek() − Gets the element at the front of the queue without removing it. isfull() − Checks if the queue is full.[Boolean] isempty() − Checks if the queue is empty.[Boolean] 큐의사용 예 너비 우선 탐색(BFS, Breadth-First Search) 구현 처리해야 할 노드의 리스트를 저

[DATA STRUCTURE] Stack 스택

What is Stack A stack is an Abstract Data Type (ADT), commonly used in most programming languages. It is named stack as it behaves like a real-world stack, for example – a deck of cards or a pile of plates, etc. Basic Operations push()  − Pushing (storing) an element on the stack. pop()  − Removing (accessing) an element from the stack. peek()  − get the top data element of the stack, without removing it. isFull()  − check if stack is full. isEmpty()  − check if stack is empty. 스택(Stack)의 사용 사례 재귀 알고리즘을 사용하는 경우 스택이 유용하다. 재귀 알고리즘 재귀적으로 함수를 호출해야 하는 경우에 임시 데이터를 스택에 넣어준다. 재귀함수를 빠져 나와 퇴각 검색(backtrack)을 할 때는 스택에 넣어 두었던 임시 데이터를 빼 줘야 한다. 스택은 이런 일련의 행위를 직관적으로 가능하게 해 준다. 또한 스택은 재귀 알고리즘을 반복적 형태(iterative)를 통해서 구현할 수 있게 해준다. 웹 브라우저 방문기록 (뒤로가기) 실행 취소 (undo) 역순 문자열 만들기 수식의 괄호 검사 (연산자 우선순위 표현을 위한 괄호 검사) Ex) 올바른 괄호 문자열(VPS, Valid Parenthesis String) 판단하기 후위 표기법 계산 public   class   StackTest1  {      public   static   void   main ( String []  args ) {          Stack < Object >  stack  =  new   St

AWS Architecture of Micro service

마이크로 서비스 프로젝트에서 사용한 AWS서비스를 아키텍쳐로 구성하여 나타냄. 사용한 서비스(Used services) VPC : 네트워크 설정 (NAT, Subnet etc) ECS : 컨테이너 EC2 : 컴퓨팅(서버) ECR : 컨테이너 (Registry) 아키텍쳐(Architecture) ---End

Twelve-Factor 마이크로서비스 서비스 애플리케이션 구축

Practice DevOps! • 코드베이스(codebase): 모든 애플리케이션 코드와 서버 프로비저닝(provisioning) 정보는 버전 관 리(version control)되어야 한다. 각 마이크로서비스는 소스 제어 시스템 안에 독립적인 코드 저장소 를 가져야 한다. • 의존성(dependencies): 애플리케이션이 사용하는 의존성을 메이븐(자바) 같은 빌드 도구를 이용해 명시적으로 선언해야 한다. 제3자(3 rd party)의 JAR 의존성은 특정 버전 번호를 붙여 명시해 선언해 야 한다. 따라서 동일 버전의 라이브러리를 사용해 항상 마이크로서비스를 빌드할 수 있다. • 구성(config): 애플리케이션 구성(특히 환경별 구성)을 코드와 독립적으로 저장하자. 애플리케이션 구성은 절대로 소스 코드와 동일한 저장소에 있으면 안 된다. • 백엔드 서비스(backing services): 마이크로서비스는 대개 네트워크를 거쳐 데이터베이스나 메시징 서비스와 통신한다. 그렇다면 언제든 데이터베이스 구현을 자체 관리형 서비스에서 외부업체 서비스 로 교체할 수 있어야 한다. 10장에서 로컬에서 관리되는 Postgres 데이터베이스를 AWS 데이터베 이스로 옮기면서 이를 보여 준다.  • 빌드, 릴리스, 실행(build, release, run): 배포할 애플리케이션의 빌드, 릴리스, 실행 부분을 철저히 분리하라. 코드가 빌드되면 개발자는 실행 중에 코드를 변경할 수 없다. 모든 변경 사항을 빌드 프로 세스로 되돌려 재배포해야 한다. 빌드된 서비스는 불변적이므로(immutable) 변경할 수 없다. • 프로세스(processes): 마이크로서비스는 항상 무상태(stateless) 방식을 사용해야 한다. 서비스 인 스턴스 손실에 의해 데이터가 손실될 것이라는 우려 없이 언제든 서비스를 강제 종료하거나 교체할 수 있다. • 포트 바인딩(port binding): 마이크로서비스는 서비스용 런타임 엔진을 포함한(실행 파일에 패키징 된 서비스를 포

SSH 공개키 암호화 설정

★서버명은 임의 공개키 암호화 방식 -[bigdata01,02,03,04]에 동시에 만듬 1.ssh key 만들기 [ ssh-keygen -t rsa ] 2. 아래와 같이 key 생성여부 확인 3. [ cat id_rsa.pub >> authorized_keys ] authorized_keys폴더에 key 암호를 복사   4.폴더 확인 id_rsa [private] 와 id_rsa.pub [public] 이 만들어짐 5 cat authorized_keys 로 검색하면 아래와 같이 암호가 만든 폴더로 들어감. 6.bigdata01에  [ ssh root@bigdata02 cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys ] 를 입력 7.최종적으로 bigdata 02,03,04를 6번 같이 입력하여 authorized_keys 폴더 에 전부 넣음 8. [ scp -rp authorized_keys root@bigdata02:~/.ssh/authorized_keys ]  ★scp= secure copy bigdata 02, 03, 04 설정한 것을 복사해서 보냄. 9. bidata01에서 [ ssh bigdata02 date ] 코드를 쳐서 아래와 같이 나오면 성공