Roxy(171)
-
빅엔디안과 리틀엔디안
빅엔디안과 리틀엔디안바이트 오더라하여 바이트의 정렬 순서를 이야기합니다.프로그래밍 하는 과정에서 많이 헷갈리기도 하는데요.리틀엔디안부터 알아보도록 하겠습니다. 리틀엔디안 (Little Endian)리틀엔디안은 주로 인텔 프로세스에서 사용하는 바이트오더 입니다.리틀이라는 말 처럼 메모리 시작 주소를 하위 바이트부터 기록한다는 뜻입니다. - 빅엔디안은 그럼 반대겠죠? 리틀 엔디안의 바이트 오더 기록 순서입니다.레지스터에 기록된 내용을 하위바이트부터 메모리에 넣는 것을 보실 수 있습니다. - 오른쪽 -> 왼쪽의 순서로 읽습니다. 리틀엔디안은 메모리에 저장된 값의 하위 바이트들만 사용할 때에는 별도의 계산이 필요 없다는 장점이 있습니다. - 앞의 두 바이트나 한 바이트를 떼어내면 바로 하위 16비트나 8비트를 ..
2016.11.09 -
객체 지향 프로그래밍
객체 지향 프로그래밍 (Object-Oriented Programming)일종의 프로그래밍 방법론으로 프로그램을 구성하는 함수와 변수를 묶어서 객체를 만들고 객체 단위로 프로그래밍 하기 위한 방법입니다. 객체 지향 프로그래밍의 장점- 모듈간의 독립성 증대 + 하나의 프로그램은 여러가지 기능으로 구성 -> 각각의 기능들은 모듈로 구현 + 독립성이 높을 수록 유지보수, 개발이 쉬워짐 + 객체 지향 프로그래밍에서는 모듈화의 단위가 객체 단위가 된다 + 독립적인 기능을 지원하는 객체를 구현하고 객체들을 모아서 프로그램을 개발하는 것이 객체 지향 프로그래밍의 방식 + 객체마다 고유의 기능이 정해져 있기 때문에 특정 객체에서 문제가 발생하면 그 객체만 수정하면 된다. + 객체의 구현이 변경되더라도 객체의 인터페이스..
2016.11.09 -
깊은 복사와 얕은 복사
깊은 복사와 얕은 복사객체는 다른 객체를 참조할 수 있는데 이럴 경우에 객체의 복사본을 핸들링 할 경우 깊은 복사인가, 얕은 복사인가에 따라 결과값이 달라질 수 있으니 주의해서 다루어야 합니다. 복사를 한다는 것은 기존 객체와 같은 값을 가진 새로운 객체로 만든다는 것입니다.객체들은 멤버를 가지고 있고 그 멤버들은 값일 수도 있고 참조 형식일 수도 있습니다.- 바로 이 객체들이 가진 값 형식과 참조 형식의 복제 방식에 따라 얕은 복사와 깊은 복사의 개념이 나누어지게 됩니다. 얕은 복사(Shallow Copy)얕은 복사는 객체가 가진 멤버들의 값을 새로운 객체로 복사하는데 만약 객체가 참조타입의 멤버를 가지고 있다면 참조값만 복사가 됩니다. 아래의 예제를 보면,, main의Person B = A;라는 구문..
2016.11.09 -
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(회전) 등의 연산을 하며 해싱하게 되는데 원문에서 토시 하나라도 달라지게 되면 스노우볼 효과로 ..
2016.11.09 -
RSA 암호화
RSA 암호화RSA암호화는 공개키 암호화 시스템의 하나로, 암호화 뿐만 아니라 전자서명이 가능한 최초의 알고리즘입니다.RSA암호화는 비대칭 방식으로 암호화 하는 키와 복호화하는 키가 다른 암호화 방식입니다.소인수분해의 난해함을 이용한 암호화 방식으로 공개키만 가지고는 개인키를 알아낼 수 없도록 설계되어 있습니다. RSA 암호화 처리 방식RSA 암호화는 두 개의 키를 갖습니다.- 키 : 메시지를 열고 잠그는 상수 공개키와 개인키 두 가지를 사용하는데- 공개키 : 데이터를 암호화하는데 사용하는 키, 공개되어 있는 키- 개인키 : 암호화된 데이터를 풀어내는데 사용하는 키, 복호화 할 수 있는 키, 공개되어있지 않은 키라고 해서 다른말로 비밀키라고도 합니다.누구나 암호화 시킬 수 있지만 그것을 볼 수 있는 사람..
2016.11.09 -
배열과 리스트
배열과 연결리스트 배열은- 스택 영역에 자료를 저장하고 컴파일시 공간을 확보하게 됩니다.- 자료를 순차적으로 저장하고 인덱스의 번호로 접근이 가능합니다. + 자료의 접근과 저장이 빠릅니다.- 한번 확보한 배열의 크기를 변경하기가 어려워 메모리가 낭비되고 비효율적일 수 있습니다.- 배열의 내부 요소를 정렬하고자 할 때 연결리스트에 비해 빠릅니다. + 인덱스 번호로 바로 접근해서 요소를 찾아내고 정렬하기 때문입니다.- 내부 데이터의 탐색이나 정렬을 자주한다면 배열을 사용하는 편이 좋습니다. + 접근하기가 연결리스트에 비해 빠르기 때문 (인덱스) 연결리스트는- 힙 영역에 자료를 저장하고 필요할 때마다 메모리를 확보해 사용합니다.- 매번 데이터를 저장할 때마다 데이터를 위한 메모리를 확보해야 하므로 연산 속도가..
2016.11.09