본문 바로가기

B Tree / B* Tree / B+ Tree B Tree(Balanced Tree) 균형트리로서 기존에 자식을 2개만 가질 수 있던 Binary tree를 확장하여 더 많은 자식을 가질 수 있는것기존의 binary tree의 경우 추가, 검색, 삭제등에 O(NlogN)의 시간복잡도를 보여주었고좌우 균형이 맞지않는 최악의 경우 O(N*N)의 시간복잡도를 가지게 된다. B-Tree란 하나의 node에 어러자료가 배치되는 tree 구조이다.한개의 node에 M개의 자료가 배치되면 M차 B-tree라고 한다.5차 B-Tree인경우 자식노드가 최대 5개인 것을 의미한다.B-Tree는 스스로 균형을 맞추는 tree이다. 그래서 최악의 경우에도 O(logN)의 검색성능을 보인다.또한 B-tree는 하나의 node에 많은 수의 data를 저장할 수 있다. 조건 ..
Multi play game의 server 형태와 그 특징 비동기형 Multi play Game Web browser 기반의 PC game이나 초창기 mobile game에서 많이 볼수 있는 server로서Puzzle game이나 farm game 처럼 player사이의 직접적인 상호작용이 거의 없거나 상호작용이 있다고 하더라도실시간으로 player의 상태를 동기화 할 필요가 없는 game에서 많이 사용된다. 예를들어 상대방과 같은 시점에 동시에 play하지 않아도 되고, 상대방의 data역시 항상 최근의 상태를 반영하지 않아도상호작용이 가능한 약한 multi play요소를 가지고 있는 게임들 Request-Reply 기반의 message 교환 Server는 client의 request를 처리하고 처리 결과를 client에게 돌려주는 방식으로 구현한다.Messa..
Dedicated Server / P2P Server / Listen Server Dedicated Server 모든 client가 1개의 전용server를 중심으로 data를 주고받는다.(Client - Server구조 기반)현재 MMORPG나 Online Game의 24시간 돌아가는 선택형 server가 대표적인 예 작동방식은 Client(User)가 field에 있는 상대방(다른 clinet, user)을 공격했다고 하면공격했다는 data를 server에 보내게 되고 server에서 피격판졍, 미스판정을 확정하여 다시 모든 client에게 보내게 된다. 즉 server가 게임 대부분의 판정을 처리한다. 장점 Client의 모든 data의 감시가 가능하다.Online game에서 불법프로그램을 사용하여 game을 진행한다면 전용server log에 기록이 되고 추후 user들의 신..
Generalization Generalization(일반화) Generalization는 서로 다른 개념에서 공통점을 찾는것이다. 'A', 'B', 'C'는 다른 단어지만 '영어'라는 공통점을 가지며 int, float, string은 다른 type이지만 '변수'라는 공통점을 가진다. 위처럼 어떤 개념을 포괄하는 공통된 개념을 찾아 서로 다른 개념을 하나로 묶어주는것이다. void print(int A) { Console.WriteLine(A); } void print(float B) { Console.WriteLine(B); } void print(string C) { Console.WriteLine(C); } //위 3개 method를 generalization한 method void print(T value) { Conso..
Boxing / UnBoxing Boxing 값형식을 참조형식으로 변환하는것Boxing은 내부적으로 stack영역에서 heap영역으로 data가 copy되고그 copy된 data를 object가 참조하게 된다.(값형식 -> 참조형식) UnBoxing 참조방식을 값형식으로 변환하는것UnBoxing이 되면 data를 heap영역에서 stack영역으로 copy한다.(참조형식 -> 값형식) 참고https://mrw0119.tistory.com/16
Collection의 성능문제 / Generic Collection C# Collection의 경우 type을 object type으로 저장하기 때문에 하나의 collection안에 다양한(int, bool, string) type들을 보관할 수 있다.하지만 이것이 성능상 단점을 유발하게된다. Collection은 data를 받으면 어떤 형식이든지 object type으로 Boxing되어 저장되고data에 접근하여 사용할때는 원래의 data type으로 UnBoxing하게되는데 알다싶이 Boxing, UnBoxing하는것은 비용이 들게 되고 따라서 data가 많아지고 data의 입출력이 잦아질 경우Boxing, UnBoxing의 횟수가 늘어나 성능저하가 발생하게 된다. 이러한 문제때문에 Generic Collection을 사용한다. using System.Collecti..
C# 제네릭 https://slaner.tistory.com/122 잘 설명이 되어있다.
Coroutine Main Routine Program이 실행될 때 불려지도록 만들어진 program의 중심이 되는 일련의 code들을 뜻한다.C++에서는 main함수가 main routine이다. Subroutine Main Routine이외의 다른 모든 routine즉 main함수 외의 모든 함수 Coroutine 진입하는 지점을 여러개 가질 수 있는 subroutineCoroutine은 호출한 routine을 대등한 관계로 호출할 수 있기때문에다른 Routine의 종속관계가 아니다. 라고 표현할 수 있다. Coroutine은 함수 내에서 호출한쪽을 다시 호출할 수 있고 다시 다른 routine에서 함수의 중간 지점을 호출할 수 있는것 Main Routine과 SubroutineCoroutine Coroutine은 T..