전체 글
-
Code - 문자를 컴퓨터에 저장하는 방식CS 2023. 3. 9. 15:22
Code(코드/부호): 문자를 컴퓨터에 저장하는 방식(Gray Code, ASCII, Unicode) Character Set(문자 집합)과 Encoding(인코딩)이 필요하다. - Character Set(문자 집합): 사람의 문자를 컴퓨터가 이해하는 기호로 표현하고자 문자를 각 코드(숫자)에 매칭한 문자의 집합 따라서 각 문자들은 해당 숫자에 맵핑되어있다. 이처럼 문자-숫자 짝을 지어주는 것이 인코딩. - Encoding: 각 문자를 특정기호로 변환해 맵핑(유니코드를 UTF-8로 인코딩하는 등) - Decoding: 변환한 특정기호를 다시 문자로 변환해 맵핑(보통 기호를 유니코드로 변환하는 것을 의미) 결론 사람의 문자를 컴터에 저장하려면 인코딩으로 문자->숫자로 변환(2진법 변환)해 짝을 지어준다...
-
사용자의 게임 기록 저장&불러오기 - Json파일 저장[Unity] Projects & Study/Loop - Interactive Movie 2023. 3. 9. 15:11
1. 파일이 존재하지 않으면 JsonMake()함수로 만들기 public void JsonMake() { SaveData saveData = new SaveData(); saveData.isVisit[0] = true; for (int i = 1; i < 21; i++) { saveData.isVisit[i] = false; } for (int i = 0; i < 9; i++) { saveData.ending[i] = false; } GameManager.I.continueScene = "Scene1"; saveData.continueScene = GameManager.I.continueScene; string json = JsonUtility.ToJson(saveData, true); File.Writ..
-
[BOJ][Python] 백준 1475 방 번호CS/Algorithm & Data Structure 2023. 3. 9. 11:41
단순히 카드세트 배열하나 선언, 그 안에 값이 있으면remove하고 다음 번호 체크 없으면 한 세트를 pack에 추가해주고 해당 번호 하나를 뺐다. 특이한 점이라면 값이 6일때는 9가 있나체크(&반대의 경우 체크)를 했단 것이다. N = list(input()) for i in range(len(N)): N[i]=int(N[i]) pack = [] def addPack(): pack.extend([0,1,2,3,4,5,6,7,8,9]) cnt = 0 for i in N: if i in pack: pack.remove(i) elif i==6 and 9 in pack: pack.remove(9) elif i==9 and 6 in pack: pack.remove(6) else: cnt+=1 addPack() ..
-
[Design Pattern] GoF 디자인 패턴 개념 간단 정리CS/Design Pattern 2023. 3. 1. 18:06
Iterator 데이터들을 가져오는 방법은 Aggregator(혹은 Container. 동일한 형태의 데이터를 여러 개 지닌 것)의 종류에 따라 모두 다르기 때문에, 이를 통일된 방법으로 가져오도록 돕는 패턴. 다양한 형태의 Aggregator의 데이터에 접근할 때에 표준화 된 공통API. 따라서 한편으로는 Aggregator의 자료구조를 노출하지 않아도(혹은 몰라도) 내부 데이터에 접근할 수 있는 방법. Strategy 기능의 특정 부분을 실행중에 다른것으로 효과적으로 변경하는 기능 제공 필요할 경우 전략을 바꿀 수 있는 패턴 단계 1, 2, 3, ..., N 진행하다가 단계3을 변경하는 등 Template 어떤 기능에 대해실행 되어야 할 각 단계에 대한 순서만 정의 세부 구현(코드)은 상황에 맞게 작..
-
[OS] SuspendCS/OS 2023. 2. 26. 16:34
- Suspended processes 프로세스를 실행하다 I/O wait이 생겨 Blocked 시키다가 꽉 차면 그 다음 기능을 처리하기 위해 Suspend한다. Blocked 된 것의 일부를 Suspend. Suspend State의 Process는 Memory에 못 들어가고 Disk에 있다. Activate: Suspend에서 Ready로 가는 것 Swapping: 이렇게 Activate와 Suspend로 왔다갔다 하는 것 - Suspend 를 하는 이유 1. Swapping. 앞서 말한 개념(자리가 없어서(꽉 차서)) 2. 우선순위가 낮은 큐로 만들기 위해서 3. 유저의 요청 4. 타이밍 5. 부모 프로세스의 요청
-
[OS] Mutual Exclusion의 방법과 유의점CS/OS 2023. 2. 26. 16:23
Mutual Exclusion 방법 1. Compare & Swap while문을 돌면서 크리티컬 섹션에 접근이 가능한 상태인지 (bolt=0 등) 계속체크하며 대기한다. 이 방식은 계속 cpu를 잡아먹는 busy_wating이 발생한다. 2. Semaphore 크리티컬 섹션에 들어가기 전에는 자원을 쓴다는 표시로 sem_wait (값을 감소), 자원을 다 썼으면 semSignal(값을 증가)를 처리해서 mutual_exclusion을 한다. 이건 busy_wating이 없다. 이 외에도 많은 방법이 존재한다. Mutual Exclusion을 할 때 유의해야 할 점 1. 공유개체에 대해 한 번에 하나의 프로세스면 사용 가능. 2. deadlock이나 starvation이 없어야 함. 3. 프로세스를 사용..
-
[OS] I/O techniques(IO에서 데이터를 전송할 때)CS/OS 2023. 2. 26. 16:18
1. Programmed I/O I/O 모듈이 주기적으로 하나씩 체크한다. I/O 끝날때까지 기다렸다가 함. 그러므로 성능은 떨어진다. 2. Interrupt-Driven I/O 현재 진행하던 명령어를 마친 후 Interrupt체크를 한다. 3. Direct Memory Access (DMA) CPU는 명령어(read/write/시작주소 등)만 넘겨주고 나머지는 I/O랑 메인메모리가 한다. => 2번과 달리 cpu절약이 가능하다.