일단 씻고 나가자
25.03.04 본문
2025. 03. 04 화요일
- [Java] 숫자로 된 String 문자열을 stream으로 한 글자씩 나누어 int[]에 담는 방법?
: stream은 primitive 자료형 대신 Wrapper을 사용하기 때문에, chars()로 바꿀 땐 주의.
String str = “123123”;
// chars() 이용
int[] arr = str.chars().boxed().mapToInt(Character::getNumericValue).toArray();
// split() 이용
int[] arr = Arrays.stream(str.split(“”)).mapToInt(Integer::parseInt).toArray();
- [OS] 은행원 알고리즘?
: dead lock의 회피를 위한 알고리즘.
현재 프로세스에게 줄 수 있는 각 자원의 총량을 계산하고,
특정 프로세스가 현재 필요한 자원이, 줄 수 있는 자원의 총량보다 낮으면
해당 프로세스에게 모든 자원을 부여 후, 할 일을 마치고 사용하던 자원을 반납하게 해서
할당할 수 있는 자원의 총량을 점차 늘리며 해결하는 알고리즘.
관련 용어는 다음과 같다.
* Max (프로세스가 요구하는 최대 자원)
* Allocation (프로세스별 현재 가지고 있는 자원)
* Available (시스템이 부여할 수 있는 현재 자원)
* 안전상태 (특정 자원 할당 순서에 의해 모든 프로세스가 활동을 완료할 수 있는 상태)
* 불안전상태 (어떤 방법으로도 프로세스 전체가 활동을 완료할 수 없는 상태 = deadlock)
* 안전순서열 (안전상태를 만들기 위해 자원을 할당할 프로세스의 순서)
하지만 은행원 알고리즘은 자원 수 파악 힘듦, 다중 프로그래밍 시스템에서의 사용자 변화,
알고리즘 적용 시의 시스템 과부하, 프로세스는 자원을 보유한 상태로 끝낼 수 없음, 불안전상태 방지를 위한 자원 이용도 낮음 등의 단점이 있다.