본문 바로가기

백엔드 학습 과정/Section 2 [재귀함수, 자료구조, 네트워크]

(16)
#6. 데이터베이스 - SQL, NoSQL, DB 설계 [데이터베이스의 필요성] [데이터를 In-Memory에 저장할 경우] PC를 끄면 데이터가 사라짐. [데이터를 File I/O 할 경우] 원하는 데이터만 가져올 수 없고, 모든 데이터를 호출한 뒤 서버에서 필터링 해야함. [DataBase의 경우] 필터링 외에도 File I/O 으로 구현이 힘든 데이터 관리를 위한 여러 기능들을 가지고 있는 데이터에 특화된 서버. [데이터베이스] 데이터베이스는 크게 관계형 데이터베이스 / 비관계형 데이터베이스 로 구분된다. 관계형 데이터베이스는 SQL을 기반으로, 비관계형 데이터베이스는 NoSQL을 기반으로 데이터를 다룬다. SQL (Structured Query Language) 관계형 데이터베이스에서 사용하는 데이터베이스 언어. 데이터가 구조화된 테이블을 사용하는 관..
#5. REST API - Richardson API 4단계 성숙도, 좋은 REST API 특징 1. API 웹 애플리케이션에서 클라이언트와 서버는 프로토콜이라는 방법을 통해 요청과 응답을 하며 작동한다. 위와 같이 다양한 프로토콜이 있는 만큼 각 프로토콜마다 정확한 규정이 있고 이 규정이 지켜져야 컴퓨터가 정상 수행한다. 프로토콜의 사용 규정에 맞는 가이드라인이 API (Application Programming Interface) 이다. 2. API - CRUD 메소드 요청, 상황 적절한 메소드 CREATE (생성) POST READ (조회) GET UPDATE (수정) PUT (모든 정보 변경) / PATCH (일부만 변경) DELETE (삭제) DELETE 3. REST API API는 웹에서 사용되는 Data나 resource를 HTTP URI로 표현하고, 해당 resource를 고유의 U..
#4. 웹 ( WEB ) - 웹아키, 웹앱-아키, 웹앱-요청흐름, 웹앱요소,HTTP, SSR&CSR, Message(+패킷), 쿠키,세션,캐시,프록시 1. 웹 (WEB) 인터넷에서 제공되는 하이퍼 텍스트 시스템. ** 문서 안에 다른 문서의 위치를 포함하여, 문서 간의 정보를 서로 연관지어 참조할 수 있는 문서 2. 웹(WEB) 아키텍처 웹에서 제공되는 서비스는 주로 서비스 이용자 (클라이언트)와 서비스 제공자(서버)로 나뉜다. [2티어 아키텍처] 리소스가 존재하는곳(서버), 리소스를 사용하는 앱(클라이언트)를 구성으로 가진 아키텍처. [3티어 아키텍처] 리소스를 사용하는 앱(클라이언트), 리소스가 존재하는 곳(서버) + 리소스 정보들을 보관하는 곳(DB)의 아키텍처 3. 웹 어플리케이션 아키텍처 [웹 어플리케이션 아키텍처] 어플리케이션 내부의 요소들이 어떻게 상호간 소통하는지 설명하는 것. 유저가 웹 브라우저에 요청을 하면, 어플리케이션의 요소들( ..
#3. 네트워크 [프로토콜, TCP/UDP, IP&MAC, PORT, URL,URI, DNS] 1. 네이티브 애플리케이션 / 웹 애플리케이션 Native Application : 휴대폰과 같이 특정 기기에 설치하여 사용하는 어플리케이션. [장점] 1. 웹 어플리케이션 보다 빠르다. 2. 설치된 기기의 시스템/리소스에 접근이 용이하다. ex) GPS / 카메라 3. 인터넷 없이 사용이 가능하다. 4. 웹 어플리케이션에 비해 안전하다. => 앱 스토어에 올리는 과정에서 수준높은 심사를 거치기 때문. [단점] 1. 웹 어플리케이션에 비해 개발 비용이 더 들어간다. 2. 빠른 업데이트가 힘들다. => 업데이트가 된다면 다른 버젼으로 앱 스토어를 통해 출시를 해야한다. 3. 앱 스토어에 승인 받기가 힘들고 올리는데 비용이 발생한다. Web Application : 웹 브라우저를 통해 접근이 가능한 어플리케..
#2-3 자료구조 - Tree 루트(Root)라는 하나의 꼭짓점 데이터를 시작으로, 여러 개의 데이터를 간선으로 연결. 각 데이터를 노드(Node)라고 하며, 두 개의 노드가 상하 계층으로 연결되면 부모/자식 관계를 가진다. [Tree의 노드 관계도] 노드(Node) : 트리 구조를 이루는 모든 개별 데이터 루트(Root) : 트리 구조의 시작점 형제 노드 : 부모가 같은 노드 부모 노드 : 두 노드가 상하관계로 연결되어 있을 때, 상대적으로 루트에 가까운 노드. 자식 노드 : 두 노드가 상하관계로 연결되어 있을 때, 상대적으로 루트에서 먼 노드. 리프 노드 : 트리 구조의 가장 끝 지점이며 자식 노드가 없는 노드. 차수 : 특정 노드가 가지는 자식 노드의 개수. [Tree 용어] 1. 레벨(Level) : 같은 깊이를 가지고 있는 ..
#2-2 자료구조 - Graph Graph 자바에는 요소들간에 직접적인 관계가 있을 경우, 두 점 사이를 이어주는 선들이 존재한다. 만약 간접적인 관계라면 몇 개의 점과 선에 걸쳐 이어진다. 이 하나의 점을 정점(Vertex)라고 하고, 하나의 선은 간선 (Edge)라고 한다. 위와 같은 정점들과 간선의 관계를 표현함에 있어 다양한 표현 방식이 있다. 1. [인접 행렬 : Adjacency Matrix] 인접 행렬은 서로 다른 정점들이 인접한 상태인지를 표시한 행렬로 2차원 배열의 형태로 나타낸다. int[][] arr = new [][]{}; A : 0행 B: 1행 C: 2행 arr[0][0] arr[0][1] arr[0][2] => { 0, 0, 1} arr[1][0] arr[1][1] arr[1][2] { 1, 0, 1} arr[..
#2-1 자료구조 - Stack, Queue 자바에서 자료 구조라 함은 여러 데이터의 묶음을 저장하고 사용하는 방법을 정의한 것이다. 위의 자료구조의 종류 중 가장 많이 사용하는 대표적인 4가지. Stack, Queue, Tree, Graph 에 대해 알아보자. 1. [Stack] // ex) 프링글스 통 Stack은 데이터를 넣을 공간을 생성함에 있어 그 공간이 다음과 같은 특이성을 가진다. Stack은 Stack 클래스를 이용해 객체를 생성하여 사용할 수 있다. Stack stack = new Stack(); [1] FILO (선입후출) / LIFO (후입선출) [2] 데이터는 하나씩 넣고 뺄 수 있다. [3] 하나의 입출력 방향을 가지고 있다. [4] 그래프 탐색 중 깊이우선탐색(DFS)에 사용된다. [Stack 메소드] 메소드 기능 예시 ...
#1. 재귀함수 [재귀] recursion 문제를 동일한 구조의 더 작은 문제로 나누고, 이 작은 문제를 해결함으로 전체 문제를 해결하는 방법. 재귀함수는 자기 자신을 끊임없이 호출하는 함수를 말한다. //메소드 바디에 자신의 메소드명을 넣음으로 종료문을 만나기 전까지 계속해서 반복되는 함수 [코드 예제] public void recursion() { System.out.println("This is"); System.out.println("recursion!"); recursion(); // 자기 자신을 호출. } [재귀함수의 장점] 1. 불필요하게 여러 개의 반복문을 사용하지 않기 때문에, 코드가 간결해지고, 수정이 용이하다. 2. 변수를 여러 개 사용할 필요 없다. [재귀함수의 단점] 1. 반복문과 달리, 코드의 ..