[Java] 콜백 패턴과 적용
·
JAVA
java에서의 콜백에 대해 알게되면서 동기, 비동기를 차치하고도 작업의 참조를 전달(위임)한다는 부분이 인상적깊었다. 기본적으로 콜백 패턴의 정의와 원리에 대해 알아보자. 콜백은 한마디로 피호출자 (Callee)가 호출자 (Caller)를 다시 호출하는 것을 의미한다.특정 이벤트가 발생하거나 특정 작업이 완료되면 특정 메서드를 실행하는 방법인데,비동기 처리나, 작업완료 시나리오에서 유용하게 사용된다. 간단한 웹 어플리케이션을 예시로 들어보자. 프런트 서버가 작업 서버에 일정 시간이 소요되는 작업을 요청했을 때, 사용자가 그동안 가만히 있을 순 없기 때문에작업 완료 시간을 하염없이 기다리기보단 작업 완료 신호가 오기 전까지 다른 일을 하면서 작업 완료 여부를 알고 싶을 것이다. 그렇다면 프런트 서버가 작업..
[MySQL] 인덱스와 잠금, MySQL의 격리 수준
·
Database
인덱스와 잠금InnoDB 엔진의 레코드 락 부분을 보면, 사실 InnoDB는 레코드를 잠그는 것이 아니라, 인덱스를 잠그는 방식으로 처리하는걸 볼 수 있다.즉, 변경해야 할 레코드를 찾기 위해 검색한 인덱스의 레코드를 모두 잠궈야한다. 이는 인덱스 설계가 중요한 이유와 연결되는데, 예시를 통해 알아보자.SELECT COUNT(*) FROM employees WHERE first_name = "jin"; //253SELECT COUNT(*) FROM employees WHERE first_name = "jin" AND last_name = "hyogyeom; //1 만약 employees 테이블이 first_name 컬럼만을 멤버로 가지는 인덱스를 가지고 있다고 가정해보자.first_name = jin 인..
[OS] 스케줄링
·
OS
CPU 스케줄링에 대해 알아보기 전,지금의 CPU 스케줄링이 있기 전까지 어떤 방식의 스케줄링이 있었고, 결국에 어떤 평가 항목이 지금의 스케줄링을 만들었는지 알아보았다. 먼저 시스템에 실행중인 프로세스에 대해 가장 이상적인 가정을 하고 가정을 하나씩 제거하면서 스케줄링에 대한 역사를 알아보겠다.가정모든 작업은 같은 시간동안 시행모든 작업은 동시에 도착각 작업은 시작되면 완료될 때 까지 수행모든 작업은 CPU만 사용 (입출력 x)각 작업의 실행시간은 사전에 알려져있음 스케줄링 평가항목반환 시간이라는 개념을 도입한다. 반환시간은 작업이 완료된 시간 ~ 작업이 시스템에 도착한 시간의 차이다.공정성이라는 개념은, 성능과는 상충되는 개념으로 성능 극대화를 위해 몇몇 작업을 중지시키면 공정성이 악화된다. 선입선출..