분류 전체보기
-
나만의 예외만들기JAVA/예외( exception ) 2023. 6. 15. 18:19
개념 예외를 처리하기 위한 방법으로 2개의 키워드를 알아야 한다. throws : 발생할 수 있는 예외를 등록하는 키워드. throw : 예외가 발생했을 때 예외를 핸들링하지 않으면 해당 메소드를 호출한 곳으로 예외를 보내는 키워드 또한 나만의 예외를 만들기 위해선 새로만든 예외클래스는 Exception을 상속 받아야한다. 점수입력하는 프로그램의 예외처리 클래스 만들어 활용하기 1. 예외처리 클래스 만들기 // 우리가 만드는 예외 클래스 // Exception 또는 RuntimeException 클래스를 상속 받아서 만듬 public class ScoreException extends Exception { // 생성자 public ScoreException(){ super("점수 입력 오류"); // 부..
-
PriorityQueue자료구조 2023. 6. 15. 16:27
개념 PriorityQueue는 인터페이스로 Queue를 implements 받으며, Queue처럼 FIFO(First In First Out)의 구조를 갖긴 하지만, 내부적으로 우선순위를 정하여 그 우선 순위가 높은 데이터를 먼저 내보내는 자료구조이다. 이러한 우선순위 큐는 Heap을 이용하여 구현하는데, 데이터 삽입 시, 최대값이 우선순위인 큐를 최대힙 , 최소값이 우선순위인 큐를 최소힙이라고 한다. 때문에 우선순위 큐에 들어가는 원소는 비교가 가능한 기준이 있어야한다는 특징이 있다. 우선 순위 큐의 선언 queue interface를 상속받고 있지만, 구현체인 PriorityQueue 내부적으로 더많은 기능을 제공하므로 PriorityQueue를 선언하는 것이 일반적이다. // 우선순위가 낮은 in..
-
다형성 - polymorphismJAVA/OOP개념( 다형성 ) 2023. 6. 15. 10:01
개념 다형성의 개념은 크게 2가지로 나누어 설명할 수 있다. 클래스의 다형성 메소드의 다형성 클래스의 다형성 하나의 타입의 참조변수로 여러타입의 객체를 참조 가능 조상클래스 타입의 참조변수로 자손클래스의 인스턴스를 참조 가능하다는 것 메소드의 다형성 메소드의 다형성은 오버로딩과 오버라이딩 크게 2가지가 있다. 오버로딩은 메소드의 메소드의 이름은 같지만, 메소드의 매개변수리스트가 다른 경우 중복정의가 가능한 것을 말한다. 매개변수 리스트라는 것은, 1. 매개변수의 갯수가 다르거나, 2. 매개변수의 자료형이 다르거나, 3. 매개변수의 순서가 다를 때 를 말한다. 위의 경우, 메소드의 오버로딩이 가능하다. 오버라이딩은 메소드의 재정의를 의미하는데, 이는 상속의 개념과 함께 언급되는 내용이다. 오버라이딩은 자세..
-
LinkedHashSet자료구조 2023. 6. 15. 07:46
개념 Set 타입들이 가지고 있는 특징은, 중복을 허용하지 않는다. 값을 넣은 순서를 보장하지 않는다. LinkedHashSet의 경우, 중복을 허용하지 않으면서 값을 넣은 순서를 보장해주는 자료구조이다. import java.util.HashSet; import java.util.LinkedHashSet; public class LinkedHashSetMain { public static void main(String[] args) { LinkedHashSet linkedHashSet = new LinkedHashSet(); HashSet set = new HashSet(); linkedHashSet.add("가"); linkedHashSet.add("나"); linkedHashSet.add("다");..
-
로깅Spring/MVC1-스프링MVC 기본기능편 2023. 6. 14. 10:27
개념 보통 어플리케이션을 개발하면서 다양한 로그를 남기는데, 우리가 흔히 알고 있는 System.out.println()의 경우, 필요하지 않는 경우네도 정보를 출력하게 된다. 이는 대용량 서비스시에 서버의 장애를 낳을 수 있는 요인이 될 수 있다. 하지만 서버를 가동하면서 필요한 정보를 남기는 logging은 반드시 필요하기 때문에, 각각의 개발환경에 맞는 log 레벨을 지정해주고 이를 관리할 필요가 있다. 스프링 부트의 로깅 라이브러리 스프링부트는 다음의 로깅 라이브러리를 기본으로 제공한다. SLF4J - http://www.slf4j.org Logback - http://logback.qos.ch SLF4J Simple Logging Facade for Java (SLF4J) The Simple L..
-
뷰리졸버(ViewResolver)Spring/MVC1-스프링MVC 구조이해 2023. 6. 14. 09:57
개념 뷰리졸버는 스프링MVC구조에서 FrontController 역할을 하는 DispatcherServlet이 우리가 원하는 View로 forwarding할 수 있게 도와주는 기능을 담당한다. 개발자는 보통 논리 경로를 작성하여 DispatcherServlet으로 넘겨주게 되는데, 이후 뷰리졸버에 의해 논리경로가 물리적 경로로 변경되게 되어있다. 뷰리졸버 물리적 경로 설정 방식 보통 현재의 MVC 패턴의 @Controller는 @RequestMapping( 현재 HandlerMapping + HandlerAdapterMapping 방식)에서 리턴값을 view의 논리경로를 반환한다. 이후 DispatcherServlet(프론트 컨트롤러)에서 ViewResolver에 의해 물리적 경로로 변경되게 되는데, 이..
-
핸들러 매핑과 핸들러 어댑터Spring/MVC1-스프링MVC 구조이해 2023. 6. 14. 09:41
개념 스프링 mvc 패턴이 기본적을 동작하는 원리는 다음과 같다. 1. url을 통해 어떤 핸들러를 사용할지 매핑한다. 2. 해당 핸들러를 이용할 수 있도록 핸들러 어탭터를 조회(support 메서드)하고 어탭터를 매핑한다. 3. 매핑된 어댑터를 통해 Controller의 기능을 실행하고 ModelAndView 객체를 리턴한다. 4. ViewResolver를 통해 논리경로에서 물리경로로 경로를 설정한다. 5. view를 rendering하여 client에게 보내준다. 여기서 우리는 핸들러 매핑과정과 핸들러 어댑터 과정을 살펴보자 HandlerMapping 1순위 - RequestMappingHandlerMapping : 어노테이션 기반의 컨트롤러인 @RequestMapping에서 사용 2순위 - Bean..
-
Stack / Queue자료구조 2023. 6. 14. 02:28
Stack - FILO: (First In Last Out) 구조의 자료형 - 스택은 구현체가 존재하므로 new Stack(); 로 선언하여 사용하면 된다. Stack - CRUD Create : push() : stack의 자료구조의 맨위에 넣음 Read : peek() : 맨 위의 값을 가지고옴 Update : set(index, ) : 값을 변경 Delete : pop() : 맨 위의 값을 꺼내면서(return), 삭제 Queue - FIFO : (First In First Out) 형태의 자료 구조 - Queue는 인터페이스이므로, 구현체를 필요로 한다. 이 때, 주로 사용하는 Queue 인터페이스의 구현체는 LinkedList를 사용한다. Queue - CRUD Create : add() : Q..