안녕하세요. 빈약한 도메인 모델에 관하여 질문이 있습니다. 현재 개인적으로 진행하는 프로젝트에서 데이터 홀더 역할정도만 하는 빈약한 도메인 모델이 있습니다. repository에는 테이블의 상태 컬럼을 업데이트하는 메소드가 존재하는데 이를 도메인 모델 내부에 메소드를 만들어 업데이트하고 repository의 save를 통해 엔티티의 상태를 update하는 것이 강의에서 의도한 내용으로 이해했는데 맞을까요? 추가로 이런 경우(비즈니스 로직이 복잡하지 않은)에 꼭 도메인 모델이 없어도 될지 궁금합니다.
일단 자바질문이라 죄송합니다. ㅎㅎㅎ 1. 현재 학습 진도 몇 챕터/몇 강을 수강 중이신가요? 5-2.LINE 인턴 채용 코딩 테스트 입니다. 어떤 알고리즘을 학습하고 계신가요? BFS 내용입니다. 여기까지 이해하신 내용은 무엇인가요? time단위로 체크하기위해 visited list와 for문을 사용하는것을 이해했습니다. 2. 어려움을 겪는 부분 어느 부분에서 막히셨나요? visited에서 Map에 true를 받는 이유가 궁금합니다. 코드의 어떤 로직이 이해가 안 되시나요? visited에서 Map에 true를 받는 이유가 궁금합니다. 어떤 개념이 헷갈리시나요? List<List<Integer>>를 사용 할 수 있을꺼 같은데 map을 사용한 이유가 궁금합니다. 3. 시도해보신 내용 문제 해결을 위해 어떤 시도를 해보셨나요? 강의를 10번정도 다시본거같습니다. 에러가 발생했다면 어떤 에러인가요? 초반에 while문 탈출조건을 잘못설정하여 무한루프가 돌았습니다. 현재 작성하신 코드를 공유해주세요 public static int solution(int c, int b) { int time = 0; Queue<int[]> q = new LinkedList<>(); q.add(new int[]{b, 0}); List<List<Integer>> visited = new ArrayList<>(200001); // [{},{} .... 20만개] for (int i = 0; i < 200001; i++) { visited.add(new ArrayList<>()); } while (c <= 200000) { c += time; if (visited.get(c).contains(time)) { return time; } time++; int qSize = q.size(); for (int i = 0; i < qSize; i++) { int[] cos = q.poll(); int nextB = cos[0]; if (nextB - 1 >= 0) { visited.get(nextB - 1).add(time); q.add(new int []{nextB - 1, time}); } if (nextB + 1 <= 200000) { visited.get(nextB + 1).add(time); q.add(new int[]{nextB + 1, time}); } if (nextB 2 <= 200000) { visited.get(nextB 2).add(time); q.add(new int[]{nextB * 2, time}); } } } return 0; } 이렇게 구체적으로 알려주시면, 더 정확하고 도움이 되는 답변을 드릴 수 있습니다! 😊
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요. 1. 강의 내용과 관련된 질문을 남겨주세요. 2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요. (자주 하는 질문 링크: https://bit.ly/3fX6ygx) 3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요. (질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG) 질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요. ========================================= [질문 템플릿] 1. 강의 내용과 관련된 질문인가요? ( 예 ) 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? ( 예 ) 3. 질문 잘하기 메뉴얼을 읽어보셨나요? ( 예 ) [질문 내용] 영속성 컨텍스트는 1차 캐시와 쓰기 지연 메모리가 있다고 강의에서 배웠습니다. 이 부분은 클라이언트단에서 관리하는 것인지 서버라면 어디에 저장되고 어떻게 관리되는 메모리인지 궁금합니다. (ex. 힙 등)
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문 전에 다음을 꼭 확인해주세요. 1. 강의 내용과 관련된 질문을 남겨주세요. 2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요. (자주 하는 질문 링크: https://bit.ly/3fX6ygx) 3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요. (질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG) 질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요. ========================================= [질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예) 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예) 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예) [질문 내용] 이전에 Spring MVC 강의에서는 한글이 잘 나왔었는데, Java 강의 시 설정을 잘 못 헀는지.. 추가 설정이 필요한건지, 한글이 깨지는 현상이 있어서, 처리법이 따로 있는지 문의 드립니다. Java는 강의 따라하면서 21로 설정 한 상태입니다.
JPA entity와 도메인 모델을 분리하는 케이스에서 데이터 저장 기술이 바뀌는 경우 Spring Data를 사용하면 해당되지 않는다고 하셨는데 JPA에서 MyBatis로 변경하는 경우도 Spring Data로 커버가 가능한가요? 회사에서 JPA로 개발을 진행중인데 MyBatis로 마이그레이션을 해야할수도 있어서 질문드립니다.
카프카 메시지 저장 방식에 대한 질문 카프카에 대해서 잘 알지 못할때 카프카에 메시지가 저장되어 편리하다는 이야기를 들었습니다. 그래서 AWS SQS에서 카프카로 전환하면 별도의 메시지 저장소가 필요 없을 것 같았는데, 강의를 들어보니 장기 보관이 필요하면 결국 따로 저장해야 하는 것 같더라고요. 질문: 장기 보관이 필요한 메시지는 별도 저장소(DB, S3 등)에 저장하시나요? 카프카 자체 저장만으로 충분한 경우와 별도 저장이 필요한 경우를 어떻게 구분하시나요?
[질문 템플릿] 1. 강의 내용과 관련된 질문인가요? 예 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? 예 3. 질문 잘하기 메뉴얼을 읽어보셨나요? 예 안녕하세요 강의 잘 듣고 있습니다. 자원정리에 대한 강의를 듣던 와중에 OS단의 메모리 상황과 실무에서 처리 방법이 궁금하여 질문드립니다. [질문 내용] 강의 내용 자원 정리를 하다가 나는 에러 (CloseException) 등에 대해선 try-catch로 잡은 뒤, log만 남긴 뒤 무시하고 있음 궁금한 점 자원 정리를 하다가 에러가 나면 자원이 정리가 안된 채로 메모리에 남아있을 것 같습니다. 이를 추후 로그를 확인하고 일괄 수동 정리 처리를 하는지, 아니면 보통 자원마다 동작 타임 같은 게 설정되어 있어서 자동으로 정리되기 때문에 신경쓰지 않고 넘어가는지 궁금합니다. 만약 첫번째 질문에서 추후 로그를 확인하고 일괄 수동 정리 처리를 하는게 맞다면, 자원정리 도중 뜬 에러 관련한 것만 로그에서 추출해서 확인한다던지 어떤 방식으로 로그에서 필요한 내용만을 효율적으로 확인해서 처리하는지 궁금합니다. (참고로 이전에 김영한님 강의에서 Logger를 AOP를 이용해 남겨 양식을 통일화 시키고 레벨을 통해 효율적으로 확인하는 방법은 확인하였습니다.)
질문 1. 자바는 인터페이스와 클래스로 설계와 구현을 나눠 유지보수의 효율성을 높이는 언어인데, 함수형 프로그래밍은 언제 쓸까요? 실무에서 함수형을 적용하는 범위/원칙 (불변, 부작용 분리 등)가 궁금합니다! 질문 2. stream vs for-loop 선택 기준이 궁금합니다. 가독성을 위해서 또는 단순 변환 및 집계일 때 이외에도 스트림을 사용하는지, 성능적으로는 어떤 것이 더 좋은지 등도 궁금합니다.
explain을 통한 인덱스 사용여부를 확인하는 방식 외에 실제로 간단한 비즈니스 로직에 다량의 데이터가 세팅되어 인덱스를 테스트해 볼만한 프로젝트가 있을까요? 물론 실제 운영 중인 회산 혹은 개인 프로젝트가 있다면 직접 예측 및 적용해보는 것이 제일 좋겠지만 그렇지 못한 경우도 있기에 여쭈어 봅니다
[질문 템플릿] 1. 강의 내용과 관련된 질문인가요? 예 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? 예 3. 질문 잘하기 메뉴얼을 읽어보셨나요? 예 [질문 내용] 조인을 이용시 on절 뒤에 and를 이용해서 추가 조건절을 이용하는 방식과 where 절에서 조건절을 넣는 방식중 유의미한 성능상에 차이가 있는지 궁금합니다. 추가적으로 어떤 방식이 좀더 정돈된(?) 방식인지도 궁금합니다.
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문 전에 다음을 꼭 확인해주세요. 1. 강의 내용과 관련된 질문을 남겨주세요. 2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요. (자주 하는 질문 링크: https://bit.ly/3fX6ygx) 3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요. (질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG) 질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요. ========================================= [질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예) 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예) 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예) [질문 내용] 안녕하세요. 이번 복합 인덱스3 강의에서 인덱스 활용 팁으로 범위 조건을 IN 절로 바꿔 최적화하는 부분을 설명해 주셨습니다. IN 이 마치 OR 처럼 변화될 수 있다고 설명해 주셨고 실제 쿼리 실행 시에 이를 확인할 수 있었습니다.(강의 시간 18분 경) 그런데 이후 비유해주신 쿼리에서는 UNION ALL 을 사용하셨습니다. 저는 OR 과 UNION ALL 이 동일한 기능을 수행한다 생각했지만 실제로 눈으로 확인하고 싶어서 다음 세가지 쿼리를 모두 EXPLAIN , ANALYZE 해보았습니다. 1) 기존 IN 쿼리 EXPLAIN ANALYZE SELECT * FROM items WHERE category IN ('패션', '헬스/뷰티') AND price = 20000; 2) OR 로 풀어낸 쿼리 EXPLAIN ANALYZE SELECT * FROM items WHERE (category = '패션' AND price = 20000) OR (category = '헬스/뷰티' AND price = 20000); 3) UNION ALL 로 풀어낸 쿼리 EXPLAIN ANALYZE SELECT * FROM items WHERE category = '패션' AND price = 20000 UNION ALL SELECT * FROM items WHERE category = '헬스/뷰티' AND price = 20000; 그 결과 2)의 처리 cost는 1.41, 3)의 처리 cost는 0.7로 나타났으며, 1)은 2)와 동일하게 실행되었습니다. 여기서 다음 의문이 나타났습니다. 1) IN 최적화는 OR 또는 UNION ALL 방식으로 옵티마이저가 상황에 따라 선택하나요? 혹은 OR 방식으로만 처리하나요? 2) OR , UNION ALL 을 모두 사용할 수 있을 때, 언제 각각을 사용하는 것이 더 좋을까요? 그리고 위 경우에서는 왜 UNION ALL 이 더 cost가 작았을까요? 3) 만약 새로운 카테고리가 추가된다면 모든 IN 쿼리에 해당 카테고리를 추가할 수도 있을 것 같습니다. 그래서 애플리케이션 계층(JPA 등으로)에서 category >= '패션' 인 SELECT DISTINCT 쿼리 1번, 해당 값을 통해 IN 에 넣어주는 쿼리 1번, 총 2번 쿼리를 실행하는 방식으로 바꾼다면 기존 쿼리를 수정하지 않아도 괜찮을 것 같은데 실무면에서 어떻게 생각하시는지 궁금합니다! 긴 질문이었습니다. 감사합니다!
75강 인덱스 설계 - 실습 관련 강의 중에 느린 쿼리를 로그 분석을 하거나 성능 테스트를 통해서 실제 쿼리 패턴과 성능을 측정해서 특정 컬럼에 인덱스를 적용해야 한다고 하셨는데요. 로그를 하나씩 확인하면서 각 쿼리별로 비교하기가 조금 불편하고 어려울 것 같습니다. 또한 몇가지 쿼리 케이스만으로 성능을 일반화하기도 쉽지 않을 것 같구요. 실무에서 느린쿼리나 다양한 벡엔드 성능 테스트를 수행하는 별도의 모니터링 프로그램이나 방법론이 존재하는지 궁금합니다. 또한 저희 실습에서 사용한 MySQL에서는 어떤 식으로 테스트를 수행하면 좋을지 알려주세요.
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요. 1. 강의 내용과 관련된 질문을 남겨주세요. 2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요. (자주 하는 질문 링크: https://bit.ly/3fX6ygx) 3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요. (질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG) 질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요. ========================================= [질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예/아니오) 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오) 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오) [질문 내용] 기본형과 참조형 - 참조형과 메서드 호출 - 활용 강의 자료 보고 생긴 궁금증입니다! 자바에는 객체 생성 시 초기화를 담당하는 "생성자(Constructor)"가 있는데, createStudent()와 같은 팩토리 메서드 패턴과 일반 생성자를 사용하는 것의 장단점이나, 어떤 상황에 어떤 방법을 사용하는 것이 더 적절한지 궁금합니다!
안녕하세요, 강의를 듣고 있는 인프런 학습자입니다! 중복이 없는 시티 필드를 출력하는 DISTINCT 예제 중 select city From station where city like 'a%' or city like 'e%' or city like 'o%' or city like 'i%' or city like 'u%'; 이라는 구문이 있는데 or 조건은 항상 각각 조건을 명시해줘야하는걸까요? 정규식을 제외하고 따로 간소화가 불가할지 궁금해서 질문 드립니다.