[Java] ResponseEntity<> 사용 이유?
·
Server/Java
ResponseEntity? Java Spring의 문서를 보면 ResponseEntity를 다음과 같이 이야기한다. Extension of HttpEntity that adds an HttpStatusCode status code. Used in RestTemplate as well as in @Controller methods. HttpStatusCode 상태 코드를 추가한 HttpEntity의 확장이라고 설명하고 있다. HttpEntity public class HttpEntity { public static final HttpEntity EMPTY = new HttpEntity(); private final HttpHeaders headers; @Nullable private final T bod..
[원티드 프리온보딩] AWS - 0
·
Server/Infra
AWS? On-premise vs Cloud Computing On-premise: 서버 팜, 클라우드가 아닌, 개인 또는 기업의 서버를 자체적으로 보유한 전산실 서버에 직접 설치하여 운영. Cloud Computing: 인터넷을 통하여 데이터를 저장하거나 데이터베이스, 서버, 네트워킹, 소프트웨어와 같은 도구, 애플리케이션 등 다양한 서비스를 제공 Cloud Computing의 이점 서버 관리가 간편해짐. 트래픽이 증가하면 확장하고, 감소하면 축소하는 것이 상대적으로 유연하다. 사용 기반으로 과금하기 때문에 비용 절감이 가능하다. AWS 인프라의 전체적인 모습 인프라 관련 AWS API Gateway, AWS S3, AWS ELB, AWS CloudFront, AWS Secret Manager, 스냅샷..
면접 회고 - 1
·
회고록/Archive
프레임워크란 무엇인가? 개발을 하기 위한 틀. 다 만들어지는 것(라이브러리)를 쓰는 것이 아니라, 내 것을 만들기 위한 도구들을 다 준비해놓은 틀의 느낌. 개발자가 선택해서 내 프로그램을 만들어가면 된다. 이미 필요한 것들을 다 만들어 놨기 때문에 불필요한 작업을 줄일 수 있고 기능 구현에 집중할 수 있다. 트랜잭션에 대해 설명해 주세요. 컴퓨터 과학에서 트랜잭션 처리란 개별적인, 분할할 수 없는 작업. 각 트랜잭션은 완전한 단위(작업 단위)로 성공하거나 실패해야 한다. 즉, 하나의 비즈니스 로직으로 트랜잭션이 묶였다면 그 안에서 단 하나라도 오류가 발생할 경우 모두 실패처리(롤백)를 해야 한다. 비즈니스 로직 내에 있는 모든 로직이 성공해야 성공이라고 할 수 있다. 동기, 비동기에 대해 설명해 주세요...
[Java] Builder 패턴이란? @Builder
·
Server/Java
Lombok을 사용하면서 @Builder 어노테이션을 꽤 많이 사용하게 된다. 교육기관에서는 별 다른 이유 없이 "편하니까" 사용하라는 식으로, 별 다른 설명 없이 @Builder를 사용하게끔 종용한다. 개인적으로는 Setter를 비하기 위해 Builder를 사용하자 라는 글을 보고, 정말 특별한 이유가 없다면 최대한 Builder를 사용해서 객체를 생성하게 되었다. 이펙티브 자바에 보면 왜 Builder를 사용해야 하는지 이유를 알려주고 있다. 1. 매개 변수가 많은데 생성자 패턴을..? 필드에 변수가 적다면 생성자를 이용하여 객체를 생성할 수 있다. public class ConstructorEx { public class ConstructorEx { private final String Hello;..
[Spring] Lombok @AllArgsConstructor, @NoArgsConstructor, @RequiredArgsConstructor
·
Server/Java
얼마 전 @Controller, @Service, @Repository등 @Component에 관한 어노테이션에 대한 내용을 정리하고, 심심해서 Lombok 어노테이션인 @AllArgsConstructor, @NoArgsConstructor, @RequiredArgsConstructor은 어떤 차이가 있을까 궁금증이 생겼다. 이런 궁금증이 생기면 안됐다. 손대면 안 되는 것을 손대고 말았다. 각 어노테이션 어노테이션을 보면, 무엇이 다를까. 해당 어노테이션에 맞춰 생성자를 다르게 생성해주고 있었으니, 어떤 로직이 과연 다르게 만들고 있는 걸까? AllArgsConstructor @Target(ElementType.TYPE) @Retention(RetentionPolicy.SOURCE) public @in..
이진탐색 - Lower bound, Upper bound
·
CS/알고리즘
Target으로 찾는 값이 한 배열 안에 여러 개 존재할 때, target 값 이상의 값이 최초로 나오는 위치를 Lower Bound라고 한다. Target을 초과하는 값 중, 가장 인접한 위치를 Upper Bound라고 한다. Target보다 같거나 작은 숫자들 중, target 값이 마지막으로 나오는 위치를 Custom Bound라고 한다. Lower Bound public static int lowerBound(int[] arr, int target) { int left = 0; int right = arr.length - 1; int minIdx = arr.length; while (left = target) { right = mid - 1; minIdx = Math.min(mid, minIdx)..
[Spring] @Controller, @Service, @Repository 어노테이션 차이점. 나만의 @Component 어노테이션 생성
·
Server/Spring&Spring Boot
공부 이유 개발을 하다 보면 @Controller, @service, @Repository 어노테이션을 각 계층에 맞게 붙여서 사용하게 된다. 여러 교육을 받으면서 이 어노테이션이 무슨 차이를 가지고 있는지 설명을 들은 적이 없다. 그냥 Controller Class에는 @Controller 붙이고, Service Class에는 @Service 붙이라는 이야기를 듣고, 사용하기 급급했던 것 같다. 추후에 @RestController를 알게 되면서 @Controller와 @RestController의 차이를 개인적으로 공부하게 되었지만.. 어노테이션 비교 각 어노테이션을 타고 어떻게 구성되어 있는지 한 번 알아보자 @Controller @Target(ElementType.TYPE) @Retention(Re..
이진탐색
·
CS/알고리즘
이진탐색 찾아야 하는 수의 범위 중 가운데의 값과 찾고자 하는 값을 비교하여 대소 관계에 따라 특정 구간으로 이동하는 것을 반복. 전제 숫자들이 좌에서 우측으로 커진다는 전제에서 가능하므로, 숫자들은 항상 정렬되어있어야 한다. 가운데의 숫자를 선택하고 해당 숫자보다 크다면 우측(최소 값 위치를 타겟 숫자 + 1로 변경, 최대 값 위치 유지) 작다면 좌측 범위를 선택하게 되는 것(최소 값 위치 유지, 최대 값 위치를 타겟 숫자 -1로 변경) 시간복잡도는 구간의 길이가 1이 될때까지 계속해서 반으로 감소하는 것을 반복하기 때문에, 루프는 약 log2​N 번 돌게 된다. 루프 내부 연산의 시간 복잡도는 O(1)이기 때문에, 자연스럽게 시간복잡도는 O(1∗logN)=O(logN) 이진 탐색을 사용 하는 이유는 ..
코드플리
코드 플레이 리스트