안녕하세요 토비님 궁금한점이 생겨 질문을 남깁니다. 예제를 진행하실때 정적팩토리 메서드를 통해 객체를 반환할때 생성자를 통하지않고 바로 멤버변수에 값을 넣어 반환하는걸 사용하셨는데 public static Member register(MemberRegisterRequest createRequest, PasswordEncoder passwordEncoder) { Member member = new Member(); member.email = new Email(createRequest.email()); member.nickname = requireNonNull(createRequest.nickname()); member.passwordHash = requireNonNull(passwordEncoder.encode(createRequest.password())); member.status = MemberStatus.PENDING; member.detail = MemberDetail.create(); return member; } 이게 가능한 원리는 이해를 했습니다만 AI와 이야기하다보니 아래와 같은 이유를 제시하면서 생성자를 통한 반환을 강력 추천하더라구요 부분 초기화 위험 : 생성 직후 한동안 불완전 상태일 수 있어요. (중간에 예외가 나면 더더욱) final 을 못 씀 : 생성자 밖 대입이 필요하니 final 로 못 고정합니다(불변성/스레드 가시성 이점 상실). 검증 누락 가능성 : 검증/정규화가 흩어지기 쉬움 → 생성자 경로에 모으는 게 안전. 토비님 생각은 어떠하신지 궁금합니다.
안녕하세요! 강의 잘 듣고 있습니다. (3.2) Zustand 기본 사용법 1 강의의 9분 21초경 에서 궁금한 점이 생겨 질문드립니다. 강의에서 get 메서드는 store(객체) 전체를 반환 한다고 설명하셨습니다. 그리고 set 메서드는 인자로 전달된 객체의 프로퍼티만을 갱신 한다고 하셨는데요. 그런데 아래 코드처럼 보면, set 내부에서는 따로 get() 을 호출하지 않아도 count 값을 바로 참조해 업데이트하고 있습니다. increase: () => { const count = get().count; // 여기서 store의 count 프로퍼티를 가져온다 set({ count: count + 1 }); // 그런데 여기서는 count를 직접 사용할 수 있다? } 제가 이해하기로는 store의 값을 변경하기 위해 프로퍼티를 참조할 때에도(여기서는 count: ) 먼저 get() 으로 현재 store의 참조를 얻은 뒤 수정해야 할 것 같은데, set({ count: count + 1 }) 처럼 직접 count를 갱신할 수 있는 이유 가 궁금합니다. 즉, set 은 내부적으로 get() 을 다시 호출해서 현재 store 상태를 알고 있는 건가요? 아니면 set 이 store 객체의 참조를 이미 가지고 있어서 가능한 건가요?
형 질문이 있어! 형 강의 너무 고마워! 배치에서 리모트 파티션 사용중인데 리모트 파티션을 전달에 쓰이는 내부 큐가 있는걸로 알고 있어! 그 큐가 GC 가 안되어 1주일 정도 넘으면 OOM 이 떨어지는거 같아! 혹시 무언가 놓친게 있을까?? 설정이나 아니면 필요한 부분이? 답변 부탁해!
강의 정말 잘 들었습니다! 혹시 아래 내용들을 추가해주실 계획이 있으실까요? 예외 처리 파트에서 Checked Exception & Unchecked Exception 관련 간단한 언급 StringBuilder & StringBuffer 설명 시, String Constant Pool 개념에 대한 보충 별개로 네트워크 강의 부분에서도 HTTP 버전별 특징 과 Keep-Alive 지원 여부 에 대한 설명 추가 지금도 매우 훌륭한 강의이지만. 위 내용이 포함되면 취준생 입장에서 조금 더 많이 도움을 받을 수 있을 것 같습니다. 혹시 고려해주실 수 있을까요? 감사합니다!
출력값 str1==str2: true str1==str2: false 이부분 str2==str3: false 이게 맞죠? int형과 integer의 동일한 값은 ==나 equals 모두 true이지만 int와 int / integer와 integer끼리의 -128~127 외의 값은 ==로 비교 했을 때 false double은 == 비교 값은 모두 false new로 새로만든 생성자의 데이터 값은 값은 동일하여도 메모리 주소의 값이 달라서 ==와 equals(메서드 지정x)은 모두 false이며 같게 하려면 본 동영상 8분30초 부분 메서드와 같아야 equals가 true가 나오는 거죠? 처음 equals가 값만 같으면 ture라고 생각했는데, new생성자는 값이 같아도 메모리 값이 달라서 메서드가 없으면 equals도 결과 값이 false가 나오네요 처음 str="hello"가 같은 메모리 주소를 가르켜 equals메서드가 따로 없어도 ture가 나온다는 점을 잘 알아야 겠네요
33강에 27-30분대를 보면 SecurityConfig 클래스에서 .formLogin을 .oauth2Login으로 바꾸고, TodoController 에서 CustomUserDetails로 받았던 사용자 정보를 CustomOAuth2User 로 바꾼 것으로 보이는데,, 일반 로그인 시에 사용할 로직과 소셜 로그인 시에 사용할 로직을 둘 다 두지 않고, 소셜 로그인 하나만 사용하는 것으로 진행하려고 바꾸는건가요??
안녕하세요. 영상 10:00쯤(정확히는 10:39)에 printf(*(*ptr_b+1)); 부분 설명해 주실 때 *ptr_b+1은 ptr_b주소에서 char크기만큼 증가시키는거라고 설명해 주셨습니다. 그런데 이전 영상에서는 출력할때 포인터변수명 앞에 *(별표)를 붙이면 주소가 아닌 값을 가져오는거라고 설명해 주셨는데, 여기서는 왜 값이 아닌 주소를 불러오는건지 문의드립니다.
1. 현재 학습 진도 몇 챕터/몇 강을 수강 중이신가요? 여기까지 이해하신 내용은 무엇인가요? 2. 어려움을 겪는 부분 어느 부분에서 막히셨나요? 코드의 어떤 로직이 이해가 안 되시나요? 어떤 개념이 헷갈리시나요? 3. 시도해보신 내용 문제 해결을 위해 어떤 시도를 해보셨나요? 에러가 발생했다면 어떤 에러인가요? 현재 작성하신 코드를 공유해주세요 안녕하세요 강의 잘 보고 있습니다. 저는 강의를 보고 아래와 같이 이해를 했습니다. 1.API 별 실행 쿼리 모니터링 구현 2.그러면, 모든 api 엔드포인트에 대한 쿼리 min , max값을 알 수 있음. 질문1 근데, 그렇게 되면 실제로 서비스에 필요한 코드와 모니터링 코드가 불필요하게 섞이는 거 아닌가요? 왜냐하면, 실제 모니터링이라고 하면 서버를 유지보수할 때, 필요한 데이터를 실시간으로 받아와서 시각화한다는 것으로 이해를 했습니다. 그런데 "API 별 실행 쿼리 모니터링 구현"은 서버의 유지보수에 필요한 모니터링 기능이 아니라, 1번만 딱 실행되면 되는데 이 부분이 왜 모니터링 구현으로 분류가 되는지 잘 모르겠습니다! 질문2 API 별 실행 쿼리 모니터링 구현 부분에서, 실무에서도 "API 별 실행 쿼리 모니터링을 구현"해서 사용하는게 맞나요? 잘은 모르겠지만, 쿼리 분석이나 다른 방법이 있을 것 같은데 왜 이 부분이 서비스 코드 내에 포함을 시키면서까지 모니터링의 영역으로 분류가 되는지 잘 모르겠습니다 ! 질문3 만약에 실무에서는 해당 방법을 잘 사용하지 않는다면 API 별 실행 쿼리 횟수를 보통 어떤 식으로 측정을 하는건가요??? 감사합니다 ! 이렇게 구체적으로 알려주시면, 더 정확하고 도움이 되는 답변을 드릴 수 있습니다!
안녕하세요, nullable 프라퍼티가 없다면 null를 방어하는 방식에 대해 궁금한 점이 있어 질문남깁니다. 14. Member 도메인 로직 개발 - 생성자에 requireNonNull() 사용 15. 스프링을 이용한 널(null) 안정성 확보 - SpitBugs 플러그인 - package-info 에서 @NonNullApi 이렇게 세가지 방법을 배웠는데요, SpitBugs 플러그인이 "빌드과정에서 정적 분석을 하여 애노테이션 의미와 부합하지 않으면 에러를 내준다" 라는 말씀에 " 그럼 도메인에 Nullable 프라퍼티가 없으면 requireNonNull() 사용 없이 단순히 @NonNullApi + SpotBug만 사용해도 되지 않을까..? " 의문이 들었습니다. 3가지 모두 사용하는게 Null 방어에 괜찮을까요? 아니면 제가 이해한 대로 SpotBug 플러그인 + @NonNullApi 로만 사용해도 충분할까요?