본문 바로가기

Programming123

String vs StringBuffer vs StringBuilder in Java 기본적인 내용이지만, 필자는 아직 Java 초보인 관계로 3개의 객체에 대한 차이점들을 기록으로 남긴다.String 객체는 한번 저장한 내부의 문자열을 변화시키지 않는다(immutable). 대신 변화된 문자열을 새로 생성한한다. 따라서 += 과 같은 append 연산자를 자주 사용해야 할 경우 String 객체를 사용하면 속도가 엄청 느리게 된다.StringBuffer는 내부 값들을 변화시키는 구조(mutable)로 되어있다. 따라서 append 연산에 있어 String보다 최적화 되어있다. Thread Safe 하므로 (Synchronized), 이 속성을 유지하면서 빠른 string append 연산을 요구하는 부분에 사용한다.StringBuilder또한 내부 값들을 변화시키는 구조(mutable).. 2013. 5. 15.
Removing BOM in Java 참조 : http://www.rgagnon.com/javadetails/java-handle-utf8-file-with-bom.htmltext 파일을 다루다보면 가끔 BOM까지 문자열로 찍힐때가 있다.보통 utf8 이나 utf16을 사용하므로 본인은 아래의 클래스를 사용하여 BOM을 제거하였다.utf32에 대한 BOM을 제거하려면 위의 참조링크를 참조한다.123456789public class StringUtil { public final static String UTF16_BOM = "\uFEFF"; public static String removeUTF16BOM(String input) { if( input.startsWith(UTF16_BOM) ) { input = input.substring(1).. 2013. 4. 29.
자바 프로젝트 내에서의 빌드 버전 관리 (ant) 이번에 새로 맡게된 자바 프로젝트의 소스를 이것저것 보다가, 빌드 버전에 대한 내용이 여러 곳에 분산되어 하드코딩 되어 있었고, 마침 시간적 여유도 되어서 빌드버전관리의 일원화에 대한 효율적인 구조들을 찾아보았다. 소스 자바 빌드 버전에 대한 관리를 다른 사람들은 어떤식으로 하고 있는지 찾아보다가 몇가지 좋은 링크들을 발견하였지만 본인의 프로젝트 요구조건과는 맞지 않았다. 링크 : http://stackoverflow.com/questions/690419/build-and-version-numbering-for-java-projects-ant-cvs-hudson 프로젝트의 상황은 다음과 같다. 특정 properties 파일에 빌드버전정보가 들어있다. properties 파일의 빌드버전 정보를 ant pa.. 2013. 4. 24.
MSVCRTD.lib(MSVCR90D.dll) : error LNK2005: __stat64i32이(가) LIBCMTD.lib(stati32.obj)에 이미 정의되어 있습니다. 본인이 접한 이번 에러의 케이스는 총 2가지 2가지 모두 라이브러리에 해당하는 모듈과 그걸 이용하는 바이너리 모듈 빌드시 빌드 옵션의 차이로 인해 발생하는 에러. 빌드 방식을 통일하거나, 바이너리 모듈 빌드시 차이를 포괄할 수 있는 옵션을 사용하면 된다. 연관 빌드 옵션 Runtime Library 옵션 : /MTd /MD /MT 등등 ( 참조링크 )DEBUG/RELEASE 옵션 하나는, 라이브러리에 해당하는 것을 DEBUG 모드로 빌드하고 그걸로 바이너리를 만드는 빌드시스템에서는 RELEASE로 해서 에러 발생. 이는 둘다 빌드 모드를 맞춤으로 해서 해결함. 다른 하나는 Runtime Library 사용에 대한 옵션 차이로 인해 발생한 에러. 이쪽도 빌드 옵션을 맞춰서 해결하였음. 참고로 재배포 패키지.. 2012. 11. 29.