전체 글(91)
-
[Computer science]프로세스와 스레드(Process & Thread)
이 글은 이전에 운영하던 깃 블로그에서 옮겨온 글입니다. 서론 예전부터 프로세스와 스레드를 혼동하는 경우를 많이 봤습니다 다. 사실 둘은 같기도 하고 다르기도 하죠, 비슷하지만 엄연히 다른 프로세스와 스레드. 이 글에서는 각각의 간단한 정의에 대해서 살펴보려 합니다. 프로세스와 스레드(Process & Thread) 프로세스(Process) : 실행되는 프로그램의 작업 단위 스레드(Thread) : 프로세스 안에서 실행되는 흐름의 단위 둘 다 무언가의 단위입니다. 위 설명에서 보듯이, 스레드는 프로세스의 하위 개념이 되겠네요. Process Thread 1 Thread 2 Thread 3 … Thread N 즉, 이처럼 프로세스라는 큰 단위에서 스레드라는 여러 흐름이 있는 것입니다. 메모리의 관점에서 본..
2022.04.08 -
[C/C++]STL 컨테이너 - std::map/std::set 그리고 std::deque
이 글은 이전에 운영하던 깃 블로그에서 옮겨온 글입니다. 서론 이전 글인 [C/C++]STL 컨테이너 - std::vector 와 std::list 에 이어지는 글입니다. 이번 글에서는 std::map과 std::set 그리고 std::deque에 대해서 알아보겠습니다. std::map과 std::set 위의 두 컨테이너는 기능상으로는 매우 유사하기에 같이 다루겠습니다. 차이라고 한다면 map은 key와 그 키의 값에 해당하는 value가 함께 저장되고, set은 key값만 저장되는 구조입니다. 간단한 특징들은 다음과 같습니다. map 레드 - 블랙 트리 기반 Key값과 데이터를 한쌍의 원소로 관리하는 컨테이너 Key값의 중복을 허용하지 않음 (multmap의 경우 key 부분의 중복을 허용함) Key값..
2022.04.08 -
[C/C++]STL 컨테이너 - std::vector 와 std::list
이 글은 이전에 운영하던 깃 블로그에서 옮겨온 글입니다. 서론 과거 취업활동을 위하여 면접을 보러 다닐 때 많이 들었던 질문이 있습니다. STL 컨테이너뿐 아니라 C#의 컬렉션 등 각 언어별 개체(데이터)의 그룹을 다루는 기술은 내부적으로 고유의 자료구조가 있습니다. 이 때문에 자료구조에 대한 이론적인 내용이나 알고리즘, 메모리 최적화는 물론 이를 적절하게 활용할 수 있는지 보는 단골 질문입니다. 오늘은 개인적으로 많이 쓰인다고 생각하는(면접에서 가장 많이 물어보았던 것 위주) C++ STL의 표전 컨테이너들에 관하여 알아보려 합니다. 이번 글에서는 std::vector 와 std::list 에 관하여 알아보겠습니다. std::vector 랜덤 액세스 iterator를 사용하는 배열 기반의 자료구조 배열..
2022.04.08 -
[OOP]객체지향 5원칙(SOLID)
이 글은 이전에 운영하던 깃 블로그에서 옮겨온 글입니다. 서론 최근에 유튜브 인공지능에 이끌려 '제5원소'라는 영화 소개를 보았습니다. 그 영상을 보고 갑자기 객체지향의 5원칙이 떠올라 글을 쓰게 되었습니다. 5라는 숫자와 원소/원칙 이 비슷해서 그런 것 같아요. 위키에 따르면, 객체지향 5원칙 (SOLID)는 다음과 같이 정의된다고 합니다. 컴퓨터 프로그래밍에서 SOLID란 [로버트 마틴]이 2000년대 초반에 명명한 객체 지향 프로그래밍 및 설계의 다섯 가지 기본 원칙을 마이클 페더스가 두문자어 기억술로 소개한 것이다. 프로그래머가 시간이 지나도 유지 보수와 확장이 쉬운 시스템을 만들고자 할 때 이 원칙들을 함께 적용할 수 있다. SOLID 원칙들은 소프트웨어 작업에서 프로그래머가 소스 코드가 읽기 ..
2022.04.08 -
[C/C++]L-Value와 R-Value
이 글은 이전에 운영하던 깃 블로그에서 옮겨온 글입니다. 서론 이전 글인 [C/C++]이동의미론(Move Semantics) 에서 언급한 L-Value 와 R-Value 에 관한 내용입니다. L/R 은 화면 기준 왼쪽(Left) 에 오는 값이냐 오른쪽(Right)의 차이입니다. L-Value와 R-Value L-Value Reference(좌측값 참조)와 R-Value Reference(우측 값 참조)에 관한 간단한 정리 L-Value Reference(좌측값 참조) 이름이 있고 '계속 남아있는 값' 이 L-Value(좌측 값) 좌측 값 참조는 좌측 값만을 참조 '&' (레퍼런스 연산자)를 이용함, 즉 대입받은 값을 참조 임시 값은 좌측 값 참조를 할 수 없음 L-value 참조 생성자/할당자 연산은 복..
2022.04.08 -
[C/C++]이동의미론(Move Semantics)
이 글은 이전에 운영하던 깃 블로그에서 옮겨온 글입니다. 서론 C++11을 처음 접했을 때 알게 된 내용이다. 기존에는 값을 복사하는 방식으로 인자의 전달, 값의 반환 등의 작업이 진행되었다. Move Semantics은 이러한 작업이 값을 복사하여 진행되는 것이 아닌 이동을 통해 진행된다는 개념입니다. 즉, 어차피 같은 값인걸 복사하는 비용과 임시 변수를 생략하고 그대로 쓸 수 없을까? 를 실현하기 위하여 도입된 게 아닐까라고 개인적인 생각입니다. 이동 의미론과 복사 의미론 일반적으로 값이 복사되어 작업을 진행할 경우 다음과 같은 과정으로 진행됩니다. (복사 의미론) 멤버 변수를 위한 새로운 리소스 할당 => 새로운 공간 할당 인자로 부터 this 포인터로 복사 => 새로운 공간에 기존에 있던 값들 복..
2022.04.08