본문 바로가기
[Java8 In Action] #8 리팩토링, 테스팅, 디버깅 [Java8 In Action] #8 리팩토링, 테스팅, 디버깅 Java8 In Action 내용을 보며 정리한 내용입니다.정리자는 기존에 Java8 을 한차례 rough 하게 공부한 적이 있고, Kotlin 역시 공부한 적이 있습니다.위의 prerequisite 가 있는 상태에서 추가적인 내용만 정리한 내용이므로, 제대로 공부를 하고 싶다면 책을 구매해서 보길 권장합니다! 8.1. 가독성과 유연성을 개선하는 리펙토링 -람다 표현식은 익명 클래스보다 코드를 좀 더 간결하게 만든다.람다 표현식은 동작 파라미터화(익명클래스와 동일 개념)의 형식을 지원하므로 람다 표현식을 이용한 코드는 더 큰 유연성을 갖출 수 있다. 8.1.1. 코드 가독성 개선 -일반적으로 코드 가독성이 좋다는 것은 “어떤 코드를 다른 사.. 2018. 12. 28.
[Effective Objective-C] #11 objc_msgSend 의 역할을 이해하라 [Effective Objective-C] #11 objc_msgSend 의 역할을 이해하라 출처 : Effective Objective-C -Objective-C 에서 많이 하는 일 중 하나는 객체의 메서드를 호출하는 것이다.Objective-C 용어로는 메시지를 전달한다고 한다.메시지는 이름 또는 선택자(selector)가 있다.또 인자를 받고 값을 반환할 수도 있다. -Objective-C 가 C 를 포함하기 때문에 C 에서 사용하는 정적 바인딩과 동적 바인드 함수 호출을 이해하는 것부터 시작해야 한다.정적 바인딩은 호출되는 함수가 컴파일 시간에 정해지는 것을 의미한다.동적 바인딩은 다음과 같은 경우를 이야기한다.호출될 함수를 실행 시간 전에는 알 수 없기 떄문이다. void printHello().. 2017. 8. 13.
[Java Concurrency] 명시적인 락 13.1. Lock 과 ReentrantLock - Lock 인터페이스는 암묵적인 락과 달리 조건 없는(unconditional)락, 폴링 락, 타임아웃이 있는 락, 락 확보 대기 상태에 인터럽트를 걸 수 있는 방법 등이 포함돼 있으며, 락을 확보하고 해제하는 모든 작업이 명시적이다. - public interface Lock{ void lock(); void lockInterruptibly() throws InterruptedException; boolean tryLock(); boolean tryLock(long timeout, TimeUnit unit) throws InterruptedException; void unlock(); Condition newCondition(); } - Reentran.. 2017. 5. 5.
[Java Concurrency] 활동성 최대로 높이기 #2 [Java Concurrency] 활동성 최대로 높이기 #2 10.2. 데드락 방지 및 원인 추적 - 한 번에 하나 이상의 락을 사용하지 않는 프로그램은 락의 순서에 의한 데드락이 발생하지 않는다. 물론 그다지 실용적이지 않은 방법일 수 있지만, 가능하다면 한 번에 하나 이상의 락을 사용하지 않도록 프로그램을 만들어 보는 것도 좋다. - 여러 개의 락을 사용해야만 한다면 락을 사용하는 순서 역시 설계 단계부터 충분히 고려해야 한다. 설계 과정에서 여러 개의 락이 서로 함께 동작하는 부분을 최대한 줄이고, 락의 순서를 지정하는 규칙을 정해 문서로 남기고 그 규칙을 정확하게 따라서 프로그램을 작성해야 한다. - 세세한 수준에서 락을 관리하는 프로그램에서는 두 단계의 전략으로 데드락 발생 가능성이 없는지를 확.. 2017. 5. 2.
반응형