일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- list
- C++
- dependencyResilutionManagement
- registerForActivityResult
- 포톤
- 안드로이드스튜디오
- 게임개발
- unorderedset
- 세마포
- map
- 유니티
- Unity
- 유니티슈팅게임
- Java
- unorderedmap
- 스핀락
- StartActivityForResult
- SpinLock
- mutex
- 바이너리세마포
- semaphore
- 광유다
- 지크슈
- NotFoundException: String resource ID #0x0
- 동기화
- 뮤텍스
- ARface
- Vector
- photon
- unityAR
- Today
- Total
목록전체 글 (78)
와와
객체 지향의 사실과 오해: 역할, 책임, 협력 관점에서 본 객체지향 조영호 지음 0. 서문 객체지향으로 향하는 네 단계의 걸음 첫 걸음, 클래스가 아니라 객체를 바라보는 것두 번째 걸음, 객체를 독립적 존재 보다는 기능을 구현하기 위해 협력하는 공동체의 존재로 바라보는 것세 번째 걸음, 객체들에게 적절한 역할과 책임을 부여하는 것네 번쨰 걸음, 위 세가지를 언어라는 틀에 담아내는 기술을 익히는 것 작가님의 말에 의하면, 이 책의 목적은 객체지향의 첫 걸음에서 마지막 걸음까지 내디딜 수 있도록 도움을 주는 것이다.이 책을 읽기 전인 나는 현재 객체지향을 독립된 객체들이 각각의 기능을 하고, 그들의 상호작용으로 무언가를 구현하도록 하는 것... 으로 막연하게 생각하고 있다. 당장 눈 앞의 구현을 위해 코드만..
테이블이 한 개만 있는 식당이 있다고 가정해보자! 식당에 여러 손님이 동시에 들어와 한 테이블에 앉으려고 하면 굉장한 혼란이 발생할 것이다. 여기서 벌어질 수 있는 혼란 중의 하나로, 경쟁 조건( race condition )을 뽑을 수 있다. 경쟁 조건은 여러 프로세스/스레드가 동시에 같은 데이터를 조작할 때 타이밍이나 접근 순서에 따라 결과가 달라질 수 있는 상황을 의미한다. 그럼 경쟁 조건을 막기 위해선 어떻게 해야할까? 아주 간단하다. 하나의 스레드의 진입만 허용하고 그동안 다른 스레드의 진입을 금지하면 된다. 이것을 상호배제( mutual exclusion )라고 한다. 완벽한 동기화를 위해 상호 배제를 위한 방법 3가지를 알아보도록 하겠다! 식당 비유를 다시 생각해보자면 완벽한 동기화를 위해서..
스택 메모리 - 정적 할당, 컴파일 시간에 크기가 결정됨, 함수 호출 시 자동 할당되고 함수 종료 시 자동 해제됨 - LIFO(Last In First Out)방식으로 관리되며, 메모리 관리가 간단하고 빠르다. 스택의 크기는 제한적이기 때문에 큰 데이터를 저장하기에는 적합하지 않다. 정적 할당: Static Allocation - 변수/객체의 크기와 수명이 컴파일 시간에 결정된다. 힙 메모리 - 동적 할당, 프로그램 실행 중에 크기가 결정되며, 개발자가 'new' 연산자를 사용하여 메모리를 할당하고, 'delete' 연산자를 사용하여 메모리를 해제한다. - 스택에 비해 관리가 복잡하고 할당 및 해제 속도가 느리다. 그러나 메모리의 크기 제한이 스택보다 유연하여 큰 데이터를 저장하기에 적합하다. 동적 할당..
Vector 내부 구현: 동적 배열 기반. 요소들이 메모리 상에서 연속적으로 저장 (요소끼리 간격 없음) [요소1][요소2][요소3][요소4]...[요소n] 접근 시간: 인덱스를 통한 랜덤 접근 : O(1)의 시간 복잡도 메모리 할당 초기에는 일정 크기의 메모리 블록을 할당하여 요소 저장. 공간이 가득 차면 현재 크기의 두 배에 해당하는 새로운 메모리 블록을 할당하고, 기존 요소들을 복사한 뒤 기존 메모리를 해제 삽입과 삭제: 메모리 상에서 요소가 연속적으로 위치하기 때문에, 중간에 요소를 삽입하거나 삭제하는 작업은 O(n)의 시간 복잡도, 맨 끝에 요소를 추가하거나 삭제하는 작업은 상수 시간 복잡도(O(1))를 가짐 vector 예시 #include #include int main() { std::ve..
vector밖에 모르는 나...의 보다 쾌적한 코딩 활동을 위해 map, set에 대해서 공부해보겠습니다. vector VS map VS set vector 정수 인덱스 사용, 값을 저장 map 키 인덱스 사용, 키-값 쌍을 저장, 빠른 검색. set 중복 요소 허용X, 키 저장, 빠른 검색. ordered map VS unordered map ordered map (std::map) : 키에 따라 정렬된 상태로 데이터 유지 : 이진 검색 트리(대부분의 구현에서는 레드-블랙트리)를 사용하여 구현 : 키에 대해 순서대로 반복하거나 특정 순서를 유지해야 할 때 유용 : 주요 연산(검색, 삽입, 삭제)은 로그 시간 복잡도 '0(log n)' unordered map (std::unordered_map) : 해..