본문 바로가기

java

(20)

[Java] 자바코딩, 이럴 땐 이렇게 - 메소드 체인 형태의 호출에서의 bytecode동작과 메모리 반환 관계 발단 오랜만에 네이버 카페 남궁성의 코드 초보 스터디에 갔는데, 재미난 질문이 있어서 정리를 해 본다. 게시물 및 책 내용 카페 게시물 링크 : Stringbuffer 클래스의 append메소드 관련 책이름 : 자바코딩, 이럴 땐 이렇게 - PMD로 배우는 올바른 자바코딩 방법 책 내용 책의 일부 append를 연결해서 사용하면 메서드 체인이 발생해 메모리 누수가 발생할 가능성이 있다. 위 내용에 대한 설명 모든 메서드가 하나의 체인으로 연결되며 이 메서드에 사용된 모든 인자도 연결되므로 비효율적인 메모리 점유가 발생 하지만 메소드 체인으로 서로 연결된 메서드는 결국 연결된 모든 메소드의 스택이 종료되기 전까지 점유한 메모리를 반환하지 않으며, 메서드에 전달된 인자 또한 모든 메서드가 종료되기 전까지 메..
Java에서 UTF-8 BOM(ByteOrderMark)이 제대로 처리 되지 않는 문제 백만년 만에 글. 너무 글을 안써서 오랜만에 생각나서 써 봄. ㅋ Java에서 제공하는 기본적인 Reader계열에서는 UTF-8의 BOM을 제대로 처리하지 못합니다. 그렇기 때문에 BOM이 있는 UTF-8 stream을 Reader로 넣으면, String의 제일 앞글자에 0xfeff 가 들어 오는 문제가 생깁니다. "UTF-8의 BOM을 제대로 처리 못하는 Java의 문제가 아니냐?" 고 물을 수 있겠지만은, Unicode 표준에는 UTF-8에 대해서는 BOM을 적지 않도록 권고(neither required nor recommended)하고 있습니다. 그런데 MS Windows 계열에서 만들어진 일부 문서에서는 BOM을 포함하는 경우가 종종있습니다. 이를 해결할 수 있는 방법은, 1. BOM에 대한 정..
안드로이드 프로그램에서 메소드 갯수 제한(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도 이 세가지 색깔을 이용해서 회색으로 만들어 줄 수 있다. 제일 간단한 방법 조금만 생각하면 누구나 떠 올릴 수 ..
Oracle to Buy Sun. - 오라클 썬을 인수하다. 자바로비 : http://java.dzone.com/news/oracle-buys-sun 썬사이트 : http://www.sun.com/third-party/global/oracle/index.jsp --- 자바로비 Oracle Buys Sun Submitted by James Sugrue on Mon, 2009/04/20 - 6:56am Tags: Java News After weeks of speculation of IBM buying out Sun, which failed to produce a result, today Oracle have swept in and bought Sun. The deal is valued at approximately $7.4 billion, or $5.6 billio..
[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 ) 귀찮으신 분들을 위해서 간단하게 정리하자면, 정의..