| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 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 |
- Express.js
- 그래프 탐색
- 게임 서버 아키텍처
- trie
- Prisma
- 최소 공통 조상
- Binary Lifting
- 벨만-포드
- 자바스크립트
- map
- 2-SAT
- Behavior Design Pattern
- 비트필드를 이용한 dp
- Strongly Connected Component
- Lock-free Stack
- SCC
- reference counting
- Spin Lock
- PROJECT
- 트라이
- JavaScript
- 강한 연결 요소
- 이분 탐색
- R 그래프
- DP
- ccw 알고리즘
- localstorage
- 비트마스킹
- Delete
- Github
- Today
- Total
목록분류 전체보기 (237)
dh_0e
OpenStack 데이터 센터 전체에서 대규모 컴퓨팅, 저장소 및 네트워킹 리소스 풀을 제어하는 클라우드 OS모두 공통 인증 메커니즘을 갖춘 API를 통해 관리 및 제공됨모두 RESTful API로 구성되어 있음OpenStack 안에는 수많은 서비스가 있으며 (연산 담당 Nova, 네트워크 담당 Neutron, 저장소 담당 Cinder 등) 이들이 서로 협력할 때 상대방의 내부 코드를 직접 건드리지 않고, 오직 API 요청만 주고받음(ex. VM 하나 줘 api)대시보드를 통해 관리자가 웹 인터페이스로 리소스를 제공할 수 있음표준 인프라 서비스 외에도 사용자 App의 고가용성을 보장하기 위해 Orchestration, 장애 관리 및 기타 서비스 관리 기능을 제공표준 인프라 서비스 == Instance =..
STL Allocatorvector나 map 같은 STL 컨테이너들은 내부적으로 new, delete를 기본적으로 사용하여 메모리 할당을 하고 있음new, delete는 유동적이기 때문에, 메모리 할당 오류를 제대로 잡아내지 못할 수 있음STL 컨테이너들의 메모리 할당 로직 중간에 개입하고 싶을 수 있음STL Allocator를 만들어 Allocator를 대체하는 메모리 체크 버전 STL 컨테이너를 따로 만들어서 메모리 할당 로직 중간에 개입하거나, 오류를 탐색할 때 사용할 수 있음vector v;이렇게 넣으면 될 것 같지만 STL 컨테이너마다 내부에서 기본적으로 요구하는 함수들이 BaseAllocator에 모두 구현되어 있지 않을 확률이 큼vector 뿐만 아니라 stack, queue 등 다른 컨테이..
Use-After-Free 오류용 Stomp Allocatornew & deleteint main() { SYSTEM_INFO info; ::GetSystemInfo(&info); cout _hp = 100; delete test; test->_hp = 200; return 0;}test->_hp=200; 에서 CRASH가 나지 않음new, delete 같은 힙 할당이 유동적으로 메모리를 관리하기 때문에 다음과 같이 에러를 잡지 못하는 경우가 발생 VirtualAlloc & VirtualFreeint main() { SYSTEM_INFO info; ::GetSystemInfo(&info); cout Window api(VirtualAlloc, VirtualFree)를 이용해서 직접 메모리를 사용하고 해제..
VM vs ContainerVM은 Guest OS를 포함하기 때문에 무겁고, Container는 Host OS의 커널을 공유하기 때문에 가벼움Namespaces: Instance(Bins/Libs)를 나눠주는 기술cgroups: 나누어진 영역이 사용하는 자원의 양을 조절하는 역할 Container애플리케이션과 그 실행에 필요한 모든 요소를 하나로 묶는 기술로 대표적인 예로 도커(Docker) 컨테이너가 있음Standard Packaging (표준화된 패키징)애플리케이션을 구동하기 위해 필요한 코드, 라이브러리, 환경 설정 등을 하나로 묶어 '이미지'라는 표준 규격으로 만들어 줌덕분에 어떤 환경에서도 동일하게 작동함Isolation and Efficiency (격리 및 효율성)리눅스 커널의 Namespac..
New, Delete Operator다음과 같이 new와 delete도 operator로 재정의 가능operator로 흐름을 가로채서 로그를 찍거나 무언가를 할 수 있음class Knight {public: Knight() { cout 다음과 같이 전역으로 선언하면 Global 하게(모든 new, delete에) 적용돼서 위험할 수 있음아래와 같이 클래스에 넣어서 해당 클래스에만 적용되게끔 사용이 가능함class Knight {public: Knight() { cout Allocator.h / Allocator.cppAlloc(): 메모리 할당만 하고 생성자는 직접 호출해주지 않음Release(): 메모리 해제만 담당하고 소멸자는 직접 호출해주지 않음 Memory.h#pragma once#include..
GameServer.cppclass Wraith{public: int _hp = 150; int _posX = 0; int _posY = 0;private:};class Missile{public: void SetTarget(Wraith* target) { _target = target; } void Update() { int posX = _target->_posX; int posY = _target->_posY; // TODO : 타겟을 쫓아감 }private: Wraith* _target = nullptr;};int main(){ Wraith* wraith = new Wraith(); Missile* missile = new Missile(); missile->SetTarget(wraith);..
