안녕하세요. 문의 드릴 게 있습니다. 14:02 에서, 궁금한 게 있는데요. 저번 수업에서 업캐스팅일 때, 오버라이딩 함수가 아닌데, 자식 매서드를 호출하면 에러가 발생한다고 하셨었는데요, 지금처럼 show(int x)매서드는 오버라이딩이 아니지 않나요?? 그럼 궁금한 부부분이 단순 선언은 괜찮은건가요? 호출 시에만 문제가 되는건지 궁금합니다. 지금 14:02 에서 보여지고 있는 코드가 오류가 없는 코드인지 궁금합니다.
지금 class Parent { public String name = "Parent" ; } class Child extends Parent { public String name = "Child" ; // Parent의 name 변수를 hiding함 } 두 변수 모두 정적 변수가 아니라 인스턴스 변수? 인데 그럼에도 업캐스팅 한 객체에서 변수를 불러올때는 선언한 타입 클래스에 있는 변수를 불러온다는 것이겠죠? 재선언한 자식것을 가져오는것은 동일 형태의 매서드만 가져오는것이구요?
Set에서 Map으로 자연스럽게 빌드업되는 과정에서 Set + value = Map이 되는 객체지향의 묘미를 다시 한번 느껴보나 기대했는데 표준 라이브러리의 실제 구현은 반대로 Map - value = Set 이었네요 ㅠㅠ java.time 패키지의 딱딱 맞아떨어지는 조립방식에서 느껴졌던 희열은 어디갔을까요 자바의 내장 자료구조가 저렇게 부자연스럽게 되어있는 특별한 이유라도 있을까요? 구조적인 아름다움을 포기해서라도 얻는 성능적인 이점이 있는건가? 싶은데요 정확한 사정은 당사자들만 아는거겠지만 혹시나 선배님들은 아시는게 있을까 여쭈어봅니다..ㅠㅠ
05분 30초 부분에 "왜 CPU 수와 스레드 수를 맞추는 것이 효율적인지에 대해 이해가 잘 안 가면 ~~를 참고하시라." 라고 하셨는데 이와 관련하여 궁금하신 분을 위해 정보 남겨둡니다. 영상: 김영한의 실전 자바 - 고급 1편, 멀티스레드와 동시성 - 섹션 2. 프로세스와 스레드 소개 - 컨텍스트 스위칭 영상 1분 ~ https://www.inflearn.com/courses/lecture?courseId=334352&type=LECTURE&unitId=232316&tab=curriculum
안녕하세요 강사님 좋은 강의 정말 감사드립니다. 실습 따라면서 튜닝을 익혀가고있는데 이번 강의에서 이해되지 않는 부분이 있어 질문 남깁니다. 일단 저는 MariaDB를 이용하여 실습을 하고 있습니다 죄송합니다 ㅠ -- 튜닝 전 쿼리 SELECT st.student_id, st.name, AVG(sc.score) AS average_score FROM students st JOIN scores sc ON st.student_id = sc.student_id GROUP BY st.student_id, st.name, sc.year, sc.semester HAVING AVG(sc.score)=100 AND sc.year=2024 AND sc.semester=1; -- 튜닝 쿼리 SELECT st.student_id, st.name, AVG(sc.score) AS average_score FROM students st JOIN scores sc ON st.student_id = sc.student_id WHERE sc.year=2024 AND sc.semester=1 GROUP BY st.student_id, st.name, sc.year, sc.semester HAVING AVG(sc.score)=100; 두 쿼리 실행 속도에 별로 차이가 없어서 1) students, scores 두 테이블 각각 데이터 300만개로 늘리고 2) 두 쿼리 모두 동일하게 limit 10을 붙여줬더니 갑자기 성능 차이가 엄청나게 났습니다. -- 튜닝 전 쿼리 SELECT st.student_id, st.name, AVG(sc.score) AS average_score FROM students st JOIN scores sc ON st.student_id = sc.student_id GROUP BY st.student_id, st.name, sc.year, sc.semester HAVING AVG(sc.score)=100 AND sc.year=2024 AND sc.semester=1 LIMIT 10; -- 튜닝 쿼리 SELECT st.student_id, st.name, AVG(sc.score) AS average_score FROM students st JOIN scores sc ON st.student_id = sc.student_id WHERE sc.year=2024 AND sc.semester=1 GROUP BY st.student_id, st.name, sc.year, sc.semester HAVING AVG(sc.score)=100 limit 10; 제가 궁금한 것은 limit 10을 붙이면 튜닝을 하든 안하든 실행 속도가 더 줄어들어야 할 것 같은데 튜닝 전 쿼리가 갑자기 1분넘게 소요되더라고요. 튜닝 후 쿼리는 limit을 붙이나 안붙이나 별 차이가 없는데 튜닝 전 쿼리는 왜 limit을 붙이면 갑자기 성능이 엄청나게 저하되는걸까요..?? 확인해주시고 답변 주시면 많은 도움 될 것 같습니다 감사합니다!
해당 시간대 영상 화면의 설명 중 가운데 다단에 '여덟번째 호출 반환'에서 a가 반환되는 것은 이해했습니다. 그렇게 되면 자바 코드 하단의 String result 변수에는 a가 저장되고, 마지막에 result 변수값을 출력하면 a가 나와야 하는 것 아닌가요?? 어떻게 일곱번째 호출 반환으로 가게 된 건지 궁금합니다.
if의 조건이 잘 이해되지 않아요. 제가 이해한 바로는 처음 seen 배열을 선언할 때 배열에 들어갈 값들을 지정하지 않았으므로, 256칸 전부에 모두 0으로 값이 초기화되었고, 따라서 !seen[c] 는 항상 !0 = 1 인 것으로 보입니다. 제가 이해한 게 맞을까요?