본문 바로가기
[Effective Java] 지나친 동기화는 피하자 [Effective Java] 지나친 동기화는 피하자 - 지나친 동기화는 성능을 저하시키고 교착상태(dead lock)을 유발시키며, 심지어 예기치 않은 행동을 초래할 수 있다. - 동기화된 메소드나 블록 안에서 절대로 클라이언트에게 제어권을 넘기면 안 된다. 즉, 동기화된 영역 내부에서는 오버라이딩된 메소드를 호출하지 않아야 하며, 함수 객체의 형태로 클라이언트가 제공하는 메소드도 호출하지 말아야 한다. 동기화된 영역을 갖는 클래스의 관점에서 그런 메소드들은 매우 이질적인 녀석들이다. 그 메소드가 무슨 일을 하는지 알지 못하며, 이질적인 일을 하는 것을 제어하지도 못한다. 외계인 메소드가 하는 일에 따라 다르겠지만, 동기화된 영역에서 그 메소드를 호출하면 예외나 dead lock 또는 데이터 손상까지 .. 2017. 3. 9.
[Effective Java] 공유하는 가변 데이터에 접근 시 동기화하자. [Effective Java] 공유하는 가변 데이터에 접근 시 동기화하자. - 동기화를 하지 않으면, 하나의 스레드에서 변경한 내용을 다른 스레드에서 못 볼 수 있다. 동기화는 불안정 상태의 객체를 스레드가 볼 수 없도록 하는 것은 물론, 동기화된 메소드나 블록에 진입하는 각 스레드가 앞에서의 모든 변경(같은 락으로 보호되었던)이 반영된 결과를 볼 수 있게 해준다. - 자바 언어 명세에서는 long 이나 double 타입이 아닌 변수의 값을 읽거나 쓸 때는 원자성을 보장한다. long 이나 double 타입이 아닌 변수의 값을 읽으면 어떤 스레드가 그 변수에 저장했던 값을 반환 받을 수 있다는 것. 실제로 동기화하지 않고 여러 스레드가 그 변수를 동시에 수정해도 그때그때 수정된 값이 반영된다. 스레드가 .. 2017. 3. 7.
[iOS Study] UITableViewCell 하위 클래스 만들기 [iOS Study] UITableViewCell 하위 클래스 만들기 출처 : 아론 힐리가스의 iOS 프로그래밍 -UITableView 는 UITableViewCell 객체의 목록을 표시한다.대다수 앱들은 기본 셀과 textLabel, detailTextLabel, imageView 로도 충분하다.하지만 좀 더 자세하거나 다른 레이아웃의 셀이 필요할 땐 UITableViewCell 의 하위 클래스를 만들어야 한다. -UIView 의 하위 클래스를 만들 때, 종종 뷰의 모양을 커스터마이즈하기 위해 drawRect: 메소드를 재정의한다.하지만 UITableViewCell 의 하위 클래스를 만들 떄는 대개 하위뷰들을 셀에 추가하여 모양을 커스터마이즈한다.하위뷰들을 셀에 직접 추가하지 않고 셀의 콘텐트 뷰(co.. 2016. 3. 8.
[iOS Study] 애니메이션 제어 [iOS Study] 애니메이션 제어 출처 : 아론 힐리가스의 iOS 프로그래밍 -애플 문서는 언제나 iOS 기술을 배우기에 좋은 출발점이다. -기본 애니메이션(basic animation) 은 시작값과 끝값 사이를 애니메이션으로 만든다. -[UIView animateWithDuration:0.5 animtations:^{ label.alpha = 1.0;}]; animateWithDuration:animations: 메소드는 즉시 반환한다.즉, 이 메소드는 애니메이션을 시작하지만 애니메이션이 완료되는 것을 기다리진 않는다. -UIView 에서 가장 간단한 블록 기반 애니메이션 메소드가 animateWithDuration:animations: 이다.이 메소드는 애니메이션이 수행되는 시간과 애니메이션을 적.. 2016. 3. 6.
[iOS Study] Objective-C [iOS Study] Objective-C 출처 : 아론 힐리가스의 iOS 프로그래밍 -iOS 앱은 코코아 터치(Cocoa Touch) 프레임워크를 사용하여 Objective-C 언어로 작성된다.Objective-C 는 C 언어의 확장이며 코코아 터치 프레임워크는 Objective-C 클래스의 모음이다. - 일반적으로 Objective-C 에서는 인스턴스 변수명을 밑줄(_) 로 시작한다. - 객체를 만들기 위해서는 클래스에 alloc 메세지를 보낸다. 이에 클래스는 메모리(힙)에 객체를 만들고 변수에 저장된 그 객체의 주소를 준다. -Party* partyInstance = [Party alloc];[partyInstance init]; 새로 할당한 인스턴스에 보내는 첫 메시지는 항상 초기화 메시지다. .. 2016. 2. 13.
[인도] 뉴델리가 계획도시임을 저명히 보여주는 코넛 플레이스 ( Connaught Place ) 인도 뉴델리가 계획도시임을 저명히 보여주는 코넛 플레이스 ( Connaught Place ) 내용출처 : 프렌즈 인도, 네팔 인기도 ★★★★ 가는 방법 뉴델리 역에서 사이클 릭샤 Rs20 ( 총 거리 : 800m )빠하르간즈 네루 바자르에서 사이클릭샤 Rs 15. ( 총 거리 : 1km )빠하르간즈에서 오토 릭샤 Rs 30~40 ( 이너 서클 특정 위치 하차 or 메트로 라지브 촉 역에서 하차 ) 코넛 플레이스 ( Connaught Place ) 소개 델리 최대의 상업 및 비지니스 거리.1931년 계획 도시 뉴델리 기획이 입안되었을 때부터, 신도시의 상업가로 자리매김한 이래, 오늘날까지 번성을 구가하고 있다. 겹으로 이루어진 원형 건물군이 마치 그리스의 신전과도 같은 모습으로 웅장하게 자리잡고 있는데, .. 2013. 10. 1.
반응형