VM명세서를 자꾸 까먹어서 간단하게 기록해두려고한다 우선 HelloWorld.java 를 작성 후 컴파일을 해서 뜯어보자 javap -v 명령어를 이용해서, 역어셈블리를 해보면 클래스파일의 자세한 정보를 확인 할 수 있다. 위의 클래스 구조를 표로 정리 한 것이다. VM 명세서라고도 한다. 매직넘버 (magic number) 0xCAFEBABE 클래스 파일 포맷 버전 (version) 클래스 파일의 메이저/마이너 버전 상수 풀 (constant pool) 클래스 상수들이 모여 있는 곳 액세스 플래그 (access flag) 클래스 종류를 표시 this 클래스 (this class) 현재 클래스명 슈퍼 클래스 (super class) 부모클래스명 인터페이스 (interface) 클래스가 구현한 모든 인터페..
스프링 메세지 컨버터 관련 내용을 구글링 한 적 있었는데, 유명강사님 강의내용을 정리한 것 같은 똑같은 내용의 글들이였다. 강의를 보지는 않았지만 유입물의 내용이 좋았다. 하지만 분명히 더 궁금한 내용들이 있을텐데, 강의내용만 정리 되어있고, 내부적으로는 어떻게 동작하는지 설명이 별로 없어서 뜯어보았다 1. 메세지 컨버터란 무엇일까 예를들어 한국인과 일본인이 서로의 본토 언어로 대화 하려고 하면 대화가 안되겠죠 자바객체와 C++객체에도 마찬가지 일겁니다. 무언의 공통어인 영어로 중간에서 번역해준다면 대화가 통할겁니다. 번역하는 과정은 직렬화 역직렬화개념이라고 볼 수 있습니다. 이 무언의 공통어가 요즘 웹에서 JSON 입니다 예시에서 영어가 JSON이라고 보시면 됩니다 메세지 컨버터란 자바 객체를 JSON..
스프링 벨리데이션 어노테이션중 NotNull, NotEmpty, NotBlank 3가지의 차이점을 간단하게 알아보려고 합니다.우선 결론은 아래와 같습니다만 검증을 위해 예제를 만들어봅시다. NotNull - null만 사용불가NotEmpty - null, "" 사용불가NotBlank - null, "", " " 사용불가제약 조건null빈 문자열("")공백 문자열(" ")NotNull사용 불가허용허용NotEmpty사용 불가사용 불가허용NotBlank사용 불가사용 불가사용 불가 셋팅1. spring validation 의존성 추가implementation 'org.springframework.boot:spring-boot-starter-validation' 2. dto 추가// main/java/com/ex..
String vs StringBuilder vs StringBuffer 공통점은 문자열을 다루는 객체이다 차이점은 간단하게 정리하자면 아래와 같다 String - 불변 StringBuilder - 가변 StringBuffer - 가변 + 스레드 안전(동기화 지원) 특성 String StringBuilder StringBuffer 변경 가능성 불변 (Immutable) 가변 (Mutable) 가변 (Mutable) 스레드 안전성 X X O (동기화 지원) 1. String 객체부터 살펴보자 java.lang.String을 살펴보면, final이 붙어있어서 값을 바꿀 수 없음을 알 수 있다. 하지만 아래 예제를 보면 값이 변할 수 있다? String data = "합쳐"; data = data + "지는데오..