1-2. BigQuery환경 설정 오류
해결됨
초보자를 위한 BigQuery(SQL) 입문
강의 내용을 똑같이 따라했는데 'basic.pokemon'에서 오류가 떠요ㅠㅠ 제가 놓친게 있을까요?
- sql
- bigquery
- 데이터-리터러시
172만명의 커뮤니티!! 함께 토론해봐요.
해결됨
초보자를 위한 BigQuery(SQL) 입문
강의 내용을 똑같이 따라했는데 'basic.pokemon'에서 오류가 떠요ㅠㅠ 제가 놓친게 있을까요?
미해결
김영한의 실전 자바 - 기본편
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요. 1. 강의 내용과 관련된 질문을 남겨주세요. 2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요. (자주 하는 질문 링크: https://bit.ly/3fX6ygx) 3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요. (질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG) 질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요. ========================================= [질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예/아니오) 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오) 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오) [질문 내용] 여기에 질문 내용을 남겨주세요. 2분 22초 에 선생님이 하신 말씀이 예를들어 X002.method 가 호출되면 힙영역의 인스턴스에서 메서드영역에있는 메서드를 호출하고 스택영역에 메서드 호출정보들이 저장된다 라고 이해해도 되나요?
미해결
김영한의 실전 자바 - 중급 2편
@Override public int hashCode() { return Objects.hashCode(id); } 이걸로 ide가 만들어주네요. 업데이트 된 건가요? 해쉬코드가 다르게 나와서 다른 인덱스에 채워지네요. 강의처럼 아래와 같이 하면, @Override public int hashCode() { return Objects.hash(id); } 강의와 똑같이 같은 인덱스에 채워집니다. Objects의 hash 메서드와 hashCode 메서드의 차이가 무엇일까요? 왜 인텔리제이는 hashCode 메서드를 생성했을까요?
미해결
김영한의 자바 입문 - 코드로 시작하는 자바 첫걸음
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요. 1. 강의 내용과 관련된 질문을 남겨주세요. 2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요. (자주 하는 질문 링크: https://bit.ly/3fX6ygx) 3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요. (질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG) 질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요. ========================================= [질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예/아니오) 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오) 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오) [질문 내용] 여기에 질문 내용을 남겨주세요. ublic class ArryaEx2 { public static void main(String[] args) { Scanner scanner = new Scanner(System.in); int[] number = new int[5]; System.out.println("5개의 정수를 입력하세요:"); for (int i = 0; i < number.length; i++) { int input = scanner.nextInt(); number[i] = input; } System.out.println("출력"); for (int i = 0; i < number.length; i++) { System.out.print(number[i]); if(i < number.length -1) { System.out.print(","); } } 이렇게 하면 정상작동 하는데 ublic class ArryaEx2 { public static void main(String[] args) { Scanner scanner = new Scanner(System.in); int input = scanner.nextInt(); int[] number = new int[5]; System.out.println("5개의 정수를 입력하세요:"); for (int i = 0; i < number.length; i++) { number[i] = input; } System.out.println("출력"); for (int i = 0; i < number.length; i++) { System.out.print(number[i]); if(i < number.length -1) { System.out.print(","); } } int input = scanner.nextInt() 이걸 for 문 밖에 입력하면 정상 작동을 하지 않습니다. 해당 위치는 스코프를 모두 적용할수 있는 위치인데 왜 그런거죠?
해결됨
(2026 최신!) 일주일만에 합격하는 정보처리기사 실기
질문은 동영상 강의에서 오른쪽에 커뮤니티 버튼을 통해 해주세요. 그렇게 해주셔야 어떤 강좌에서 질문하셨는지 알 수 있습니다. 영상에서 몇 분 몇 초 대를 알려주셔야 한 번에 확인이 가능합니다. 이미 다른 누군가가 질문을 한 이력이 있을 수 있습니다. 질문 게시판을 한 번 확인 부탁드립니다. 질문을 올릴 때 이 글은 모두 지우고 내용을 입력해주세요.
해결됨
BigQuery(SQL) 활용편(퍼널 분석, 리텐션 분석)
윈도우 사용자입니다. 첨부파일을 다운로드 받았는데, 압축파일 풀기를 하면 아래와 같이 오류 메시지가 나오는데요. 어떻게 해결하면 좋을까요?
미해결
자바 ORM 표준 JPA 프로그래밍 - 기본편
영한님 안녕하세요. 강의를 잘 듣고 있습니다! 학습 중 궁금한 점이 있어 질문 드립니다. 엔티티를 저장할 때에는 연관된 엔티티가 모두 영속 상태여야 한다고 알고 있습니다. 다음 코드에서 현재 user와 연관된 teamB는 영속 상태가 아닙니다. 따라서 실행 시 에러가 발생할 것으로 예상했습니다. 그러나 에러 없이 잘 동작하였고, DB를 확인해 보니 user의 team이 현재 연관된 teamB가 아니라 teamA로 되어 있었습니다. @Entity @Table(name="users") public class User { @Id @GeneratedValue @Column(name="user_id") private Long id; private String username; @ManyToOne @JoinColumn(name="team_id") private Team team; public Long getId() { return id; } public void setId(Long id) { this.id = id; } public String getUsername() { return username; } public void setUsername(String username) { this.username = username; } public Team getTeam() { return team; } public void setTeam(Team team) { this.team = team; } } @Entity public class Team { @Id @GeneratedValue @Column(name="team_id") private Long id; private String teamName; public Long getId() { return id; } public void setId(Long id) { this.id = id; } public String getTeamName() { return teamName; } public void setTeamName(String teamName) { this.teamName = teamName; } } public static void main(String[] args) { EntityManagerFactory emf = Persistence.createEntityManagerFactory("hello"); EntityManager em = emf.createEntityManager(); EntityTransaction tx = em.getTransaction(); tx.begin(); try{ Team teamA = new Team(); teamA.setTeamName("teamA"); System.out.println(" =====[1]===== "); System.out.println("teamA = " + teamA); System.out.println("teamA.getId() = " + teamA.getId()); System.out.println("teamA.getTeamName() = " + teamA.getTeamName()); System.out.println(" 영속? = " + em.contains(teamA)); System.out.println(" ============= "); System.out.println(); em.persist(teamA); System.out.println(" =====[2]===== "); System.out.println("teamA = " + teamA); System.out.println("teamA.getId() = " + teamA.getId()); System.out.println("teamA.getTeamName() = " + teamA.getTeamName()); System.out.println(" 영속? = " + em.contains(teamA)); System.out.println(" ============= "); System.out.println(); Team findMyTeam = em.find(Team.class, teamA.getId()); System.out.println(" =====[3]===== "); System.out.println("findMyTeam = " + findMyTeam); System.out.println("findMyTeam.getId() = " + findMyTeam.getId()); System.out.println("findMyTeam.getTeamName() = " + findMyTeam.getTeamName()); System.out.println(" 영속? = " + em.contains(findMyTeam)); System.out.println(" ============= "); System.out.println(); Team teamB = new Team(); teamB.setId(findMyTeam.getId()); teamB.setTeamName("teamB"); System.out.println(" =====[4]===== "); System.out.println("teamB = " + teamB); System.out.println("teamB.getId() = " + teamB.getId()); System.out.println("teamB.getTeamName() = " + teamB.getTeamName()); System.out.println(" 영속? = " + em.contains(teamB)); System.out.println(" ============= "); System.out.println(); User user = new User(); user.setUsername("username"); user.setTeam(teamB); System.out.println(" =====[5]===== "); System.out.println("user.getTeam() = " + user.getTeam()); System.out.println("teamB = " + teamB); System.out.println("teamB.getId() = " + teamB.getId()); System.out.println("teamB.getTeamName() = " + teamB.getTeamName()); System.out.println(" 영속? = " + em.contains(teamB)); System.out.println(" ============= "); System.out.println(); em.persist(user); System.out.println(" =====[6]===== "); System.out.println("user.getTeam() = " + user.getTeam()); System.out.println("teamB = " + teamB); System.out.println("teamB.getId() = " + teamB.getId()); System.out.println("teamB.getTeamName() = " + teamB.getTeamName()); System.out.println(" 영속? = " + em.contains(teamB)); System.out.println(" ============= "); System.out.println(); tx.commit(); System.out.println(" =====[7]===== "); System.out.println("user.getTeam() = " + user.getTeam()); System.out.println("teamB = " + teamB); System.out.println("teamB.getId() = " + teamB.getId()); System.out.println("teamB.getTeamName() = " + teamB.getTeamName()); System.out.println(" 영속? = " + em.contains(teamB)); System.out.println(" ============= "); System.out.println(); }catch(Exception e){ e.printStackTrace(); tx.rollback(); }finally{ em.close(); } emf.close(); } =====[1]===== teamA = hellojpa.Team@fa5f81c teamA.getId() = null teamA.getTeamName() = teamA 영속? = false ============= =====[2]===== teamA = hellojpa.Team@fa5f81c teamA.getId() = 1 teamA.getTeamName() = teamA 영속? = true ============= =====[3]===== findMyTeam = hellojpa.Team@fa5f81c findMyTeam.getId() = 1 findMyTeam.getTeamName() = teamA 영속? = true ============= =====[4]===== teamB = hellojpa.Team@dd4aec3 teamB.getId() = 1 teamB.getTeamName() = teamB 영속? = false ============= =====[5]===== user.getTeam() = hellojpa.Team@dd4aec3 teamB = hellojpa.Team@dd4aec3 teamB.getId() = 1 teamB.getTeamName() = teamB 영속? = false ============= =====[6]===== user.getTeam() = hellojpa.Team@dd4aec3 teamB = hellojpa.Team@dd4aec3 teamB.getId() = 1 teamB.getTeamName() = teamB 영속? = false ============= =====[7]===== user.getTeam() = hellojpa.Team@dd4aec3 teamB = hellojpa.Team@dd4aec3 teamB.getId() = 1 teamB.getTeamName() = teamB 영속? = false ============= 궁금한 점은 다음과 같습니다: 1. teamB가 영속 상태가 아닌데 어떻게 user가 저장될 수 있었는지 궁금합니다. 2. user는 현재 teamB와 연관되어 있는데, 왜 DB에는 teamA가 나오는지 궁금합니다. 좋은 강의 감사합니다!!
미해결
김영한의 실전 자바 - 중급 1편
package enumeraion.ref1; public class ClassGrade { public static final ClassGrade BASIC = new ClassGrade(10); public static final ClassGrade GOLD = new ClassGrade(20); public static final ClassGrade DIAMOND = new ClassGrade(30); private final int discountPercent; private ClassGrade(int discountPercent) { this.discountPercent = discountPercent; } public int getDiscountPercent() { return this.discountPercent; } } 문득 궁금한게 저런식으로 자기 자신을 호출 하면 이제 다시 각각의 필드에 인스턴스가 생성될텐데 그럼 그 인스턴스가 무한으로 인스턴스를 생성하지는 않는건지 갑자기 그부분이 헷갈려 질문 드립니다. 정적필드가 아닐경우에는 더욱이 인스턴스가 생성됨가 동시에 각각의 멤버변수의 인스턴스가 또 인스턴스를 생성하는 형태는 아닌지 궁금합니다.
해결됨
[리뉴얼] 처음하는 SQL과 데이터베이스(MySQL) 부트캠프 [입문부터 활용까지]
인덱스에 대해서 약간의 의문을 질문드립니다. 인덱스가 조회의 성능 향상을 위한다는 점은 이해가 갑니다만..특정한 인덱스의 이름을 설정하는 부분이 약간 헷갈립니다. 가령 std_id 라는 인덱스를 학번을 저장 하는 column에 만들었을 때를 예시로 들겠습니다. 제가 학번의 데이터를 조회 하는경우 자체 프로그램에서 std_id의 인덱스만을 쉽게 찾는다는 의미이며, 이름설정은 단순 사용자들의 이해를 편하게 하기 위함인지가 궁금합니당
해결됨
(2026 최신!) 일주일만에 합격하는 정보처리기사 실기
반복문 돌리다가 궁금해진게 있어서 질문드립니다.다중 for문에서 저렇게 여러개의 변수가 중간에 껴있는 경우에 내부 for문을 한 사이클 돌고나면 외부 for문에서 ++해서 다음 사이클 돌릴 경우에 변수들이 다시 초기화가 되나요? 그러니까 n=6일 때 한 사이클을 돌리고 나니 s=6 , el=1 값이 이렇게 나왔는데, n=7, 8, 9.... 이렇게 그 다음 사이클로 갈 때마다 다시 s=0, el=0 부터 시작하는건지 아니면 값이 남아있는건지 궁금합니다.+해설을 보고 나서 완전수라는 걸 알았네요 ㅎㅎ
해결됨
Next + React Query로 SNS 서비스 만들기
만약 새창에서 /compose/tweet을 열었을 때 X버튼을 누르면 back()으로 동작되어 창이 닫히지 않거나, 이 전페이지 (트위터 창이 아닌 다른 창)으로 이동하는 이슈가 발생하여 x.com 은 어떻게 동작되는지 확인했는데, 이미지 처럼 새창에서 /compose/tweet을 열었을 때, history에 home url이 추가가 되어 뒤로가기를 눌렀을 때 홈으로 돌아가는 것 같습니다. 이렇게 hitory url을 제어하는 방법이 있을까요? 구글링해도 정보를 얻을 수 없어 글 올립니다 ㅠ
미해결
김영한의 실전 자바 - 중급 2편
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요. 1. 강의 내용과 관련된 질문을 남겨주세요. 2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요. (자주 하는 질문 링크: https://bit.ly/3fX6ygx) 3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요. (질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG) 질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요. ========================================= [질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예/아니오) 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오) 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오) [질문 내용] 제네릭 메서드에서는 <Dog>가 타입추론으로 생략이 가능하다고 하셨는데 WildCardEx.<Dog>printGenericV1(dogBox); 와일드 카드의 경우에는 <타입> 해당 부분에 대해서는 설명을 안해주셨는데 와일드카드의 경우에는 "<타입>" 은 어떻게 되는 건가요?? 항상 생략인건가요..??? WildCardEx.printWildCardV1(dogBox);
해결됨
BigQuery(SQL) 활용편(퍼널 분석, 리텐션 분석)
안녕하세요. 저는 이번에 마지막 문제를 응용해서, 퍼널별로 유저들의 새로운 세션 시작 횟수의 총합을 계산 해보았습니다. [결과 그래프] 새로운 세션 시작 기준: 이전 세션 시간 대비 20초 이상이 지나면, 새로운 세션을 활성화했다고 가정 (강의 내용과 동일) 첫번째 강의에서 배운, UNNEST 문법과 PIVOT 을 하는 방법을 활용해서, event_params에 있는 firebase_screen의 string_value 값을 새로운 열인 firebase_screen 이라고 만듭니다. 전체 데이터를 조회하면, 쿼리 비용이 많이 들기 때문에, where 조건 절로 값을 작게 명시해줍니다. WITH base AS ( SELECT event_date, DATETIME(TIMESTAMP_MICROS(event_timestamp), 'Asia/Seoul') AS event_timestamp, event_name, user_pseudo_id, MAX(IF(ep.key = 'firebase_screen', ep.value.string_value, NULL)) AS firebase_screen FROM advanced.app_logs CROSS JOIN UNNEST(event_params) AS ep WHERE event_date = '2022-08-18' AND user_pseudo_id = '5464646449.4088767327' GROUP BY ALL ) LAG() 함수를 사용하여, 이전 날짜 값을 가져옵니다. 이 때, 퍼널별로 구해야하기 때문에, PARTITION BY에 firebase_screen 을 써줍니다. 그 후, DATETIMEDIFF 함수를 사용해서, 현재값과 이전값의 차이를 계산합니다. WITH base AS ( SELECT event_date, DATETIME(TIMESTAMP_MICROS(event_timestamp), 'Asia/Seoul') AS event_timestamp, event_name, user_pseudo_id, MAX(IF(ep.key = 'firebase_screen', ep.value.string_value, NULL)) AS firebase_screen FROM advanced.app_logs CROSS JOIN UNNEST(event_params) AS ep WHERE event_date = '2022-08-18' AND user_pseudo_id = '5464646449.4088767327' GROUP BY ALL ), diff_funnel_time AS ( SELECT *, DATETIME_DIFF(event_timestamp, prev_event_timestamp, SECOND) AS second_diff FROM ( SELECT *, LAG(event_timestamp, 1) OVER(PARTITION BY firebase_screen ORDER BY event_timestamp) AS prev_event_timestamp FROM base ) ) SELECT * FROM diff_funnel_time 3. ROW_NUMBER() 함수를 사용해서, 퍼널별로 순서를 매깁니다. 그 후, second_diff 의 값이 NULL인 경우는 해당 퍼널의 첫 시작 위치를 가리키므로 1을 넣어주고, rn > 1이고 second_diff >= 20인 경우는 1을 넣어줍니다. 이 때 funnel_per_session_start 컬럼은 퍼널별로 새로운 세션이 시작했는지 여부를 가리킵니다. , funnel_start AS ( SELECT *, CASE WHEN second_diff IS NULL THEN 1 WHEN rn > 1 AND second_diff >= 20 THEN 1 ELSE 0 END AS funnel_per_session_start FROM ( SELECT *, ROW_NUMBER() OVER(PARTITION BY firebase_screen ORDER BY event_timestamp) AS rn FROM diff_funnel_time ) ) 이제, 퍼널별로 세션 시작 여부를 SUM()하고, GROUP BY를 해줍니다. SELECT firebase_screen, SUM(funnel_per_session_start) AS funnel_per_session_start_cnt FROM funnel_start GROUP BY ALL ORDER BY 2 DESC; WHERE 조건절을 주석처리하고, 전체 데이터에 대해서, 집계해봅니다. WITH base AS ( SELECT event_date, DATETIME(TIMESTAMP_MICROS(event_timestamp), 'Asia/Seoul') AS event_timestamp, event_name, user_pseudo_id, MAX(IF(ep.key = 'firebase_screen', ep.value.string_value, NULL)) AS firebase_screen FROM advanced.app_logs CROSS JOIN UNNEST(event_params) AS ep -- WHERE -- event_date = '2022-08-18' -- AND user_pseudo_id = '5464646449.4088767327' GROUP BY ALL ), diff_funnel_time AS ( SELECT *, DATETIME_DIFF(event_timestamp, prev_event_timestamp, SECOND) AS second_diff FROM ( SELECT *, LAG(event_timestamp, 1) OVER(PARTITION BY firebase_screen ORDER BY event_timestamp) AS prev_event_timestamp FROM base ) ) , funnel_start AS ( SELECT *, CASE WHEN second_diff IS NULL THEN 1 WHEN rn > 1 AND second_diff >= 20 THEN 1 ELSE 0 END AS funnel_per_session_start FROM ( SELECT *, ROW_NUMBER() OVER(PARTITION BY firebase_screen ORDER BY event_timestamp) AS rn FROM diff_funnel_time ) ) SELECT firebase_screen, SUM(funnel_per_session_start) AS funnel_per_session_start_cnt FROM funnel_start GROUP BY ALL ORDER BY 2 DESC;
해결됨
실전 프론트엔드 테스트 시작하기
테스트가 안됩니다 못찾는다는거 같은데 오류 떠서 그런가요?? 오류 해결 어떻게 하나요
해결됨
(2026 최신!) 일주일만에 합격하는 정보처리기사 실기
public static void checkAge ( int age) { if (age < 18 ) { throw new IllegalArgumentException ( "나이는 18세 이상이어야 합니다." ); } System.out.println( "나이가 적합합니다." ); } 이거에서 if가 18이상이면 if문조건을 충족하지 않으므로 빠져나가서 나이가 적합합니다. 를 프린트 하는 건 알겠는데 15세일때 if문 조건(age<18)을 충족해서 throw로 예외를 던지고 나서 실행한 뒤 System.out.println( "나이가 적합합니다." ); 를 다시 실행해야 하는 거 아닌가요? checkAge() 가 System.out.println( "나이가 적합합니다." ); 를 실행해야 끝난다고 생각되어서요;. else문이 아니라 그냥 if문이라서 ..throw 에 대해서 조금더 자세한 설명해주실수있나요??
해결됨
(2026 최신!) 일주일만에 합격하는 정보처리기사 실기
안녕하세요, 증감, 감소 연산자에 대해 궁금한 점이 있습니다. 23년 2회 마지막 문제에서 [point--]는 값이 0이라면 호출했을때 0을 넣은다음 -1되는 형식이였는데 24년 1회 첫번째 문제에서는 cont++가 바로 +1이되어 값이 호출되는것이 헷갈립니다. 변수++ / 변수--는 호출되고 나서 플러스 또는 마이너스 되는것이 아닌가요?ㅠㅠ
미해결
실전! 스프링 부트와 JPA 활용2 - API 개발과 성능 최적화
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요. 1. 강의 내용과 관련된 질문을 남겨주세요. 2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요. (자주 하는 질문 링크: https://bit.ly/3fX6ygx) 3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요. (질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG) 질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요. ========================================= [질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예/아니오) 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오) 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오) [질문 내용] 회원가입을 하면 그냥 db에다가 데이터만 저장하면 되는데 왜 이렇게 id를 리턴 해주는지 모르겠습니다.
해결됨
[코드캠프] 부트캠프에서 만든 고농축 프론트엔드 코스
import { UpCircleOutlined } from "@ant-design/icons"; export default function LibraryIconPage() { return ( <> <UpCircleOutlined /> </> ); } ant-design/icons 5.0.1 버전 다운로드 받고 실행하니까 이런 에러가 뜨는데 어떤 문제일까요..?
미해결
토비의 스프링 6 - 이해와 원리
jdk 버전 관련 개념이 조금 헷갈려서 질문 드립니다. 현재 터미널에서 java -version 명령어를 통해 출력되는 자바 버전은 11인데 스프링 프로젝트 별로 자바 버전을 다르게 할 수 있다면 혹시 제 컴퓨터에 설치되고 환경 변수 설정까지 하여 터미널에서 출력되는 자바 버전은 전혀 상관이 없는 건가요?? 상관이 없다면 제 컴퓨터에 따로 자바를 설치하고 환경 변수 설정 까지 해야 하는 이유가 무엇인가요??
해결됨
김영한의 실전 자바 - 중급 2편
해당 강의에서 강사님꼐서 IDE를 통해 만드신 hashCode() 오버라이드 메서드는 Object.hash() 함수를 사용했는데요. 저도 똑같이 IDE를 통해서 만들었는데, Object.hashCode() 라는 다른 메서드를 사용해서 만들어 주더라고요. 둘 다 실험해보니까 잘 작동하긴 했는데, 두 메서드의 차이점이 무엇인가요? 왜 강사님이 하실때는 hash() 메서드가 뜨고 제가 할 때는 hashCode() 메서드를 이용해서 만들어 줄까요?