ssung_항해일지 112

Rest Client [Spring]

Rest Client란? Spring에서 제공하는 HTTP 통신에 사용할 수 있는 템플릿 HTTP 통신을 할 수 있는 Rest한 Client Spring boot에서 쉽게 사용할 수 있도록 자동설정을 제공 ※주의 : RestTemplate / WebClient 는 자체를 빈으로 등록 X => RestTemplateBuilder / WebClient.Builder 를 빈으로 등록 O 1. RestTemplate Blocking I/O 기반의 Synchronous API RestRunner에서 특정 API를 호출한 뒤, Blocking 되므로 해당 메서드가 끝나기 전까지 다음 라인이 실행되지 않음 RestTemplateAutoConfiguration 프로젝트에 spring-web 모듈이 있다면 RestTem..

Spring Container

Spring Container란? - 자바 객체의 생명 주기를 관리하고, 생성된 자바 객체들에 추가적인 기능을 제공하는 역할 - 여기서 자바 객체는 스프링에서 Bean(빈)이라고 명칭 - 개발자가 new연산자, 인터페이스 호출, 팩토리 호출 방식으로 객체를 생성하고 소멸시킬 수 있는데, 이를 스프링 컨테이너가 대신해줌. 즉, 제어 흐름을 외부에서 관리하는 것 - 객체간의 의존관계를 스프링 컨테이너가 런타임 과정에서 알아서 만들어 줌 - 흔히 Application Context를 스프링 컨테이너 라고 말함 - 파라미터로 넘어온 설정 클래스 정보 (Config에 @Bean 등등)를 Spring Bean에 등록 Spring Container 종류 1. BeanFactory 스프링 컨테이너의 최상위 인터페이스 ..

List, Set, Map, Hash Map

1. List - 저장공간이 필요에 의해 자동으로 늘어나는 자료구조 (순서가 있음) 특징 : 순서가 있고, 중복을 허용 (배열과 유사) 장점 : 가변적인 배열 (배열이 자동으로 늘어남) 단점 : 원하는 데이터의 위치가 뒤쪽에 위치할 시 속도 문제 발생 방식 : equals()를 이용한 데이터 검색 2. Set - 집합이다! 순서가 없고 집합이므로 중복된 데이터가 들어갈 수 없다. 중복되지 않는 숫자(데이터)를 구할 때 사용하면 유용 특징 : 순서가 없고, 중복을 허용하지 않음 장점 : 빠른 속도 단점 : 단순 집합의 개념으로 정렬하려면 별도의 처리가 필요 3. Map - 키와 데이터를 같이 저장 특징 : Key(키)와 Value(값)으로 나눠서 데이터를 관리하고 순서가 없으며 키에 대한 중복을 허용하지 ..

제네릭 (generic)

제네릭(generic)이란? 데이터 타입을 일반화한다는 것을 의미 클래스나 메소드에서 사용할 내부 데이터 타입을 컴파일 시에 미리 지정하는 방법 컴파일 시 미리 타입 검사를 수행하면 다음과 같은 장점이 있음 제네릭 사용 시 잘못된 타입이 들어올 수 있는 것을 컴파일 단계에서 방지 클래스 외부에서 타입을 지정해주기 때문에 따로 타입을 체크하고 변환할 필요가 없음 즉! 관리하기가 편함 비슷한 기능을 지원하는 경우 코드의 재사용성이 높아짐

JPA 영속성 컨텍스트

영속성 컨텍스트란? 엔티티를 영구 저장하는 환경 이라는 뜻 애플리케이션과 데이터베이스 사이에서 객체를 보관하는 가상의 DB 역할 엔티티 매니저를 통해 엔티티를 저장하거나 조회하면 엔티티 매니저는 영속성 컨텍스트에 엔티티를 보관하고 저장 em.persist(member); 엔티티 매니저를 사용해 member 엔티티를 영속성 컨텍스트에 저장한다는 의미 특징 엔티티 매니저를 생성할 때 만들어짐 엔티티 매니저를 통해 영속성 컨텍스트에 접근하고 관리할 수 있음 생명주기 비영속성 : 영속성 컨텍스트와 전혀 관계가 없는 상태 영속 : 영속성 컨텍스트에 저장된 상태 준영속 : 영속성 컨텍스트에 저장되었다가 분리된 상태 삭제 : 삭제된 상태 비영속 - 엔티티 객체를 생성했지만, 아직 영속성 컨텍스트에 저장하지 않은 상태..

Index

Index란? 데이터베이스(DB) 테이블에 대한 검색 속도를 향상시켜주는 자료구조 인덱스를 생성하고자 하는 컬럼의 데이터를 정렬한 후 별도의 메모리 공간에 데이터의 물리적 주소와 함께 저장 장점 테이블을 검색하는 속도와 성능이 향상 (정렬된 형태의 데이터를 가지고 있음) 시스템의 전반적인 부하를 줄일 수 있음 단점 인덱스를 관리하기 위한 추가 작업이 필요 추가 저장 공간 필요 잘못 사용하거나 무분별하게 사용할 경우에는 오히려 검색 성능이 저하 인덱스를 사용하면 좋은 경우 규모가 큰 테이블 INSERT, UPDATE, DELETE 작업이 자주 발생하지 않는 컬럼 WHERE나 ORDER BY, JOIN등이 자주 사용되는 컬럼 데이터의 중복도가 낮은 컬럼

DI (Dependency Injection)

DI란? Dependency Injection의 약자로 의존성 주입이라고 한다 객체(빈)들 간의 의존관계를 외부에서 결정하고 주입하는 것 동작과정 DI는 스프링 프레임워크에서 지원하는 IoC의 형태로 객체(빈) 사이의 의존관계를 빈 설정정보를 바탕으로 DI 컨테이너가 자동으로 연결 장점 Unit Test 용이 => 의존성이 낮아지기 때문 코드 재활용성 증가 => 하나의 객체에 의존하지 않기 때문 객체 간의 의존성(종속성)을 줄이거나 없앨 수 있음 객체 간의 결합도를 낮추면서 유연한 코드 작성 가능 DI (의존성 주입) 방법 생성자 주입 (Constructor Injection) - 생성자의 호출 시점에 '1회' 호출 되는 것이 보장된다. 그렇기 때문에 주입받는 객체의 변화가 없거나 반드시 객체의 주입이 ..

REST API

REST API란? - REST를 기반으로 만들어진 API를 의미 여기서 REST란? - REST (Representational State Transfer)의 약자로 자원을 이름으로 구분해 해당 자원의 상태를 주고받는 모든 것을 의미 즉, REST란 1. HTTP URI (Uniform Resource Identifier)를 통해 자원을 명시 2. HTTP Method (POST, GET, PUT, DELETE, PATCH 등)를 사용 3. 해당 자원 (URI)에 대한 CRUD Operation을 적용하는 것을 의미 REST API - REST의 원리를 따르는 API를 의미 - 몇가지 규칙이 있음 1. URI는 동사보다는 명사를, 대문자보다는 소문자를 사용 Good - ssungjaeee.com/wor..

객체지향 프로그래밍(OOP)

객체지향 프로그래밍이란? - 객체 지향 프로그래밍 (Object - Oriented Programming, OOP)은 프로그래밍에서 필요한 데이터를 추상화하여 상태와 행위를 가진 객체로 만들고, 이 객체들간의 상호작용을 통해 로직을 구성하는 프로그래밍 방법 여기서 객체란? - 프로그램에서 사용되는 데이터 또는 식별자에 의해 참조되는 공간을 의미 - 값을 저장할 변수와 작업을 수행할 메소드를 서로 연관된 것들끼리 묶어서 만든 것을 객체라고 함 - 비유를 하자면 객체지향 프로그래밍 = 레고, 객체 = 레고 조각! - 레고 조각은 여러군데에서 재사용할 수 있으므로 부품화, 재사용성이라는 OOP 특징을 보여줌 특징 1. 추상화 객체에서 공통된 속성과 행위를 추출하는 것 공통의 속성과 행위를 찾아 타입을 정의하는..

시간 복잡도(Time Complexity) 와 공간 복잡도 (Space Complexity)

알고리즘을 평가할 때 시간 복잡도와 공간 복잡도를 사용한다. 시간 복잡도 = 알고리즘의 수행 시간 평가 공간 복잡도 : 알고리즘 수행에 필요한 메모리 양을 평가 시간 복잡도와 공간 복잡도는 주로 점근적 표기법 중 빅오 표기법을 이용해 나타낸다. 이유는 최악의 경우에도 해당 알고리즘이 어떤 성능을 낼지 가늠해 볼 수 있기 때문이다. 시간 복잡도 (Time Complexity) 수행 시간은 실행환경에 따라 다르게 측정되기 때문에 기본 연산의 실행 횟수로 수행 시간을 평가한다. 기본 연산 데이터 입출력 - copy, move ... 산술 연산 - add, multiply ... 제어 연산 - if, while ... 시간 복잡도는 세 가지의 경우로 나타낼 수 있다 1. 최선의 경우 (Best Case) 빅 오..

728x90