본문 바로가기

자바5

[openjdk] open jdk 1.8 다운로드 및 설치 자바의 라이선스 만료로 인하여 윈도우에서 open jdk 설치할 때는 다음과 같이 진행합니다. 깃허브에서 빌드된 자바 다운로드(https://github.com/ojdkbuild/ojdkbuild) 합니다. msi 파일은 실행하여 설치 안내메시지에 따라서 진행하면 됩니다. zip 파일은 원하는 경로에서 압축을 풀고, 환경변수에 JAVA_HOME을 지정합니다. JAVA_HOME은 {JAVA_LOCATION}/bin 까지 설정해야 합니다. 2019. 10. 25.
[Java] JVM 메모리 구조 및 옵션 JVM의 메모리 구조를 알아보겠습니다. 메모리 공간 메모리 공간은 크게 힙영역과 힙영역이 아닌 공간으로 구분할 수 있습니다. 힙영역은 사용자가 크기를 정할 수 있는 공간입니다. Method : 클래스, 변수, 함수, 정적 변수, 상수 정보 등이 저장되는 영역. 프로그램 전체에서 공유 Stack : 함수 내에서 사용되는 매개변수, 지역변수, 리턴값 등이 저장되는 구역. PC Register: CPU의 Register와 역할이 비슷하고, 현재 수행중인 JVM 명령의 주소값이 저장 Native Method Stack: 네이티브 메소드 호출을 위해 할당되는 구역 Heap : new 명령어로 생성된 객체가 저장되는 영역. GC의 대상이 되는 영역 힙 영역 구조 힙영역은 가비지 콜렉션(GC)의 대상이 되는 영역입니.. 2019. 6. 4.
[linux][java] 캐리지 리턴, 라인피드 개행을 위한 제어 문자에는 몇가지 종류가 있는데 그중에서 가장 많이 사용하는 것이, LF, CR, CR+LF 이다. LF: Line Feed - \n (^M)CR: Carriage Return - \rCR+LF : \r\n 시스템에 따라 이중 하나만 사용해도 개행이 되는 시스템도 있고, 모두를 지원하는 시스템도 있다. 문제는 리눅스의 개행은 \n 이고, 자바는 \r, \n, \r\n을 모두 지원한다. 따라서 문자열 처리중 의도하지 않은 오류가 발생할 수 있다. 자바에서 문자열을 개항문자로 split 하여 처리하는 중 의도하지 않은 개행이 발생한다면 이로 인한 오류일 가능성이 높으므로 문자열 처리전 LF를 제거해주 면 된다. 제거 방법은 다음과 같다. :%s/^M$//g tr -d '\r' < inputf.. 2016. 11. 7.
[JAVA] 순열(Permutation) 만들기 순열은 순서가 부여된 임의의 집합을 다른 순서로 뒤섞는 연산을 말한다. 1, 2, 3 이라는 숫자의 집합이 있을 때, 다음과 같이 뒤섞는 연산이다. 1,2,3 1,3,2 2,1,3 2,3,1 3,2,1 3,1,2 자바에서는 재귀연산을 이용해 해결할 수 있다. 기준점(pivot)이 되는 배열의 인덱스를 제공하면, 해당 인덱스의 뒤쪽에 있는 값들과 위치를 변경후 기준점을 다음의 위치로 옮겨 다시 호출하는 순서로 진행한다. 아래와 같이 배열을 이용하는 방법과 문자열을 이용하는 방법이 있다. * 순열은 문자열의 길이이 따라 n! 로 시간이 걸리게 된다. 문자열의 길이가 20, 30 개가 된다면 시간이 굉장히 오래 걸리게 된다. http://gorakgarak.tistory.com/522 http://stacko.. 2016. 6. 13.
[어노테이션] 어노테이션과 리플렉션을 이용한 메소드 실행시간 출력하기 어노테이션과 리플렉션을 이용한 메소드 실행시간 출력 클래스에 PrintTime 어노테이션이 설정된 메소드를 찾아서 실행 시간을 출력한다. 어노테이션 @Target 은 어노테이션이 적용될 타입을 설정한다. Method, Filed 등을 설정할 수 있다. 한번에 여러 개를 적용하는 것도 가능하다. @Retention 은 어노테이션이 적용될 시점을 설정한다. Source, Runtime 등을 적용할 수 있다. 적용 시점에 따라 어노테이션 정보가 안 보일 수도 있다. 리플렉션 Class.forName() 메소드를 이용하여 데이터를 생성한다. 메소드와 메소드의 어노테이션 정보를 확인하여 @PrintTime 어노테이션이 적용된 메소드를 실행하고 실행시간을 출력한다. 테스트로 스트림을 이용한 버전과 for 문을 이용.. 2015. 6. 4.