본문 바로가기

전체 글

(89)
Java HashMap 의 동작 원리 (Java 8 이상에서) Map 은  key - value 쌍으로 데이터를 저장하기 위한 자료구조이다.HashMap은 Map의 구현체 중 하나로, 기본적인 아이디어는 다음과 같다. Map은 Key를 통해 Value에 접근할 수 있어야 한다.Key를 해싱해 배열의 index로 사용하고, 거기에 Value를 두면 되지 않을까?이 아이디어를 구현하기 위해, HashMap은 객체의 hashCode() 값을 사용하여 Key를 배열의 index에 매핑한다.  HashMap이 Key를 index로 매핑하는 법HashMap은 객체의 hashCode() 값을 사용한다.HashMap은 Key를 배열의 index로 매핑시키기 위해 객체의 hashCode() 값을 length와 함께 연산해 index를 구한다.왜 해시값에 length를 사용한 추가 ..
우아한테크코스 7기 백엔드 최종 합격 후기 우아한 형제들에서 운영하는 개발자 교육 프로그램인 우아한테크코스 7기에 웹 백엔드로 합격했다.지원하기부터 1차, 최종 합격까지의 과정을 정리해보고자 한다. 우아한테크코스를 지원한 이유최근 1년 동안 나는 프로그래밍을 혼자 공부해 왔다.멋쟁이사자처럼 12기 서버파트장을 하며 얻은 것들도 많았지만, 아무래도 실력적으로 성장하는 데에는 한계가 있었다. 혼자 서버 파트를 책임지다 보니 프로젝트를 하는 데에 있어서 백엔드적인 의사결정을 전부 혼자 해야 했다. 이 과정에서 나름대로 장단점을 비교한다거나, 다른 좋은 해결책은 없는지 고민했다. 하지만, 함께 걸어가는 동료가 없다는 것이 아쉬웠고 내 지식과 의사결정이 올바른가에 대한 확신을 가질 수 없었다. 이 부족함을 채우기 위해 우아한테크코스의 프로젝트 레포지토리..
RestInterceptor 개발기 - build() 메서드 제거와 v1.0 릴리즈 RestInterceptor 가 뭐지?  ->  https://dev-allday.tistory.com/90 기존에 아쉬웠던 점들과 사용성을 개선해 1.0 버전을 릴리즈했다.UML 가장 큰 변화 - build()가장 큰 변화는 RestInterceptorRegistry를 통해 RestInterceptor를 등록할 때 반드시 호출해야 했던 build() 메서드가 사라졌다는 것이다. 기존에 RestInterceptorRegistry는 RestInterceptorRegistry 리스트를 필드로 가지고 있다가 build() 메서드가 호출되어야만 RestInterceptor의 설정들을 실제 InterceptorRegistry로 반영했다.@Configuration@RequiredArgsConstructorpubli..
RestInterceptor 개발기 - 패턴 매칭 이슈 문제점RestfulPatterns는 match() 시 자신의 Path와 HttpMethod에 해당하는 HTTP Request에 true를 반환해야 한다.기존에는 RestfulPatterns 가 UriTemplate 을 사용하도록 개발했다.public class RestfulPattern { private final UriTemplate path; private final Set methods; private RestfulPattern(final UriTemplate path, final Set methods) { this.path = path; this.methods = methods; } ...}  하지만, 테스트 코드를 작성하는 과정에서 Ur..
Spring 라이브러리 개발기 - RestInterceptor v0.1 개발 배경 Spring 을 사용해 Restful api 서버를 개발하다 보면 Interceptor 를 사용할 때가 있다. Interceptor 를 구현하기 위해 보통 HandlerInterceptor 의 구현체를 구현하게 되는데, 여기엔 두 가지 단점이 있다. 1. CORS 에서 사용되는 Preflight 요청도 Interceptor 를 통과하게 된다. 그러므로, Preflight 요청은 전부 허용하도록 인터셉터 내부에 코드를 넣어야 한다.2. HandlerInterceptor 는 URI 를 기반으로 등록해야 한다. 하지만, Restful api 에서는 URI 와 HTTP Method 를 통해 요청을 구분한다.ex) GET /memos 와 POST /memos 는 다른 요청이다. 그러므로 POST /m..