분류 전체보기 290

C 데이터, 스택, 힙 영역

메모리 영역의 종류운영체제는 우리가 작성한 프로그램을 위한 메모리를 할당합니다. 그렇다고 무작정 할당해주지는 않고 용도에 따라 메모리 공간을 할당해 메모리의 효율적 사용을 가능하게 합니다. 그 종류로는 데이터 영역, 힙 영역, 스택 영역 이 있습니다.     데이터 영역데이터 영역은 전역변수, static 변수를 위한 메모리 공간입니다.이 둘의 공통점은 시작과 동시에 메모리에 올라가서 프로그램이 종료될 때 까지 남아있다는 것입니다.이런 변수들이 메모리의 데이터 영역에 지정됩니다.  힙 영역힙 영역은 필요할 때 동적으로 메모리를 할당하기 위한 영역으로 malloc 등으로 동적으로 선언된 변수들이 메모리 공간의 힙 영역에 저장됩니다.즉, 할당되어야 할 메모리의 크기를 실행 시간 도중에 결정해야 할 경우가 이..

Database와 Transaction의 특징

Database의 특징DB의 특징으로는 실시간 접근성, 계속적 변화, 동시공유, 내용에 의한 참조 가 있습니다.- 실시간 접근성 : 쿼리에 대한 실시간 응답- 계속적 변화 : 새로운 데이터의 삽입, 삭제, 갱신으로 최신상태 유지- 동시 공유 : 여러 사용자가 동시에 원하는 데이터 획득 가능- 내용에 의한 참조 : 데이터베이스에 있는 데이터를 참조할 때 사용자가 요구하는 데이터 내용을 찾음 Transaction의 특징트랜잭션의 특징으로는 원자성, 일관성, 독립성, 영속성이 있습니다.- 원자성 : 트랜잭션의 연산은 모두 완벽히 수행되어야 하며 하나라도 되지 않으면 트랜잭션 전부가 취소 되어야 한다.- 일관성 : 트랜잭션의 실행이 성공적으로 끝났으면 언제나 일관성 있는 DB로 변환되어야 한다. 트랜잭션의 수행..

Database 2014.11.21

동차좌표 (Homogeneous Coordinates)

동차좌표 (Homogeneous Coordinates)OpenGL에서의 동차좌표계는 4x4의 3차원 좌표 행렬을 4개의 수로 줄인 것입니다. 실제로 OpenGL에서는 4차원으로 연산이 이루어지는데 바로,(x, y, z, w)- x : x좌표- y : y좌표- z : z좌표 (우리가 흔히들 아는)- w : 점인지 선인지 표현 (0은 벡터, 1은 점)의 요소로 이루어진 동차좌표계를 사용합니다.3개의 좌표만으로는 점인지 선인지 알 수 없기 때문에 네번째 요소인 w를 사용하여 4차원으로 구별합니다. 이 동차좌표계는 3차원의 모든 상황들을 표현할 수 있습니다.1차원 점 : (x, 0, 0, 1)2차원 점 : (x, y, 0, 1)3차원 벡터 : (x, y, z, 0)이런 식으로 표현할 수 있습니다. 동차좌표를 사..

Graphics/OpenGL 2014.11.20

SHA 해싱

SHA 해싱SHA(Secure Hashing Algorithm)는 안전한 해시 알고리즘으로 암호학적 해시 함수들의 모음입니다. SHA-0을 시작으로 이후 변형된 SHA-1이 발표되었고, 이후 SHA-224, SHA-256, SHA-384, SHA-512가 더 발표되었습니다. SHA-256과 SHA-512는 각각 32비트, 64비트 워드를 사용하는 해시함수이며 몇몇 상수들이 다르지만 그 구조는 라운드의 수를 빼고는 같습니다. SHA-224와 SHA-384는 SHA-256과 SHA-512의 결과를 최종 해시값 길이에 맞춰 잘라낸 것입니다. 해시값을 얻어낼 때에는 원문의 각 비트들을 and, or, xor, rotr(회전) 등의 연산을 하며 해싱하게 되는데 원문에서 토시 하나라도 달라지게 되면 스노우볼 효과로..

윈도우 메세지

윈도우 메세지윈도우는 메세지 기반 구동 방식의 운영체제입니다.윈도우 메세지는 마우스를 움직인다거나 키보드를 입력하는 등의 이벤트들이나 윈도우 크기 변화 색깔의 변화 등과 같은 시스템적 상태 변화에 의해 발생합니다.윈도우 메세지가 발생하면 윈도우는 두 가지 방법으로 메세지를 전달합니다. 1. 각 어플리케이션 마다 가지고 있는 메세지 큐에 메세지를 추가하는 방법 - 사용자 요구에 따른 키보드/마우스 이벤트 등2. 빠른 처리를 위해 어플리케이션의 윈도우 프로시저에 직접 메세지를 전달하는 방법 - 특정 윈도우에 어떠한 작업을 지시하기 위한 메세지이 있습니다.    이벤트 발생 -> 시스템 메세지 큐 -> 응용 프로그램 메세지 큐 -> 메세지 루프 -> 윈도우 프로시저이러한 처리 과정을 가지고 있습니다. 메세지 ..

깊은 복사와 얕은 복사 (Deep Copy, Shallow Copy)

깊은 복사와 얕은 복사 객체는 다른 객체를 참조할 수 있는데 이럴 경우에 객체의 복사본을 핸들링 할 경우 깊은 복사인가, 얕은 복사인가에 따라 결과값이 달라질 수 있으니 주의해서 다루어야 합니다. 복사를 한다는 것은 기존 객체와 같은 값을 가진 새로운 객체로 만든다는 것입니다. 객체들은 멤버를 가지고 있고 그 멤버들은 값일 수도 있고 참조 형식일 수도 있습니다. - 바로 이 객체들이 가진 값 형식과 참조 형식의 복제 방식에 따라 얕은 복사와 깊은 복사의 개념이 나누어지게 됩니다. 얕은 복사(Shallow Copy) 얕은 복사는 객체가 가진 멤버들의 값을 새로운 객체로 복사하는데 만약 객체가 참조타입의 멤버를 가지고 있다면 참조값만 복사가 됩니다. 아래의 예제를 보면,, main의 Person B = A;..

Basics/Programming 2014.11.15

RSA 암호화

RSA 암호화 RSA암호화는 공개키 암호화 시스템의 하나로, 암호화 뿐만 아니라 전자서명이 가능한 최초의 알고리즘입니다. RSA암호화는 비대칭 방식으로 암호화 하는 키와 복호화하는 키가 다른 암호화 방식입니다. 소인수분해의 난해함을 이용한 암호화 방식으로 공개키만 가지고는 개인키를 알아낼 수 없도록 설계되어 있습니다. RSA 암호화 처리 방식 RSA 암호화는 두 개의 키를 갖습니다. - 키 : 메시지를 열고 잠그는 상수 공개키와 개인키 두 가지를 사용하는데 - 공개키 : 데이터를 암호화하는데 사용하는 키, 공개되어 있는 키 - 개인키 : 암호화된 데이터를 풀어내는데 사용하는 키, 복호화 할 수 있는 키, 공개되어있지 않은 키라고 해서 다른말로 비밀키라고도 합니다. 누구나 암호화 시킬 수 있지만 그것을 볼..

C++ Volatile 키워드

Volatile 키워드휘발성, 그 뜻 그대로 언제든지 그 값이 변할 수 있음을 의미합니다.const 키워드와 함께 변수의 성질을 바꾸는 역할을 하는 타입 한정자입니다. 하지만, 그 사용빈도가 낮아 책이나 자료들에서도 잘 다루어지지 않는 키워드입니다.- 타입 한정자 (const도 마찬가지) : 타입에 특정 속성을 더해주는 키워드volatile 키워드가 지정된 변수는 최적화를 수행하지 않습니다. 변수의 최적화변수의 최적화는 말 그대로 최적화를 시켜주는 컴파일러의 기능인데 프로그래머는 사람이기 때문에 실수를 하기 마련입니다.- 물론 모든 잘못을 컴파일러가 보완 할 수는 없습니다.예를 들면,int a;a = 0;a = 1;a = 3;이런 식의 코드가 있다고 한다면, a에는 최종적으로 3의 값이 들어가게 되며 이..

C++ 포인터와 레퍼런스의 차이

포인터와 레퍼런스포인터와 레퍼런스 둘 다 원본 대상을 참조하여 이용한다는 점에서는 같습니다.- 사용하는 용도에 따라 차이점이 있기 때문에 이 둘이 존재합니다.  포인터와 레퍼런스의 차이점  포인터레퍼런스 선언 방법 int *pData; int &rData;  NULL 값 NULL 허용 int *pData = NULL;   // 실행가능 - 참조 대상을 아무때나 참조 가능 NULL 불가 int &rData = NULL;  // 컴파일 에러 int &rData = num;  - 이런식으로 선언과 동시에 초기화를 해주어야 한다. 초기화 시 string name("Hyeven"); string *pData = &name; - name의 주소값을 대입합니다. string name("Hyeven"); string ..

C++ malloc/free와 new/delete의 차이점

malloc과 new의 차이점  malloc : 라이브러리에서 제공하는 메모리 할당 함수, free(변수명) 으로 할당 내용을 해제한다. - 형태 : void *malloc(size_t size), 반환형 : *void 메모리공간  + 예 : int a = (int*)malloc(50 * sizeof(int));   - int형의 자료가 50개가 들어갈 공간을 확보, a[0~49]의 인덱스로 접근가능 - 프로그램 실행 중에 메모리를 할당받는 동적 메모리 할당 함수new : 변수나 함수 객체의 생성자를 자동으로 호출하는 연산자, delete로 해제한다.