CheerUp_Cheers

ETC 본문

CS

ETC

meorimori 2020. 2. 11. 20:32

#질문

[ETC]

  • 레드블렉트리와 B+트리 설명.
  • 리팩토링?
  • 프레임워크?
  • 라이브러리?
  • 플랫폼?
  • API?
  • 콜백함수란?
  • JSON 과 XML의 공통점
  • JSON 과 XML의 차이점
  • POST와 GET
  • 트라이
  • 깃 용어

 

 

  • *레드블렉트리와 B+트리 설명.

1)레드블랙트리

찾기(logN),삽입(logN),삭제(logN),중복(X)

검색,삽입,삭제가 효율적으로 하기위해 자동으로 균형을 잡아줌.

경로상의 연이은 빨강(회전), 부모의 두자식 모두빨강(부모를빨강으로)

B-트리에 색이라는 속성을 노드에 추가한 것(=3B-트리)

2)B+트리

기존의 B-트리에 데이터의 연결리스트로 구현된 색인구조.

순차탐색에 유리.

B+트리는 순차집에만 데이터가 들어감.

삽입,삭제연산이 B-트리와달리 leaf에서만 이루어짐.

B-B+는 오버플로시 Split.

찾기(logN),삽입(logN),삭제(logN),중복(X)

 

  • *리팩토링?

결과의 변경없이 효율성을 위해 코드의 구조를 재조정함(Big클래스)

틈틈이, 기능추가, 버그수정, 코드검토시에 리펙토링.

 

  • *프레임워크?

설계의 기반이 되는 부분을 기술한 확장 가능한 기반 코드와 사용자가

이 코드를 확장하는데 필요한 라이브러리의 두가지 요소의 통합형태.

->기본적인 설계와 라이브러리는 제공. 너가 구현해.

 

  • *라이브러리?

자주 쓰일만한 기능들을 모아 놓은 유틸(클래스)들의 모음집.

 

  • *플랫폼?

IT에서는 플랫폼은 어플리케이션을 작동시키위한 기반OS’기술환경

하드웨어 플랫폼, 소프트웨어플랫폼, 서비스플랫폼(트위터,페북,카카오)

크게 보면 수요와 공급이 나타나는 기술시장.

 

  • *API?

응용프로그램에서 사용할 수 있도록, 운영체제나 프로래밍 언어가 제공하는 기능을 제어할수있게 만든 인터페이스.

API를 제공하는 기업의 형식에 따라 요청을 하면 받을수있음, 네이버 트랜드 API혹은, 공공데이터 오픈데이터 API.

 

  • *콜백함수란?

함수가 실행되는 중간에 호출되어 상태정보를 전달하게 됨.

->연산을 기다리지 않고 다른 일을 처리하다가 처리가능 효율적.

 

  • *JSON XML 의 공통점

데이터를 저장하고 전달하기 위해 고안되었습니다.

계층적인 데이터 구조를 가집니다.

다양한 프로그래밍 언어에 의해 파싱될 수 있습니다.

 

  • *JSON XML 의 차이점

처리해야하는 정보의 수가 많아짐에따라 생김.

XML은 많은 태그와 매핑이 어려움.

JSON은 종료 태그를 사용하지 않습니다. (, 포맷형식이 다릅니다)

JSON의 구문이 XML의 구문보다 더 짧습니다.

데이터를 파싱할때 JSON 형식으로된 데이터가 XML 보다 더 빨리 읽고 쓸 수 있습니다. (속도면에선 크게 차이가 나지 않습니다)

XML은 배열을 사용할 수 없지만, JSON은 배열을 사용할 수 있습니다

 


#POST와 GET

1)GET 

클라이언트(웹브라우저)는 서버에 폼 데이터를 이름과 값이 결합된 스트링 형태로 전달

  •   장점

- 웹브라우저에서 직접 입력해서 접근가능

- 북마크 가능

  •   단점

- 데이터가 주소창에 노출

 

2)POST

클라이언트(웹 브라우저)와 서버간의 약속된 형식으로 인코딩 하여 서버로 전송.

  • 장점

- URL로 데이터 노출 X

- 간결한 URL

  • 단점

- 검색을 통해 접근, URL이나 링크로 가져올수없음.

- 북마크 불가

 

*북마크? 

자주 찾는 웹 사이트를 별도로 등록함으로써, 주소를 매번 입력하지 않고 클릭만으로 쉽고 빠르게 접속할 수 있게 하는 일


  • 트라이

- 정의

 문자열에서 검색을 빠르게 도와주는 트리 형태의 자료구조

 정수형에서 이진탐색 트리 사용시 O(logN), 문자열일경우 문자열길이가 m이면 O(M*logN)

 트라이를 활용시, O(M)

 

- 생성

 트리의 루트에서 자식들을 따라가면서 생성된 문자열들은 트라이의 자료구조에 정이 되어있다.

 생성시 복잡도는 문자열 길이 L, 문자열들의 수 M이라 할때, O(M*L), 탐색은 O(L)

  -> 트리를 타고 들어가 봤자 가장 긴 문자열 길이만큼만 탐색.

 

- 장점

 빠르게 검색

 

- 단점

 각 노드에서 나온 자식들에 대한 포인터들을 배열로 모두저장하고 있다는 점(저장옥간이 큼)

 

- 활용

 검색어 자동완성, 사전에서 찾기, 문자열 검사..

 


  • 깃 용어

브랜치(branch)

개발의 한 갈래라고 말할 수 있겠네요. .

코드를 수정하고 커밋을 하게되면 현재 사용중인 브랜치의 제일 앞에 들어간다고 하는데요.

이 브랜치의 제일 앞쪽 끝을 브랜치 헤드라고 부르게 됩니다. 개발이 진행되면서 이 브랜치 헤드는 계속 앞으로 나가게 되죠. 브랜치 헤드가 이동하는 방향을 포워드(forward)라고 합니다.

현재 사용중인 브랜치라는 의미에서 커런트(current) 브랜치라고도 하고요.

헤드 (HEAD)도 바로 커런트 브랜치를 가르키고 있습니다.

 

체크아웃(checkout)

현재 작업중인 워킹 트리의 일부 혹은 전체를 업데이트 하는 것을 말합니다.

1) 현재 사용중인 브랜치에서 파일이나 폴더의 일부를 혹은 전체 내용을 데이터베이스에 있는 내용으로 업데이트할 수 있습니다.

2)깃 데이터베이스로부터 새로운 브랜치를 블러올 수도 있습니다. 이때는 현재 브랜치의 내용이 새로운 브랜치의 내용으로 업데이트가 되는 거죠.

커밋(commit)

현재의 상태를 나타내는 인덱스를 대표하는 커밋을 생성한다는 것입니다.

그리고 헤드(HEAD)를 그 새로운 커밋을 가르키게 만듭니다.

펫치(fetch)

원격 리포지토리에서 브랜치의 헤드 레프(head ref)를 가져오는 것을 말합니다.

로컬 데이트베이스에 없는 오브젝트가 어떤 것인지 확인을 하고 그 오브젝트를 로컬로 가져옵니다.

헤드(소문자 head)

브랜치의 제일 앞에 있는 커밋을 가르키는 레퍼런스를 부르는 이름입니다. 

헤드(대문자 HEAD)

간단하게 말하면 현재 브랜치를 말합니다. 

풀(pull)

브랜치를 풀한다는 것은 브랜치의 내용을 펫치를 한 후 머지를 하는 것을 말압니다.

푸시(push)

로컬의 수정 내용을 리모트 리포지토리에 저장하는 것을 말합니다.

우선 리모트 리포지토리에서 헤드가 가르키는 것을 검사합니다.

로컬의 리모트이 내용을 이미 포함한 직접적인 조상인지를 검사합니다. 

리베이스(rebase)

현재 브랜치 처음 생성할 때 어느 특정 커밋(base)에서 시작된 것입니다.

리베이스는 이 베이스를 다시 다른 브랜치의 head로 이동하는 것입니다.

 

clone

복제를 의미한다. 로컬 작업을 위해 복사본을 github에서 다운로드 한다. repository 를 사용자의 컴퓨터로 복사하는 과정.

 

fork

남이 만든 오픈소스 등을 직접변경하고 싶다면 먼저 내 계정에 그 프로젝트의  복사본을 만든 다음 이를 수정하게 되는데 이 과정을 fork 라고 한다.

'CS' 카테고리의 다른 글

  (0) 2020.05.09
디자인 패턴  (0) 2020.02.18
네트워크  (0) 2020.02.11
운영체제  (0) 2020.02.11
자바  (0) 2020.02.11