* 윈도우 라이브러리 파일 - ms windows os는 dll이라고 알려진 라이브러리를 지원 - 이것들은 복사본 하나만 메모리에 올라와도 여러 프로세스에서 사용될 수 있는 코드 라이브러리이다. [그림 1] 웹에서 구현되는 프로그램들의 실행 흐름을 보여주는 다이어그램 * kernel mode - 각종 프로토콜, 하드웨어 드라이버들이 있음* user mode - 실제로 사용자가 프로그램을 실행하는 윈도우 * ntdll.dll - 윈도우가 부팅되면서 커널메모리 영역을 사용할 수 있게끔 해주는 중요한 역할 * kernel32.dll - ntdll.dll과 kernel32.dll 은 한몸이라 볼 수 있음 - 모든 프로그램은 항상 ntdll.dll 파일과 kernel32.dll파일(이하 소개하는 DLL을 포함)을..
* node-forge - Javascript를 사용하여 TLS를 구축한 프레임워크 * client example var someBytes = 32; var key = forge.random.getBytesSync(16); var iv = forge.random.getBytesSync(16); var cipher = forge.cipher.createCipher('AES-CBC', key); cipher.start({ iv: iv }); cipher.update(forge.util.createBuffer(someBytes)); cipher.finish(); var encrypted = cipher.output; console.log('encrypted : ' + encrypted.toHex()); var..
* Cyptographic Hash - Message Digest. - 대표적 암호화 해쉬 알고리즘 : MD5(output 128 bit == 16byte), SHA-1(output 16 bit == 20byte) - 크기와 해쉬 값이 같다면 같은 파일이라는 것을 알 수 있다. * Encryption & Decryption - 암호화, 복호화 - 무엇을 변경하는 것을 Encryption, 원상태로 복원하는것을 Decryption * Symmetric Key Algorithm - 대칭키 (하나의 키)를 Encryption, Decryption에 사용 - 속도가 빠른편 - 대표적 알고리즘 : 3DES, AES * Asymmetric Key Algorithm - 비대칭키 ( Private Key, Public..
* MT - Multi Thread - CRT 라이브러리를 정적 라이브러리로 링크하는 것 - CRT 라이브러리를 실행파일(EXE, DLL)에 포함시키겠다는 의미로 생각하면된다. - 실행파일에 CRT라이브러리를 넣기 때문에 파일 사이즈가 커진다. - MT는 모든 실행파일(DLL, EXE)에 각각의 파일들이 사용하는 힙메모리가 생성된다 ( n개의 DLL파일에 n개의 독립적인 CRT 힙메모리) * MD - Multi Thread DLL - CRT 라이브러리를 DLL로 제공하겠다는 것 - MT에 비해 파일 사이즈가 작음 - CRT DLL이 없는 환경에서는 사용 불가 - MD는 모든 실행파일(DLL, EXE) 이 사용하는 하나의 힙메모리가 생성된다 ( n개의 DLL파일에 1개의 공통 CRT 힙메모리) 출처 : h..
* 프로세스- OS로 부터 주소공간, 메모리, 파일등을 할당받는 실행의 단위.- 쉽게 말해, 우리가 어떤 프로그램을(롤, 워드, 엑셀과 같은) 실행 했을때 메모리에 올라가는 단위라 생각하자- 각각의 프로세스는 완벽히 독립적( Code, Data, Heap, Stack )이다. (워드를 여러 개 실행 했다고 생각해보자) * 스레드- 한 프로세스내에서 동작하는 여러 실행의 흐름.- 프로세스 내의 쓰레드들은 스택공간을 제외한 나머지 공간과 시스템 자원( Code, Data, Heap )을 공유한다. 스레드는 시스템자원(데이터 영역 메모리)를 공유하기 때문에, 실제로 전역변수를 사용하여 데이터를 공유할 수 있다. 또한 코드를 공유하기 때문에 같은 함수에 접근이 가능하다. 이러한 장점은 스레드간 충돌문제를 일으킬..
C++에서는 접근 제어자라는것이 있는데, 이는 함수를 구조체 내에 정의하거나, 구조체 키워드가 생략되는 것 이외에도 멤버의 접근에 제한은 둘 수 있도록 하는 것이다. 접근 제어 지시자 의 종류 : public, private, protected public 지시자는 프로그램 어디에서나 접근가능private 지시자는 외부에서 접근하지 못하며, 내부에서만 접근가능하다. struct student {private: int id; char *name; float percentage;public: void Show(); void SetInfo(int _id, char * _name, float _percentage);}; // 구조체 뒤에 세미콜론이 와야함 void student::Show() { cout
기존 C에서 힙영역의 메모리 공간을 할당과 해제하는 malloc 과 free가 있는데 C++ 에서는 new 와 delete로 대체되었다. 결론적으론 new는 힙영역의 메모리 할당을 담당하며, delete는 힘영역의 할당된 메모리를 해제하는 역할을 한다. int * pt1 = new int; // 객체를 동적할당delete pt1; // 할당된 객체 소멸 int * pt2 = new int[10]; // 길이가 10인 객체의 배열을 동적할당.delete []pt2 // 동적할당된 객체의 배열을 소멸 중요: 동적할당된 객체의 배열은 delete []pt2와 같이 작성하여야한다. 그렇지 않으면 메모리 누수가 발생. 출처 : http://blog.eairship.kr/164
함수의 오버로딩이라 함은 함수명이 같으나, 인자의 자료형, 수가 다른 함수의 선언을 사용하는 것이다. using namespace std;void functionA(int a){printf("a = %d",a);}void functionA(int a, int b){printf("a+b = %d",a+b);} int main(){fucntionA(1);functionA(1,2);return 0;}출처 : http://blog.eairship.kr/163
네임스페이스란 간단히 말해서 관련있는 녀석들끼리 모여있는 공간을 말한다.여러 팀이서 하나의 작업을 할 경우, 각 팀이 짠 프로그램을 병합할때 생기는 문제(함수명의 유사성, 동일성 과같은)를 사전에 방지하기위해 각 코드를 묶는 개념이다.namepace A{ //이와 같은식으로 namespace를 선언할 수 있는데,void functionA(){ }void functionB(){ }}int main(){A::functionA();A::functionB();}보는 거와 같이 네임스페이스의 함수를 사용할 수 있다.이런게 선언한 namespace를 쉽게 사용할 수 있도록 도와주는 놈이 있는데, using 이라는 놈이 그역할을 합니다. 이러한 using에는 지시자와 선언자가 있다.위의 예제를 using의 지시자, ..
프로그램을 실행 시키면 운영체제는 우리가 실행시킨 프로그램을 위해 메모리 공간을 할당 해준다할당되는 메모리 공간은 크게 스택(Stack), 힙(Heap), 데이터(Data)영역으로 나뉘어 진다. 데이터 영역- 전역 변수와, Static 변수가 할당되는 영역- 프로그램의 시작과 동시에 할당, 프로그램이 종료되어야 메모리에서 소멸 스택 영역- 함수 호출시 생성되는 지역변수와 매개변수가 저장되는 영역- 함수 호출이 완료되면 사라짐 힙 영역- 필요에 의해 동적으로 메모리를 할당 할 때 사용- 할당해야 할 메모리의 크기를 프로그램이 실행되는 동안 결정해야 하는 경우(런 타임때) 유용하게 사용되는 공간 출처- http://dsnight.tistory.com/50
- Total
- Today
- Yesterday
- MEAN stack
- remote debug
- rxswift
- ucrtbase.dll
- iOS10
- 윈도우 라이브러리
- TLS1.2
- Visual Studio
- node js
- Node.js
- PCX
- full stack
- ATS
- 대칭키
- AES
- executable jar
- 전자서명
- JavaScript
- reactivex
- TypedArray
- App Transport Security
- cipher
- angular
- yss
- execute double click
- build set
- 비대칭키
- 암호화
- HTTPS
- Universal CRT
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |