분류 전체보기
-
[Spring] DI 의존성 주입Spring Core 2024. 7. 2. 23:10
의존성 주입 DI (Dependency Injection) DI란 의존 관계 주입 혹은 의존성 주입이라고 불린다Spring은 객체의 의존 관계를 의존 관계 주입을 통해 관리한다스프링 컨테이너에서 객체의 생명주기를 관리하고 객체의 의존관계도 관리한다 왜 필요할까? public interface Fruit {}public class Peach implements Fruit{}public class WaterMelon implements Fruit {}public class Store { private final Fruit fruit; public Store() { this.fruit = new Peach(); }} Store 클래스에서 생성자를 보면 필드의 fruit가 Peac..
-
[Spring] IOC 제어의 역전Spring Core 2024. 7. 1. 11:59
제어의 역전 IOC(Inversion of Control)제어의 역전이라는 의미이고 제어의 흐름을 바꾼다고 한다메소드나 객체의 호출 작업을 개발자가 결정하는 것이 아닌 외부에서 결정 되는 것 이다 코드로 보자 UserSevicepublic interface UserService { User findById(Long userId);} UserServiceImplpublic class UserServiceImpl implements UserService { private final UserRepository userRepository; public UserServiceImpl(UserRepository userRepository) { this.userRepository = us..
-
[DB] 트랜잭션의 모든 것데이터베이스 2024. 6. 28. 10:48
트랜잭션이란?트랜잭션(Transaction)은 데이터베이스의 상태를 변환시키는 하나의 논리적 기능을 수행하기 위한 작업의 단위 또는 한꺼번에 모두 수행되어야 할 일련의 연산들을 의미한다. 특징트랜잭션은 데이터베이스 시스템에서 병행 제어 및 회복 작업 시 처리되는 작업의 논리적 단위이다.사용자가 시스템에 대한 서비스 요구 시 시스템이 응답하기 위한 상태 변환 과정의 작업단위이다.하나의 트랜잭션은 Commit되거나 Rollback된다. ACID원자성(Atomicity)트랜잭션이 DB에 모두 반영되거나 전혀 반영되지 않아야 한다일관성(Consistency)트랜잭션의 작업 처리 결과는 항상 일관성 있어야 한다독립성(Isolation)둘 이상의 트랜잭션이 동시에 병행 실행되는 경우 어느 하나의 트랜잭션 실행중에 ..
-
[Spring] DTO의 모든 것Spring 2024. 6. 25. 13:51
개발을 하면서 DTO에 대해서 깊이 알고 싶어 공부한 주제이다 DTO란?Data Transfer Object의 약자이다REST API 작성 시에 엔티티 대신에 DTO를 사용하여 컨트롤러에서 데이터를 주고 받는 용도로 사용DTO를 사용하면 엔티티에 변질을 막을 수 있다로직에 맞춰 필요한 필드만 주고 받을 수 있어 DTO를 사용해야 한다 작자는 request, response DTO 처럼 따로 두고 설정한다 Request DTOREST API를 개발할 때 HTTP 요청이 들어오게 되고 그 Body 값을 가져올 때 DTO 맵핑을 해야 한다역직렬화가 진행된다역직렬화를 하기 위해선 Jackson이 동작하는데 Jackson 내부에서는 ObjectMapper가 리플랙션을 사용한다SpringBoot 에서는 @Requ..
-
REST API 에서의 HTTP 상태 코드 (HTTP Status Code)Spring 2024. 6. 20. 11:08
이번에 프로젝트를 하면서 rest api 설계에서 상태 코드를 정확히 어떤 것을 해줘야 하는지 알아보았다 HTTP Status CodeHTTP 요청이 성공했는지 실패했는지 서버에 알려주는 코드 이다 2XX Success 2xx 번대의 상태 코드들은 서버가 클라이언트의 요청을 성공적으로 처리했다는 의미다. 200 OK : 클라이언트의 요청을 서버가 정상적으로 처리했다 ex) 데이터 조회 성공 성공에 대한 모든 상태 코드를 200으로 응답해도 크게 상관없다. (200 상태 코드는 클라이언트에게 요청이 성공했다는 것을 응답하는 기능을 갖기 때문에) 많은 REST API에서 2xx 상태 코드를 세분화하여 사용하지 않는다.하지만, 클라이언트에게 더 정확하고 자세한 정보를 제공하기 위해선 적절한 상태 코드를 보내는..
-
[운영체제] 메모리란?운영체제 2024. 6. 19. 14:22
메모리란?전자회로에서 데이터나 상태, 명령어 등을 기록하는 장치이다보통 RAM(Random Access Memory)을 일컬어 메모리라고도 한다CPU는 계산을 담당한다면 메모리는 기억을 담당한다 예를들어 공장에 비유를 하자면CPU는 일꾼이다 메모리는 작업장이다 즉, 작업장의 크기가 곧 메모리의 크기이다작업장이 클수록 창고에서 물건을 많이 가져다 놓고 많은 일을 할 수 있듯이 메모리가 크면 클수록 많은 일을 동시에 할 수 있다 메모리 계층우선, 메모리 계층은 레스터, 캐시, 메모리, 저장장치로 구성되어 있다 레지스터 : CPU 내에서 데이터를 기억하는 메모리 장치특징 휘발성속도 가장 빠름기억 용량이 가장 적다 캐시 : 메모리 계층 구조에서 중간에 위치한 고속의 임시 저장 공간이다CPU와 주 메모리(메인..
-
[알고리즘] Two-Pointers Algorithm (투 포인터 알고리즘)알고리즘 2024. 6. 15. 11:43
정의1차원 배열에서 각자 다른 원소를 가리키고 있는 2개의 포인터를 조작해 가면서 원하는 값을 찾을때 까지 탐색하는 알고리즘배열이나 리스트에 순차적으로 접근해야 할 때 두개의 포인트의 위치를 기록하면서 처리한다배열에서 원래 이중 for문으로 O(N^2)에 처리되는 작업을 2개 포인터의 움직임으로 O(N)의 시간복잡도로 단축 시킬 수 있다이분탐색 알고리즘과 유사한 방식이다 동작 방식왼쪽 left, 오른쪽 right 또는 start, end 이런 식으로 포인트의 변수 이름을 지정한다조건은 항상 두 포인터의 관계는 left 1. 초기화 두개의 포인터를 초기화 한다, 이 포인터들은 배열의 시작과 끝 또는 특정 위치에서 시작할 수 있다 2. 반복 처리 반복문을 사용하여 두 포인터가 특정 조건을 만족할 때까지 ..
-
OAuth2.0 이란 ?카테고리 없음 2024. 6. 13. 16:30
이 글은 본격적으로 프로젝트하기 전에 OAuth2.0의 이론을 공부하고 작성한 글이다 인증과 인가 왜 나왔을까? A라는 서비스가 있다 유저는 A 서비스를 이용하기위해 로그인을 하려고한다 그래서 구글 Id와 패스워드를 A 라는 서비스에 넘겼다 A 서비스는 구글에 로그인을 시도하였다 로그인 성공한 뒤 사용자 정보를 받고 유저에 서비스를 제공 했다이런식으로 진행이 되는데 하지만! 여기에는 큰 문제가 있다 1. 유저 입장에서는 A 서비스를 신뢰 할 수 없다유저가 A 서비스에 구글 Id와 패스워드를 줌으로써 A 서비스가 유저의 구글 정보를 이용해서 어떤 정보를 가져오고 악용할지 모르기 때문이다2. A서비스 입장에서는 큰 부담을 가지게 된다A 서비스에서 유저의 구글 Id와 패스워드를 직접 관리하는건 엄청난 부..