。゚(*´□`)゚。

코딩의 즐거움과 도전, 그리고 일상의 소소한 순간들이 어우러진 블로그

프로젝트/새로이 5

Managed Language / Unmanaged Language

Managed Lanaguage 메모리 관리를 언어상에서 알아서 해주는 언어 특정 런타임 환경 내에서, 프로그램을 생성하도록 설계된 언어. 인터프리터나 VM을 지원하고, 프로그램의 코드가 이 위에서 동작하도록 설계되어 있음. (소스코드 컴파일 & 동작) VM은 메모리 관리(Garbage Collecotr) 역할을 수행한다. => Java나 Python 을 사용할 때, 메모리에 대한 생각은 하지 않고 작성한다. => JAVA, Python, C#, Javascript Unmanaged Language 사용자가 직접적으로 하드웨어 CPU, Memory 를 관리할 수 있다. VM과 같은 런타임 환경의 관리를 받지 않는 언어. 일반적인 컴파일 수행 >> bytecode 생성 >> 실행파일 생성 => C, C++..

RuntimeException / IllegalArgumentException

RuntimeException: RuntimeException 클래스와 그 하위 클래스들은 주로 프로그래머의 실수나 잘못된 프로그램 논리에 기인하는 런타임 시 발생하는 예외를 나타냅니다. 컴파일러가 이 예외들을 체크하지 않기 때문에, 코드에서 예외 처리를 강제하지 않습니다. 이는 프로그래머가 명시적으로 이 예외들을 처리하지 않아도 되는 편리함을 제공하지만, 동시에 적절한 처리가 이루어져야 합니다. IllegalArgumentException: IllegalArgumentException은 주로 메소드에 전달된 인수가 잘못된 경우에 발생합니다. 즉, 메소드의 매개변수로 전달된 값이 허용되지 않는 범위일 때 던져집니다. 예를 들어, 메소드가 특정 범위의 값을 요구하는데 그 범위를 벗어난 값을 받으면 이 예외..

Optional

Optional은 Java 8에서 도입된 클래스로, 값이 존재할 수도 있고 없을 수도 있는 컨테이너. 주로 NullPointerException을 방지하고자 할 때 사용 => null인지 아닌지, 안전하게 판단하고 싶어서. 검증을 확실하게 하고 싶을 때. 권장 사용방법: getter에서만 쓰고, 비지니스로직에서는 나오지 않는게 맞음. optional (한개의 객체) == null 이 절대 성립이 안 함 : jpa에서는 절대 적용 안 됨. nullpointexception 발생하고 싶어도 발생을 못 함. ofNullable() 메서드: Optional.ofNullable(T value) 메서드는 주어진 값이 null이 아니면 해당 값을 가지는 Optional 객체를 생성하고, 값이 null이면 빈 Opti..

트랜젝션

트랜젝션이란? 원자성이란? 트랜젝션(Transaction) 작업의 완전성을 보장해주는 것으로, 논리적인 작업을 모두 완벽하게 처리하거나 처리하지 못할 경우에는 원 상태로 복구해서 작업의 일부만 적용이 되는 현상이 발생하지 않게 만들어주는 기능 사용자 입장 : 작업의 논리적 단위 이해 가능 시스템 입장: 데이터들을 접근, 변경하는 프로그램의 단위가 됨 특성 ACID 원자성(Atomicity) 만약 트랜젝션 중간에 어떠한 문제가 발생한다면 트랜젝션에 해당하는 어떤 작업 내용도 수행되어서는 안되며 아무런 문제가 없을 때만 모든 작업이 수행되어야 한다. 일관성(Consistency) 트랜젝션이 완료된 다음의 상태에서도 트랜젝션이 일어나기 전의 상황과 동일하게 데이터의 일관성을 보장해야한다. 고립성(Isolati..

Stream

스트림은 java8부터 추가된 배열이나 컬렉션의 요소(List, Map, Set)들을 더 편리하게 가공하고 처리하도록 해주는 반복자 장점: 람다식 사용과 연산 과정에서 불필요한 변수를 남기지 않기 때문에 코드가 간결해짐, 내부 반복자를 사용해 병렬처리가 쉬움. Java 8 API에 새로 추가된 기능 스트림을 이용하면 선언형으로 컬렉션 데이터를 처리할 수 있다 멀티스레드 코드를 구현하지 않아도 데이터를 투명하게 병렬로 처리할 수 있다. 스트림 사용 전 @ToString @Getter @AllArgsConstructor public class Cake { private String name; // 케익 이름 private Integer price; // 가격 } // 케이크 목록 List cakes = Ar..