💬언어15 [JAVA] JVM이란? / JVM의 동작 과정 1. 소스 코드를 실행하기 개발자는 java로 코드를 작성한 후 ide 상단에 Run이라는 버튼을 눌러서 실행 결과를 확인한다. 내부에서 어떤 과정이 일어나길래 이게 가능할까? 이를 알기 위해서는 JVM에 대해 알아야 한다. 2. JVM이란? JVM(Java Virtual Machine)이란 자바의 바이트 코드를 실행할 수 있는 가상의 머신, 컴퓨터다. JVM은 CPU나 운영체제와 무관하게 자바로 작성된 코드를 실행시킬 수 있기 때문에 '플랫폼에 독립적으로 동작한다'라고 할 수 있다. JVM은 여러 구성 요소로 이루어져 있다 클래스 로더(Class Loader) : 클래스 파일을 런타임 데이터 영역으로 로드하는 역할. 실행 엔진(Execution Engine) : 바이트 코드를 해석하고 실행. 런타임 데.. 2023. 4. 12. [JAVA] ChatGPT API로 요청 보내고 받아오기 / okhttp3, gson java를 통해 하는 방법은 공식문서에 안나와 있어서 ChatGPT API를 통해 요청을 보내고 받아오는 방법을 알아보겠습니다 1. 개발 환경 java 8 이상 Gradle 크레딧이 등록된 ChatGPT API Key가 필요 2. ChatGPT API Key 발급받기 OpenAI API An API for accessing new AI models developed by OpenAI platform.openai.com 위 링크에 접속해서 +Create new secret key를 발급받는다 (중요! 한 번 발급 받은 키는 다시 볼 수 없기 때문에 메모장같은 곳에 백업을 해둬야 한다) 처음 가입하면 크레딧을 주지만 기한이 있기 때문에 만료됐다면 결제정보를 등록하고 유료로 이용하면 된다 3. 의존성 추.. 2023. 4. 4. [JAVA] Stream의 findFirst vs findAny 자바의 Stream API는 JAVA 8부터 추가된 기능이다 함수형 프로그래밍을 기반으로 컬렉션, 배열과 같은 데이터를 간결하게 처리할 수 있고 병렬 처리가 가능하다 처리한 데이터 요소 중 1개를 가져오는 방법은 findFist와 findAny가 있다 findFist와 findAny 둘 다 조건에 해당하는 요소 하나를 가져오는 것은 동일하다 하지만 findFirst는 Stream의 순서에서 가장 먼저 나오는 요소를 가져오고, findAny는 병렬로 처리할 경우 멀티 스레드에서 가장 먼저 찾은 요소를 가져온다 즉, 실행시마다 결과가 달라질 수 있다 예제 1. Bird record 생성 JAVA 14에 추가된 record 타입 클래스를 생성한다 public record Bird(String name, int.. 2023. 4. 3. [JAVA] 참조에 의한 호출 (Call by Reference), 값에 의한 호출 (Call by Value) 1. 요약 자바에서는 실제로 Call by Reference가 존재하지 않고, Call by Value만 존재한다 그 이유는 참조 타입(객체)의 경우 객체의 주소 값을 값으로 전달하기 때문이다 2. Call by Reference vs Call by Value 메소드 호출 시, 매개변수를 전달하는 방법에는 참조에 의한 호출과 값에 의한 호출 두 가지가 있다 이 두 가지 호출 방식은 매개변수로 전달되는 값의 타입에 따라 달라진다 참조에 의한 호출 (Call by Reference) 참조에 의한 호출은 객체의 주소 값을 전달하는 방식이다 메소드 안에서 매개변수의 값이 변경되면, 호출한 쪽에서도 값이 변경되며 이는 매개변수가 객체 타입일 때 발생한다 값에 의한 호출 (Call by Value) 값에 의한 호출.. 2023. 3. 28. [JAVA] 멀티스레드 환경에서 싱글톤 객체 처리 멀티스레드 환경과 싱글톤 객체 멀티스레드 환경에서 여러 스레드가 하나의 싱글톤 객체에 접근하는 것은 충돌이 발생할 수 있으므로 주의해야 한다 우선 스레드와 멀티스레드, 싱글톤 객체에 대해 간단히 살펴 보고 문제가 왜 발생하는지 생각해보자 스레드란? 우선 스레드는 애플리케이션의 코드를 하나씩 수행하는 단위이다 스레드는 한 번에 하나의 코드 라인을 읽을 수 있고 동시처리를 위해서는 스레드를 여러개 사용하는 멀티스레드를 이용해야 한다 멀티스레드란? 멀티스레드란 여러 스레드가 자신이 속한 프로세스의 자원을 공유하면서 둘 이상의 스레드가 동시에 작업을 하는 것이다 자신이 속한 프로세스의 메모리를 공유하므로 시스템 자원의 낭비가 적다는 장점이 있다 멀티스레드를 구현하는 방법은 크게 두 가지가 있다 들어오는 요청마다.. 2023. 3. 24. [JAVA] Reflection 1. Java Reflection, 자바 리플렉션이란 자바 리플렉션(Java Reflection)은 자바 언어에서 실행 중인 코드의 클래스, 인터페이스, 메서드, 필드 등의 정보를 동적으로 가져올 수 있는 기능이다 이를 통해 프로그래머는 컴파일 시간이 아닌 런타임 시간에 객체의 정보를 가져와서 인스턴스를 생성하는 등 다양한 작업을 수행할 수 있다 예를 들어, 자바 애플리케이션에서는 클래스 이름을 알고 있지만, 해당 클래스가 어떤 메서드나 필드를 가지고 있는지 알 수 없는 경우가 많다. 이런 경우 리플렉션을 사용하여 클래스의 정보를 동적으로 가져와서 필요한 작업을 수행할 수 있다 2. 리플렉션을 이용해 클래스를 가져오는 방법 // 클래스 객체 생성 Class testClass = Class.forName(.. 2023. 3. 23. 이전 1 2 3 다음