til
-
기술 면접 스터디 - 5일차(프로세스, 쓰레드, TCP, UDP)[기술 면접 준비] 2023. 3. 31. 17:46
Q. 프로세스와 스레드의 차이에 대해 설명해 주세요. A. 프로세스는 운영체제로부터 CPU를 할당받고 프로그램이 실행되고 있는 상태를 말하며, 스레드는 이 프로세스 안에서 실행되는 흐름단위를 말합니다. 프로세스는 운영체제로 부터 Code, Data, Stack, Heap 영역을 할당받습니다. 스레드는 프로세스의 메모리 중에서 Stack 영역만을 독립적으로 갖고, Code, Data, Heap 영역은 다른 스레드와 공유하게 됩니다. 멀티프로세스는 하나의 응용 프로그램을 여러개의 프로세스로 구성하여 각 프로세스가 하나의 작업을 처리하도록 하는 것이며, 멀티 스레드는 하나의 응용 프로그램을 여러개의 스레드로 구성하여 각 스레드가 하나의 작업을 처리하도록 하는 것 입니다. https://cocoon1787.ti..
-
기술 면접 스터디 - 2일차(DI, Index)[기술 면접 준비] 2023. 3. 28. 13:57
Q. DI(Dependency Injection)에 대한 설명과 해당 기술의 장점에 대해 설명해주세요. A. 객체를 사용하기 위해서 의존성 또는 의존관계를 주입 받는다는 개념으로, 객체를 클래스 내부에서 직접 생성하는 방식이 아닌, 외부에서 생성 후 주입시키는 방법을 말합니다. 이때 의존관계란, A라는 객체가 B객체를 알고있고, 만약 B가 변경되면 A에도 영향을 미친다면 A와 B는 의존관계에 놓여있다 라고 표현합니다. 스프링에서는 Bean 정보를 바탕으로 컨테이너가 의존관계를 자동으로 연결해줍니다. DI 기술의 장점으로는 특정 객체가 다른 객체에 의존하는 의존성으로부터 격리시켜 코드 테스트에 용이하다. 객체 끼리의 결합도가 줄어든다. 코드를 확장하거나 변경할 때 영향을 최소화 한다(추상화). 가독성이 높..
-
[TIL] 20230302일의 기록TIL(Today I Learned) 2023. 3. 2. 20:41
*20230302의 기록 벌써 부트캠프에서 하는 마지막 프로젝트를 마무리 하기까지의 시간이 2주도 채 안남았다. 최종 프로젝트라고 생각하니 아직 많이 부족하고 그로인해 마음의 여유도 없어서인지 그동안 블로그에 신경을 쓰지 못했다. 따라서 중간기록 삼아 이번 글을 작성해보려 한다.(그냥 일기라 생각하고 쭉 적을거라 글이 길어질 예정 ^^!) 이번 프로젝트의 주제는 '개발자들을 위한 커뮤니티 만들기'이다. 현업 개발자나 예비 개발자, 혹은 누구든지 개발에 관심있는 사람들끼리 소통과 지식공유를 할 수 있는 커뮤니티이다. 기본적인 커뮤니티의 기능인 회원가입 / 로그인, 글 작성, 조회, 수정, 삭제 기능을 가지고 있고, Q&A 게시판에서는 네이버의 지식in 처럼 질문글을 쓴 작성자가 포인트를 걸고, 답변 작성자..
-
[TIL] 카테고리 별 기프트 카드 조회 컨트롤러 수정하기TIL(Today I Learned) 2023. 2. 16. 16:37
*20230216의 기록 어제 카테고리별로 기프트 카드를 조회하는 API를 구현하는데, 바로 전 게시글을 보면 알 수 있듯이 GiftCardCategory 는 Enum 클래스이며, @PathVariable 형식으로 이넘타입을 받는 다는 사실이 너무 찜찜했다. 그래서 생각해 낸 방법이 Enum의 생성자에 매개변수로 Long 타입의 categoryId 를 갖게 해주자는 것이다. 그리고 categoryId의 값을 이용하여 Enum 상수 객체를 반환해주는 static 메서드를 생성해주었다(서비스 단에서 이 메서드를 이용하여 Enum 상수 추출 후 GiftCardRepository에서 findByEnumType(category)을 이용하여 해당 카테고리를 가진 값들 가져옴). 따라서 변경된 GiftCardCate..
-
[TIL] Spring Boot 의 Ambiguous handler methods mapped for 에러TIL(Today I Learned) 2023. 2. 15. 20:05
*20230215의 회고 오늘도 어김없이 팀프로젝트 진행하면서 작성한 API 가 문제없이 잘 돌아가는지 포스트맨으로 테스트를 진행하던 중, 'Ambiguous handler methods mapped for ~~' 라는 에러 메세지를 마주하게 되었다. 구글링을 해본 결과, 중복된 API가 존재해서 이러한 오류가 발생했다고 한다. 그래서 내가 짠 코드를 살펴본 결과 다음과 같은 문제점이 있었다. 두 메서드 모두 @GetMapping 이며 "/gift-card/{파라미터}" 형식의 API를 가지고 있었다. 나는 @PathVariable로 파라미터를 받는 타입이 Enum 과 Long 으로 다르기 때문에 문제가 없을 거라고 안일하게 생각했다. 그러나 스프링 부트에서는 @PathVariable 로 받는 파라미터의..
-
[TIL] @Builder 와 @NoArgsConstructor, @AllArgsConstructorTIL(Today I Learned) 2023. 2. 14. 17:15
*20230214의 회고 오늘 페이징 처리를 하기 위해 Page 로 받아온 것을 Page 로 변환해야 하는 경우가 생겼다. 따라서 빌더패턴을 이용하여 로직을 작성하던 중 오류가 발생하는 것을 겪었다. @Getter 어노테이션이 있어서 값은 분명 다 받아올 수 있을텐데, 왜 값을 인식을 못하는걸까... 정말 난감했다. 그렇게 열심히 구글링을 해본 결과, @Builder 와 @NoArgsConstructor 를 함께 사용하려면 꼭! @AllArgsConstructor 가 함께 있거나 직접 모든 멤버변수를 인자로 받는 생성자를 직접 생성해주어야 한다고 한다!!!!!!! 또한 @Builder 를 사용할 때 @NoArgsConstructor 뿐만 아니라 손수 만든 다른 생성자가 있다면, 그 때도 모든 필드를 갖는..
-
[TIL] Builder 패턴 사용하기TIL(Today I Learned) 2023. 2. 13. 23:54
*20230213의 회고 팀 프로젝트를 진행하던 중 생성자로 매개변수를 많이 받는 생성자를 사용하게 되었다. 팀원분들이 이럴 때 빌더패턴을 사용하면 좋다고 말해주셔서, 빌더패턴에 대해 공부하게 되었다. 1. 빌더패턴 이란? 복합 객체의 생성 과정에서 표현 방법을 분리하여 동일한 생성 절차에서 서로 다른 표현 결과를 만들 수 있게 하는 패턴이다. 쉽게 말하자면, 객체를 생성할 때 생성자로 내가 받아야 하는 매개변수의 개수나 종류별로 생성자를 만들어주지 않아도 동일한 생성절차를 거쳐 내가 필요한 생성자만 표현해낼 수 있다는 뜻. 2. 빌더패턴의 장점 필요한 데이터만 설정 가능 생성자의 매개변수의 인자가 의미하는 바가 무엇인지 한눈에 파악 가능 변경 가능성을 최소화 할 수 있음 (setter 사용 X) 3. ..
-
[TIL] Controller 에서 Entity 를 그냥 반환하면 안되는 이유 2가지TIL(Today I Learned) 2023. 1. 30. 20:05
*20230130의 회고 저번 프로젝트를 진행하던 도중 Entity를 Controller에서 그대로 반환하니 계속해서 Entity 를 반환하게 되는 무한루프에 빠지는 모습을 보게 되었다. 그 이유는 Entity 객체가 다른 Entity 객체를 참조하고 있기 때문이었는데, 이를 계기로 Controller 에서 Entity를 그냥 반환하면 안되는 이유에 대해서 정리해보려 한다. 1. Controller 에서는 Entity 를 JSON 으로 변환해서 반환할 텐데, 객체가 객체를 가지고 있으면 계속해서 서로의 toString()을 호출하기 때문에 무한루프에 빠지게 된다. 따라서 Entity를 직접 반환하면 안된다. 2. Entity는 충분히 변경될 수 있다. 만약, 변경된다면 컨트롤러의 API 스펙이 모두 바뀌..