개발자 면접 공부 111

REST, REST API, RESTFul API

오늘은 RESTFul API에 대해 공부하도록 하겠습니다. REST란? REST(Representational State Transfer)의 약자로 자원을 이름으로 구분하여 해당 자원의 상태를 주고 받는 모든 것을 의미합니다. 즉 REST란 1. HTTP URI(Uniform Resource Identifier)를 통해 자원 을 명시하며 2. HTTP Method(POST, GET, PUT, DELETE)를 통해 3. 해당 자원 (URI)에 대한 CRUD Operation을 적용하는 것을 의미합니다. CRUD는 대부분의 컴퓨터 소프트웨어가 가지는 기본적인 데이터 처리 기능인 Create, Read, Update, Delete를 묶어서 일컫는 말입니다. REST의 기본 구성 REST는 다음과 같은 3가지로..

업 캐스팅 다운 캐스팅

오늘은 업 캐스팅 다운 캐스팅에 대해 공부하도록 하겠습니다. 캐스팅 이란? 캐스팅이란 타입을 변환하는 것을 의미합니다. C++는 상속관계에 있는 부모와 자식 클래스 간에는 서로 간의 형변환이 가능합니다. 업캐스팅 업캐스팅이란 자식 클래스의 객체가 부모 클래스 타입으로 형변환 하는 것을 말합니다. 아래의 코드에서 Human* h = s 이다 이 부분이 업 캐스팅 부분입니다. h가 student객체를 가르키지만 h는 Human타입이기 때문에 Human 클래스의 맴버에만 접근이 가능합니다. #include using namespace std; class Human { private: int m_Age; string m_BloodType; string m_Gender; public: Human(int Age, ..

싱글톤 패턴(SingletonPattern)

오늘은 싱글톤 패턴에 대해 공부하겠습니다. 싱글톤 프로그램안에서 어떤 클래스의 인스턴스가 단 1개만 존재 하도록, 폐쇄적으로 클래스를 디자인 하는 것 이러한 이득은 1. 코드의 가독성 여러개의 클래스가 아닌 하나의 클래스를 독자적으로 사용함 2. 불필요한 객체생성 피함 프로그램 코드를 짜다보면 불필요한 객체들이 여러 생성됩니다. 3. 코드의 세밀함 싱글톤을 만들기로 맘을 먹었다면 최대한 여러곳에서 사용할 수 있도록 설계해야함 #include using namespace std; class Singleton { private: Singleton() {} ~Singleton() {} private: static Singleton* m_Singleton; public: static Singleton* GetI..

벡터 외적을 통한 적이 오른쪽 왼쪽 판별

오늘은 외적을 통해 적이 오른쪽에 있는지 왼쪽에 있는지 알아보도록 하겠습니다. 벡터의 외적을 이용하여 지정한 물체가 왼쪽 오른쪽에 있는지 알수있습니다. (외적을 하고 Up Vector와 내적) 1. 타겟의 위치에서 자신의 위치를 빼 타겟을 바라보는 벡터를 만듭니다. 2. 위에서 만든 벡터와 자신의 포워드 벡터를 외적합니다. 3. 외적한 값과 Up벡터를 내적합니다. 4. 내적한 결과가 음수면 왼쪽, 양수면 오른쪽입니다. (DirectX(왼손) OpenGL(오른손)) 5. 위에 4번은 오른손 좌표계를 기준으로 말하는 것 입니다.

(C++) 이동생성자(Move Constructor)

이동 생성자(Move Constructor)에 대해 공부하겠습니다. 이동생성자(Move Constructor) 이동 생성자는 객체가 살아있지만 안 쓴다고 보장할 수 있는 상황일 때 사용하게 되는 코드입니다. 기존 객체의 주소 및 Value값을 새로운 오브젝트에 소유권을 이전하게 하는 생성자로, 기존 객체의 값이 이전됩니다. 내부적인 구조로 봤을 때 Test b = static(a) 또는 Test b = move(a)는 새롭게 메모리를 복사할 필요 없이 이전에 잡은 메모리를 가르키기만 하면 되는데 굳이 새롭게 메모리를 잡고 그 메모리에 이전 데이터를 복사해서 저장함 그렇기 때문에 이동 생성자가 있고 이동 생성자를 통해 객체를 생성하면 이전에 Heap에 있던 메모리를 새로운 객체가 가리키게 되고 이전에 생성..

(C,C++) L-Value, R-Value

오늘은 L-Value, R-Value에 대해 공부하겠습니다. L-Value https://docs.microsoft.com/ko-kr/cpp/c-language/l-value-and-r-value-expressions?view=msvc-170 L-Value 및 R-Value 식 자세한 정보: L-Value 및 R-Value 식 docs.microsoft.com 마이크로소프트의 공식 문서를 보면 L-Value는 메모리 위치를 참조하는 식을 의미한다고 합니다. 왜 L이 되었는가 하면 메모리 주소를 참조한다는 뜻에서 Location의 앞글자, 또는 주로 코드에서 = 을 기준으로 왼쪽에 위치한다고 해서 Left Value라 해 L Value가 되었다는것 같습니다. 그리고 주로 L Value가 변수, 함수, 클래..

Stack OverFlow란?

오늘은 Stack OverFlow를 공부해보겠습니다. Stack OverFlow Stack OverFlow는 Stack 영역의 메모리가 지정된 범위를 넘어갈 떄 발생한다. Stack 메모리는 보통 지역 변수가 저장되는 영역이다. 함수에서 지역 변수를 선언하면 지역 변수는 Stack 메모리에 할당되고 함수를 빠져나오면 Stack메모리에서 해제된다. 하나의 프로그램이 실행될 때 수많은 함수를 호출하고 빠져 나오게 되는데 그 떄마다 함수에서 사용하는 지역 변수는 Stack 영역에 할당되고 해제되는 것을 반복하게 되며 그에 따라 사용하는 Stack 영역도 변하게 된다. 만약 한 함수에서 너무 큰 지역 변수를 선언 또는 함수를 무한 재귀호출을 할 경우 Stack OverFlow가 발생할수 있다. Stack Ove..

CS,OS 단편화

오늘은 단편화에 대해 공부하겠습니다. 메모리 단편화 메모리에서 메모리의 공간이 작은 조각으로 나뉘어져 사용가능한 메모리가 충분히 존재하지만 할당(사용)이 불가능한 상태를 보고 메모리 단편화 라고 말합니다. 이 메모리 단편화는 내부, 외부 단편화 가 있습니다. 1. 내부 단편화 - 프로그램의 크기보다 분할의 크기가 큰 경우, 해당 분할에 프로그램을 적재하고 남는 메모리 공간 - 즉, 하나의 분할 내부에서 발생하는 사용되지 않는 메모리 조각 - 메모리 자유 분할 공간이 10,000B가 있고 프로세스 A가 9,999B를 사용하게 되면 1B가 남게 된다. 이러한 현상을 내부 단편화라고 한다. 2. 외부 단편화 -프로그램의 크기보다 분할의 크기가 작은 경우, 해당 분할이 비어있음에도 불구하고 프로그램을 적재하지 ..

페이징과 세그먼테이션

오늘은 페이징과 세그먼테이션에 대해 알아봅시다. 먼저 알아보기 전에 왜 이러한 기법이 나왔을가요? - 다중 프로그래밍 시스템에 여러 프로세스를 수용하기 위해 주기억장치를 동적 분할하는 메모리 관리 작업이 필요하기 떄문! 메모리 관리 기법 1. 연속 메모리 관리 - 프로그램 전체가 하나의 커다란 공간에 연속적으로 할당이 되야함 - 고정 분할 기법 : 주기억장치가 고정된 파티션으로 분할(내 외부 단편화 발생) - 동적 분할 기법 : 파티션들이 동적 생성되며 자신의 크기와 같은 파티션에 적재(외부 단편화 발생) 2. 불연속 메모리 관리 - 프로그램 일부가 서로 다른 주소 공간에 할당될 수 있는 기법 - 페이지 : 고정 사이즈의 작은 프로세스 조각 - 프레임 : 페이지 크기와 같은 주기억장치 메모리 조각 - 단..