1. 자바 플레이 그라운드 with TDD, 클린 코드
- 블랙잭 구현 중
- Cards, Card클래스에 카드값 합계를 구하는 메서드 추가
- 시간이 부족해 완전히 마무리를 하지 못해 테스트실패로 뜬다. 수정 필요
- 이전부터 문자열을 숫자로 파싱할 때 숫자인 경우와 숫자가 아닌 경우를 나눌 필요를 느꼈는데 코드로 구현하지 못해 애를 먹었다.
public boolean isNumber(String no) {
try {
Integer.parseInt(no);
return true;
} catch (NumberFormatException e) {
return false;
}
}
- 파싱이 되면 true를 안되면 오류를 catch하고 false를 반환하도록 코드를 짰다.
2. 혼자서 공부하는 컴퓨터 구조 + 운영체제
* 스레드
- 정의 : 프로세스를 구성하는 실행의 흐름 단위(하나의 프로세스는 여러개의 스레드를 가질 수 있다.)
- 프로세스 직접 실행정보 : PC(Program Counter)->레지스터, SP(Stack Pointer), 지역데이터, 문맥정보 -> 스레드마다 다름
- 프로세스 관리 정보 : 코드, 전역 데이터, 힙, 파일 -> 스레드끼리 공유

- 스레드는 실행에 필요한 최소한의 정보만을 유지한 채 프로세스 자원을 공유하며 실행된다.
- 멀티 프로세스와 멀티 스레드의 차이
구분 | 특징 |
멀티 프로세스 | - 각자 다른 자원 - 메모리 비효율적 사용 - 한 프로세스에 문제가 생겨도 타 프로세스에 영향 없음 - IPC(Inter Process Communication)를 통해 프로세스가 통신이 가능하긴함 -> 구현 복잡 |
멀티 스레드 | - 같은 자원을 공유 - 메모리 효율적 사용 - 스레드간 통신에 유리 - 스레드 하나에 문제 발생시 나머지 스레들에도 영향 |
* CPU 스케줄링 개요
- 정의 : 운영체제가 프로세스들에게 공정하고 합리적인 CPU 자원 분배를 위한 기능
- 우선순위 : 입출력 집중 프로세스 > CPU 집중 프로세스(입출력은 대기 시간이 더 길어 먼저 처리 후 CPU 집중 프로세스를 실행)
- 운영체제는 PCB에 우선순위를 명시
- 스케줄링 큐 : 자원을 할당 받으려고 하는 프로세스들을 줄세우는 것(일반적인 큐의 선입선출 보다는 우선순위 큐에 가까운 개념)
- 선점형, 비선점형 스케줄링
구분 | 특징 |
선점형 | 실행중인 프로세스의 자원을 강제로 빼앗아 우선순위가 높은 프로세스에게 할당 하는 방식 |
비선점형 | 실행중인 프로세스가 스스로 대기 상태에 들어가거나 종료되기 전까지 다른 프로세스는 자원을 할당 받을 수 없다. |
* 참고 블로그 : https://wonit.tistory.com/89
3. 알고리즘
- SK플래닛 코딩테스트
- 전반적인 난이도는 어렵지 않았다.(그래프, dfs탐색, 구현, dp 등 기본적인 알고리즘 위주)
- 백준에서 문제 풀던것이 익숙한데 프로그래머스로 풀려고하니 이래저래 사소한 문제들이 생겨 시간을 모두 잡아 먹었고 그 때문에 당황해서 나머지 문제들을 제대로 풀지 못했다.
- 이래저래 아쉬움이 많이 남지만 좋은 경험했다 생각하고 프로그래머스에서 많은 문제를 풀어보도록 하자.
'TIL' 카테고리의 다른 글
TIL - 0225 (0) | 2023.02.25 |
---|---|
TIL - 0224 (0) | 2023.02.24 |
TIL - 0222 (0) | 2023.02.22 |
TIL - 0221 (0) | 2023.02.21 |
TIL - 0220 (0) | 2023.02.20 |