인터페이스와 추상클래스
·
Language/Java
인터페이스와 추상클래스객체지향 프로그래밍의 알파이자 오메가이지만 실제로 설명하려 하면 항상 헷갈리는 개념 집고가자 인터페이스란?인터페이스는 기본 설계도 라고 할 수 있다. 상속받는 클래스에서는 이 인터페이스에 선언된 기능들을 반드시 정의해야 한다.인터페이스는 다중 상속이 가능하다. 자바에서는 기본적으로 메소드 출처의 모호성 등 여러 가지 문제가 발생할 수 있어 클래스를 통한 다중 상속을 금지한다. 하지만 인터페이스는 상속받는 클래스에서 직접 구현하는 형태이므로 다중 상속 시 발생할 수 있는 문제를 최소화한다.모든 메소드는 public abstract 이며, 모든 필드는 public static final 이다. 하지만 필드 및 메소드 들이 이와 같은 형태를 취해야 하므로, 자바에서는 이 키워드들을 생략할..
서블릿(Servlet)
·
Language/Java
서블릿(Servlet)웹 서버의 동작방식을 이해하기 위해 꼭 필요한 서블릿 정리 서블릿(Servlet)이란?Spring을 사용해봤다면 이미 서블릿을 사용한 적이 있을 것이다.http 통신 기반의 클래스를 살펴보면 어노테이션 기반이든, 매개변수로든 서블릿 클래스가 활용된다는 것을 알 수 있다.서블릿은 웹 프로그래밍에서 클라이언트 요청을 처리하고 처리결과를 클라이언트에 전송하는 기술이다.서블릿이란 동적 웹 페이지를 만들 때 사용되는 자바 기반의 웹 애플리케이션 프로그래밍 기술이다.서블릿은 서버에서 실행되다가 웹 브라우저에서 요청을 하면 해당 기능을 수행한 후 웹 브라우저에 결과를 전송한다.예를들어, 로그인 시도를 할 때 서버가 클라이언트에서 입력되는 아이디와 비밀번호를 확인하고 결과를 응답하는데 이러한 역할..
예외(Exception) 처리
·
Language/Java
예외처리(Exception)쉽게 생각할 수 있지만 실수하기 쉽고 서비스의 운영, 개선에 있어 필수적인 예외처리 예외란?사용자의 잘못된 조작이나 개발자의 코딩 실수로 인해 발생하는 프로그램 오류를 말한다.예외가 발생하면 프로그램은 곧바로 종료된다는 점에서 에러와 동일하나, 예외 처리를 통해 프로그램을 종료하지 않고 정상 실행 상태가 유지되도록 할 수도 있고, 예외 상황을 명확하게 파악하기 위해 부가 정보를 남길 수도 있다. 예외의 종류큰 틀에서 분류하자면 두 가지로 나눌 수 있다.Checked Exception: 개발자가 반드시 예외처리를 명시하도록 강제된다는 특징 (미처리 시 컴파일 불가)Unchecked Exception: 예외처리를 하도록 강제받지 않음 (미처리 시 컴파일 가능) 인터넷에 있는 자료의..
스트링(string)
·
Language/Java
스트링(String)가장 많이 사용하면서도 가장 헷갈리기 쉬운 자료형 String  String 객체의 값은 불변이다.String 타입의 변수를 선언하고, 내부의 값을 바꾸면 값이 잘 바뀌는 것처럼 보인다.하지만 이는 실제로 값이 변경되는 것이 아니라, 스트링 풀이라는 저장소에 미리 사용될 문자들이 전부 저장되어 있는데, 문자열 변수의 내용 자체가 바뀌는게 아니라 문자열 변수가 가리키는 주소만 바뀌는 것이다.실제로 string을 리터럴로 선언하고 System.identityHashCode() 메서드를 통해 고유 주소값을 반환하면 확인 가능하다. 스트링 풀이란?내가 한번 썼던 문자열들을 저장해놓는 창고라고 생각하면 된다. 예를들어 "abc"라는 문자열을 한번 사용했다면,이제 JVM은 해당 문자열을 Heap..
가비지 컬렉션(GC)
·
Language/Java
가비지 컬렉션(Garbage Collection)당연하게 생각하고 써왔지만 컴팩트한 개발에 꼭 필요한 가비지 컬렉션 이해가비지 컬렉션이란?가비지 컬렉션은 영어로 Garbage Collection, 줄여서 GC라고도 부른다.가비지 컬렉션은 자바의 메모리 관리 방법 중의 하나로 JVM Heap 영역에서 동적으로 할당했던 메모리 영역 중 필요 없게 된 메모리 영역을 주기적으로 삭제하는 프로세스를 말한다.c나 c++에서는 가비지 컬렉션이 없어 개발자가 수동으로 메모리 할당과 해제를 일일이 해줘야 하는 반면 Java는 JVM에 탑재되어 있는 가비지 컬렉터가 메모리 관리를 대행해주기 때문에 개발자 입장에서 메모리 관리, 메모리 누수(Memory Leak) 문제에 대해 완벽하게 관리하지 않아도 되어 오롯이 개발에만 ..
자바(JAVA) 빌더(builder) 패턴
·
Language/Java
목차 1. 빌더(builder) 패턴이란? 2. 구현 코드 및 사용 예시 3. 정리 및 결론 1. 빌더(builder) 패턴이란? - 빌더 패턴이란, 디자인 패턴 중 생성 패턴의 한 종류로 다양한 구성의 인스턴스를 만드는데 유용하다. 예를 들어, 아래와 같은 class가 있다고 가정해보자. @AllArgsConstructor public class User { private String name; private int age; private String address; } 이 때, 만약 요구사항이 바뀌어 "address 없이 User객체 만들 수 있게 해주세요!" 라는 요청이 들어오게 된다면? 아.. 귀찮아 @AllArgsConstructor public class User { private String..
potatoCompletion