Study: ComputerScience(CS)
[Network] RESTful API 의미와 설계 규칙
API (Application Programming Interface)란? (= 서버 API) API는 한 프로그램이 다른 프로그램을 이용할 때 쓰는 인터페이스로 입출력이 데이터로 됩니다. 어떤 특정 사이트에서 특정 데이터를 공유할 경우 어떤 방식으로 요청해야 하는지 어떤 데이터를 받을 수 있는지 등의 규격을 말합니다. 프로그램에게 자신이 제공하고자 하는 데이터나 기능을 제어할 수 있는 API로 만들면, 서버와 데이터베이스에 대한 접근 권한이 있는 사람들에게만 접근성 부여할 수 있습니다. UI (User Interface)와 비교하면 이해가 편합니다. UI: 일반 사용자는 버튼이나 링크, 이미지등 특정 ui를 통해 조작함으로써 시스템을 제어합니다. API: 개발자가 특정 프로그램에서 제공하는 규격을 이용..
[CS] 캐시(Cache)란?
💡 본 문서는 '캐시(Cache)'에 대해 정리해놓은 글입니다. DB를 튜닝하고 다원화하고 좀 더 효율적으로 인덱스를 걸 수도 있겠지만, 가장 근본적인 문제인 RDBMS로의 쿼리 전송을 줄인다면 더욱 빠른 서비스를 구축할 수 있습니다. 이를 위해서 데이터베이스 캐시를 알아야 하며, 생겨난 배경 및 사용되는 구조를 정리해두었으니 참고 부탁드립니다. 1. 캐시(Cache)란? 1.1 캐시는... 컴퓨터 과학에서 자주 사용하는 데이터나 값을 미리 복사해놓는 임시 장소를 말합니다. 데이터 베이스에서 캐시란? 데이터를 자주 읽지만 잘 변경되지 않는 부분은 특정 공간에 미리 저장해두어 데이터베이스에 직접 쿼리를 전송하지 않도록 하는 구조입니다. 1.2 캐시 탄생 배경 무어의 법칙에 의해 CPU의 처리속도가 급격히 ..
[CS] 링킹(Linking)에 대해 보다 심도있는 내용
링킹(Linking) 과정이란? (지난 강의 참조) A와 B 소스파일이 있을 때, 각각 compile만 하면 A가 B에 존재하는 함수(메서드)를 찾을 수 없어 호출할 수가 없습니다. 따라서, A와 B를 연결해주는 작업이 필요한데 이를 Linking라 합니다. 여러 개로 분리된 compile한 소스파일들을 최종 실행 가능한 파일로 만들기 위해 필요한 부분을 찾아서 연결해주는 작업입니다. 주로 사용하는 실행 파일 형태는 Portable Executable 이라 불리는 PE 파일 형식의 파일을 생성하게 됩니다. 윈도우 계열: *.exe 리눅스 계열: *.ELF (Executable and Linkable Format) 맥 계열: *.pkg *.dmg Link는 정적링크(static link)와 동적링크(dyn..
[CS] 컴파일(Compile)에 대해 보다 심도있는 내용
컴파일(Compile) 과정이란? high-level 언어(개발자가 작성한 source code)를 lower-level 언어(어셈블리 형태로 변환한 후 binary code)인 기계어로 변환하는 과정입니다. 해당 작업을 해주는 프로그램이 Compiler입니다. Java의 경우, JVM(Java Virtual Machine)에서 byte 코드 형태의 *.class 파일이 생성됩니다. C++의 경우, MinGW, Clang에서 byte 코드 형태의 *.o(Object file) 파일이 생성됩니다. 컴파일 과정은 두가지로 분리할 수 있습니다. 해석 유닛 생성 (Translation Unit): 소위 말하는 컴파일이 이루어집니다. 전처리기 토큰들이 컴파일 토큰으로 변환이 되고, 컴파일 토큰들은 컴파일러에 의해..
[CS] 래퍼(Wrapper) 클래스란?
래퍼(Wrapper) wrapper의 사전적 의미: '(특히 식품) 포장지'라는 뜻입니다. 여기서, wrapper 클래스란? 기본 자료형(primitive data types: int, long)에 대한 클래스 표현을 래퍼 클래스(wrapper classes)라고 하며, 기본 자료형같은 데이터를 객체에 넣기 위해 제공하는 함수들을 포함합니다. 기본 자료형에 대해서 객체로서 인식되도록 '포장'을 했다는 뜻입니다. 범용적으로 '관리 리소스를 둘러싸는 특수한 유형의 클래스'라는 의미로 사용된다. 필요시 컴파일러가 자동으로 수행하기 때문에, 오토박싱(autoboxing)이라고 합니다. 아래 그림으로 보여지는 숫자 자료형의 모든 래퍼 클래스는 모두 Number라는 추상 클래스를 상속 받아서 구현한 것입니다. By..