강의노트 내용이 이해가 되지 않아서 문의드립니다.
미해결
김영한의 실전 자바 - 중급 1편
[질문 내용] 여기에 질문 내용을 남겨주세요. b의 주소값을 서울에서 부산으로 변경할 의도라는게 이해가 되지 않습니다. b의 주소값은 Address 인스턴스를 가르키고 있는데 음.. b의 주소에 저장되어 있는 값을 부산으로 변경하려는 의미인건지 궁금합니다.
- java
- 객체지향
172만명의 커뮤니티!! 함께 토론해봐요.
미해결
김영한의 실전 자바 - 중급 1편
[질문 내용] 여기에 질문 내용을 남겨주세요. b의 주소값을 서울에서 부산으로 변경할 의도라는게 이해가 되지 않습니다. b의 주소값은 Address 인스턴스를 가르키고 있는데 음.. b의 주소에 저장되어 있는 값을 부산으로 변경하려는 의미인건지 궁금합니다.
미해결
김영한의 자바 입문 - 코드로 시작하는 자바 첫걸음
피라미드 문제 풀이를 참고의 print() 때문에 뭔가 이중반복문일것 같은데 도저히 생각이 안나서 String을 활용해서 풀었는데요, 어느 코드가 더 좋은 코드인지 코드 짤 때 판단이 어렵습니다 ㅠㅠ package loop.ex; public class LoopEx5 { public static void main(String[] args) { int rows = 50; int i = 1; String star = "*"; while (i <= rows) { System.out.println(star); star = star + "*"; i++; } } }
미해결
실전! 스프링 부트와 JPA 활용2 - API 개발과 성능 최적화
질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요. ========================================= [질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예/아니오) 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오) 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오) [질문 내용] 영한님의jpa로드맵을 진행하면서 jpa활용 2편부터 난이도가 어렵다고 느껴졌습니다. 스프링 데이터 jpa편을 먼저 공부해도 괜찮을까요? jpa책을 구매해서 jpa 기초를 다잡으려고 합니다.
미해결
김영한의 자바 입문 - 코드로 시작하는 자바 첫걸음
[질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예) 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예) 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예) [질문 내용] ScannerWhile3 예제 코드 문의 안녕하세요. 출력 결과는 똑같이 나오는데 강사님이 작성한 코드랑 제가 작성한 코드가 좀 다르더라구요.. 모든 정수의 합을 출력하는 부분의 코드가 서로 위치가 다른데 이 경우 제가 작성한 코드는 틀렸다고 볼 수 있을까요? [강사님의 코드] [제가 작성한 코드]
해결됨
(2026 최신!) 일주일만에 합격하는 정보처리기사 실기
페이징 교체 알고리즘 LRU NUR 차이점이 헷갈립니다.
해결됨
자바와 스프링 부트로 생애 최초 서버 만들기, 누구나 쉽게 개발부터 배포까지! [서버 개발 올인원 패키지]
안녕하세요. 선생님. 선생님 강의를 들으면서 하고 있는데 스트링 부트 어떤 버전을 받으면 될지 질의 드립니다.
해결됨
(2026 최신!) 일주일만에 합격하는 정보처리기사 실기
안녕하세요 선생님 30:18 초 문제 답 관련 질문 드립니다. (가) ++start (나) --end 이렇게는 답이 안되는 걸까요?
해결됨
(2026 최신!) 일주일만에 합격하는 정보처리기사 실기
상속과 생성자 호출순서 강의 6분 18초 해당 영상 시간의 "생성자가 있으면 어떻게 될까?"의 문제와 바로 직전 문제와의 차이점을 모르겠습니다. 생성자가 있으면 무모 클래스에서 기본 생성자를 우선 탄생시킨다(출력) 라고 했는데, 바로 직전 문제에서는 생성자가 없었나요? 있지 않나요? 이해가 가지 않습니다.
해결됨
(2026 최신!) 일주일만에 합격하는 정보처리기사 실기
같지만 다른 것들 강의 6분29초 Double 사용시 d1==d2는 false이 나옵니다. 그리고 역시 d4==d5도 false이 나옵니다. 그런데, 설명에는 integer와 다르게 캐싱을 사용하지 않아서 라고 말씀주셨는데, 정수, 실수들은 캐싱을 사용하지 않고, 캐싱을 사용하지 않으면 같은 곳에 저장하는 것이 아니라서 false 나온다고 이해하면 되는건가요? 질문은 동영상 강의에 들어가서 오른쪽에 커뮤니티 버튼을 통해 해주세요. 그래야 어떤 강좌에서 질문하셨는지 알 수 있습니다. 영상에서 몇 분 몇 초 대를 알려주셔야 제가 한 번에 질문 내용 확인이 가능합니다. 이미 다른 누군가가 질문을 한 이력 이 있을 수 있습니다. 질문 게시판을 한 번 확인 부탁 드립니다. 학교의 과제나 타 강사의 코드 등 외부 수업 자료에 대해서는 답변하지 않습니다. 제가 다루는 커리큘럼 외의 이론이나, 너무 디테일한 컴퓨터 이론에 대해서는 답변 드리지 않습니다. 시험에 안 나오는 경우가 많고, 나와 봤자 1문제 나오는데 외워야 할 부분이 많은 것 등 (예시: 서브넷 마스크 계산) 질문을 올릴 때 이 글은 모두 지우고 내용을 입력해주세요.
미해결
김영한의 자바 입문 - 코드로 시작하는 자바 첫걸음
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요. 1. 강의 내용과 관련된 질문을 남겨주세요. 2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요. (자주 하는 질문 링크: https://bit.ly/3fX6ygx) 3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요. (질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG) 질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요. ========================================= [질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예) 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예) 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예) [질문 내용] 짝수 출력 문제 안녕하세요. 답은 동일하게 나오는데 저는 아래와 같이 풀어봤습니다.. 이렇게 풀면 정답이 안되는 건지 문의 드립니다. [WhileEx2.java] [ ForEx2.java ]
미해결
실전! Querydsl
안녕하세요, 김영한 선생님. 강의 정말 잘 듣고 있습니다. 항상 좋은 강의 감사합니다. QueryDSL 관련해서 한 가지 궁금한 점이 있어 질문드립니다. QueryDSL이 특정 재단이나 기업이 아닌 오픈소스 프로젝트로 알고 있는데, 실무 엔터프라이즈 환경에서도 안정적으로 사용되는지 궁금합니다. 또 최근에 릴리스나 유지보수 활동이 예전보다 활발하지 않은 것처럼 보이는데, 신규 프로젝트에서 QueryDSL을 선택하는 것이 여전히 좋은 선택인지도 궁금합니다. 실무에서는 보통 QueryDSL을 어떤 방식으로 활용하는지도 함께 여쭤보고 싶습니다. 감사합니다!
미해결
스프링 부트와 리액트로 구현하는 소셜 로그인과 보안 JWT 로그인
선생님 안녕하세요! "스프링 부트와 리액트로 구현하는 소셜 로그인" 강의와 차이점이 뭘까요?
미해결
2026 코딩테스트 올인원 [JAVA]
학습 관련 질문을 남겨주세요. 구체적으로 적을수록 좋아요! 마크다운과 단축키를 활용하면 글을 더 편하게 작성할 수 있어요. 커뮤니티 질문 & 답변에 비슷한 내용이 있었는지 먼저 검색해보세요. 편하게 질문주세요:) 직접 답변 드리도록 하겠습니다~ 안녕하세요 강사님 유익한 강의 잘 듣고 있습니다! 구글폼을 통한 노션 링크를 24시간 후에도 못 받았는데 따로 이메일을 통해 직접 전달주시는건가요?
해결됨
기초 탄탄! 독하게 시작하는 Java - Part 2 : OOP와 JVM
import java.lang.reflect.Field; class MyString { private byte[] sdata = null; MyString(MyString s) { this.sdata = s.sdata; } // 생성자 1: 문자열을 받을 때 MyString(String param) { this.setString(param); } // 생성자 2: 정수를 받을 때 MyString(int param) { setString(String.format("%d", param)); } // 데이터를 문자열로 반환 (null 체크 포함) public String getString() { if (sdata == null || sdata.length <= 0) { return "(null)"; } return new String(sdata); } // 데이터를 안전하게 복사해서 저장 (Deep Copy) public void setString(String param) { sdata = param.getBytes(); } } public class Main { public static void main(String[] args) throws Exception { MyString src = new MyString("Hello"); MyString dst = new MyString(src); Field field = MyString.class.getDeclaredField("sdata"); field.setAccessible(true); byte[] srcSdata = (byte[]) field.get(src); byte[] dstSdata = (byte[]) field.get(dst); System.out.println("src.sdata 주소: " + System.identityHashCode(srcSdata)); System.out.println("dst.sdata 주소: " + System.identityHashCode(dstSdata)); // 둘이 같은 숫자 → 같은 배열 가리킴 (얕은 복사 증명!) src.setString("world"); byte[] srcSdata2 = (byte[]) field.get(src); byte[] dstSdata2 = (byte[]) field.get(dst); System.out.println("--- setString 후 ---"); System.out.println("src.sdata 주소: " + System.identityHashCode(srcSdata2)); System.out.println("dst.sdata 주소: " + System.identityHashCode(dstSdata2)); // src는 새 주소, dst는 그대로 → 분리됨 확인! } } 원래 의도가 얕은 복사를 먼저 해봄으로서 사이드 이팩트 문제를 일으킨 다음, 깊은 복사를 시도해볼려고 했는데 위 코드를 실행해보시면 깊은 복사가 되는 것 처럼보이더군요. 그런데 알고보니, 의도대로 dst.sdata 배열의 주소값이 src.sdata 배열의 주소값으로 얕은 복사가 이뤄졌으며, getBytes() 함수 자체가 원래 String 객체의 데이터를 byte 배열로 새로 만들어서 해당 배열에 대한 주소값을 반환하는 함수다 보니, src.sdata 변수의 대상 인스턴스 주소 값이 새로운 바이트 배열에대한 주소값으로 바뀌어 버렸고, 기존 배열은 원래 gc에 의해 사라져야하는게 맞는데, dst.sdata에 src.sdata 배열의 주소값이 얕은 복사가 이뤄졌다보니, 기존 참조된 배열은 계속 참조되어 메모리 상에 남아있더라구요. 그렇다보니, src.sdata가 참조한 실질 배열 데이터는 dst.sdata에 얕은 복사해버리고, src.sdata 배열 본인은 새로운 배열 데이터로 갈아타다보니, 실질적으로는 src 객체의 문자열을 바뀌었다기 보단, 참조한 대상 자체가 바뀌다 보닌까 실질적으로는 처음 의도한 얕은 복사로 인한 사이트 이팩트 문제는 애초부터 발생하지 않는다 라는게 결론입니다. 따라서 주어진 실습 예제가 적절한지에 대해 한 번 고민해보았습니다. 혹시라도 제가 부족하거나 다르게 이해한 부분이 있을 시 지적해주시면 감사하겠습니다.
미해결
자바와 스프링 부트로 생애 최초 서버 만들기, 누구나 쉽게 개발부터 배포까지! [서버 개발 올인원 패키지]
6강까지 강의를 들으면서 서버가 켜지고 POSTMAN으로 동작하는걸 확인했었는데 다음날부터 서버가 실행이 안되더라고요. 그래서 gpt한테 물어보니 resources 파일 안에 application.yml 폴더를 만들고 그 안에 spring.autoconfigure.exclude=org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration 이걸 쳐서 넣으니까 되더라고요. 오류는 2026-03-13 15:22:27.732 ERROR 7960 --- [ main] o.s.b.d.LoggingFailureAnalysisReporter : APPLICATION FAILED TO START Description: Failed to configure a DataSource: 'url' attribute is not specified and no embedded datasource could be configured. Reason: Failed to determine a suitable driver class Action: Consider the following: If you want an embedded database (H2, HSQL or Derby), please put it on the classpath. If you have database settings to be loaded from a particular profile you may need to activate it (no profiles are currently active). 종료 코드 1(으)로 완료된 프로세스 이렇게 떴습니다. 제가 뭐 건드린게 없었는데 다음날 서버가 안켜지기도 하나요?
해결됨
2026 코딩테스트 올인원 [JAVA]
학습 관련 질문을 남겨주세요. 구체적으로 적을수록 좋아요! 마크다운과 단축키를 활용하면 글을 더 편하게 작성할 수 있어요. 커뮤니티 질문 & 답변에 비슷한 내용이 있었는지 먼저 검색해보세요. 편하게 질문주세요:) 직접 답변 드리도록 하겠습니다~ 정답 풀이 코드가 이상한거 같아요 ,,! e1[2] - e2[2] 로 코드를 구성하면 OutOfBound에러가 발생해요~ e1[0] - e2[0] 이렇게 구성해야하는게 아닌가요 ? curCost + edge[0] 에서 edge[0] 가중치가 아니라 출발 노드 이므로 edge[2] 을 더 하는게 맞지 않나요? curCost + edge[2] new int[]{curNode, nextCost} 큐에 {curNode, nextCost} 추가 → 배열 형식이 {cost, node} 여야 하는데 순서와 값이 모두 잘못된거같은데 맞을까요 ? public class NetworkDelayTime { public int solution(int[][] times, int n, int k) { // 그래프 구현 Map<Integer, List<int[]>> graph = Arrays.stream(times) .collect(Collectors.groupingBy(t -> t[0])); // 다익스트라 알고리즘 Map<Integer, Integer> costs = new HashMap<>(); Queue<int[]> pq = new PriorityQueue<>((e1, e2) -> e1[0] - e2[0]); pq.add(new int[]{0, k}); while (!pq.isEmpty()) { int[] cur = pq.remove(); int curCost = cur[0]; int curNode = cur[1]; if (!costs.containsKey(curNode)) { costs.put(curNode, curCost); if (!graph.containsKey(curNode)) continue; for (int[] edge : graph.get(curNode)) { int nextCost = curCost + edge[2]; pq.add(new int[]{nextCost, edge[1]}); } } } // 방문 못한 노드 찾기 for (int node = 1; node < n + 1; node++) { if (!costs.containsKey(node)) { return -1; } } // 최소값중에서 최대값 구하기 return costs.values().stream() .mapToInt(Integer::intValue).max().getAsInt(); } public static void main(String[] args) { NetworkDelayTime solution = new NetworkDelayTime(); int[][] times = { {2, 1, 2}, {2, 3, 5}, {2, 4, 1}, {4, 3, 3} }; int result = solution.solution(times, 4, 2); System.out.println(result); } } 이렇게 구현하니 제대로 돌아가서 문의드립니다
미해결
2026 코딩테스트 올인원 [JAVA]
package 위상정렬; import java.util.*; public class 위상정렬 { public int[] topologicalSort(int nodesNum, int[][] edges) { // 주어진 입력을 사용하기 편한 형태로 변경 -> 방향그래프로 변경 Map<Integer, List<Integer>> graph = new HashMap<>(); int[] indegree = new int[nodesNum]; // edges의 원소 [v, u]는 u -> v 의 방향을 가지 edge를 뜻한다. for (int[] edge : edges) { graph.putIfAbsent(edge[1], new ArrayList<>()); graph.get(edge[1]).add(edge[0]); indegree[edge[0]]++; } Queue<Integer> queue = new ArrayDeque<>(); boolean[] visited = new boolean[nodesNum]; int[] order = new int[nodesNum]; // 위상정렬을 수행한다. // indegree == 0 인 정점부터 탐색이 시작된다. int count = 0; for (int c = 0; c < nodesNum; c++) { if (indegree[c] == 0) { queue.add(c); visited[c] = true; order[count] = c; count++; } } while (!queue.isEmpty()) { int cur = queue.remove(); if (graph.containsKey(cur)) { // 해당 정점과 연결된 노드들의 진입차수에서 1빼기 for (int next : graph.get(cur)) { indegree[next]--; // 진입차수가 0이면 이제 방문해도 된다는 뜻이기 때문에 queue에 추가해준다. if (indegree[next] == 0) { visited[next] = true; order[count] = next; count++; queue.add(next); } } } } return order; } } 안녕하세요 ~ 위상정렬 관련해서 문의사항이 있어서요 ~ 다름이 아니라 강의의 구현 코드에서 visited를 체크를 하고 있던데 위상정렬의 경우 사이클이 없는 방향 그래프인데 visited가 필요할까요 ?? 현재 코드에서도 visited를 선언만 하고 따로 활용을 하고 있지 않은거같아서 문의 드립니다 ~
미해결
자바와 스프링 부트로 생애 최초 서버 만들기, 누구나 쉽게 개발부터 배포까지! [서버 개발 올인원 패키지]
안녕하세요 선생님. 강의를 듣던 중 궁금한 점이 생겨서 이렇게 글을 남기게되었습니다. UserLoanHistory라는 Entitiy는 강의에서 말씀하셨듯이 User와 ManyToOne의 관계를 가져가는데, 이게 또 Book과의 관계를 보더라도 ManyToOne이 성립할수 있지 않나 싶습니다.(물론 UserLoanHistory의 변수로 pk인 bookId가 아닌 bookName을 쓰셔서 조금 다를수 있지만...) 따라서 user_loan_history 테이블을 설계할때 칼럼을 book_name이 아닌 book_id로 해서 만든다면 그게 좋은 선택일지 궁금합니다 만일 1번의 테이블 설계가 나쁘지 않은 방식이라면 UserLoanHistory Entity에 Book에 대해서도 ManyToOne을 무조건 해주는게 좋은지, 아니면 '유저'의 대출기록만 자주 쓰이고 '책'의 대출기록은 거의 조회되지않을거 같으면 굳이 ManyToOne을 해줄 필요가 없을지 궁금합니다.
미해결
RAG를 활용한 LLM Application 개발 (feat. LangChain)
안녕하세요, 허깅페이스에서 모델을 불러오다가 에러가 생겨서 질문 남깁니다! 강의상으로는 model_id='LGAI-EXAONE/EXAONE-3.0-7.8B-Instruct 를 사용하셨지만, 인증 문제 때문에 model_id='LGAI-EXAONE/EXAONE-3.5-7.8B-Instruct' 로 대체하여 사용중입니다 대체된 모델로 chat_model을 만들고 돌렸을 때, 위 이미지와 같은 에러가 나타납니다...혹시 transformer 관련 버전 호환문제일 수도 있을까요? 답변 부탁드립니다!
미해결
실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발
spring boot4 + 이클립스를 사용중입니다. src/test/resources 경로에 applicaion.yaml파일을 넣어도 인식을 못해서 3시간을 해맸습니다.. 구글링으로 java build path에서 설정 경로를 확인할 수 있다는 사실을 알게되었는데 src/test/java 경로로 설정이 되어있더군요. 여기 경로에 넣으니까 잘 작동됩니다. 어째서 src/test/resources 경로가 기본값이 아니였던걸까요..