본문 바로가기

전체 글

(276)
Greedy - Concept 해당 문제는 "이것이 코딩 테스트이다" 책을 참고하여 제작하였습니다. 알고리즘의 유형 중 그리디 유형에 대해서 알아보려고 한다. 기본적인 정의는 다음과 같다. "현재 상황에서 지금 당장 좋은 것만 고르는 방법" 이는 여러가지 알고리즘을 사용해 해결하는 유형이 아닌 단순히 창의력, 아이디어를 요구하는 유형을 의미한다. 즉, 어떠한 문제를 만났을 때, 현재 가장 좋아보이는 방법을 선택하는 유형이라고 볼 수 있다. HINT, 사용 상황 가장 큰 순서대로, 가장 작은 순서대로 다른 알고리즘을 생각해봐도 마땅히 연결되는 알고리즘이 없는 경우 보통 그리디 알고리즘은 정렬 알고리즘과 짝을 이루는 경우가 많다. 예시 문제 - 손님에게 거스름돈을 걸러줘야하는데, 500, 100, 50, 10원 단위의 동전이 있다. 이 ..
Spring - AOP Spring에서는 기본적으로 여러가지 기능을 제공한다. IoC, DI, AOP, ORM, MVC, Test 등이 있는데 전반적으로 개발을 하는데 있어서 쉽게 하기위해서 제공해주는 기능 같다. 그 중에 스프링 AOP가 무엇인지 알아보려고 한다. AOP - Aspect Oriented Programming - 관점 지향 프로그래밍 - Object Oriented Programming(객체 지향 프로그래밍)을 보완하여 여러곳에서 쓰이는 공통기능을 모듈화하여 필요한곳에 연결함으로써 유지보수 또는 재사용이 용이해진다. 개발을 하다보면 자주 쓰이는 기능이 있다. 이들을 따로 모듈화하여 비지니스 로직과 분리해두지만 동작은 똑같게 만들어주는 방식을 AOP라고 한다. 코드를 분리할때, 핵심적인 관점과 부가적인 관점 둘로..
Test Coverage with Jacoco Code Coverage - 소프트웨어의 테스트 수준이 충분한지를 측정하는 지표 - 테스트 코드 작성 후 해당 코드가 실행되었는지 테스트하는 지표를 의미한다. - 여러가지 도구 존재. ex) Jacoco Jacoco - JAVA 코드의 커버리지를 체크하는 라이브러리 - 테스트 커버리지를 측정해준다. - Runtime에서 측정 - 결과를 Html, xml, csv 형태로 저장해서 전달 테스트의 종류 - 블랙 박스 테스트 : 사용자 관점에서 입력에 대해 올바른 출력이 나오는지를 테스트 - 화이트 박스 테스트 : 개발자 관점에서 소스 내부 구조와 동작을 테스트 (Unit Test 등) Maven의 라이프 사이클은 다음과 같다. compile -> test -> package -> install -> deplo..
DataBase - Basic 이번엔 전체적인 데이터베이스의 개념적인 내용에 대해서 정리해보려고 한다. 기본 용어 정리 DB : 실시간 접근, 동시 접속 가능한 데이터 저장소 DBMS : 데이터 베이스안에 있는 데이터를 관리하는 통합 시스템 Query Language : DBMS를 통해 DB에 데이터를 삽입, 삭제, 수정, 조회 등을 수행하는 언어. 1. 엔터티 정의) 현실세상의 여러개의 속성을 가진 하나의 명사. 예시) 회원, 상품 등 약한 엔터티 : 다른 엔터티에 종속적인 엔터티 강한 엔터티 : 다른 엔터티에 종속적이지 않고 혼자서도 성립가능한 엔터티 2. 릴레이션 정의) 데이터 베이스에서 정보를 구분하여 저장하는 기본 단위, 엔터티에 관한 데이터를 데이터베이스는 릴레이션 하나에 담아서 관리한다. 테이블 : 관계형 데이터베이스에서..
Unit Test with MVC 스프링에서 어떻게 단위테스트를 하는지 간략히 보려고한다. 보통 스프링은 controller - service - DAO 구조로 이루어지고 클래스들을 어떻게 단위테스트하는지 알아보려고 한다. 또한, 방식은 가정-실행-결과 순으로 이루어진다. 가정 : 어떤 조건이 주어지고 그 결과는 이렇다고 정해져있을 때, 실행 : 해당 가정을 통해 이 클래스를 실행하면, 결과 : 이런 결과를 가져온다. 아래 예시는 회원가입에 대한 간단한 단위테스트이다. 1. Controller @WebMvcTest : 해당 클래스를 테스트 한다, Controller에만 사용할 수 있으며, 실제 실행이 아닌 가짜 실행이다. @Autowired : 실제 주입을 의미하는데, 여기서 MockMvc는 HTTP 통신을 위한 클래스이다. 이는 실제를..
Spring - Exception 예외처리에는 크게 두가지로 볼 수 있다. Spring에서 기본적으로 제공해주는 Exception, 우리가 직접 구현해서 사용해는 Exception이 있다. 그 둘에 대해서 모두 알아보려고 한다. 우선, Exception은 다음과 같은 계층구조를 갖는다. Exception -RuntimeException - NullPointerException -IOException 기본 예외 처리 방식(Handler 생성) " @ControllerAdvice 또는 @RestControllerAdvice 로 모든 컨트롤러에서 발생할 수 있는 예외를 정의하고, @ExceptionHandler를 통해 발생하는 예외마다 처리할 메서드를 정의 " - Exception을 처리 - @RestControllerAdvice는 예외발생시..
Class Validation 스프링은 자바를 기반으로하며 데이터처리에 관해서 클래스, 객체를 생성하여 처리를 한다. 예를 들어, DTO(자바에서 처리하는 데이터형식), Entity(DB에서 처리하는 데이터 형식) 등 여러가지 데이터를 처리한다. 이때, 데이터가 과연 유효한지 데이터 검증을 할 필요가 있다. 그래서 관련된 애너테이션들을 알아보려고한다. 작성은 해당 데이터를 처리하는 클래스에 작성하면 된다. 보통은 직렬화 작업시 많이 사용된다(json -> class instance) 1. Dependancy org.springframework.boot spring-boot-starter-validation 2. Annotation @Size(min=1, max=3) : 필드의 크기(문자열 길이, 컬렉션 크기 등) @NotNull : ..
Spring - Log(LogBack) Spring에서 로그 관리는 어떻게 할까? 여러가지 로그 라이브러리를 통해 사용하는데, 나는 logback을 사용해보고자 한다. 로그를 찍을때, 우선 Error Level에 대해서 알아야한다. 크게 5가지가 있다. 아래로 갈수록 강한 오류이자 중요한 오류이다. 예를들어, Warn 지정시, Warn, Error 만 출력한다. Trace : Debug 보다 더 디테일한 메시지 Debug : 디버깅을 위한 메시지 Info : 정보성 메시지 Warn : 밑의 Error의 원인이 될 수 있는 경우 Error : 로직 수행 중 오류, 시스템이 작동이 불가능한 경우 특징 - 테스트와 실제간 레벨 설정 가능. - 출력 방식 (console, file, db) 등 설정 가능. - 프로그램 중단없이 설정파일 변경 가능. ..