제네릭
·
Java & Spring/Java
□ 정의 결정되지 않은 타입을 파라미터로 처리하고 실제 사용할 때 파라미터를 구체적인 타입으로 대체시키는 기능 - Box 클래스public class Box { public T content;} - 사용 예시public class GenericExample { public static void main(String[] args) { Box box1 = new Box(); box1.content = "안녕하세요"; String str = box1.content; System.out.println(str); Box box2 = new Box(); box2.content = 100; int value = box2..
Java의 동작원리
·
Java & Spring/Java
□ Java 동작 순서프로그램이 실행되면 JVM은 OS로부터 프로그램이 필요로 하는 메모리를 할당받는다.→ JVM이 할당받은 메모리를 용도에 따라 여러 영역으로 나누어 관리한다.자바 컴파일러가(javac)가 자바 소스코드(.java)를 읽어들여 자바 바이트코드(.class)로 변환시킨다.Class Loader를 통해 class파일들을 JVM으로 로딩한다.로딩된 class파일들은 Execution Engine을 통해 해석된다.해석된 바이트코드는 Runtime Data Area에 배치되어 실질적인 수행이 이루어지게 된다.→ 이러한 실행과정 속에서 JVM은 필요에 따라 Thread Synchronization과 GC같은 관리작업을 수행한다.Thread Synchronization : 여러 스레드가 공유자원에 ..
Java - 비동기처리(CompletableFuture)
·
Java & Spring/Java
□ CompletableFuture 정의비동기 작업을 처리하는 클래스로, 기존 Future의 단점을 해결하며, 논블로킹(Non-blocking) 방식으로 실행된다.□ 단점비즈니스 로직과 쓰레드관리 로직이 병합되어 관심사분리가 되지않고있다.□ 실습코드- 전역변수static final long startTime = System.currentTimeMillis(); - 간단한 연산 메서드private static double plus(double a, double b) { double plus = a + b; try { Thread.sleep(100); } catch (InterruptedException e) { Thread.cur..
Java - 비동기 처리(ExecutorService / Future)
·
Java & Spring/Java
□ ExecutorService 정의여러 개의 스레드를 효율적으로 관리하고 재사용할 수 있도록 돕는 스레드 풀(Thread Pool) 관리 인터페이스submit() 또는 execute()를 통해 작업을 실행할 수 있다.작업을 실행하면 Future 객체를 반환하여 결과를 받을 수 있다. □ Future 정의ExecutorService.submit() 메서드를 호출하면 작업의 결과를 받을 수 있는 Future 객체가 반환된다.future.get()을 호출하면 결과를 가져올 수 있지만, 결과가 준비될 때까지 블로킹(대기) 된다.작업을 취소할 수도 있다 → future.cancel(true) □ 장점스레드 풀(Thread Pool)을 관리하면서 비동기 작업을 효율적으로 수행 □ 단점블로킹 방식이므로 결과를 기다..
Java - 비동기 처리(Thread & Runnable)
·
Java & Spring/Java
□ 단점새로운 스레드를 생성함으로 리소스 낭비가 발생스레드 생성 비용이 비쌈OS의 스레드 관리 부담이 커질 수 있음- Thread생성을 통한 비동기 처리 public static void main(String[] args) { final long startTime = System.currentTimeMillis(); for(int i = 0; i { try { log.info("{}번째 작업 {}, 소요시간: {}", finalI, plus(), System.currentTimeMillis() - startTime); } catch (Inter..
HTTP 요청과 응답에 사용되는 클래스들
·
Java & Spring/Java
https://docs.spring.io/spring-framework/docs/current/javadoc-api/org/springframework/http/HttpEntity.html HttpEntity (Spring Framework 6.2.2 API)hasBody public boolean hasBody() Indicates whether this entity has a body.docs.spring.io □ HttpHeaders- HTTP 헤더를 나타내는 클래스, 요청과 응답의 헤더를 설정하고 가져올 때 사용- 주로 인증 토큰, 콘텐츠 유형, 인코딩 방식 등 헤더 값을 설정할 때 사용□ HttpEntity- HTTP 요청 또는 응답을 나타내는 클래스이며, 헤더와 본문을 모두 포함- 본문과 헤더..
csv파일으로 더미데이터 생성하기
·
Java & Spring/Java
- build.gradleimplementation 'com.opencsv:opencsv:5.6' - 전체 코드package com.play.hiclear.domain.gym.service;import com.opencsv.CSVReader;import com.opencsv.exceptions.CsvValidationException;import com.play.hiclear.common.enums.Ranks;import com.play.hiclear.domain.gym.entity.Gym;import com.play.hiclear.domain.gym.enums.GymType;import com.play.hiclear.domain.gym.repository.GymRepository;import com.p..
18일차 - Java강의(쓰레드 명령어)
·
Java & Spring/Java
◇ 쓰레드 상태쓰레드 상태 : 실행과 대기를 반복하며 run()메서드를 수행, 메서드가 종료되면 실행을 멈춤일시정지 : 일시정지는 쓰레드가 실행 할 수 없는 상태, 다시 실행하기 위해서는 다시 실행대기로 넘어가야함쓰레드 상태 정리상태Enum설명객체생성NEW쓰레드 객체 생성, start()메서드 호출 전실행대기RUNNABLE실행 상태로 언제든지 갈 수 있는 상태일시정지WAITING다른 쓰레드가 notify할 때까지 기다리는 상태일시정지TIMED_WATING주어진 시간동안 기다리는 상태일시정지BLOCKED사용하고자 하는 객체의 Lock이 풀릴 때까지 기다리는 상태종료TERMINATED쓰레드 작업이 종료된 상태◇ 쓰레드 제어  sleep() : 현재 쓰레드를 지정된 시간동안 멈추게 한다.※sleep()는 쓰레..
14일차 - Java강의(쓰레드)
·
Java & Spring/Java
◇ 프로세스와 쓰레드의 개념프로세스 : 운영체제로부터 자원을 할당받는 작업의 단위프로세스의 구조 : Code와 Data그리고 메모리 영역(Stack, Heap)으로 구성Code : main메소와 같은 코드Data : 프로그램이 실행 중 저장 할 수 있는 저장공간Memory : Stack(지역변수, 매개변수, 리턴변수), Heap(동적으로 필요한 변수)를 저장쓰레드 : 프로세스가 할당받은 자원을 이용하는 실행의 단위작업중인 프로그램에서 실행요청이 들어오면 생성명령처리를 위한 메모리공간(Stack)도 할당받음◇ 쓰레드싱글 쓰레드 : 프로세스 안에서 하나의 쓰레드만 실행되는 것멀티 쓰레드 : 프로세스 안에서 여러개의 쓰레드가 실행되는 것멀티 쓰레드의 장점동시 작업으로 성능이 좋아진다.스택을 제외한 모든 영역에..
13일차 - Java강의(예외, 제네릭)
·
Java & Spring/Java
◇ 오류와 예외오류(Error) : 일반적으로 회복이 불가능한 문제예외(Exception) : 일반적으로 회복이 가능한 문제- 예외의 종류코드 실행 관점에서 예외의 종류컴파일 에러 : .java파일을 .class파일로 컴파일 할 때 발생, 보통 문법오류런타임 에러 : 실행도중 맞닥뜨리는 예외예외 처리 관점에서 예외의 종류확인된 예외(Checked Exception)컴파일 시점에서 확인반드시 예외 처리를 해줘야함미확인된 예외(UnChecked Exception)런타임 시점에서 확인예외 처리가 반드시 필요하지는 않음◇ 예외 발생과 try-catch, finally문예외 처리 흐름예외 정의하기클래스, 메서드를 만들려 예외 위험 알리기(throw, throws)위험한 메서드 사용 시 예외를 handling하기-..