본문 바로가기

Dev/JAVA

(6)
Marshal & Unmarshal unmarshal : XML -> 자바 객체 marshal : 자바 객체 -> XML 이것을 하는것이 JAXBf라는 JAVA API ❗️주의할 점❗️ thread-safe JAXBContext의 경우는 1회 생성 후 재사용을 권자. 생성 비용이 적지 않기 떄문에 마샬/언마샬을 수행될 때마다 매번 생성하는 것보다 한 번 생성하고 재사용하는 편이 좋음 다만, marshaller & unmarshaller의 경우 스레드 안전하지 않기 때문에 마샬/언마샬이 수행될 때마다 다시 생성하는 것을 권장. 다행히 비용은 크지않음 Marshaller public interface Marshaller { public void marshal( Object jaxbElement, javax.xml.transform.Result..
OOP OOP Object-Oriented Programming 객체 지향적인 프로그래밍. 즉, C언어같은 절차 지향적인 프로그래밍이 아닌 객체의 관점에서 프로그래밍을 하는 것 OOP 특징 1. 캡슐화 (encapsulation) 하나의 객체에 대해 그 객체가 특정한 목적을 위한 필요한 변수나 메소드를 하나로 묶는 것 정보 은닉 객체에서의 정보를 private로해서 데이터를 보호해서 접근을 제한 하고, getter / setter 등의 메서드를 통해서만 간접적으로 접근 허용 2. 추상화 (abstraction) 목적과 관련이 없는 부분을 제거하여 필요한 부분만을 표현하기 위한 개념. 객체들은 실제 그 모습이지만, 클래스는 객체들이 어떤 특징들이 있어야 한다고 정의하는 추상화된 개념. 추상화는 객체들의 공통된 특..
JAVA 8, 9, 10 java 8 JDK 2개 버전 1. 폐쇄적인 상업 코드 기반의 Oracle JDK 2. 오픈 소스 기반의 OpenJDK Lambda 및 함수형 프로그래밍, Default Method Interface, 메소드 참조 Lambda 함수형 프로그래밍 널리 쓰이는 언어 중 함수형으로 분류되는 언어 - JavaScript 함수 = ‘1급 시민’ - 변수에 저장할 수 있으며 - 함수의 리턴값일 수 있고 - 다른 함수에 파라미터로 전달할 수 있다. 함수형 인터페이스를 이용하면 메서드, 즉 함수를 객체로서 다룰 수 있다. 클로저 자바스크립트에서는 외부 함수와 내부 함수가 있을 때, 내부 함수가 더 오래 유지되는 경우 내부 함수가 외부 함수의 지역변수에 접근할 수 있다. 그 이유는 함수가 접근 가능한 변수의 scope가..
lombok @builder 간단한 class 하나 만드는데 VO, DTO, Entity 등의 class을 만들 때 getter/setter 함수 등을 기계적으로 생성했어야 했던 귀찮은 작업들을 위한 기술 getter/setter 자동 생성 라이브러리 라고 생각하면 됨. java 에서 @Getter, @Setter 같은 어노테이션 기반으로 관련 기존 DTO, VO, Domain Class 작성할 때, 멤버 변수에 대한 Getter/Setter Method, Equals(), hashCode(), toString() 과 같이 멤버 변수에 값을 설정하는 생성자 등등을 자동으로 생성해 주는 라이브러리 @NoArgsConstructor 파라미터가 없는 기본 생성자를 생성 @AllArgsConstructor 모든 필드 값을 ..
Heap & Stack Stack Heap 영역에 생성된 Object 타입의 데이터의 참조값이 할당됨 원시타입의 데이터가 값과 할당됨 지역변수들은 scope에 따ㅏ른 visibility를 가짐 각 Thread는 자신만의 stack을 가짐 Heap Heap영역에는 주로 긴 생명주기를 가지는 데이터들이 저장됨. (대부분의 오브젝트는 크기가 크고, 서로 다른 코드블럭에서 공유되는 경우가 많음) 애플리케이션의 모든 메모리 중 stack에 있는 데이터를 제외한 부분이라고 보면 됨. 모든 Object 타입(Integer, String, ArrayList, …)은 heap영역에 생성됨 몇개의 스레드가 존재하든 상관없이 단 하나의 heap 영역만 존재 Heap 영역에 있는 오브젝트들을 가리키는 레퍼런스 변수가 stack에 올라가게 됨. 출처..
extends / implements (inheritance) extends는 일반 클래스와 abstract 클래스 상속에 사용되고, implement는 interface 상속에 사용된다. class가 class를 상속받을 땐 extends를 사용하고, interface가 interface를 상속 받을 땐 extends를 사용한다. class가 interface를 사용할 땐 implements를 써야하고 interface가 class를 사용할 땐 implements를 쓸수 없다. extends는 클래스 한 개만 상속 받을 수 있다. extends 자신 클래스는 부모 클래스의 기능을 사용한다. implements는 여러개 사용 가능하다. implements는 설계 목적으로 구현 가능하다. implements한 클래스는 implements의 내용을 다 사용해야 한다. ..