
불변 객체는 상태 변경이 불가능한 객체이다.수정자 메서드를 막고 read-only 메서드만 제공하며 참조 속성의 불변성을 지키기 위해 방어적 복사 메서드가 제공되기도 한다. ex) String, 원시타입의 래퍼타입(Boolean, Integer, Float, Long, Double), ResultSet 불변객체 생성1. 접근지정자 private 지정2. final 선언 3. 수정자 메서드 제공 금지 외부에서 접근이 불가하도록 private으로 선언하고, final을 통해 초기화 이후 값 변경이 불가하게 만든다.수정자 메서드를 제공하지 않음으로써 값이 변경되지 않음을 보장한다.public class Member { private final String email; private final Strin..

인터페이스란 구현체들의 동일한 행위를 보장한 추상 자료형으로 일종의 계약서 또는 설계서이다.추상클래스란 하나 이상의 추상 메서드를 포함한 클래스를 추상 클래스라고 하며 복제와 확장의 목적으로 쓰인다.(추상 메서드 없이 추상 클래스 선언 가능하나 구체 클래스와 차이가 없음) 인터페이스와 추상클래스는 모두 인스턴스화가 불가하고 구현체에서 추상 메서드를 반드시 오버라이딩 해야한다는 공통점이 있다.허나, 인터페이스와 추상 클래스는 구조적으로 큰 차이가 있고, 이로인해 그 사용성에도 큰 차이점이 있다. 인터페이스와 추상클래스의 차이점1. 구현부의 존재여부 : 캡슐화인터페이스는 메서드의 구현부가 없는 추상 메서드로만 이루어져있다. 이에 반면 추상 클래스는 메서드의 구현부가 존재한다."추상 클래스"의 구현부는 하위 ..

SOLID 원칙이란?객체지향 프로그래밍 설계의 다섯가지 기본 원칙으로 높은 응집도와 낮은 결합도 확장성 있는 시스템을 갖추도록 함SRP(Single Responsibility Principle) : 단일 책임 원칙OCP(Open/Close Principle) : 개방/폐쇄 원칙LSP(Liskov Substitute Principle) : 리스코프 치환 원칙ISP(Interface Segregation Principle) : 인터페이스 분리 원칙DIP(Dependency Inversion Principle) : 의존성 역전 원칙 1. SRP(Single Responsibility Principle) : 단일 책임 원칙모듈이나 클래스는 하나의 책임을 가져야 한다클래스를 변경해야하는 이유는 오직 하나 뿐이어야..

안녕하세요. 실서버에서 스프링 프로젝트를 호스팅하여 운영하던 중에 java.lang.OutOfMemoryError 가 나타났습니다. 서버관리가 초보라 처음 보는 에러였기 때문에 여기저기 구글링을 하며 오류를 미연에 방지하고 다음에 또 비슷한 유형의 에러가 나오면 빨리 해결할수 있도록 자바 메모리에 대해 깊이있게 공부를 해보았습니다. 자바 메모리 구조가 궁금하신 분들은 밑의 링크를 참조하여주세요. 제가 이번 에러를 통해 여기저기 글을 참조하며 최신 자바 버전에 맞게 변경된 내용까지 포함한 내용입니다. 글을 읽어보고 오류 해결방법을 읽어보는게 도움이 될것입니다. developer111.tistory.com/33 [자바]JVM 구조 및 자바 메모리 구조 실서버에 톰캣7과 자바8으로 호스팅한 후 한달 정도 되니..

JVM(Java Virtual Machine)이란 자바 프로그램의 실행 환경을 만들어주는 가상 머신 JVM(Java Virtual Machine)은 자바 프로그램을 실행하는 가상 머신이다.바이트 코드 기반으로 동작하는 자바 프로그램은 기계어를 다루는 CPU나 메모리 같은 자원을 직접 활용할 수 없다.JVM 내부의 Runtime Data Area와 Execution Engine과 같은 구성 요소들이 컴퓨터 자원을 활용함으로써 자바 프로그램의 실행이 가능해진다. RuntimeDataArea가 바이트 코드 기반 데이터를 저장하고,CPU는 인터프리터를 통해 바이트 코드를 실행시킴으로써 프로그램을 동작하게 한다. 자바의 플랫폼 독립성 자바 컴파일러는 자바파일(*.java)을 자바 바이트 코드(*.class)로 ..