본문 바로가기

공부방

(97)
Java의 동작 방식과 JVM의 구조 Java의 동작 방식과 JVM의 구조 Java Virtual Machine (JVM)은 Java 언어로 작성된 프로그램을 실행하는 가상 머신입니다. JVM은 Java 프로그램의 실행 환경을 제공하며, 운영 체제와 Java 프로그램 사이에서 중개자 역할을 수행합니다. JVM의 구조와 동작 원리를 이해하는 것은 Java 개발자에게 매우 중요한 요소이기 떄문에, Java의 동작 방식과 JVM의 구조에 대해서 한 번 살펴보도록 하겠습니다. 우선 javac라는 컴파일러를 이용하여 모든 .java 파일을 .class 파일로 컴파일 시킵니다. JVM은 바이트코드로 작성된 .class 파일을 이용하여 운영체제에 맞는 네이티브코드로 변환해줍니다. 간략히 살펴보면 아래와 같은 구조입니다. 클래스 로더 시스템 JVM은 클래..
Elasticsearch 모니터링 시스템 구축 일지 - 2편 (Quick start) APM Guide를 통해서 어떻게 APM을 통하여 모니터링 서비스를 구축할 수 있는지 알아보도록 하겠습니다. https://www.elastic.co/guide/en/apm/guide/7.17/apm-quick-start.html 알아보고자 하는 내용 Collect Application Performance Monitoring (APM) data Send APM data to the Elastic Stack Explore and visualize the data in real-time 데이터 수집, APM data를 elastic stack에 전송하는 방법, 실시간 시각화 방법을 알아볼 예정입니다. 사전 준비 데이터를 저장하고 검색하려면 Elasticsearch가 필요하고 데이터를 시각화하고 관리하려면 ..
Elasticsearch 모니터링 시스템 구축 일지 - 1편 (APM agent?) 1. 모니터링 시스템 구축기 이전에 Spring boot 프로젝트는 Prometheus + Grafana 조합으로 모니터링 시스템을 구축하고 ElasticSearch 모니터링 시스템은 Metricbeats + Elasticsearch + Grafana 조합으로 모니터링 시스템을 구축하였다. 위 설계대로 모니터링 시스템을 하면, 모든 정보를 elasticsearch에 저장하지 않아도 된다는 이점과, 서버를 카테고리 별로 나눠서 볼 수 있으며, 이미 잘 만들어진 dashboard template을 이용하여 이쁘게 모니터링 시스템을 구축할 수 있다는 장점을 어필해 보았지만 차장님과 팀장님을 설득하는데는 실패하였습니다. 차장님과 팀장님의 의견대로 이번에는 APM agent를 이용하여 모니터링 시스템을 구축해 보..
코틀린에서 클래스를 다루는 방법 코틀린에서 클래스를 만드는 방법 코틀린에서는 클래스를 어떻게 만들까요? 코틀린에서 클래스 만드는 방법을 알아보기 위해 자바로 클래스를 만들고 그 코드를 코틀린으로 변환해보면서 연습해보도록 하겠습니다. [Java] 일반적인 자바 클래스입니다. name과 age를 필드 변수로 가지고 있으면서 getter와 setter를 구현해준 모습입니다. 이것을 코틀린으로 변환해 보겠습니다. package lec09; public class JavaPerson { // name은 변경할 수 없다고 가정합니다. private final String name; private int age; public JavaPerson(String name, int age) { this.name = name; this.age = age; ..
코틀린에서 함수를 다루는 방법 함수 선언 문법 코틀린에서는 함수를 어떻게 선언하는지에 대해서 알아봅시다. 두 변수 a와 b의 크기를 확인하고 큰 값을 return해주는 함수입니다. 같은 기능을 자바로 구현한 결과와 코틀린으로 구현한 결과를 비교해보겠습니다. [Java] 평범한 자바 코드입니다. 이러한 코드를 코틀린으로 구현하다면 어떻게 해야 할까요? public class Lec08Main { public int max(int a, int b) { if (a > b) { return a; } return b; } } [Kotlin] 접근제한자 명시해 놓지 않으면 기본으로 public 접근제한자가 적용됩니다. 반환 타입도 Unit 인 경우는 생략 가능합니다. fun max(a: Int, b: Int): Int { return if (a..
코틀린에서 예외를 다루는 방법 try - catch try-catch 문법은 자바와 코틀린 모두 동일합니다. 다만 코틀린에서는 try-catch 문법을 Expression으로 취급한다는 것에 약간의 차이가 있습니다. [Java] [Kotlin] Checked Exception, Unchecked Exception 코틀린에서는 checked exception이 존재하지 않습니다. 코드를 통해 확인해 보도록 하겠습니다. [Java] 여기 파일을 읽어내는 코드가 있습니다. 자바에서는 IOException 예외처리를 진행해야 코드를 실행할 수 있습니다. 코틀린에서는 어떨까요? public class Lec07Main { public static void main(String[] args) throws IOException { File cur..
코틀린에서 반복문을 다르는 방법 1. for - each 문 [Java] 리스트를 만들고, 리스트 안에 있는 값들을 출력하는 코드가 있습니다. 이 코드를 코틀린으로 변경해보면 어떻게 될까요? public class Lec06Main { public static void main(String[] args) { List numbers = Arrays.asList(1L, 2L, 3L); for (long number : numbers) { System.out.println(number); } } } [Kotlin] 향상된 for문도 Java와 크게 차이나는 부분은 없습니다. 컬렉션을 만드는 방법이 다릅니다. 이터레이터 안에서 콜론(:) 대신 in을 사용합니다. Java와 동일하게 iterable이 구현된 타입이라면 모두 들어갈 수 있습니다...
코틀린에서 조건문을(제어문) 다루는 방법 1. if문 [자바] 여기 int가 0보다 작다면 exception을 뱉어내는 메서드가 있습니다. 이런 코드를 코틀린으로 변경하려면 어떻게 해야할까요? private void validateScoreIsnotNegative(int score) { if (score < 0) { throw new IllegalArgumentException(String.format("%s는 0보다 작을 수 없습니다.", score)); } } [코틀린] 디테일한 부분에서는 다른점이 있지만, 크게 달라지는 부분은 없습니다. 다른점이라고 해도 If문에서 달라지는 것은 아니죠. 함수에서 Unit (void가 생략됨) 함수 만들때 fun을 사용 exception 던질 때 new 가 생략됨 fun validateScoreIsNotN..