자바에서 객체를 만드는 대표적인 2가지 방법이라 하면 Setter 메서드로 생성하기 생성자로 생성하기 를 꼽을 수 있다. 그럼 두 방법의 문제점은 무엇일까? Setter의 문제점 1. 일관성 문제 public class User { private String id; private String pw; private String name; public void setId(String id) { this.id = id; } public void setPw(String pw) { this.pw = pw; } public void setName(String name) { this.name = name; } } 회원가입을 할 때 user의 정보를 받아오는 클래스이다. id , pw, name 이 회원가입에 필수라고..
Java&SpringBoot
자바에서는 캐싱에 의한 문제를 방지하기 위해 volatile을 쓴다. 이게 무슨 말이냐 쓰레드를 실행하는 CPU의 각 코어는 캐시를 가지고 있다. 메모리에서 값을 읽기전에 더 빠른 접근이 가능한 캐시에 있는 지 확인하고 메모리에 접근한다. 따라서 메모리와 캐시가 서로 저장된 값이 달라 변수 값 불일치 문제가 생길 수 있다. 이 캐싱 문제를 해결하기 위해서 volatile이라는 키워드가 쓰인다. volatile은 변수 값을 Read 할 때마다 메인 메모리에서 읽고 Write 할 때마다 메모리 까지 작성 하도록 하는 것이다. package Thread.Sync; public class Cache { static boolean stop = false; public static void main(String[]..
NPE? NullPointerException 으로 null인 것을 호출하려 할 때 발생하는 대표적 런타임 예외(런타임이니 컴파일러가 방지못하겠죠?) NPE를 방지하기 위해 try catch 문으로 예외 처리하기엔 너무 많음 따라서 자바는 Optional 을 쓴다. Optional? Optional : null일 가능성 있는 T타입 값 Optinal에 값을 대입하는 법(null이 아닌것이 확신이 있을때만) Optional opInt = Optional.of(1); 위의 방법으로 null을 담으면 NPE가 발생하므로 null은 아래와 같이 명시적으로 담는다 특히 Optional을 반환하는 메소드에선 null을 반환하지말고 empty를 통해서 반환하자(NPE를 방지하기 위한 메소드니깐) Optional op..
프로그래밍 언어에서 오류는 컴파일 오류, 런타임 오류, 논리 오류로 나눌 수 있다. -컴파일 오류 : 컴파일 과정에서 잡히는 오류 문법, 자료형, 오타(syntax error) 등등.. -런타임 오류 : 프로그래밍 언어의 규칙으로 찾을 수 없는 오류, 컴파일 과정에서 찾지 못함 (인터프리터 언어에서는 컴파일 하지 않으므로 문법 오류도 런타임 오류로 발생) -논리 오류 : 별도의 오류 메시지가 뜨지 않는 오류, 컴파일 과정이나 런타임에서 잡히지 않음 자바에서의 런타임 오류? 두 종류로 구분된다 error와 exception 둘 모두 Throwable의 자식 클래스이다. error : 해결 불가능한 일반적으로 시스템 레벨의 문제 무한루프, 스택오버플로우 등등 exception : 대비하여 해결 할 수 있는 ..