Back-end/Java Language 30

Java Wrapper class

1. Wrapper class 기본타입의 데이터를 객체로 취급해야 하는 경우 자바에서 제공하는 Wrapper class를 이용한다. 예를 들어 어떤 메소드의 파라미터가 객체타입만 가능하다면, 기본타입을 그대로 사용할 수 없기 때문에 래퍼클래스를 한 번 거쳐 객체로 변환후 메소드를 호출하는 것. * primitice type, reference type 원시 타입은 쉽게 말해, 정수, 실수, 문자, 논리 리터럴등의 실제 데이터 값을 저장하는 타입이고, 참조 타입은 객체(Object)의 번지를 참조(주소를 저장)하는 타입으로 메모리 번지 값을 통해 객체를 참조하는 타입이다. 2. 오토박싱, 오토 언박싱 Integer number = new Integer(200); // 박싱 int n = number.int..

Java Optional, Stream

1. Optional Optional은 null 또는 값을 감싸서 NPE(NullPointerException)로부터 부담을 줄이기 위해 등장한 Wrapper 클래스이다. Optional은 값을 Wrapping하고 다시 풀고, null 일 경우에는 대체하는 함수를 호출하는 등의 오버헤드가 있으므로 잘못 사용하면 시스템 성능이 저하된다. 그렇기 때문에 메소드의 반환 값이 절대 null이 아니라면 Optional을 사용하지 않는 것이 좋다. 즉, Optional은 메소드의 결과가 null이 될 수 있으며, null에 의해 오류가 발생할 가능성이 매우 높을 때 반환값으로만 사용되어야 한다. 2.Optional 메소드 1) Optional.emptuy() : 값이 Null인 경우 2) Optional.of() ..

@JsonIgonore, @JsonProperty, @JsonNaming & Jackson Object Mapper

"Java Object" =Serialize=> "JSON", (2) "JSON" =Deserialize=> "Java Object" JSON(JavaScriptObjectNotation) 상하차가 쉬운 언어는 Javascript 0. JSON 이란? = 데이터를 보관하는 형식 복잡한 데이터를 인터넷에서 유저들끼리 주고 받을 때 깔끔한 형식으로 데이터를 담는데 필요한 형식이 있다. 이 중에 XML, CSV, JSON이 있다. 1) XML 값 2) CSV Year, Brand, Mode 1997,Ford, E350 3) JSON ~ ... YAML, BSON, SMILE 등 -> 보통 설정 파일에 많이 사용한다. ex) package.json ※ JSON 이랑 JavaScript의 일반 Object는 다르..

Exception Handling

예외 처리를 하는 근본적인 이유 : 프로그램이 오작동하거나 비정상 종료를 막기 위해 1. 종류 1) 컴파일 에러(compile-time error) : 구문 체크, 번역, 최적화, 생략된 코드 추가 등을 컴파일러가 한다. 2) 런타임 에러(runtime error) : 프로그램 실행 중 발생하는 에러 (프로그램 종료) - 에러(Error) : 프로그램 코드에 의해 수습될 수 없는 심각한 오류 ex) 메모리 부족, Out of Memory error 혹은 스택오버플로우 StackOverFlowError) - 예외(Exception) : 프로그램 코드에 의해 수습될 수 있는 다소 미약한 오류 --> 예외처리로 프로그램의 비정상적 종료 막을 수 있다. 3) 논리적 에러(logical error) : 작성 의도..

JAR와 WAR의 차이점

1. JAR와 WAR의 차이점 JAR SpringBoot의 내장톰켓 vs. WAR 외장톰켓, jsp 이용시 Maven 등을 통해 내려받는 라이브러리들(External Libraries)은 CLASS 파일들이 묶인 jar파일로 구성되어 있는 것을 확인할 수 있다. 그리고 서비스 배포시에는 프로젝트를 WAR 포맷으로 묶어서 /webapps 등의 지정된 경로에 넣고 Tomcat 등의 웹 컨테이너(Web Contaioner)를 이용하여 deploy하는 식으로 서비스를 많이 올리곤 한다. JAR 과 WAR .jar 확장자 파일에는 Class와 같은 Java 리소스와 속성 파일, 라이브러리 및 액세서리 파일이 포함되어 있다. 쉽게 JAVA 어플리케이션이 동작할 수 있도록 자바 프로젝트를 압축한 파일로 생각하면 된다..

직렬화(Serialization)

1. 의미 객체를 컴퓨터에 저장했다가 다음에 다시 꺼내 쓸 때 혹은 네트워크를 통해 컴퓨터 간에 서로 객체를 주고받을 때 직렬화를 통해 가능하다.(직렬화 한 후에 저장하거나 전송하고 필요할 때 역직렬화해서 꺼내 쓴다.) 직렬화란 객체를 데이터 스트림(Byte형태로 변환)으로 만드는 것을 의미한다. 다시 말해 객체에 저장된 데이터를 스트림에 쓰기(write) 위해 연속적인(serial) 데이터로 변환하는 것을 말한다. 반대로 스트림으로부터 데이터를 읽어서 객체를 만드는 것을 역직렬화(deserialization)라고 한다. ◇객체란? 클래스에 정의된 인스턴스 변수의 집합(클래스 변수나 클래스 메서드가 포함되지 않음)을 의미한다. 따라서 객체를 저장한다고 하는 것은 객체의 모든 인스턴스 변수의 값을 저장한다..

static 클래스 vs instance 클래스

https://dkswnkk.tistory.com/444 [Java] static 과 instance의 차이 서론 static과 instance의 차이에 대해서 한번 정리하여 짚고 넘어 갈려고 합니다. 목차 1. 클래스(static) 변수와 인스턴스 변수의 차이 2. 클래스(static) 메서드와 인스턴스 메서드 차이 3. 클래스(static) dkswnkk.tistory.com https://johngrib.github.io/wiki/java-inner-class-may-be-static/ Java의 내부 클래스는 static으로 선언하자 메모리를 더 먹고, 느리고, 바깥 클래스가 GC 대상에서 빠질 수 있다 johngrib.github.io

Java heap, stack

# ThreadLocal 과 관련하여 : 객체는 Heap 또는 Stack 메모리 영역에 배치시킬 수 있습니다. Heap 영역은 일반적으로 모든 thread에서 접근 할 수 있으며 stack은 thread 하나당 만들어 지는 메모리 영역으로 thread간 접근이 불가능한 것으로 알려져 있습니다. 1. stack 1) Heap 영역에 생성된 Object 타입의 데이터의 참조값이 할당된다. 2) 원시타입(primitive types)-byte, short, int, long, double, float, boolean, char 타입)의 데이터가 값과 함께 할당된다. (원시 타입의 데이터들에 대해서는 참조값을 저장하는 게 아니라 실제값을 stack에 저장하게 된다.) 3) 지역 변수들은 scope에 따른 vis..