본문 바로가기
[Java Concurrency] 활동성 최대로 높이기 #2 [Java Concurrency] 활동성 최대로 높이기 #2 10.2. 데드락 방지 및 원인 추적 - 한 번에 하나 이상의 락을 사용하지 않는 프로그램은 락의 순서에 의한 데드락이 발생하지 않는다. 물론 그다지 실용적이지 않은 방법일 수 있지만, 가능하다면 한 번에 하나 이상의 락을 사용하지 않도록 프로그램을 만들어 보는 것도 좋다. - 여러 개의 락을 사용해야만 한다면 락을 사용하는 순서 역시 설계 단계부터 충분히 고려해야 한다. 설계 과정에서 여러 개의 락이 서로 함께 동작하는 부분을 최대한 줄이고, 락의 순서를 지정하는 규칙을 정해 문서로 남기고 그 규칙을 정확하게 따라서 프로그램을 작성해야 한다. - 세세한 수준에서 락을 관리하는 프로그램에서는 두 단계의 전략으로 데드락 발생 가능성이 없는지를 확.. 2017. 5. 2.
[Effective Java] 직렬화된 인스턴스 대신 직렬화 프록시의 사용을 고려하자. [Effective Java] 직렬화된 인스턴스 대신 직렬화 프록시의 사용을 고려하자. - Serializable 인터페이스를 구현할 때는 결함과 보안 문제가 생길 가능성이 커진다. 정상적인 생성자 대신 언어 영역 밖의 메커니즘을 사용해서 인스턴스가 생성되기 때문이다. 그런 위험을 현저히 줄이는 방법이 직렬화 프록시 패턴(Serialization proxy pattern) 이다. - 직렬화 프록시 패턴은 직렬화 가능 클래스의 private static 중첩 클래스를 설계한다. 직렬화 프록시(serialization proxy) 라고 하는 inner 클래스는 외곽 클래스를 매개 변수 타입으로 하는 단일 생성자를 갖는다. 그리고 이 생성자는 자신의 인자로부터 데이터만 복사한다. 일관성 검사나 방어 복사도 할.. 2017. 3. 28.
[Effective Java] 독자적인 직렬화 형태의 사용을 고려하자 [Effective Java] 독자적인 직렬화 형태의 사용을 고려하자 - 클래스를 설계할 때 클래스가 Serializable 을 구현하면서 기본 직렬화 형태를 사용한다면, 나중에 함부로 버릴 수 없고, 그 직렬화 형태를 계속 유지해야 할 가능성이 높다. - 적합 여부를 우선적으로 고려해보고 기본 직렬화 형태를 수용하자. 기본 직렬화 형태는 유연성, 성능, 정확성의 관점에서 타당하다는 결정이 섰을 때 사용해야 한다. 일반적으로 말하면, 우리가 독자적인 직렬화 형태를 설계한다고 할 때 하게될 인코딩과 대부분 같은 경우에만 기본 직렬화 형태를 사용해야 한다. - 이상적인 객체 직렬화 형태는 그 객체가 표현하는 논리적 데이터만 포함한 것이다. - 기본 직렬화 형태는 객체의 물리적 표현이 논리적인 내용과 동일할 .. 2017. 3. 23.
[서울 데이트] 낙산공원 뒷길도 참 좋은데, 설명할 방법이 있넹? ㅋㅋ [서울 데이트] 낙산공원 뒷길도 참 좋은데, 설명할 방법이 있넹? ㅋㅋ #안녕하세요 여러분. 돼지왕 왕돼지에용.오늘은 낙산공원 뒷길 탐방기를 공유해드릴꼐요. #보통 혜화(대학로)를 통해 낙산공원을 오르곤 하잖아요?그 가파른 길을 헉헉대며 올라가서 ㅋㅋ 근데 저는 이번에는 뒷길을 통해 올라가봤어요. #낙산공원 뒷길은, 혜화역에서 삼선교(한성대 입구)역쪽으로 걸어가다 보면,계단식으로 된 진입로가 있어요.그리로 가시면 되용. 혜화역과 한성대 입구역 중간정도 위치라서,각 역에서 도보 10분정도라고 보시면 될 것 가타요. ( 한성대 입구역쪽이 조금 더 가까운 듯 ) #올라가는 길에 산들의 실루엣이 너무 이뻐서 여러 장 찍었어요.푸르름과 성루, 교회의 첨탑, 그리고 산의 실루엣과 안개 전체적인 조화가 오묘하니 좋았.. 2016. 8. 24.
[GS25] 안주계의 허니버터칩? - 크리스피 치킨 [GS25] 안주계의 허니버터칩? - 크리스피 치킨 #갱또님이 말했다."안주계의 허니버터칩이 나타났데, 요즘 페이스북에서 난리래" #나는 말했다."뭐 허니버터칩같은거 건방져, 무슨 물량을 컨트롤하고, 또 쓸데없이 비싸겠지" #갱또님이 말했다."분명 니가 좋아할 맛이야. 어서 먹어봐야해, 이따 편의점 들르자" #그래서 집 앞 GS25 를 가서 구했다.처음 갱또님으로부터 설명 들었을 때는 이 녀석이 과자인 줄 알았는데...과자류이긴 한데 안주섹션이 있는 과자이다. #가격은 3,000원.행사상품으로 요즘 2+1으로 3개에 6,000원이란다.가격이 깡패다... 이 녀석 역시 허니버터칩 과이군? #재고도 1개만 남아있어서 3개를 사려던 나의 꿈은 무산..갱또님이 한개만 맛보라며 하나만 그냥 구매.. ㅋㅋㅋ 나중에.. 2016. 6. 4.
Long 을 Int 로 casting 할 때 다음을 고려하자. Long 을 Int 로 casting 할 때 다음을 고려하자. -casting 하려는 long 값이 양수, 음수를 모두 사용한다면, 그리고 충분히 큰 값을 사용한다면함부로 int 로 casting 해서는 안된다. - 안전한 down casting 다음과 같이 하면 좋다. public static int safeLongToInt(long l) {if (l Integer.MAX_VALUE) {throw new IllegalArgumentException(l + " cannot be cast to int without changing its value.");}return (int) l;} -값 손실을 고려한다면 IllegalArgumentException 대신 .. 2015. 12. 28.
[android] Serialization 을 사용할 때 다음의 예외를 고려하자. [android] Serialization 을 사용할 때 다음의 예외를 고려하자. serialVersionUID 를 명시적으로 주자. serialVersionUID 를 명시적으로 주지 않으면, compiler 가 계산한 값을 부여한다. 환경이 변하지 않으면 좋겠지만, compiler 가 계산한 값은 상황에 따라 값이 달라질 수 있다. serialVersionUID 가 매치하지 않는 경우에 deserialize 하려고 시도하면 InvalidClassException 이 발생한다. 잠재적 위험을 피하기 위해 serialVersionUID 를 명시적으로 주는 것이 좋다. 만~약 이전 버전에 이미 compiler 가 자동으로 할당한 serialVersionUID 값을 사용하게 되었다면, 그 값을 찾아 명시적으로.. 2015. 12. 17.
황제와 왕의 차이는 무엇일까? 황제와 왕의 차이는 무엇일까? 우리가 흔히 말하는 황제의 기원은 중국 진나라의 진시황이 처음 사용한 것으로 알려져 있다. 진시황이 왕 대신 "황제" 라는 이름을 쓰기 시작한 것은 자신의 권위를 더 높이기 위함이었다.거만하게도(?) 그는 자신이 고대 중국의 위대한 왕이었던 삼황오제보다도 뛰어나다는 의미로, 삼황오제의 황(皇)과 제(帝)를 따서 본인 스스로를 황제로 칭하였다.( 그의 업적을 생각하면, 거만하다고만은 할 수도 없지만.. ) 삼황이 누구인지 궁금한가요? 여기를 클릭. 진시황이 가장 먼저 황제라는 용어를 사용하였기 때문에 진시황을 始(처음시)를 사용해 시황제라고도 부른다. 이렇게 사용되기 시작한 황제라는 용어는후에 "왕 중의 왕" 이라는 의미로 굳어졌다.사실 황제의 황(皇)도 임금, 제(帝)도 임.. 2013. 5. 15.
연산군은 양반이다. 고려 28대 왕 충폐왕(忠惠王) 의 업적(?) 손가락 꾸욱~♥ 응원해주세요!! 충혜왕( 忠惠王 ) 고려 제 28대 왕으로 방탕하고 주색을 일삼아 왕위를 다시 부왕 충숙왕에게 넘긴 뒤 원나라로 돌아가야 했다. 원나라에서 돌아와 복위하였으나 또 다시 방탕한 짓을 일삼았다. 이운 등이 원나라에 상소를 올린 끝에 계양으로 귀양을 가 그곳에서 죽었다. 생긴것부터 음탕하게 생겼다.. 조선시대 최고의 막장 왕은 연산군이다. 하지만 한국 역사상 고려 충혜왕만큼 역사에서 역대 최악의 왕은 없었다. 이 충혜왕이 왜 그동안 알려지지 않은 것일까? 그의 파란만장한(?) 행각들을 살펴보자. 그의 행각은 정사에 많이 기록되지 않았다고 한다. 그런데도 이 모냥이니.. 우선 감상(?)해보자.. 우선 그의 사상은 한마디로 "귀천을 따지지 않는 평등사상에 입각 눈에 보이는 모든 여.. 2013. 2. 4.
반응형