코드 품질에도 규모의 경제가 적용된다. 코드를 직접 작성하면서 프로그램이 실패하거나, 문제를 해결하고 싶어도 현상을 재현하기 쉽지 않은 경험이 있을 것이다. 예를 들면 무작위 정수 하나를 생성하고 싶다. 나는 이 책을 읽기 전까지 다음과 같은 코드로 작성했다. static Random rnd = new Random(); static int random(int n){ return Math.abs(rnd.nextInt()) % n; } 하지만 이 코드에는 결함이 3가지 있다. 첫 번째, n이 그리 크지 않은 2의 제곱수라면 얼마 지나지 않아 같은 수열이 반복된다. 두 번째, n이 2의 제곱수가 아니라면 몇몇 숫자가 평균적으로 더 자주 반환된다. (n값이 크면 이 현상은 더 두드러진다) 세 번째, random..
전 포스팅에서 Deadlock. 즉, 교착상태에 알아보았으니 이번 포스팅에선 뮤텍스와 세마포어의 차이에 대해 알아보겠습니다. 혹시, 데드락에 대해 잘 모르는 상태라면 전 포스팅 또는 하단의 Youtube 강의를 보고 보시면 더 도움이 됩니다! 2022.07.19 - [운영체제] - [운영체제] Deadlock (데드락, 또는 교착상태) [운영체제] Deadlock (데드락, 또는 교착상태) 운영체제 기술면접에 대해 공부하다 보면 세마포어와 뮤텍스의 차이를 물어보는 질문이 자주 나옵니다. 이 차이를 알기 전!!!!!!! 세마포어와 뮤텍스를 알기 위해서는 먼저 Deadlock 즉, 교착상태에 odingcoding.tistory.com https://www.youtube.com/watch?v=Ry_gB34cv..
운영체제 기술면접에 대해 공부하다 보면 세마포어와 뮤텍스의 차이를 물어보는 질문이 자주 나옵니다. 이 차이를 알기 전!!!!!!! 세마포어와 뮤텍스를 알기 위해서는 먼저 Deadlock 즉, 교착상태에 대해 먼저 알아야 합니다. ❓ Deadlock(교착상태)란? 운영체제에서 데드락(교착상태)란, 시스템 자원에 대한 요구가 뒤엉킨 상태입니다. 즉, 둘 이상의 프로세스가 다른 프로세스가 점유하고 있는 자원을 서로 기다릴 때 무한 대기에 빠지는 상황을 일컫습니다. 🔎 Deadlock의 발생조건 Deadlock에 걸리는 요건으로는 4가지가 있습니다. 첫 번째, 상호 배제 조건 (Mutual exclusion condition) 프로세스는 한 번에 하나의 자원만 사용할 수 있습니다. 사용 중인 자원을 다른 프로세..
전통적인 for문보다는 for-each 문을 사용하라 🔎 for-each문이 전통적인 for문보다 무엇이 좋을까? 다음은 전통적인 for문으로 컬렉션을 순회하는 코드다. 순차적으로 발전하는 코드를 보여주면서 for-each문의 간결함을 볼 수 있을 것이다. 1. 전통적인 for문으로 컬렉션과 배열을 순회한다. // 컬렉션 순회 for (Iterator i = c.iterator() ; i.hasNext(); ){ Element e = i.next(); ... // e로 무언가를 한다. } // 배열 순회 for (int i=0 ; i 반복자와 인덱스 변수를 사용하지 않으니 코드가 깔끔해지고 오류가 날 일도 없다. 4 -> 하나의 관용구로 컬렉션과 배열을 모두 처리할 수 있어서 어떤 컨테이너를 다루는지는 ..
지역변수의 유효 범위를 최소로 줄이면 코드 가독성과 유지보수성이 높아지고 오류 가능성은 낮아진다. 🔍 지역변수의 범위를 줄이는 방법? - 4가지! '미리 선언하지 말고, 가장 처음 쓰일 때 선언 하기' - 사용하려면 멀었는데, 미리 선언부터 해두었다면? 코드가 어수선해져 가독성이 떨어진다. 변수를 실제로 사용하는 시점엔 타입과 초깃값이 기억나지 않을 수도 있다. 다 쓴 뒤에도 여전히 살아있게 되기 쉽다. (지역변수의 범위는 선언된 지점부터 그 지점을 포함한 블록이 끝날 때까지이므로) '거의 모든 지역변수는 선언과 동시에 초기화해야 한다.' 초기화에 필요한 정보가 충분하지 않다면 충분해질 때까지 선언을 미뤄야 한다. - 예외상황으로 try-catch문이 있다. 변수를 초기화하는 표현식에서 검사 예외를 던질..
- Total
- Today
- Yesterday
- 그래프탐색
- OS
- 순열
- Java
- Container
- IMAGE
- 완전탐색
- Retrofit2
- dfs
- 아이템59
- subset
- 알고리즘
- 아이템61
- 정처기
- bruteforce
- 운영체제
- 토큰기반인증
- EffectiveJava
- docker
- BFS
- 백준
- BOJ
- 완탐
- 부분집합
- docker-compose
- springboot
- 이펙티브자바
- 조합
- dp
- 아이템60
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |