전체 글

전체 글

    JAVA 라이브러리 - Optional<T> 클래스

    | Optional 클래스란? - 자바에서 모든 객체는 Referece Type으로 nullable하다. * null이 발생할 수 있는 타입 > Referece Type의 객체는 null을 발생시킬 수 있다. -- NullPointerException - Optional은 객체를 nullable하게 쓸 수 있도록 하는 Wrapper class로, 객체 사용 시 null을 명시적으로 처리하게 한다. * 참고로 코틀린의 경우, nullable한 타입을 구분하는 코드가 별도로 존재한다. Optional은 주로 "결과 없음"을 명확하게 나타내야 하고, null을 사용하면 오류가 발생할 수 있는 메소드 반환 유형으로 사용된다. Optional 변수는 null일 수 없으며 항상 Optional 인스턴스를 가리켜야한..

    [스프링] Entity 객체를 생성 : 영속성의 개념 + 자동 Auditing

    [스프링] Entity 객체를 생성 : 영속성의 개념 + 자동 Auditing

    | 정리하게 된 계기 - 오늘 수업에서는 계좌 관련 프로그램을 만드는 걸 시작했고, 계좌 생성 API를 만들며, 사용자 및 계좌에 대한 Entity를 만들었었다. - 만들다보니, @Entity, @EntityListeners, @id, @Generated의 상위 패키지가 persistence로 되어 있는게 보였다. - 더불어, 객체 이벤트 발생 시간을 알려주는 @EntityListeners(AuditingEntityListener.class) 코드의 AuditingEntityListener.class로 가, 설명을 읽어보니, "이건 Entity에 persist 또는 update 이벤트가 발생하는 시간을 알려주는 일회성(stateless) 클래스이다" 라고 적혀있어, persist가 뭐지? 하는 생각을 하..

    [스프링] 개발을 시작하기 전에 - 요구 사항 분석, 기본 구조 잡기

    1. 프로젝트 생성 및 요구사항 분석 - 오늘 수업시간에서는 프로젝트 생성 및 요구사항 분석 + 설계 및 기본 구조 개발에 대해서 들었다. - 각 회사마다 분위기는 다 다르겠지만, 요구사항 분석 시엔 일반적으로 아래의 단계를 거친다고 한다. 1) 외부 고객 및 내부 고객의 의견에 따라 어떤 사업을 하겠다는 목표가 생기면, 2) 기획자가 기획안을 만들어 연관됨 팀들과 의견을 나눈 뒤 사용할 기술 및 주요 기능에 대해 보완한다. 3) 기획자의 기획안을 토대로 개발팀은 개발을 위한 기술 스택 및 구체적인 명세서를 작성한다. (1) 기술 스택이란 뭔가 - 위 3) 단계에서 "기술 스택"이라함은, - 어떤 프레임워크와 언어를 쓸 것인가 - 어떤 DB vendor를 쓰고 - 어떤 api를 사용할 것이며 - http..

    [스프링] 프로젝트 전 꼭 알아두면 좋은 것들

    [스프링] 프로젝트 전 꼭 알아두면 좋은 것들

    | 개요 - 수업 시간에 고객의 계좌 정보에 관한 프로그램을 샘플로 만들며 아래의 내용을 배우기로 했다. - 저작권상 내용을 여기에 담기는 좀 그래서 전반적인 개념에 추가적인 정보를 담아 스스로의 이해를 위해 정리해보려고 한다. - 강사님의 강의 흐름이 마치 현장 플젝을 해결하는 것 같이 느껴지는데, 이 흐름만 잘 기억해도, 차후 개인 프로젝트를 기획할 때 많은 도움이 될 것 같다. no 흐름 특징 0 개요 시스템 한 줄 소개 / 활용 기술 요약 / 프로젝트 엔터티 구조 안내 / 주요 제공 기능(API) - 분류 1 프로젝트 생성 및 의존성 추가 spring.io 또는 인텔리J를 통해 스프링 프로젝트 생성, 의존성 추가 * 어떤 기술을 쓸 건지에 따라 의존성은 달라질 수 있다. 2 Lombok Lombo..

    [스프링] 스프링 MVC - 예외처리

    | 예외처리 - 예외 : 프로그램이 예상하지 못한 상황을 만났을 때 오류를 처리하는 것 - 자바에서는 try-catch문 안에서 예외처리를 했었다. try { // 행동 } catch (Exception e) { log.error("cetian exception"); } - 스프링에서는 이러한 예외처리를 간편하게 할 수 있도록 하였다. | 스프링의 예외처리 (REST API) - 과거와는 달리 오늘날에는 프론트엔드와 백엔드 분업화가 잘 이루어져 있다. - 백엔드에서는 보통 Rest API를 사용해 컨트롤러 기반의 예외처리를 주로 한다. - 현장에서 예외처리를 할 때에는 enum과 예외객체를 통해 custom exception을 만들고, @RestControllerAdvice를 사용해서 예외처리를 한다. ..

    [스프링] 스프링 MVC - 필터, 인터셉터

    [스프링] 스프링 MVC - 필터, 인터셉터

    | MVC 구조로 보는 필터와 인터셉터 - 요청사항에 대해 필터와 인터셉터를 거친다 - 사용되는 메소드의 전반적인 흐름 init -> doFilter -> preHandler -> AOP -> postHandler -> afterCompletion -> doFilter -> destroy - 필터와 인터셉터와 AOP 필터 인터셉터 AOP 공통점 공통처리 기능 관련 웹의 URL주소나, 프로토콜 등과 관련 자바코드(Annotation, package) 위치 스프링 외부 스프링 내부 스프링 내부 특징 - 대부분의 공통사항 필터에서 처리 - low level 처리 가능 - sql injection, CSRF 등 해킹을 사전에 막는용도로 자주 사용한다. - Controller에 가기 전 공통 처리 - 실제 매핑된..

    [스프링] 스프링MVC - HTTP 요청 및 응답

    [스프링] 스프링MVC - HTTP 요청 및 응답

    | MVC - MVC란? Model + View + Controller 의 약자를 말하며, - 스프링은 내부적으로 Dispatcher가 있어, 어떤 요청이 있을 때마다 적절한 컨트롤러를 찾아 매핑한다고 했다. - 이때 말하는 요청이란, 사용자가 보내는 HTTP 요청을 말하며 오늘날 웹 환경은 일반적으로 REST 방식을 따른다. - REST는 URI의 자원에 고유한 이름-표현(ex. name, userId)-을 주어 자원의 상태 정보를 주고 받는 것으로, GET/POST/PUT/DELETE와 더불어 ?파라미터명=값 과 같이 자신만의 규칙을 갖고 있다. - 스프링에서는 HTTP 요청을 해석하기 위해 RestController를 사용하며, 해당 컨트롤러의 메소드와 매핑하기 위해, RequestMapping 또..

    [소프트웨어 공학] 소프트웨어 공학 및 현업 프로세스

    [소프트웨어 공학] 소프트웨어 공학 및 현업 프로세스

    | 소프트웨어 공학의 필요성 - 소프트웨어 공학이란? 시스템 초기부터 오픈 후 유지/보수까지의 소프트웨어 개발과 관련된 모든 측면을 의미 - 왜 필요한가? (1) 비용의 문제 (개발 60% + 테스트 40%) : 계획 없는 개발은 추가 비용을 발생시킨다. (2) 시스템 복잡도 향상 : 점차 복잡해지는 시스템 속에서 방향성을 잡는 것이 필요해졌다. - 소프트웨어의 종류 Generic products 어떤 기능을 수행할지 개발자의 결정에 의해 만들어진 소프트웨어 Customized products 특정 고객의 요구사항에 맞추어 개발되는 소프트웨어 - 좋은 소프트웨어란? 고객에게 필요한 기능과 성능을 제공하는 소프트웨어 > "높은 다양성과, 믿을 수 있는 소프트웨어" > 좋은 소프트웨어가 꼭 가져야하는 특성 ..

    [스프링] 스프링의 주요기술

    [스프링] 스프링의 주요기술

    | 개요 - 스프링은 SOLID 원칙을 담은 아키텍쳐(설계도)에 따라 만든 프레임워크이다. - 웹 개발 기술의 발전 : HTML -> CGI -> Sevlet/JSP(EJB) -> Spring MVC -> node, ktor 등 경량 웹 프레임워크 - 스프링에 대한 주요 기술은 아래와 같다. 코어 DI, IoC, 컨테이너 Resource, AOP, Validation, SpEL MVC Web MVC, HTTP 요청/응답처리, 필터와 인터셉터, 예외처리 더보기 [ 라이브러리와 프레임워크의 차이점 ] - 프레임워크가 개발을 하기 위한 전체적인 뼈대/틀이라면, - 라이브러리는 특수한 기능에 대한 도구, 기능의 집합을 말한다. - 프레임워크와 라이브러리의 가장 큰 차이는, 흐름을 제어하는 것이 누구이냐인데, 프..

    [알고리즘] 최소신장트리(MST)

    | 최소신장트리 - Mininum Spanning Tree - 그래프의 모든 노드를 연결할 때 가중치 합이 최소가 나오는 트리 - 특징 : (1) 사이클 제외 -- 가중치의 합은 사이클이 포함될 때 최소가 될 수 없다. (2) N개의 노드에 대한 최소신장트리 간선 수는 늘 N - 1개이다. | 종류 크루스칼(Kruskal) 프림(Prim) 핵심 - 최소값의 간선 우선 연결 - 사이클 발생 시 다른 간선 선택 - 임의의 노드에서 시작 - 연결된 간선 중 낮은 가중치 선택 언제? - 간선 수가 비교적 적을 때 - 간선 수가 많을 때 유리 메모리 에지 리스트(or 배열) 유니온 파인드 배열 인접 리스트(or 배열) 방문 배열 속도 O(ElogE) O(ElogV) - 우선순위 큐 사용 시 *O(v2) - 정렬되..