![](http://i1.daumcdn.net/thumb/C148x148/?fname=https://blog.kakaocdn.net/dn/cFY7dD/btrTzliXKaI/dH2HFs1Gcanb1tg959KXh1/img.png)
DTO란 이름 그대로 프로세스 사이에서 데이터를 전송하는 객체이다. 클라이언트 - 서버 간의 반복된 요청/응답에 따른 지연시간을 줄이기 위해 여러 요청에 대한 데이터를 한 번에 담는 객체로서 도입되었다. 조금 더 구체적으로는 클라이언트 - 서버 간의 요청/응답에 따르는 반복되는 직렬화를 맡아하는 객체라 할 수 있으며, DTO를 구성하는 원칙은 다음과 같다. DTO는 가능하면 POJO(Plain Old Java Objects)로 생성한다. 순수하게 데이터를 저장하는 역할과, 데이터에 대한 getter(), setter() 메서드만을 가진다. 저장, 검색, 직렬화, 역직렬화 로직을 제외한 어떠한 비즈니스 로직도 갖지 않는다. 직렬화 - 서버가 DTO 같은 Java 객체를 JSON 형식으로 변환하는 것 역직렬..
![](http://i1.daumcdn.net/thumb/C148x148/?fname=https://blog.kakaocdn.net/dn/UpYLy/btrTwB0VnRn/ceQEhXSBP0MxbhRdcj7ei1/img.png)
ResponseEntity는 HttpEntity를 상속받는 클래스로서, HTTP 응답의 상태 코드, 헤더와 바디를 포함한다. 간단하게 말하면 사용자의 요청에 대한 서버의 응답을 한 번 감싸주는 역할을 하며, 조금 더 구체적으로 말하자면 결과 데이터와 상태 코드 등을 직접 제어하는 역할을 한다. 바디뿐 아니라 응답 상태 코드와 헤더 값을 설정할 수 있어 세밀한 제어가 필요한 경우 사용된다. 추가로 헤더와 바디에는 각각 HTTP header - 요청/응답에 대한 요구사항 HTTP body - 요구사항에 관련된 내용 이 적혀있다. 추가의 추가로 상태코드는 앞자리에 따라 각각 100번대 - 조건부 응답, 요청을 받았으며 작업을 계속한다. 사실상 사용되지 않음 200번대 - 요청 수신 및 이해와 승낙 성공 300..
![](http://i1.daumcdn.net/thumb/C148x148/?fname=https://blog.kakaocdn.net/dn/G7uN3/btrTvW5dW09/KpaaSygd9DNER3LbwEjHR1/img.png)
REST(ful) API API란 쉽게 말해 클라이언트를 위해 서버와의 소통법을 적어둔 매뉴얼이다. 이 매뉴얼의 디자인에는 BEST Choice가 존재하며, 이를 REST API라 부른다. 중간 내용을 건너뛰고 간단하게 정리하면 REST API란 규칙을 통한 리소스 중심의 올바르고 유일한 엔드포인트 작성 적절한 HTTP 응답 코드와 리소스에 대한 정보 기재 CRUD에 적합한 HTTP 메서드(POST, GET,...) 사용 응답에 리소스에 대한 링크 삽입 을 모두 만족하는 API를 말한다. Spring MVC의 REST API 엔드포인트(애너테이션) @RestController = @Controller + @ResponseBody, 컨트롤러 클래스에 달아준다. @Request/ResponseBody - H..
![](http://i1.daumcdn.net/thumb/C148x148/?fname=https://blog.kakaocdn.net/dn/2t2Wf/btrTzb8gTe9/KwDwfUyDrEy4lVaM75Z9PK/img.png)
DI(의존관계 주입)는 특정 객체가 의존할 객체나 메서드를(즉, 의존관계를) 해당 객체 외부에서, 정확하게는 스프링 컨테이너에서 주입받는 디자인 패턴이다. 여기서 A가 B에게 의존한다는 말은 B의 구성이나 로직이 변하면 A에게 영향을 끼칠 가능성이 있는 관계라는 뜻이다. 이어서 주입이란 의존성을 사용하려는 객체에게 전달하는 것이라 받아들이면 되며, 디자인 패턴이란 공통적인 문제에 대한 재활용 가능한 솔루션이라 생각하면 된다. 또한 스프링 컨테이너란 객체의 생명주기를 관리하는 모듈이며, 스프링 컨테이너가 관리하는 객체를 빈(Bean)이라 부른다. 이는 스프링의 핵심 원칙인 IoC를 구현하는 수단이기도 하며, 객체의 설계와 사용이라는 관심사를 분리해 느슨한 결합으로 의존도를 낮추는 것이 그 목적이다. 구체적..
![](http://i1.daumcdn.net/thumb/C148x148/?fname=https://blog.kakaocdn.net/dn/cGmTy7/btrTvlcnbO5/Tn18irRoC6gvOVyzDpX0y0/img.png)
목차 CI, CD, 배포 자동화는 쉽게 말하면 애플리케이션 빌드 및 배포의 자동화를 통해 고객에게 더 짧은 주기로 제품을 제공하는 방식을 아우르는 개념이다. 하나씩 간결하게 보자. CI - Continuous Integration CI는 직역하면 지속적 통합이라는 의미가 된다. 여기서 통합이란 일반적으로 기획부터 테스트까지를 아우르는 개발자의 각 작업에 대한 통합이자 소스코드와 버전, 작업환경의 통합을 가리키며, 지속적이라 함은 코드의 변경사항이 지속적으로 빌드 및 테스트된 뒤에 공유 레포지토리로 통합되는 것을 의미한다. CD - Continuous Delivery or Continuous Deployment CD는 약어에 따라 지속적 제공, 혹은 지속적 배포라는 의미를 갖는다. CI 이후의 추가단계, ..
면접 답변용으로 간결하게 정리. Java를 사용하는 이유 객체지향 진영의 대표적인 언어이다. 캡슐화(데이터를 클래스로 묶어 사용, 제한자를 통한 정보 은닉), 상속(재사용성 증가, 단일 상속만 가능- 죽음의 다이아몬드) 추상화(쉽게 말해 상속의 반대, 공통사항을 추출 - 중복 코드 제거), 다형성(오버라이딩@Override, 오버로딩) JVM을 이용해 운영체제에 독립적으로 구현 및 실행할 수 있다. 역시 운영체제에 독립적인, 자바API를 사용한 멀티스레드 구현 GC를 통한 자동 메모리 관리 -> 개발속도의 증가 -> 비용 감소 자바, 리눅스, MySQL등이 기본적으로 무료이기 때문에 비용이 적게 든다. 수많은 레퍼런스에서 보장받는 안전성 및 JVM의 직접적인 메모리 관리에 따른 높은 보안 Spring을 ..
목차 두 버전의 비교보단 11에서 추가된 기능 위주로 정리한다. String 클래스에 새로운 메서드 추가 strip(): 문자열 앞/뒤 공백 제거 stripLeading(): 문자열 앞 공백 제거 stripTrailing(): 문자열 뒤 공백 제거 isBlank(): 문자열이 비어있거나 공백만 포함된 경우 true 반환 repeat(n): 문자열을 n번 붙여서 반환 java.nio.file.Files 클래스(파일 처리 클래스)에 새로운 메서드 추가 Path writeString(Path, String, Charset, OpenOption): 파일에 문자열을 작성하고 Path로 반환. OpenOption에 따라 다르게 작동하며 Charset의 기본값은 UTF-8이다. String readString(Pat..
![](http://i1.daumcdn.net/thumb/C148x148/?fname=https://blog.kakaocdn.net/dn/bY5G3L/btrThNnmtXr/4BcpV6RoBKEtosr819RBI1/img.png)
목차 Authentication 인증이란 사용자가 식별정보(Cridential)를 이용해 본인이 맞음을 증명하는 절차이다. 스프링 시큐리티 내부에서는 이를 위해 제법 길고 촘촘한 과정이 이어지는데, 요약에 도전해보자. 당연하게도 사용자가 크리덴셜을 담아 보낸 요청이 필터에 도달하면서 과정이 시작된다. UsernamePasswordAuthenticationFilter 제출된 크리덴셜을 통한 인증을 처리하는 필터이다. 가장 앞에서 크리덴셜만 담은, 인증이 완료되지 않은 토큰을 생성(UsernamePasswordAuthenticationToken) 후 AuthenticationManager 호출. AuthenticationManager 인증을 총괄하는 관리자 인터페이스. 실질적인 인증관리는 해당 클래스를 구현..
![](http://i1.daumcdn.net/thumb/C148x148/?fname=https://blog.kakaocdn.net/dn/JFSMs/btrTh6fSyLG/lK2iELL90mUV5TdkNPz6KK/img.png)
목차 Spring Security Spring Security는 인증, 권한 부여 및 보안 기능을 제공하는 스프링 프레임워크이다. 먼저 사용되는 용어를 간단히 정리하자. User, Principal 인증을 시도하는 주체를 User, 주체의 구체적인 정보(Username ID)를 Principal이라고 한다. 실제로는 혼용돼서 사용되는 듯하며, 보통 Entity 클래스에 그 정보가 담긴다. Authentication 인증은 User, 혹은 Principal이 본인이 맞음을 증명하는 절차를 말한다. 정상적인 인증을 위해 제출하는 식별 정보를 Credential(신원 증명 정보)이라고 한다. Authorization 권한 부여, 혹은 인가는 인증을 통과한 사용자에게 역할(Role)에 따라 특정 리소스에 대한 ..
![](http://i1.daumcdn.net/thumb/C148x148/?fname=https://blog.kakaocdn.net/dn/crYgWx/btrTmZGyBGE/BkjpOrowBngBHTjBdzYGE0/img.png)
목차 어제오늘 JVM의 메모리 구조를 공부하다가 속도와 용량, 일처리 속도의 최적화에 대해 조금 더 알고 싶어서 찾아보게 되었다. 당연하게도 관련 자료가 매우 많고 논문까지 쌓여있는(...) 수준이라 맛보기의 맛보기 정도만 정리하고 가려고 한다. Memory? 메모리는 크게 나누면 Primary Memory와 Secondary Memory로 구분되며, 각 특징은 아래와 같다. Primary MemorySecondary MemoryCPU에 직접 접근이 가능함CPU에 직접 접근이 불가능함Secondary Memory에 비해 상대적으로 속도가 빠름Primary Memory에 비해 상대적으로 속도가 느림임시적(temporary) 메모리이며 일반적으로 휘발성영구적 메모리이며 비휘발성용량 대비 가격이 상대적으로 비..
- Total
- Today
- Yesterday
- 파이썬
- 자바
- spring
- 알고리즘
- 칼이사
- 스프링
- 세계일주
- 남미
- Algorithm
- a6000
- 면접 준비
- 중남미
- RX100M5
- 스트림
- 세계여행
- Python
- 지지
- 유럽여행
- 백준
- java
- 세모
- 맛집
- 야경
- 리스트
- Backjoon
- 여행
- 동적계획법
- BOJ
- 유럽
- 기술면접
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 |