1. DATABASE URL 에 아래의 인자를 추가하면 속도가 향상된다.
  2. Table 구조에서 성능저하를 일으킬 수 있는 불필요한 부분을 삭제한다. ( 절대 빈값이 들어갈수 없는 INSERT 문을 이용하는데 NOT NULL을 사용함, 검색을 자주하지 않는 필드에 대해서 인덱스를 사용함 등…)


Sample XML

Java Code

 

정된 문자들로 조합된 무작위 문자열을 만드는 예제 코드이다. (import 부분은 생략되었음)

아래의 예제는 50000 유저에 대해 랜덤한 케릭터로 구성된 아이디를 발급하는 부분이다. 길이는 5 ~ 20자 내에서 랜덤하게 생성된다.

개발시 임시로 사용했던 http post sample page 내용을 공유해본다.

아래의 예제에서 쓰이는 Post variable은 pk, title 그리고content 이다.

기본적인 내용이지만, 필자는 아직 Java 초보인 관계로 3개의 객체에 대한 차이점들을 기록으로 남긴다.

  • String 객체는 한번 저장한 내부의 문자열을 변화시키지 않는다(immutable). 대신 변화된 문자열을 새로 생성한한다. 따라서 += 과 같은 append 연산자를 자주 사용해야 할 경우 String 객체를 사용하면 속도가 엄청 느리게 된다.
  • StringBuffer는 내부 값들을 변화시키는 구조(mutable)로 되어있다. 따라서 append 연산에 있어 String보다 최적화 되어있다. Thread Safe 하므로 (Synchronized), 이 속성을 유지하면서 빠른 string append 연산을 요구하는 부분에 사용한다.
  • StringBuilder또한 내부 값들을 변화시키는 구조(mutable)로 되어있다. Thread  safe하지 않으므로 StringBuffer보다 빠르다. 따라서 Thread Safe속성을 필요로 하지 않는 부분에 사용할 수 있다.

참조 : http://www.rgagnon.com/javadetails/java-handle-utf8-file-with-bom.html

text 파일을 다루다보면 가끔 BOM까지 문자열로 찍힐때가 있다.

보통 utf8 이나 utf16을 사용하므로 본인은 아래의 클래스를 사용하여 BOM을 제거하였다.

utf32에 대한 BOM을 제거하려면 위의 참조링크를 참조한다.

 

이번에 새로 맡게된 자바 프로젝트의 소스를 이것저것 보다가, 빌드 버전에 대한 내용이 여러 곳에 분산되어 하드코딩 되어 있었고, 마침 시간적 여유도 되어서 빌드버전관리의 일원화에 대한 효율적인 구조들을 찾아보았다.

소스 자바 빌드 버전에 대한 관리를 다른 사람들은 어떤식으로 하고 있는지 찾아보다가 몇가지 좋은 링크들을 발견하였지만 본인의 프로젝트 요구조건과는 맞지 않았다.

 

프로젝트의 상황은 다음과 같다.

  • 특정 properties 파일에 빌드버전정보가 들어있다.
  • properties 파일의 빌드버전 정보를 ant package script에서 이용한다.
  • 빌드버전정보는 java source 내에 중복되어 하드코딩 되어 있다. 이는 프로그램 시작시 버전 정보 출력을 하는데 사용된다.

본인이 생각하는 개선사항은 다음과 같다.

  • 버전 정보는 하나의 파일에서만 관리하고 이를 필요한 위치에 적용하는 형식으로 사용한다.
  • eclipse 상에서 테스트 시에는 ant 빌드 없이 진행이 될 수 있으므로, 이러한 상황에서도 일원화된 버전정보를 잘 가져올 수 있어야 한다.

이러한 개선 요구사항을 기반으로 여러가지 방법들을 생각해보았으나 딱히 마땅한 해결책이 떠오르지 않았다. 그래서 소스를 크게 변경하지 않는 선에서 효율적으로 관리할 수 있는 방안을 적용하였다.

  • 빌드버전정보는 기존처럼 properties 파일 내에 기록한다.
  • VersionInfo.java를 추가하여 빌드버전정보를 제공한다. 기능은 다음과 같다.
    • 패키지 화 할 경우에는 소스를 복사해서 컴파일 하므로, ant build script 내부에서 복사할 때 VersionInfo.java의 특정 부분을 properties 의 빌드버전정보로 치환하여 복사한다.
    • eclipse에서 디버깅 할 때 해당 버전 정보를 정확하게 보여줄 수 있어야 하므로, eclipse내에서 디버깅 중인지를 인지하여 조건이 일치하는 경우  properties파일을 읽어 빌드버전정보를 얻어오게 한다.

본인이 사용하고 있는 properties는 다음과 같다.

ant build script 내에서 복사시 치환하는 부분이다. filter 부분과 copy 의  filtering부분을 참조한다.

 

해당 properties 파일을 읽고 해당 빌드 버전과 번호를 읽어오는 자바 소스(VersionInfo.java)는 다음과 같다.

p.s 혹시 이보다 더 괜찮은 방법을 알고 계시면 추천 부탁드립니다. :)

Failed to create the Java Virtual Machine.
  • 원인 : Maximum Heap space size 를 설정하는 Xmx가 너무 큰값으로 설정되어 있다.
  • 해결방안 : eclipse.ini 파일을 열어 -Xmx512m으로 되어 있는 부분을 -Xmx256m으로 바꾼 후 이클립스를 재실행한다.
  • 참고 : xms 는 initial heap space size이다. 각 플랫폼별 예제는 아래의 링크에서 확인한다.



+ Recent posts