기술 6

프로토콜 버퍼란?

DataStore를 공부하다보면 프로토콜 버퍼라는 친구를 만납니다. 여기에 대해서 살펴보면 뭐라고 나오는가 보면 What are protocol buffers? Protocol buffers are Google's language-neutral, platform-neutral, extensible mechanism for serializing structured data – think XML, but smaller, faster, and simpler. You define how you want your data to be structured once, then you can use special generated source code to easily write and read your structur..

기술 2022.12.01

객체지향의 원칙

객체지향의 원칙에 대해서 한번 살펴보고 가겠습니다. 일단 객체지향이라는 것에 대해서 알아봐야 하는데, 객체지향과 비교할 수 있는 절차지향부터 뭔지 알아봐야 겠습니다. 일단 우리가 밥을 한다고 생각해볼게요 절차지향의 방식대로 한다면 아래의 순서대로 갈 것입니다. 쌀씻기 -> 밥솥에 밥하기 -> 된장 끓이기 -> 국 퍼기 -> 밥상 차리기 -> 완료 그런데 이걸 하다보니, 중간에 된장끓이기 전 고기를 굽거나 하는 일이 발생할 수 있고, 엄마가 밥하는 것을 도와줄 수 있습니다. 그리고 중간에 된장을 빼야 하는 경우도 생기겠죠? 그러다 보니 저 과정들을 관리하기가 어려워졌습니다. 때문에 이 기능들을 개별적으로 아래와 같이 만들어놓고 - 쌀씻기 - 밥솥에 밥하기 - 된장 끓이기 - 국 퍼기 - 밥상 차리 - 완료..

기술 2021.10.20

Heap Stack

메모리 구조에 대해 간단하게 보겠습니다. 1. 코드 영역(실행할 프로그램의 코드) 2. 전역 변수/정적 변수(데이터 영역) 3. 사용자 동적 할당(힙 영역) 4. 지역변수 매개변수(스택 영역) 코드영역 말 그대로 프로그램 코드가 돌아가는 곳입니다. CPU는 코드 영역에서 명령어를 하나씩 가지고 와서 처리합니다. 데이터 영역 프로그램이 전역(Static) 변수가 저장되는 영역입니다. 힙 영역 프로그래머가 직접 공간을 할당, 해제하는 공간입니다. 힙 메모리는 포인터를 사용하여 힙에 엑세스해야하기 때문에, 읽기와 쓰기가 약간 느립니다. 기본적으로 global scope 입니다. FIFO(First in First out) 방식입니다. 스택 영역 함수의 호출과 관계되는 지역 변수와 매개변수가 저장됩니다. LIF..

기술 2021.09.27

OSI 7 Layer

학교다닐 때 네트워크 수업들을 때 한번 들어봤던 내용입니다. 학교다닐 때는 이게 도대체 뭔소리야? 라고 생각했는데 너무 쉽게 설명해주는 영상이 있어 한번 정리해봤습니다. https://www.youtube.com/watch?v=1pfTxp25MA8 1계층 - 물리계층 (Physical layer) 컴퓨터와 컴퓨터끼리 연결해서 아날로그 신호를 통해서 0과 1을 전달해줍니다. 2계층 - 데이터 링크 계층(Data-Link Layer) 라우터(스위치)를 통해서 컴퓨터들을 연결해줘서 데이터를 전달합니다. 여러 데이터가 섞이지 않게 앞뒤로 숫자를 붙여서 구분할 수 있는데 이를 Framing이라고 합니다. 3계층 - 네트워크 계층(Network Layer) 수많은 네트워크로 이루어진 연결 속에 IP주소를 이용해서 ..

기술 2021.08.24

DB Index

DB인덱스에 관한 부분에 대해서 알아보겠습니다. 이전에 기술면접 질문 중에 본 질문인데 DB인덱스는 왜 붙이는가? DB인덱스를 붙이는게 좋다면 왜 모든 테이블에 Index를 붙이지 않는가? 에 대해서 들어본 적이 있습니다. 이 질문에 대해 대답하기 곤란하시다면 아래의 글을 읽어보시면 좋을 것 같습니다. 자 우선은 index가 무엇인지 부터 직관적으로 알아봅시다. 위와 같이 서류정리함? 정도로 생각하시면 되는데, 각 분류마다 택을 붙여서 쉽게 찾아보게 만든 것이라고 생각하면 됩니다. 저 서류들을 1번부터 1000번까지 훑어서 찾는 것 보다, 저 데이터가 포함하는 인덱스로 가서 데이터를 찾는게 훨씬 더 좋습니다. 인덱스를 이용하면 얻는 장점으로는 당연히 전체데이터 훑기(full scan)보다 검색속도가 올라..

기술 2021.08.14

프로세스(Process)와 쓰레드(Thread)의 차이

한번쯤은 들어봤지만, 늘 헷갈리는 프로세스와 쓰레드의 차이에 대해서 알고 가겠습니다. 저도 컴퓨터공학 전공자이다 보니 수업시간에 들어봤고, 공부했던 내용이긴 하지만 이거 시험한번 치고나면 머리속에서 삭제되는게 가장 큰 문제죠. 자, 기억의 끈을 더듬어서 한번 자세히 살펴보겠습니다. 일단 이게 뭔지 궁금하면, 구글에 검색을 해봅니다. 물론 구글 검색해서 나오는 결과는 매우 두루뭉실하고 빡치게 설명되어있긴 합니다. 프로세스란 무엇인지 검색해보면 아래와 같이 나옵니다. 프로세스(process)는 컴퓨터에서 연속적으로 실행되고 있는 컴퓨터 프로그램을 말한다. 종종 스케줄링의 대상이 되는 작업(task)이라는 용어와 거의 같은 의미로 쓰인다. 여러 개의 프로세서를 사용하는 것을 멀티프로세싱이라고 하며 같은 시간에..

기술 2021.08.13