RuntimeException : Unchecked Exception 프로그램 실행 도중 발생하는 예외로, 프로그래머의 잘못으로 발생한다고 볼 수 있다.
배열의 범위를 넘어선 접근, Null 객채에 대한 접근, 잘못된 형 변환 등을 예로 들 수가 있다,
이러한 예외는 처리에 있어서 강제성을 띄지 않는다.
IOException : Checked Exception 런타임 예외는 언제 에러가 발생하는지 알 수 없기 때문에 처리를 하지 않아도 되지만,
IOException은 예외가 발생할 시점과 종류를 알 수 있기 때문에 반드시 처리를 해주어야 하는 강제성을 띄게 된다.
NestedRuntimeException RuntimeException의 root cause를 다루기 쉽게 래핑한 예외 클래스 내부적으로는 NestedExceptionUtils 라는 유틸리티 클래스를 이용한다. RestClientException 클라이언트 사이드의 HTTP 에러를 만났을 때 던져지는 기본 예외 클래스 RestClientResponseException 실제 HTTP 응답 데이터를 포함하고 있는 예외클래스들의 공통 기반 클래스 int 타입의 rawStatusCode를 가지고 있다. int rawStatusCode String statusText byte[] responseBody: getResponseBodyAsString() 메서드로 읽어올 수 있다. HttpHeaders responseHeaders String responseCharset HttpStatusCodeException HttpStatus (enum)를 기반으로 하여 만든 추상 클래스 getStatusCode() 메서드를 통해 HttpStatus를 읽어올 수 있다.
생성자 자동 생성 Lombok을 사용하면 생성자를 자동으로 생성할 수 있다.
@NoArgsConstructor 어노테이션 : 파라미터가 없는 기본 생성자를 생성해준다. @AllArgsConstructor 어노테이션 : 모든 필드 값을 파라미터로 받는 생성자를 만들어준다. @RequiredArgsConstructor 어노테이션 : final이나 @NonNull인 필드 값만 파라미터로 받는 생성자를 만들어준다. 주로 의존성 주입(Dependency Injection) 편의성을 위해서 사용된다. @RequiredArgsConstructor 어노테이션 @RequiredArgsConstructor 어노테이션은 스프링 의존성 주입의 특징 중 한가지를 이용하는데 이는 다음과 같다.
어떠한 빈(Bean)에 생성자가 오직 하나만 있고, 생성자의 파라미터 타입이 빈으로 등록 가능한 존재라면 이 빈은 @Autowired 어노테이션 없이도 의존성 주입이 가능하다.
API (Application Programming Interface), 라이브러리 (Library), 프레임워크 (Framework)는 모두 소프트웨어 개발에서 사용되는 용어이다.
API API는 두 개 이상의 소프트웨어 컴포넌트 사이에서 상호 작용할 수 있도록 정의된 인터페이스를 말한다. 이를 사용하여 다른 소프트웨어 개발자들이 특정 서비스 또는 기능을 사용할 수 있다.
특징 다른 프로그램이나 서비스와 연결해 주는 다리 역할 API를 조합해서 원하는 프로그램을 만들 수도 있다. 예시 Twitter API: 트위터에서 제공하는 API Google Maps API: 구글에서 제공하는 지도 API YouTube API: 유튜브에서 제공하는 API OpenWeather API: 날씨 정보 API GitHub API: 깃허브에서 제공하는 API Kakao API: 카카오에서 제공하는 API Stripe API: 결제 API Twilio API: SMS 및 음성 API AWS API Gateway: 아마존 웹 서비스에서 제공하는 API 관리 서비스 Google Cloud Vision API: 구글에서 제공하는 이미지 분석 API 라이브러리 라이브러리는 개발자들이 자주 사용하는 코드 집합이다.
암호는 중요한 정보를읽기 어려운 값으로 변환하여 제 3자가 볼수 있도록 하는 기술이다.
암호의 특성 기밀성 : 허가되지 않은 사용자는 암호화된 데이터의 원본을 볼 수 없는 성질 무결성 : 허락되지 않은 사용자가 암호화 데이터를 함부로 변조를 불가능하게 하거나 변조가 된 후에 데이터를 검증할 수 있는 성질 인증 : 정상적인 암호화 복호화 과정에서 정체성을 식별 부인 방지 : 정보를 보낸 사람이 정보를 보냈다는 사실을 부인하지 못하게 하는 성질 암호 알고리즘 RSA (Ron Rivest, Adi Shamir, Leonard Adleman) 공개키 암호시스템의 하나로, 암호화뿐만 아니라 전자서명이 가능한 최초의 알고리즘 공개키(Public key), 개인키(Private key)가 존재 대칭키 알고리즘에 비해 느림 AES (Advenced Encryption Standard) 암호화와 복호화 과정에서 동일한 키를 사용하는 대칭키 알고리즘 2001년 미국 표준 기술 연구소(NIST)에 의해 제정된 암호화 방식 AES 표준은 여러 Rijindael 알고리즘 중 블록 크기가 128비트인 알고리즘 ECB (Electronic Code Block) 가장 기본적인 타입 항상 같은 결과가 나오기 때문에 암호화 키 역추적 가능 CBC (Ciper Block Chaining) ECB의 단점을 보완 암호화 키에 IV(Initial Vector)를 추가해서 항상 같은 결과가 나오는 문제를 해결 암호화 병렬처리 불가 GCM (Galois/counter mode) CBC의 취약점을 보완 데이터 값의 Hash가 암호문에 포함 -> 데이터 복호화 시 변조 확인 가능 암호화 병렬처리 가능 참고 https://www.
해시(hash)란 임의의 길이의 데이터를 고정된 길이의 데이터로 매핑(mapping)한 값이다. 복호화를 위해 사용하지 않으며, 암호화보다 연산이 빠르다는 특징이 있다.
해시 알고리즘 MD5 (Message Digest)
128비트 암호화 해시함수 원본 그대로인지를 확인하는 무결성 검사 등에 사용 해킹에 취약하므로 SHA를 권장 임의의 길이를 입력받아 128비트 고정길이 값을 출력 SHA (Secure Hash Algorithm)
서로 관련된 암호학적 해시 함수들의 모음 SHA-0, SHA-1, SHA-2(224, 256, 384, 512) 존재 SHA-0, SHA-1에 대한 공격 발견 SHA-256은 256비트로 구성되며 64자리 문자열을 반환 참고 https://velog.