java

    [Kotlin] JSONObject 사용해서 JSON 처리하기

    JSONObject란? JSONObject란 JSON 형식의 String을 처리하도록 도와주는 Java 라이브러리이다. JSONObject 사용 준비하기 JSONObject를 사용하기 위해 더미 JSON 파일이 있다고 가정해보자. { "title": "android", "version" : 1, "isValid" : false, "types": [ "class", "interface", "object" ] } 위 JSON은 Kotlin String으로는 다음과 같이 변환된다. val result = "{'title':'android', 'version' : 0, 'isValid' : false, 'types':['class',''interface','object']}" JSONObject 사용하기 JSO..

    Gradle Kotlin, Java Project의 기본 구성 살펴보고, Gradle Task로 컴파일, 패키징 하기

    Gradle Kotlin, Java 프로젝트 만들기 우리는 이번 글에서 Gradle Kotlin, Java Project의 기본 구성을 살펴볼 것이다. 이를 위해 gradle init을 사용해 Kotlin 프로젝트를 생성하고 내부 구성을 볼 것이다. 다음 과정을 따라 Gradle Kotlin, Java Project를 만들도록 하자. 1. KotlinProject 폴더를 만든 후 현재 폴더를 KotlinProject 폴더로 바꾼다. 이후 gradle init을 하게 되면 총 6가지 질문이 나오게 된다. $ mkdir KotlinProject $ cd KotlinProject $ gradle init Starting a Gradle Daemon (subsequent builds will be faster)..

    JConsole을 활용한 Java Process Code Cache 모니터링

    JConsole이란? JConsole이란 실행중인 java process를 모니터링 하는 응용프로그램으로, jdk에 포함되어 나온다. 응용프로그램이어서 실행하면 바로 사용할 수 있다. 윈도우에서 사용하기 위해 필요한 사항 Mac은 기본으로 권한을 올려주지만, 윈도우에서 사용하기 위해서는 별도의 설정이 필요하다. 1. C:\Users/유저명/AppData/Local/Temp 폴더 에 접근한다. 2. hsperfdata_[유저명] 폴더를 찾아 오른쪽 클릭 후 속성 클릭 후 Security 클릭한 후 모든 유저 - 편집 을 누른다. 3. 아래의 Permission 탭에 모든 권한을 클릭한 후 OK를 누른다. JConsole 위치 mac과 window의 JConsole을 위치가 다르다. mac : /Users/..

    코드 캐시(Code Cache) 사이즈 조정을 통한 JVM 최적화

    코드 캐시 사이즈와 C2 컴파일러 앞선 글 에서 JVM은 성능 최적화를 위해 자주 사용되는 코드에 대해 C2 Compiler 을 사용하여 바이트 코드를 변환한 기계어를 캐시해놓고, 다음에 같은 코드가 실행되면 캐시에서 가져오는 방식으로 실행 시킨다고 하였다. *이러한 방식으로 컴파일을 수행하는 컴파일러가 바로 JIT 컴파일러이며, 캐시 해놓은 코드를 가져오는 것은 마치 미리 컴파일 해놓은 코드를 가져오는 방식과 비슷하게 되어 실행 속도가 비약적으로 빨라진다. JVM의 JIT(Just In Time Compilation) 컴파일이란? C1, C2 컴파일러를 이용한 최적화 JVM에서 코드를 실행하는 방법 JVM은 바이트 코드(Byte Code)라 불리는 기계어 코드를 실행하는 가상 머신이다. 우리가 Java..

    [List 자료구조] 2. ArrayList

    목표 ArrayList의 특징을 이해한다. 접근, 검색, 추가, 삭제를 위한 시간 복잡도가 어떻게 도출되는지 이해한다. ArrayList ArrayList는 내부가 배열(Array)형태로 된 List이다. ArrayList는 List인데 연속된 메모리 공간을 차지하는 Array의 형태를 가지고 있다. 따라서 특정원소에 Index를 이용해 접근이 가능하다. ArrayList는 List의 성질인 가변성을 위해서 ArrayList는 과 같이 처음부터 일정량의 메모리 공간을 잡고 들어간다. 만약 같이 List에 인스턴스가 더해져 메모리 공간이 모두 찬다면 다시 해당 메모리 공간보다 더 큰 메모리 공간을 잡아 기존 객체를 복사한 다음 연산을 이어간다. 예를 들면 하나의 메모리 공간만 필요한데 향후 값이 추가될 것..