-
Notifications
You must be signed in to change notification settings - Fork 0
3주차 일지 김규원
ThreadPool을 재사용하는 경우 메모리 누수 문제가 발생할 수 있으므로 반드시 remove 메소드를 사용해야 합니다. JVM에서 ThreadLocal은 어디에 저장될까요? Thread는 각자의 스택 영역에 존재하며, ThreadLocal은 해당 Thread의 ThreadLocalMap을 사용합니다. 결론적으로 모든 참조 주소는 스택 영역에 있지만 실제 인스턴스는 힙 영역에 존재합니다.
getBytes()를 호출하는 순간 UTF-8로 인코딩되어 3바이트가 됩니다. 반면, char[]에 저장될 때는 UTF-16으로 인코딩되어 2바이트가 됩니다.
개발자 글쓰기 커뮤니티를 통해 2주에 한 번씩 기술 블로그에 글을 올렸었습니다. 확실히 글 쓰는 실력이 늘긴 했지만 여전히 제 블로그는 깔끔하게 정보를 전달하지는 못한다는 느낌이 강했습니다. 이번 특강을 통해 다시 한번 어떻게 써야될지 공부를 해보고, 특히 라이터님께 평소의 고민을 여쭤보고 해결할 수 있어 좋은 시간이었습니다.
관련 PR
요구사항이 계속 변하는 와중에 클래스를 우아하게 유지하는 것은 쉽지 않았습니다. 마지막에는 코드가 중구난방이 되어 스스로도 코드를 찾기 힘들었습니다. 그래서 중간에 리팩토링을 진행하며 각 클래스가 어떤 역할을 해야 하는지 고민했습니다. 이전부터 클래스 책임이 제대로 나눠지지 않아 스트레스를 받았는데, 리팩토링을 통해 만족스러운 코드를 얻을 수 있었습니다.
return new HttpResponse.Builder(request, HttpStatus.FOUND)
.redirect(LOGIN_FAIL_PAGE)
.build();
빌더 패턴을 언제, 어떻게 사용해야 할지 고민이 많았습니다. 물론 언제든지 사용하면 깔끔해지지만, 제한된 시간 내에 꼭 써야 할 때를 파악하기 어려웠습니다. 이번 미션을 진행하며 HttpResponse에 선택적 파라미터가 많아 생성자 정의가 복잡해질 수 있음을 깨닫고 빌더 패턴을 도입했습니다. 필수적인 값은 빌더를 호출할 때 파라미터로 받아내도록 하여, 결과적으로 깔끔한 코드를 얻을 수 있었습니다.
@ParameterizedTest
@CsvSource({"Host:localhost", "Host:localhost", "Host: localhost", "Host: localhost "})
public void 헤더의_값_양옆에_공백이_존재하는_경우_적절히_파싱된다(String header) throws IOException {
BufferedReader br = new BufferedReader(new StringReader("GET /index.html HTTP/1.1" + LINE_SEPERATOR + header + LINE_SEPERATOR + "Connection: keep-alive" + LINE_SEPERATOR + LINE_SEPERATOR));
HttpRequest httpRequest = processor.parseRequest(br);
HttpHeaders headers = httpRequest.getHeaders();
assertEquals("localhost", headers.get("Host"));
}
이번 과제에서 시간이 오래 걸렸던 이유는 프로토콜 스펙을 지키기 위해서였습니다. 직접 읽으며 들어오는 HTTP 프로토콜이 잘못되었을 가능성을 고려하고, 이를 테스트를 통해 검증하느라 시간이 많이 소요되었습니다. 하지만 결국 잘 마무리했고, 과제 리뷰 시 프로토콜 스펙을 지켜야 한다는 언급을 들었을 때 헛된 곳에 시간을 투자하지 않았음을 느꼈습니다.
이번 주는 체력적으로 고갈됨을 느꼈습니다. 무리해서 다른 공부까지 진행하면서 운동을 전혀 하지 못했기 때문입니다. 아무리 바빠도 운동은 꼭 하자는 주의인데, 이를 지키지 못해 아쉽습니다. 다음 주에는 퇴근하면서 헬스장을 꼭 들를 계획입니다. 매주, 매일 생각하는 것이지만, 저는 제가 딱 필요한 교육을 받고 있습니다. 스스로 부족하다고 생각했던 부분을 정확히 공부하고 있어, 다소 아프지만 제대로 치료받는 느낌이 듭니다.