본문 바로가기

자바

(18)

[Java] 자바코딩, 이럴 땐 이렇게 - 메소드 체인 형태의 호출에서의 bytecode동작과 메모리 반환 관계 발단 오랜만에 네이버 카페 남궁성의 코드 초보 스터디에 갔는데, 재미난 질문이 있어서 정리를 해 본다. 게시물 및 책 내용 카페 게시물 링크 : Stringbuffer 클래스의 append메소드 관련 책이름 : 자바코딩, 이럴 땐 이렇게 - PMD로 배우는 올바른 자바코딩 방법 책 내용 책의 일부 append를 연결해서 사용하면 메서드 체인이 발생해 메모리 누수가 발생할 가능성이 있다. 위 내용에 대한 설명 모든 메서드가 하나의 체인으로 연결되며 이 메서드에 사용된 모든 인자도 연결되므로 비효율적인 메모리 점유가 발생 하지만 메소드 체인으로 서로 연결된 메서드는 결국 연결된 모든 메소드의 스택이 종료되기 전까지 점유한 메모리를 반환하지 않으며, 메서드에 전달된 인자 또한 모든 메서드가 종료되기 전까지 메..
안드로이드 프로그램에서 메소드 갯수 제한(format == null) 안드로이드의 타겟은 모바일 환경이기 때문에, 프로그램을 만들거나 실행할때 몇몇 제약이 있다. 이야기 할 내용은 왠만해서는 접할 수 없는 안드로이드 프로그램의 메소드 갯수 제한에 관한 이야기다. 안드로이드 프로그램을 작성하기 위한 순서를 보자. 1. "자바언어"로 프로그램을 작성한다. 2. "자바 컴파일러"로 JavaVM의 Bytecode를 생성해 낸다. 3. JavaVM의 Bytecode를 DalvikVM의 Bytecode로 변경하면서 4. .dex 파일을 만들어 낸다. 5. .dex 파일과 xml 파일과 각종 이미지들을 zip포맷으로 묶고, 확장자를 apk로 바꾼다. ( 5번 항목은 더 복잡한 내용이 있지만 여기서는 굳이 말할 필요가 없어서 대충. ㅋ ) 안드로이드에서는 많은 class 및 jar들도 ..
[프로그래밍] RGB 이미지를 grayscale로 바꾸는 심오한 세계 프로그래밍 도중에 이미지를 이용해서 작업을 하는 경우가 있다. 이때 이미지 변환중에서 가장 자주 사용되는 변환은, 이미지 크기 늘리기, 회전하기 등이 있겠지만, 이미지 자체를 변환 시키는 것으로는 GrayScale, 즉 회색화(?)시켜야 하는 경우가 있다. 우리는 프로그래밍할때 어떤색을 분리해 보라고 하면, 빛의 3원색으로 빨간색, 녹색, 파란색, 즉 RGB로 분리하게 된다. HTML에서 색을 표현할때도, #FF9933(Red=0xFF, Green=0x99, Blue=0x33)등으로 표현하니깐 말이다. 그러므로 최소단위인, RGB를 이용해서 색의 변환을 수행해야 한다. 물론 GrayScale도 이 세가지 색깔을 이용해서 회색으로 만들어 줄 수 있다. 제일 간단한 방법 조금만 생각하면 누구나 떠 올릴 수 ..
[Java/기초] BlockingQueue를 이용해 쉽게 Producer/Consumer 패턴 만들기 여전히 책을 읽고 있다. 정확하게 말하면 요즘에는 거의 못 읽고 있다. ㅠ_ㅠ 자바 병렬 프로그래밍 - 멀티코어를 100% 활용하는 더그 리 외 지음, 강철구 옮김 아무튼 이 책에는 BlockingQueue에 대한 설명이 잠시 나온다. 이를 이용하면 Producer/Consumer 패턴을 만들기 쉽다고 나와서 직접 코드를 짜 본다. synchronized block를 이용한 생산자/소비자 패턴은 아래와 같다. ( 간단하게 짜 본거라.. 뭐.. 잘못 되었을 수도 있다. 책임 못짐. ㅎㅎ ) import java.util.ArrayList; import java.util.Random; public class PlainProsumer { private static ArrayList queue = new Arr..
[Java/Tip] 자바소스의 잠재적 버그를 잡아내는 FindBugs 책을 한권 읽다가 발견한 내용이 있어 글을 적어 본다. 참고로 읽고 있는 책은 "자바 병렬 프로그래밍 - 멀티코어를 100% 활용하는" 이다. ( 아직 출간 된지 1년이 안된책이라 -_- 할인이 별로 안된다. 쩝... ) 아직은 읽고 있는 중이라, 다음에 다 읽으면 그때 정리해야지. ㅋ. 자바 병렬 프로그래밍 - 멀티코어를 100% 활용하는 더그 리 외 지음, 강철구 옮김 각설하고 이 책을 읽다 보면, 멀티 스레드에서 버그가 많이 발생할 수 있다는 이야기를 하면서, FindBugs라는 프로그램에 대해서 설명이 아주 짧게 나온다. 이 FindBugs라는 프로그램은 Java 소스에서 잠재적으로 버그가 일어날만 한 부분에 경고를 보여 준다. 직접 프로그램을 설치 할 수도 있지만, 이클립스 플러그인도 있다. 이..
[프로그래밍/팁] 59초 다음에는 60초일까? 0초일까? 다시 오랜만에 쓰는 프로그래밍 관련 팁. 별로 쓰일 일이 없고, 생각안하고 써도 크게 문제가 되지 않을 수 있는 부분이다. 최근의 IT 계열 뉴스에서 자주 올라오던 기사인데, 1초가 더 생겼으니 1초를 소중히 생각하자면서 나오던 뭐 그런뉴스와 관련되는것이다. ( http://www.dt.co.kr/contents.html?article_no=2008122202011757731006 ) 응? 근데 1초가 더 생긴다고? 어떻게 시간이 더 생길 수 있지? 그것이 바로 윤초의 문제이다. 2005년에 후지쯔 코리아 사이트에 올라온 공지를 보면 잘 설명되어 있다. ( http://www.fujitsu.com/kr/news/pr/notice20051230.html ) 귀찮으신 분들을 위해서 간단하게 정리하자면, 정의..
자바 개발자가 많이 쓰는 Email은 어딜까? 이 글도 재수 좋게 1월 첫번째 썬 개발자 뉴스에 실렸습니다. ( 개발자 이야기 부분 ) 단, 제목이 약간 이상하게 적혀 있지요. ( 나고수와 실전파 -(?) 자바 개발자가 많이 쓰는 Email은 어딜까? | 조찬제 ) 그래서 제가 좀 찾아 보았는데, 짱가님께서 쓰신 "[개발자와 커뮤니케이션] 나초보씨의 일화 두번째- 나고수와 실전파" 라는 글을 발견했습니다. 아마도, 짱가님의 글이 올라가야 하는데, 제 글이 잘못 메일에 실렸으리라 생각합니다. 저야 좋지만, 이것으로 인해 짱가님의 좋은글이 가려질것 같아 제 글이 시작하기 전에 먼저 링크를 남겨 둡니다. 해당 글은 "진짜 개발자의 이야기"를 다루고 있으니, 꼭 읽어 보세요 ^^ ( 많아서 일부만 링크를 겁니다. ^^; ) [개발자와 커뮤니케이션] 개발을 ..
[Java/Tip] String.intern()은 메모리를 아낄 수 있다? 카페에 적었던글을 다시 옮겨 둡니다. ---- 안녕하세요. 찬 입니다. 오늘도 기초시리즈. String의 intern()에 대해서 이야기 해 보도록 하죠. intern() 에 대해서 알기 위해서는, 우선 String 자체에 대해서 좀 알아 봐야 합니다. String str1 = "Hello"; String str2 = "Hello"; String str3 = "Hello"; 이렇게 해 두면 str1과 str2와 str3는 모두 하나의 객체를 가리키고 있습니다. 왜 그런지 알아 봅시다. .java파일을 컴파일 하게 되면, .class파일이 만들어 지게 됩니다. .class 파일 안에는 현재 클래스의 정보가 들어있게 되겠지요. complie할때에 이미 저 문자를 사용해야 한다는것을 알수 있기 때문에 .cla..