메모리 맵 파일을 사용하려면 다음 세 단계를 수행해야한다. - 메모리 맵 파일로 사용할 디스크 상의 파일을 나타내는 커널 오브젝트를 생성하거나 연다.(CreateFile) - 파일의 크기와 접근 방식을 고려해 파일 매핑 커널 오브젝트를 생성한다.(CreateFileMapping) - 포르세스의 주소 공간 상에 파일 매핑 오브젝트의 전체나 일부를 매핑시킨다.(MapViewOfFile) CreateFile 핸들을 받아와 파일 혹은 오브젝트를 생성하거나 열 수 있는 함수. 이 함수를 사용해 운영체제에게 파일 매핑을 수행할 파일의 물리 저장소를 알려준다. HANDLE CreateFile( LPCTSTR lpFileName, DWORD dwDesiredAccess, DWORD dwShareMode, LPSECUR..
IPC를 하기 위해서 공유 메모리를 사용하기로 했다. 먼저 IPC 통신이란 프로세스간에 의사소통을 하는 것을 말한다. 이는 서로 데이터를 주고 받을 수 있다는 것이며 동시에 접근이 가능한 메모리가 필요하다는 것이다. IPC 종류 1. 공유 메모리 - 일반적으로 각 프로세스들은 고유의 메모리를 사용한다. - 공유 메모리를 통해 둘 이상의 프로세스가 메모리에 접근할 수 있는 개념으로 한 프로세스에서 변경한 메모리 공간의 내용을 다른 프로세스에서도 접근이 가능하다. - 메모리에 여러 cpu가 접근하기 때문에 각 클라이언트 pc가 자신만의 캐시를 가지고 있을 때, 공유 메모리를 사용할 때마다 캐시의 갱신으로 캐시 데이터가 불일치하는 캐시 일관성 문제가 발생할 수 있다. 이런 캐시 일관성 문제가 가장 다루기 어려..
#include #include using namespace std; typedef string Elem; class CNode{ Elem e; CNode * next; friend class CLinkedList; }; class CLinkedList{ CNode * cur; public: CLinkedList(); ~CLinkedList(); bool empty() const; void advance(); void add(const Elem& e); void remove(); const Elem& front() const; const Elem& back() const; } CLinkedList::CLinkedList():cur(NULL){} CLinkedList::~CLinkedList(){ whil..
#include #include using namespace std; class StringNode{ string elem; StringNode * next; friend class SLinkedList; //뒤에서 구현할 SLinkedList : 생성자,소멸자 삽입삭제 기능을 제공하는 클래스 }; class SLinkedList{ StringNode * head; public: SLinkedList(); ~SLinkedList(); bool empty() const; const string& front() const; void addFront(const string& e); void removeFront(); }; //head를 NULL로 초기화 SLinkedList::SLinkedList():head..
배열을 사용해 게임 엔트리를 저장한다. 배열은 간단히 데이터의 저장 용도로 많이 사용된다. 배열에 어떤 데이터를 저장할 지 생각해보자. 먼저 점수(score)를 저장하고, 이 점수를 얻은 사람의 이름(name)을 저장한다. //const 등 일부 유형의 데이터는 선언과 동시에 초기화가 필요하다. const 변수에는 값을 할당할 수 없다. 이 문제를 해결하기 위해 초기화 리스트를 사용. #include #include using namespace std; class GameEntry{ public: GameEntry(const string& n="",int s = 0); string getname() const; //const method를 사용해 메소드 안에서는 변수값을 바꿀 수 없음, const met..
STL Standard Templete Library의 줄임말이다. c++ 표준 라이브러리 중 하나로 많은 제네릭 클래스와 제네릭 함수를 포함하고 있다. ※제네릭 클래스란 정해지지 않은 타입을 선언해 사용자가 지정한 타입에 맞춰 클래스를 사용할 수 있다. 제네릭 함수도 마찬가지. 리스트, 큐, 스택, 맵, 벡터 등 컨테이너를 포함하고 있다. ※컨테이너는 클래스 템플릿으로 변수를 선언할 때 타입을 명시해 사용한다. 데이터를 담아두는 자료 구조를 표현한 클래스이다. vector,deque,list,set,map,stack,queue 등이 있음 iterator 컨테이너 원소에 접근할 때 사용하는 포인터. iterator : 다음 원소로 전진 reverse_iterator : 지난 원소로 후진 Vector 가변..
□객체의 동적 생성 및 반환 클래스이름 *포인터변수 = new 클래스이름; 클래스이름 *포인터변수 = new 클래스이름(생성자매개변수리스트); delete 포인터변수; Circle *p = new Circle; Circle *q = new Circle(30); delete p; delete q; □객체 배열의 동적 생성 및 반환 클래스이름 *포인터변수 = new 클래스이름[배열크기]; delete [] 포인터변수 ; Circle *pArray = new Circle[3]; //3개의 Circle 객체 배열의 동적 생성 pArray[0].setRadius(10); //pArray->setRadius(10); 으로도 표현가능 pArray[1].setRadius(10); //(pArray+1)->setRadi..
□객체 포인터 객체에 대한 포인터 -C언어의 포인터와 동일 -객체의 주소 값을 가지는 변수 포인터로 멤버에 접근할 때 - 객체포인터 -> 멤버 #include using namespace std; class Circle{ public: Circle(){radius=1;} double getArea(); ... }; double Circle::getArea(){ return 3.14*radius*radius; } int main(){ Circle donut; Circle *p; //포인터 변수 생성 p=&donut; //포인터 변수에 객체 접근 cout
□소멸자 -객체가 소멸되는 시점에서 자동으로 호출되는 함수 ※특징 객체가 사라질 때 마무리 작업을 위함. 소멸자 함수의 이름은 클래스 이름 앞에 ~를 붙인다. 리턴형X 중복 불가능함. 선언하지 않으면 자동으로 기본 소멸자 생성 class Circle{ ... Circle(); Circle(itn r); ... ~Circle(); //소멸자 선언 }; Circle::~Circle(){ //소멸자 함수 구현 .... } □생성자/소멸자 실행 순서 지역 객체 - 함수 내에 선언되고, 함수가 종료되면 소멸 전역 객체 - 함수 바깥에 선언되고, 프로그램이 종료되면 소멸 객체 생성 순서 지역 객체 - 함수가 호출되는 순간에 순서대로 생성 전역 객체 - 프로그램에 선언된 순서대로 생성 객체 소멸 순서 지역 객체 - ..
- Total
- Today
- Yesterday
- 차량 네트워크
- 로지스틱회귀
- porks
- json2html
- 단순선형회귀
- 회귀
- AVB
- Python
- SOME/IP
- SVM
- cuckoo
- one-to-many
- 차량용 이더넷
- CAN-FD
- 머신러닝
- HTML
- automotive ethernet
- many-to-one
- PCA
- 크로스 엔트로피
- 딥러닝
- 이상탐지
- problem statement
- 케라스
- AVTP
- many-to-many
- 논문 잘 쓰는법
- Ethernet
- AE
- automotive
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |