운영체제란?OS(Operation System) : 하드웨어 계층과 다른 소프트웨어 계층을 연결하는 소프트웨어 계층컴퓨터 시스템의 자원을 관리하고, 사용자가 컴퓨터를 사용할 수 있는 환경을 제공하는 역할을 한다.사용자와 컴퓨터 간의 인터페이스를 제공하여 편리하게 사용할 수 있도록 한다.Linux, Window, MacOS, Uinx ... 운영체제의 목적1. 처리능력(throughput) 향상OS는 자원관리를 통해 일정 시간내에 시스템이 처리하는 일의 양을 향상시킨다.2. 반환시간(turnaround time) 단축사용자가 시스템에 요청한 작업을 완료할 때까지의 소요시간을 단축시킨다.3. 사용 가능도(availability) 향상사용가능도 : 시스템 자원을 얼마나 빨리 제공할 수 있는지의 정도사용자가 컴..
제네릭(Generic)데이터 타입을 일반화 시키는 방법클래스, 인터페이스, 메소드 등에서 사용될 수 있는 타입 매개변수 (parameter) 를 사용하여 정의한다. 제네릭을 사용하는 이유컬렉션의 안정성을 보장하기 위해 사용한다.안에 데이터 타입을 명시하여 타입을 제한함으로써 안정성을 보장할 수 있다. (타입 안정성 보장)클래스, 인터페이스, 메소드에 지정 가능.예를 들어 으로 지정하면 String 타입만 들어올 수 있어 다른 데이터 타입 유입을 막는다.재사용성이 높아진다.제네릭 타입을 선언할 때, 어떤 데이터 타입이 들어올지 결정하지 않으므로, 다양한 데이터 타입에 대해 일반적으로 적용할 수 있는 메서드나 클래스를 작성할 수 있다. : 가변 타입(T)를 사용하여 임의로 설정해두고 실행될 때 실행되는 데..
스웨거RESTful API 서비스를 개발하고 문서화하는 데 도움을 주는 도구 모음API의 자동화된 문서를 생성하고 표시한다. 이를 통해 API 엔드포인트, 요청 및 응답 형식, 매개변수, 인증 등을 포함한 API의 세부 정보를 시각적으로 제공한다.간단한 UI를 제공함으로써, API를 테스트하고 상호작용할 수 있다.API를 기반으로 클라이언트 라이브러리 및 서버 스텁 코드를 자동으로 생성할 수 있다.개발자가 API를 테스트 하고 디버깅하는데 도움을 준다. 스웨거UI 설정 방법 (스프링부트 기준)1. MavenRepository 사이트에서 해당 의존성을 가져온다. (SpringDoc Open API UI)https://mvnrepository.com/artifact/org.springdoc/springdo..
임시로 디버깅하는 방법HttpEntity 클래스를 활용하여 body에 어떠한 JSON 값이 들어왔는지 확인한다. //회원가입 @PostMapping("") public void register(//@RequestBody UserRequest userRequest HttpEntity http){ log.info("user : {} ", http.getBody()); // 바디 값 확인 }정확한 request body의 내용이라기보다는 한번 더 캐스팅하여 사용해야하기 때문에 불편함이 있다.클라이언트에게 어떠한 값을 전달했는지 확인하기도 어렵다. 필터 적용하기로그를 찍어볼 수 있는 필터를 생성하여 확인한다...
문제를 올바른 순서로 이해한다. 읽기 시간과 메모리 제한이 있는 경우 범위를 잘 파악 문제를 꼼꼼히 읽기 !! 이해하기 제공되는 정보를 통해 필요한 변수들을 정리한다. 예제 데이터에 대해 이해하기!! 파악하기 가능한 최대, 최소 정답에 맞는 데이터를 생성 키워드가 되는 단어들을 체크한다. 시간 복잡도와 공간 복잡도를 계산한다. 시간, 공간 복잡도를 어느 정도 예상을 하고 있으면 시간을 아낄 수 있다. 코드를 효율적으로 함수화해서 구현한다. 코드가 길어질 수록 실수할 확률은 증가. 함수화를 통해 실수를 줄이고, 시간 또한 절약을 할 수 있다. 부분점수라도 반드시 챙긴다. 다 풀진 못하더라도 모든 문제에서 딸 수 있는 부분 점수라도 반드시 챙기는 것이 좋다.
사용자정의 자료형의 이해 사용자 정의 자료형은 기본 자료형으로만 모든 사물을 표현하기 어려워 필요에 맞게 정의해서 쓰는 자료형 정수 데이터를 저장하기 위한 변수 선언 -> int a; 실수 데이터를 저장하기 위한 변수 선언 -> float a; 책 데이터를 저장하기 위한 변수 선언 -> ?? a; 회원 데이터를 저장하기 위한 변수 선언 - > ?? a; 책이나 회원 데이터의 경우 다른 기본 데이터와 달리 하나의 변수로 설명하기가 어렵다. 예를 들어, 책을 구성하는 요소를 생각해보면 책 이름, 출판사, 저자, 가격 등 여러 요소들이 있는데 이것이 모여 책을 의미한다. 따라서, 사용자 정의 자료형은 이렇게 같은 의미로 이루어진 개별 변수를 구조적으로 모아 하나의 데이터(=객체 데이터) 자료형(= 객체 자료형..
스프링에서는 어노테이션을 기반으로 ExceptionResolver를 활용하여 API 예외처리를 한다. 스프링 부트가 제공하는 ExceptionResolver는 다음과 같다. ( 위에서부터 우선순위가 높은 ExceptionResolver이다.) ExceptionHandlerExceptionResolver ResponseStatusExceptionResolver DefaultHandlerExceptionResolver ExceptionHandlerExceptionResolver @ExceptionHandler 어노테이션을 찾아 해당 메서드에 작성된 예외 처리를 진행한다. 대부분의 API 예외처리는 이 기능으로 해결한다. @ExceptionHandler 앞서 API예외처리에 있어서 HandlerExceptio..
자바로 만들 수 있는 프로그램 유형 데스크톱 응용 소프트웨어 : Java SE (계산기 등) 웹 기반 응용 소프트웨어 : Java EE (전자정부 시스템, ERP 등) 모바일 기반 응용 소프트웨어 : JavaME (APP - 안드로이드 개발환경) java 코드 실행 순서 1. 코드를 구현한다. 2. 코드를 파일로 저장한다. -> .java 파일로 저장 3. 문법 오류를 체크한다. -> 컴파일러(해석기) 필요 - JDK에 포함되어 있다. 4. 컴파일이 완료되면 새로운 파일이 생성된다. -> .class 파일 => 이 파일을 통해 코드 실행이 이루어진다. 5. 실행한다. -> 실행해주는 명령어 및 프로세서 필요 명령어 : java 프로세서(엔진) : JVM (Java Virtual Machine) - 자바 ..
발생하는 예외에 따라서 400, 404 등 상태코드를 다르게 정의하고 싶을 때는 어떻게 해야할까? ExceptionResolver를 사용하면 된다. ExceptionResolver ExceptionResolver는 말 그대로 컨트롤러(핸들러)에서 발생한 예외를 해결하는 역할을 한다. 앞서 예외를 보면 컨트롤러에서 예외가 발생하면 수 많은 단계를 거쳐 WAS까지 전달되게 되는데, 이 ExceptionResolver를 사용하게 되면 WAS까지 예외가 던져지지 않고 여기서 해결이 가능하다. ExceptionResolver를 사용하지 않으면 예외가 WAS까지 전달되어 WAS에서 서버 내부 오류로 인식해 500 상태코드를 전달하게 된다. 하지만, ExceptionResolver를 적용하면 예외를 Exception..
API 예외처리는 어떻게 해야할까? API는 각 오류 상황에 맞는 오류 응답 스펙을 정하고, JSON으로 데이터를 내려주어야 한다. -> 각 통신마다 쓰는 방식이 다다르기 때문에 이를 공통적으로 약속(오류 응답 스펙)을 하고 사용해야 한다. 서블릿 API 예외처리 기존의 예외처리는 클라이언트가 예외를 발생했을 때 HTML 형태의 뷰템플릿을 반환했었다. 하지만, 클라이언트에서 API로 요청을 보내면 서버에서도 API로 반환해주어야 하는데 별도의 설정 없이 진행하게 되면 서버는 똑같이 뷰템플릿을 반환한다. API 예외처리 컨트롤러 @RestController public class ApiExceptionController { @GetMapping("/api/members/{id}") public Member..