JAVA 38

[JAVA] InitialRAMPercentage / MaxRAMPercentage 옵션

java -XX:InitialRAMPercentage=70.0 -XX:MaxRAMPercentage=70.0 -jar MyApp.jar Java8에서 도입된 InitialRAMPercentage / MaxRAMPercentage은 각각 JVM의 초기, 최대 힙 사이즈를 설정하는데 사용함 JVM은 프로그램 실행 중에 메모리를 사용하여 객체를 생성하고 관리하는데, 이때 JVM은 힙 메모리라는 메모리 영역을 사용함, 해당 옵션들은 힙 메모리의 크기를 설정하여 JVM의 성능을 최적화할 수 있게 해줌 InitialRAMPercentage JVM이 시작될 때 할당되는 초기 힙 크기를 설정, 전체 시스템 메모리의 백분율로 표현 예를 들어서 시스템 메모리가 4GB인 경우, -XX:InitialRAMPercentage=..

JAVA 2023.05.31

[JAVA] OPTIONAL

Kotlin null safy 확장자 공부하다가, 기왕에 optional도 정리 Optional Null일수도 Null이 아닐수도 있는 값을 감싸는 Wrapper 클래스, 참조시 Null이어도 NullPointException이 발생하지 않게 해줌 Optional 생성메소드 종류 설명 of Null이 아닌 오브젝트로 생성, Null인 오브젝트로 생성을 시도할 경우 NullPointException 발생 empty 빈 Optional 생성 ofNullable Null인지 아닌지 알지 못하는 오브젝트로 Optional 생성 Optional 값 체크 및 가져오기 메소드 종류 설명 isPresent Optional에 담겨있는 오브젝트가 null인지 체크 get Optional에 담겨있는 값 가져오기 orElse..

JAVA 2022.05.30

[JAVA] 메소드 레퍼런스

메소드 레퍼런스 메서드 참조라는 의미 람다 표현식 몸체 부분에 기술되는 메서드를 이용해서 표현되며, 메서드의 이름만 전달함 구분자(::)를 붙이는 방식으로 메서드 레퍼런스를 표현함 기존에 선언되어 있는 메소드를 지정 메서드 레퍼런스를 사용하면 람다표현식이 더욱 간결해짐 메소드 레퍼런스 유형 ClassName :: static method : 클래스의 static method를 지정하는 경우 ClassName :: instance method : 객체의 instance method를 지정하는 경우 Object :: instance method : 선언된 객체의 instance method를 지정하는 경우 ClassName :: new : 클래스의 constructor를 지정하는 경우 메소드 레퍼런스 유형은..

JAVA 2022.05.06

[JAVA] REACTIVE STREAMS

Reactive Streams 리액티브 프로그래밍 라이브러리 표준 사양 리액티브 프로그래밍에 대한 인터페이스만 제공하며, RxJava는 Reactive Streams의 인터페이스들의 구현체 Reactive Streams는 Publisher / Subscriber / Subscription / Processor 4개 인터페이스를 제공 인터페이스 설명 Publisher 데이터를 생성하고 통지 Subscriber 통지된 데이터를 전달받아서 처리 Subscription 전달 받을 데이터의 개수를 요청하고 구독을 해지함 Processor Publisher와 Subscriber의 기능이 모두 있음 Cold Publisher / Hot Publisher Publisher 종류 설명 Cold Publisher 생산자는..

JAVA 2022.05.06

[JAVA] VAR 타입추론

VAR 정의 지역변수 선언시 초기값을 통하여 변수의 타입을 명시적으로 적지 않아도, 컴파일러가 알아서 변수의 타입을 대입된 데이터 타입을 추론하게 해줌 (JAVA 10부터 지원함) VAR 특징 var word = "단어"; // String으로 추론 var number = 1; // int로 추론 var list = List.of(1, 2, 3) // List로 추론 형식 변수 선언 및 메서드 반환유형, 멤버 변수, 필드 선언, 생성자 형식 변수 및 다른 종류의 변수 선언에는 사용 불가 지역 변수 타입 추론할때 허용이 됨 람다 표현식에 사용 (자바 11에 해당) VAR 사용시 주의사항 var number; // 초기 값 할당 없이 변수에 'var'를 사용불가 var list = null; // null ..

JAVA 2022.04.24

[JAVA] 하이버네이트(HIBERNATE) DDL-AUTO 옵션 정리

어차피 실무에서 사용하면 안됨 (none은 사용, 로컬환경 제외 ???), 공부할때 사용 ddl-auto 옵션 옵션 명 설명 create 서버 시작에 모든 테이블 생성 create-drop 서버 시작에 모든 테이블 생성, 서버 종료에 테이블 삭제 update 서버 시작에 변경된 내용 반영, 테이블이 없으면 생성 validate 서버 시작에 엔티티와 테이블 비교, 다르면 종료 none 아무것도 X

JAVA 2022.04.19

[JAVA] 어댑터 패턴

어댑터 패턴 정의 클래스의 인터페이스를 사용자가 기대하는 인터페이스 형태로 변환시키는 패턴 인터페이스가 호환성이 맞지않는 클래스의 연관관계를 맺어주게 하는 패턴 어댑터 패턴 특징 기존 클래스의 수정을 전혀 하지 않고 타겟 인터페이스를 통하여 동작할 수 있게 해줌 기존 코드의 변경이 없기 때문에 재사용성이 높음 구성요소를 위해 클래스를 추가시켜야하기 때문에 복잡도가 높아질 수 있음 어댑터 패턴 용도 유지 보수 진행시 기존 로직 변경이 없이 새로운 부분을 추가하는 경우 어댑터 패턴 예시 public interface CardService { void pay(); void payCancel(); } public class CardAdapter { private final CardService cardServi..

JAVA 2022.04.06

[JAVA] 비트연산자

비트연산자 비트(bit) 단위로 논리 연산을 할때 사용하는 연산자 기본적으로 컴퓨터는 8bit의 공간 기준으로 사용함 8bit == 1byte 실수형을 제외한 모든 기본형에서 사용이 가능함 비트 연산자 설명 & 대응되는 비트가 모두 1이면 1을 반환함 (AND연산) | 대응되는 비트중에서 하나라도 1이면 1을 반환 (OR연산) ^ 대응되는 비트가 서로 다르면 1을 반환 (XOR연산) ~ 비트를 1이면 0으로, 0이면 1로 반전 (NOT연산) 부호를 유지하면서 지정한수 만큼 전부 오른쪽으로 이동시킴 (RIGHT SHIFT연산) Bit연산 관련 메소드 Integer.toBinaryString 10진수나 16진수의 정수를 비트 단위의 문자열로 간단하게 바꿀수 있게 해주는 메소드 Integer.toBinaryS..

JAVA 2022.02.06

[JAVA] PriorityQueue

PriorityQueue 우선순위를 먼저 결정하고 우선순위가 높은 데이터가 먼저 나가는 자료구조 PriorityQueue 특징 우선순위가 높은 요소를 먼저 꺼내서 처리하는 구조 내부요소는 Heap으로 구성되어있는 이진트리 구조 내부구조가 Heap으로 구성되어있어 추가 / 삭제시 시간복잡도는 O(NLogN) 값을 비교하기 때문에 NULL 허용이 안됨 PriorityQueue 우선순위 설정 //오름차순 PriorityQueue priorityQueue = new PriorityQueue(); //내림차순 PriorityQueue priorityQueue = new PriorityQueue(Collections.reverseOrder()); 우선수위를 정하는 기준은 Java 정렬기준과 동일 (낮은숫자부터 큰숫..

JAVA 2022.02.06

[JAVA] 람다표현식

람다표현식 (Lambda) 개념 함수형 인터페이스를 구현한 클래스 즉, 익명 클래스의 메소드를 하나의 식으로 표현 함수형 인터페이스의 메서드를 람다표현식으로 작성해서 다른 메서드의 파라미터로 전달할 수 있음 매개변수, 화살표, 몸통 구조 함수형 인터페이스를 통해서만 사용이 가능함, 즉 람다 표현식 전체를 해당 함수형 인터페이스를 구현한 클래스의 인스턴스로 취급함 함수형 인터페이스 인터페이스 내에 한개의 추상 메소드만 정의 외부 메소드에서 호출 시 람다식이나 메소드 참조 가능 자바에서 함수를 일급객체로 사용할 수 없는 단점 보완 Lambda 특징 장점 단점 코드가 축약이 됨 (익명함수로 된 코드 줄임) 남용시 이해하기 어려움 가독성 증가 까다로운 디버깅 병렬 프로그래밍 Lambda 컴파일 처리 invoke..

JAVA 2022.01.01