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하기-..
11일차 - Java강의(계산기 실습, 클래스화, 추상화)
·
Java & Spring/Java
◇ 코드 구현- Step 1 : 기본적인 사칙연산 계산기import java.util.Scanner;public class Calculate { public static void main(String[] args) { Scanner sc = new Scanner(System.in); String op = sc.next(); int a = sc.nextInt(); int b = sc.nextInt(); System.out.println(calculate(op, a, b)); } public static double calculate(String operator, int firstNumber, int secondNumber) { ..
10일차 - Java강의(제어자, package, import, 상속, this, super)
·
Java & Spring/Java
◇ 제어자변수, 메서드의 선언부에 사용되어 부가적인 의미를 부여접근 제어자 : public, protected, default, private멤버 또는 클래스에 사용, 외부에서 접근하지 못하도록 제한지정되지 않았다면 default그  외 제어자 : static, final, abstract사용 가능한 접근 제어자 클래스 : public, default메서드 & 멤버 변수 : public, protected, default, private지역변수 : 사용불가능 Getter와 Setter Getter : 외부에서 객체의 private한 필드를 읽을 필요가 있을 때 사용※ 메서드 이름의 규칙은 get + 필드 이름(첫 글자 대문자)private double speed; // 자동차 속도 , km/hpr..