본문 바로가기

분류 전체보기

(234)
주소 바인딩 주소 바인딩이란?cpu가 프로세스가 포함하는 데이터를 참조하기 위해서는 프로세스가 가지는 논리주소를 물리주소로 변환 할 수 있어야한다. 이 논리주소와 물리주소를 연결시키는 것을 주소 바인딩이라고 한다. 주소 바인딩은 컴파일 타임 바인딩(Compile-time binding), 로드 타임 바인딩(Load-time binding), 런타임 바인딩(Runtime binding)으로 나뉜다. 1. 컴파일 타임 바인딩 컴파일 타임 바인딩은 데이터의 위치가 컴파일 타임에 결정되는 것을 의미한다. 정적인 주소 할당.물리적 메모리 위치를 변경하려면 다시 컴파일해야하는 단점이 있다. 2. 로드 타임 바인딩프로그램이 시작 될 때 데이터의 물리적 위치가 결정되는 바인딩.프로그램이 종료될 때까지 위치가 고정됩니다.이는 메모리..
B-Tree B-트리는 데이터베이스 시스템과 파일 시스템에서 사용되는 자료구조이다.데이터를 효율적으로 관리하기 위해 설계되었다. B-트리의 구조B-트리는 노드 기반의 트리 구조인데, 각각의 노드는 공통된 특징을 가진다.  B-트리 노드의 구조1. 키 : 하나 이상의 키를 가진다. 키는 데이터를 정렬하는데 사용된다.2. 자식 포인터 : 노드는 자식 노드를 가리키는 포인터를 가지고 있다. 하나 이상 가질 수 있음. 이때, M차 B-트리의 의미는 각 노드는 자식 노드를 (M~M/2)개 가질 수 있다.각 노드는 키를 M-1 ~ M/2-1 개 가질 수 있다. 노드의 키가 N개이면 자식 노드를 최대 N+1 개 가질 수 있다. B-트리는 균형 트리이기 때문에 각 노드는 최소, 최대한의 키를 가지는 장점이 있다.효율적인 검색 및 ..
재귀 함수 자신을 호출하는 방식으로 동작하는 함수 문제를 더 작은 하위 문제로 분할하여 해결하는 분할 정복 알고리즘에 사용된다. 자기 자신을 호출하기 때문에 특정 상황에서의 종료 조건과 재귀 조건을 가져야한다. 재귀함수의 장점 코드를 간결하게 만든다. 문제를 세분화하여 접근 가능하다. 재귀함수 단점 재귀함수가 호출될 때 마다 스택에 메모리가 할당되어 메모리를 많이 차지할 수 있다. 함수의 호출에 따른 메모리 접근에 의해 오버헤드 비용이 반복문에 비해 더 크다. 재귀 함수를 막 사용하면 함수의 논리 이해가 어려워 질 수 있다. 재귀 함수의 성능 향상을 위한 최적화 종료 및 진입 조건을 설정하여 재귀 호출의 횟수를 조절한다. 재귀 함수 구문의 마지막 부분에서 재귀 호출하여, 스텍 프레임을 재사용하는 방식 메모이제이션 ..
래퍼 함수 래핑 기능을 가지는 함수이다. 기존 함수를 감싸서 몇 가지 기능 및 환경을 변경/추가 한다. 특 징 1. 래퍼 함수를 사용하면 기존 함수를 포함하여 추가적인 행동을 가능하게 만들수있다. 2. 래퍼 함수를 사용하면 기존 함수의 호출 방식을 변경할 수 있다. 3. 래퍼 함수를 사용하면 기존 함수를 호출하던 위치에서 호출 시점을 변경할 수 있다.
메모리 단편화 메모리 단편화는 메모리 공간이 조각나 있어 전체 사용 가능 공간이 충분해도 프로세스를 할당할 수 없는 현상. 메모리 단편화를 최소화하기 위해 가상 메모리를 사용한다. 그 중 페이징 기법은 메모리를 고정된 크기의 페이지로 나누어 관리한다. 프로세스는 필요한 페이지만을 메모리에 요청하여 사용하기 때문에 프로세스 실행을 위해 데이터를 연속적으로 할당하지 않아도 되어 단편화 현상이 심해지는 것을 막을 수 있다. 이때 프로세스가 원하는 페이지가 메모리에 없으면 페이지 폴트에 의해 보조기억장치에서 필요한 페이지를 가져온다. 만약 보조기억장치로부터 가져온 페이지를 적재할 메모리 공간이 부족하면 페이지 교체가 일어난다. 페이지 교체 알고리즘에 의해 보조기억장치로 스와핑되어질 페이지가 선택되고 필요한 페이지와 교체된다...
TLS TLS 는 Transport Layer Security 의 약자이다. 네트워크 통신에서 보안과 개인 정보 보호를 위해 사용되는 암호화 프로토콜이다. 전송 계층에서 동작하는 안전성을 보장하기 위한 표준 프로토콜이다. TLS를 사용하여 제3자가 데이터 송수신간에 데이터 변조 및 참조를 방지한다. 프로토콜 : 컴퓨터 네트워크에서 통신을 규제하고 관리하기 위한 규칙의 집합 TLS의 주요 기능1. 암호화 데이터를 암호화하여 안전하게 통신하는 두 당사자 사이에서 전송되는 데이터를 읽을 수 없도록 만든다. 암호화는 주로 공개키 및 대칭키 암호화 기술을 사용하여 이루어진다. 2. 인증 서버와 클라이언트 간에 서로가 누구인지 확인할 수 있도록 한다. 보안 인증서를 사용하여 이루어지며, 클라이언트가 서버의 신원을 확인하고..
push_back, emplace_back push_back 은 생성된 객체를 넣고, emplace_back 은 정보를 받아 함수 내에서 객체를 생성하여 넣는다. push_back 은 이동 생성자를 호출하고 emplace_back은 호출하지 않는다. emplace_back 을 사용하면 불필요한 객체 생성을 줄일 수 있는 장점이 있지만, 정보만 넣는 특성상 과정이 생략되어져 의도치 않은 결과를 가져올 수 있다. 이러한 결과들은 컴파일러가 잡아주지 않기 때문에 위험하다. 객체를 이동하는 비용이 커질 경우에는 emplace_back 을 사용하여 이동 생성자 호출을 막는 것이 좋다. 실수 및 확실히 알아보기 힘든 코드의 경우에는 push_back 을 사용하여 에러를 방지하는 것이 좋다.
move move 는 rvalue 캐스팅해주는 함수이다. 객체를 인자로 전달하면 rvalue 로 캐스팅 해준다. std::vector v; std::string str = "aaa"; v.push_back(std::move(str)); str.clear(); 위와 같은 상황에서 str 은 move 에 의해 rvalue 로 캐스팅되어진다. v 에 push 되는 객체는 str 이 가리키는 메모리를 받고 str 은 nullptr 이 할당된다. 따라서 str 은 요소와 관련한 함수를 호출 할 수 없지만 clear 할 수 있다. 복사와 이동 차이 복사의 경우 복사가 되어질 근본 변수가 유지된다. 이동의 경우 근본 변수가 사용되어지지 않는다는 가정이 있을 경우 사용되며 이동 후 nullptr 된다. 이동은 기존 변수의 소유..