개발공부 9

[CS] {컴퓨터 구조} 보조기억장치

1. 하드디스크- 자기적인 방식으로 데이터 저장- 기본적으로 트랙과 섹터 단위로 데이터 저장 * 실린더 : 여러겹의 플래터 상에서 같은 트랙이 위치 한 곳을 모아 연결한 논리적 단위- 연속된 정보는 한 실린더에 기록 * 하드 디스크가 저장된 데이터에 접근하는 시간  (1) 탐색 시간: 접근하려는 데이터가 저장된 트랙까지 헤드를 이동시키는 시간  (2) 회전 지연: 헤드가 있는 곳으로 플래터를 회전시키는 시   (3) 전송 시간: 하드디스크와 컴퓨터간에 데이터를 전송하는 시간2. 플래시 메모리- 전기적으로 데이터를 읽고 쓰는 반도체 기반 저장 장치- 플래시 메모리는 하드 디스크와 달리 덮어쓰기가 불가능- 읽기와 쓰기는 페이지 단위로 이루어짐- 삭제는 (페이지보다 큰) 블록 단위로 이루어짐+ 페이지의 상태(..

CS 공부 2025.04.13

싱글톤 패턴 (Singleton)

디자인 패턴 공부를 하면서 가장 먼저 알게됐던 패턴. 1. 싱글톤 패턴이란? - 프로그램 내에서 단 하나의 객체만 존재하는 컨트롤 타워로써 프로그램의 시작부터 종료까지 생존하면서 데이터 관리의 이점을 가져오는 디자인 패턴 - 게임 내에서 가장 많이 사용되는 디자인 패턴 중 하나 2. 장단점1) 장점 - 단일의 인스턴스와 전역적인 접근을 보장하기 때문에 싱글톤을 사용해 오브젝트들이 서로를 참조하고 있는 결합도를 낮출 수 있음 - 게임 내에서 파괴되지 않기 때문에 보다 편하게 데이터를 관리할 수 있음 2) 단점 - 전역적인 접근이 가능하기 때문에 데이터에 대한 보호수준을 주의하지 않으면 의도치 않은 데이터 변화가 발생할 수 있음 - 객체들이 싱글톤 객체의 데이터에 의존하게 되는 현상이 발생할 수 있음 - s..

인터페이스(Interface)

C#에서 클래스는 다중상속을 금지하였기 때문에 하나의 부모 클래스만 상속을 받을 수 있다. 그러다보니 발생하는 대표적인 문제점이 있는데 예를들면, '문'이라는 오브젝트가 '잠금'이라는 기능을 가진 클래스와 '출입구'라는 기능을 가진 클래스를 동시에 상속받지 못하다 보니 둘중에 하나의 기능만 하게 되는 문제가 발생한다.이러한 문제점을 보완하기 위해 필요한것이 인터페이스다. 1. 인터페이스1) 특징 - 인터페이스는 직접 구현하지 않고 인터페이스를 가지는 클래스에서 반드시 구현해야 한다는 특징이 있음. - 인터페이스의 첫글자 이름은 "I"로 해야한다는 암묵적인 룰이 있음 (ex. IEnterable, IOpenable 등) 2) 사용법 (1) 인터페이스를 생성하고 상속받는 클래스에서 반드시 구현해야하는 함수를..

C# 공부 2024.11.15

네트워크 동기화 [Photon, PUN]

네트워크 수업을 들으면서 매치메이킹 부분에서부터 명절 고속도로마냥 꽉 막힌 기분의 연속이었다.당장 네트워크 자체도 신경쓸게 너무 많아 어려운마당에 새로운 photonNetwork 메서드가 수없이 많고 콜백함수들도 너무 많았기 때문에 클론코딩을 하면서도 머리에 잘 들어오지 않았다.블로그에 쓰면서 조금이라도 더 이해하고 외워보고자 작성하게 됐다.1. 포톤 구현 컨셉:클라이언트 측에서 서버측으로 PhotonNetwork를 통하여 요청을 하고서버에서 클라이언트 측으로 MonoBehaviourPunCallbacks 클래스를 통하여 콜백 함수를 통해 응답하는 방식으로 요청을 처리한다.2. PhotonNetwork 메서드일단은 자주 사용하는 것으로 생각되는 것들만 작성했다.(실제로는 훨씬 많다)1) 네트워크 동기화 ..

네트워크 공부 2024.11.14

코루틴 (Coroutine)

1. 사용처 - Update가 아닌 곳에서도 반복적으로 코드가 실행되어야 할 때가 있다. (ex.OnEnable, 이벤트 호출시 등등)> 그러한 상황에서 코루틴은 매우 효과적인 방법일 것이다. - 그밖에도 일정시간 텀을 두고 실행해야 하거나 특정 조건을 부여한 뒤 코드가 실행되게 해야 할 경우 등 다양한 방면에서 자주 사용된다. (실무에서도 굉장히 많이 사용된다고 하니 자세히 공부해보자)+ 필자는 저번 협업 프로젝트에서 코루틴을 너무 많이 사용해서 현업자들에게 많이 혼날거같다는 얘기도 들었다...2. 코루틴 사용방법1) 필수 요소 - IEnumerator라는 반환형으로 시작해야 한다. - yield return이 반드시 포함되어야 한다. 2) yield return의 종류(1) yield return n..

유니티 공부 2024.11.13

딕셔너리 (Dictionary <T>)

1. 해시테이블: 키(key) 값(value)을 한쌍으로 저장하는 구조. 키를 기준으로 값을 저장하는 구조.각 키는 해싱되어 값을 가리키는 고유한 식별자 역할대부분의 경우 O(1)의 시간복잡도를 가짐더보기* 해시 : 임의의 길이를 가진 데이터를 '해시 알고리즘'을 사용해 고정된 길이를 가진 데이터로 출력한 값1) 기본개념(1) 키 - 데이터를 저장하고 찾기 위해 사용되는 고유한 식별자 - 해시함수를 거쳐 데이터를 보관할 수 있는 식별코드(해시코드)로 전환된다. (2) 값 - 키를 기준으로 한 위치에 저장되는 데이터 - 키를 통해 값에 엑세스 할 수 있다. (3) 해시함수 - 입력된 키를 해시테이블의 주소(해시코드)로 변환하는 함수 - 자료구조의 성능을 결정짓는 중요한 요소 - 보관하고자 하는 테이블의 크..

자료구조 공부 2024.11.12

유니티이벤트(Unity Event) & 유니티액션(Unity Action)

유니티이벤트와 유니티액션을 이해하기에 앞서 Delegate(대리인)에 대해 이해해야 함.Delegate : 프로그래밍에서는 메서드를 참조하고 있다가 대신 호출해주는 변수를 의미더보기> 기존에는 A클래스 안의 F1메서드를 B클래스에서 사용하려면 B클래스가 A클래스를 소유하고 있었어야 했지만 Delegate를 활용하면 A클래스가 B클래스의 델리게이트에 함수를 등록해두면 된다.A클래스를 소유할 필요없이 B클래스가 메서드가 등록된 Delegate를 실행해주면 A클래스의 F1 메서드가 실행된다. 1. 유니티 이벤트: 이벤트와 델리게이트를 사용하기 편하도록 유니티측에서 랩핑 해 놓은 기능1) 이벤트 활용법 - 이벤트를 발생시키는 쪽(Publisher)과 이벤트에 반응하는 쪽(Subscriber)으로 구성되어 있으며..

유니티 공부 2024.11.11

스택(Stack)과 큐(Queue)

스택과 큐는 배열, 리스트와 달리 인덱스를 통해 데이터에 접근 할 수 없음.원소의 삽입과 삭제를 자주 반복해야 할 경우 리스트보다 스택과 큐를 사용하는 것이 메모리 측면에서 훨씬 좋다.길찾기 문제에서 이동할 수 있는 다음 노드를 큐에 저장할 경우 BFS, 스택에 저장할 경우 DFS  1. 스택 (Stack) : LIFO (Last In First Out): 후입선출. 데이터를 추가할 때 탑을 쌓듯이 차곡차곡 데이터가 쌓이게 됨.데이터를 꺼내고자 하면 가장 최근에 쌓았던 데이터를 반환 받음.  1) 삽입: Stack.Push(); - 가장 마지막에 데이터를 추가하기 때문에 O(1)의 시간 복잡도를 가짐 - 단, 내부 배열 최대 크기에 도달했다면 두배 크기로 재할당하기 때문에 O(n)의 시간 복잡도를 가짐 ..

자료구조 공부 2024.11.10

string 메서드

C#에서는 문자열을 처리하기 위해 System.String 클래스를 제공.주로 사용되는 string은 System.String의 별칭으로 클래스와 완전 동일하다. 1. 문자열 선언 및 초기화// 초기화 없이 단순 선언string _message;// null로 초기화string _message = null;// 빈 string 생성1string _message = "";// 빈 string 생성2(위 방법 말고 이방법이 메모리 측면에서 좋음!)string _message = System.String.Empty;// 문자열로 초기화string _message = "Hello, World!";// 문자배열char[] _letters = { H, E, L, L, O };// 문자배열을 통한 string 초기화..

C# 공부 2024.11.09