묻고 답해요
163만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
해결됨김영한의 실전 자바 - 고급 1편, 멀티스레드와 동시성
스레드 작업 수행중 Ctrl + C 입력을 통한 인터럽트 명령이 제 생각대로 수행되지 않습니다.
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예)[소스 코드 다운로드 링크]https://drive.google.com/file/d/1c0QnKniulwUHetmd8iRalCwtm1o3RxSf/view?usp=share_link[질문 내용]질문 대상 소스 코드: NewOrderService.java - line 30 제 생각: 스레드들이 작업을 수행중일 때 (mac 기준) ctrl + c를 누르면 키보드 인터럽트가 발생하여 catch block에 잡혀서 line 31의 log("일부 작업이 실패했습니다."); 코드가 수행될 것이라고 예상했습니다. 하지만 ctrl + c를 입력하더라도 예외는 발생하지 않고, 스레드들이 정상적으로 처리되는 것이 실제 흐름이었습니다.질문 1-1. ctrl + c 입력은 인터럽트인가요?질문 1-2. 만약 1-1에 대한 답변이 yes라면, 시스템 상의 인터럽트(?)는 맞지만 자바 프로그램 상의 인터럽트는 아닌 것인가요?질문 1-3. 만약 1-1에 대한 답변이 yes라면, 이는 터미널 상에서만 입력 가능한 인터럽트이고, 인텔리제이에서는 불가능한 입력인가요?질문 2. (인텔리제이에서) 자바 프로그램에 대해서 예외를 일부러 발생시키려면 throw new IllegalStateException(); 등과 같이 코드를 통해서만 가능한가요?
-
미해결김영한의 자바 입문 - 코드로 시작하는 자바 첫걸음
향상된 for 문 사용법 의문점
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예)[질문 내용] 배열의 입력과 출력 문제입니다. 스캐너로 배열을 입력받을 때 향상된 for문을 사용했더니 결과가 0,0,0,0,0이 나왔습니다. 주석처리된 일반 for 문으로 문제를 풀면 제대로 나옵니다. 두 가지가 같은 결과가 나올거라고 생각했는데 왜 다른 결과가 나온건지 알고싶습니다.package array.ex; import java.util.Scanner; public class Array02 { public static void main(String[] args) { Scanner input = new Scanner(System.in); int[] nums = new int[5]; //왜 안되는거지 for (int num : nums) { num = input.nextInt(); } // for (int i = 0; i < 5; i++){ // nums[i] = input.nextInt(); // } for (int i = 0; i < 5; i++){ System.out.print(nums[i]); if (i == 4){ break; } System.out.print(", "); } } }
-
미해결자바 ORM 표준 JPA 프로그래밍 - 기본편
일대다 단방향 연관관계 질문드립니다.
일대다 단방향 연관관계에서,@Entitypublic class Member {@Id @GeneratedValue@Column(name = "MEMBER_ID")private Long id;@Column(name = "USERNAME")private String name;... getter and setter}@Entitypublic class Team {@Id @GeneratedValue@Column(name = "TEAM_ID")private Long id;private String name;@OneToMany@JoinColumn(name = "TEAM_ID")private List<Member> members = new ArrayList<>(); ... getter and setter}Member member = new Member();member.setName("member1");em.persist(member);Team team = new Team();team.setName("teamA");team.getMembers().add(member);em.persist(team); 위와 같은 일대다 단방향 연관관계에서,1. 이렇게하면 Team엔티티의 members필드인 리스트에 값을 추가 및 변경(team.getMembers.add(member), team.setMembers())하고 Team엔티티를 저장하면, MEMBER 테이블에 대한 UPDATE쿼리가 추가적으로 생성되고, MEMBER 테이블의 외래키(TEAM_ID)를 추가 및 변경할 수 있다.이렇게 이해했는데요. @OneToMany @JoinColumn(name = "TEAM_ID") private List<Member> members = new ArrayList<>();를 통해 MEMBER테이블에 TEAM_ID컬럼이 생기는거 같은데, 다른 여러 테이블도 있다고 가정했을때 어떤 이유로 MEMBER테이블에 TEAM_ID컬럼이 생성되는것인가요? @JoinColumn(name = "TEAM_ID")만 보고 MEMBER테이블인지 어떻게 아는것인가요..? 2. db에 위와같이 Member와 Team을 저장한다음에,team.getMembers()을 해서 Member를 구한 다음에, Member를 통해 MEMBER테이블에 있는 Member의 TEAM_ID값을 알고싶으면 어떻게해야하나요?제가 알기로는 team.getMembers()로 가져온 Member 객체에는 TEAM_ID를 알 수 있는 필드가 없어서 알수없다고 생각하는데 이게 맞을까요?그럼 Member의 TEAM_ID값을 알고싶으면 양방향 연관관계로 만들어서 Member 엔티티에 @ManyToOne을 추가하고 Member 객체에서 member.getTeam().getId(); 를 통해 TEAM_ID를 직접 조회해야할까요?
-
해결됨스프링부트로 직접 만들면서 배우는 대규모 시스템 설계 - 게시판
댓글 무한 depth 질문입니다.
안녕하세요 강사님 강의 잘 듣고 있습니다.댓글 무한 depth 강의를 듣고 있는 도중에, 전부터 궁금했던 내용인데 Repository에 extends JpaRepository를 하면 @Repository를 안 붙여도 되는 걸로 알고 있는데 붙이시는 이유가 따로 있으신지 궁금합니다.https://sudo-minz.tistory.com/147참고했던 블로그 글입니다!
-
미해결실전! 스프링 부트와 JPA 활용2 - API 개발과 성능 최적화
다대일 패치 조인 고민
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? 예2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? 예3. 질문 잘하기 메뉴얼을 읽어보셨나요? 예[질문 내용]다대일의 관계 패치 조인에 관련한 질문이 있습니다.사이드 프로젝트에서 모임과 참여 모임 테이블이 있습니다.참여 모임 테이블은 (userId, eventId)를 가지고 있습니다. 모임에 참여한 인원과 모임에 대한 정보를 얻고자 합니다.참여 모임을 모임 id로 탐색 하여 참여 모임 List를 얻어 참여 모임의 인원수를 알 수 있습니다.또한 패치 조인을 통하여 List<참여모임> 에 대한 모임의 정보를 얻을 수 있습니다.고민은 여기서 ToOne으로 가지고 오는 모임은 모두 같은것 입니다.이런 경우에도 패치조인을 통해 한번의 쿼리로 가져오는 것이 나은가요? 그래프 탐색이 가능 하도록 참여모임에 해당하는 모임을 넣는 과정이 모두 중복이라 이게 효율적인가?에 대한 고민 입니다.
-
미해결실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발
bytebuddyINterceptor 에 대해서 궁금한점이 있습니다.
api 2편을 수강중 궁금한게 있어서 질문올려요2편내용중에 public List<Order> ordersV1() { List<Order> all = orderRepository.findAllByString(new OrderSearch()); for (Order order : all) { order.getMember().getName(); //Lazy 강제 초기화 order.getDelivery().getAddress(); //Lazy 강제 초기화 } return all; }호출할때 member 지연로딩인경우 예외발생하던데그래서 hibernate5Module 모듈을 설정을했습니다. 그런데 1편엔 그런설정이 없는데 정상작동이 되는데 무슨차이가 있나요?
-
해결됨(2026) 일주일만에 합격하는 정보처리기사 실기
SQL 기출문제 (+DML, 변형 문제) 31:37
안녕하세요 강사님실제 시험 시 답안 작성을 아래와 같이 하여도 무관할까요? SELECT 제조사, 제품명, 단가FROM 제품WHERE 단가 < (SELECT AVG(단가) FROM 제품); 이런식으로 공백을 사용하여 제 기준 읽기 편하게 작성 한 것을답안으로 기입하여도 될지 궁금합니다.
-
해결됨[말 한마디로 뚝딱!] AI와 함께 나만의 수익화 웹사이트를 만드는 법
(해결)DBeaver 연결 과정에서 질문 있습니다
DBeaver 연결과정에서 database를 gnuboard로 하고 연결 성공하였는데 tables에 아무 것도 안 뜨는데 어떻게 어떤 것이 잘못됐는지 알 수 있을까요?
-
미해결재고시스템으로 알아보는 동시성이슈 해결방법
DB락과 분산락
현재 프로젝트를 진행하며 재고 관리를 할 때 어떤 락을 사용하는 것이 좋을 지에 대한 고민을 하고 있습니다. 강의를 통해 락의 종류와 사용 방법에 대해 감을 잡을 수 있었습니다. 감사합니다!현재 동시성 문제가 발생할 때 어떤 상황에서 각각의 락을 사용하는 것이 좋을지에 대해 아직 잘 이해를 잘 하지 못해 판단이 어려운 부분이 있습니다. 분산락은 보통 어떤 상황에서 사용하나요?비관적락, 낙관적락을 적용하여 동시성 문제가 해결된다면, 굳이 분산락은 고려하지 않아도 괜찮을까요?아직 이해가 부족한 것 같아 질문드렸습니다!
-
미해결김영한의 실전 자바 - 중급 1편
str.concat("!!!")) 부분 질문
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예)[질문 내용]앞에 내용에서는 concat은 반환값이 있기 때문에String str1 = "Hello" 일 경우 뒤에 느낌표를 붙여주기 위해서는String str2 = str1.concat("!!!"); 이렇게 해야된다고 했는데강의 1분 45초 부분에서 str.concat("!!!")이라고 했는데 str 뒤에 느낌표 세 개가 붙어서 출력되는 이유가 먼가요 ??
-
해결됨스프링부트로 직접 만들면서 배우는 대규모 시스템 설계 - 게시판
HotArticleApiTest 오류
package kuke.board.hotarticle.api; import kuke.board.hotarticle.service.response.HotArticleResponse; import org.junit.jupiter.api.Test; import org.springframework.core.ParameterizedTypeReference; import org.springframework.web.client.RestClient; import java.util.List; public class HotArticleApiTest { RestClient restClient = RestClient.create("http://localhost:9004"); @Test void readAllTest() { List<HotArticleResponse> responses = restClient.get() .uri("/v1/hot-articles/articles/date/{dateStr}", "20250225") .retrieve() .body(new ParameterizedTypeReference<List<HotArticleResponse>>() { }); for (HotArticleResponse response : responses) { System.out.println("response = " + response); } } }섹션 6 인기글 Producer&Consumer 테스트 테스트 코드 실행 오류가 발생합니다.2025-02-25T14:24:03.178+09:00 INFO 38230 --- [kuke-board-hot-article-service] [nio-9004-exec-1] o.s.web.servlet.DispatcherServlet : Initializing Servlet 'dispatcherServlet' 2025-02-25T14:24:03.178+09:00 INFO 38230 --- [kuke-board-hot-article-service] [nio-9004-exec-1] o.s.web.servlet.DispatcherServlet : Completed initialization in 0 ms 2025-02-25T14:24:03.191+09:00 WARN 38230 --- [kuke-board-hot-article-service] [nio-9004-exec-1] .w.s.m.s.DefaultHandlerExceptionResolver : Resolved [org.springframework.web.bind.MissingPathVariableException: Required URI template variable 'dataStr' for method parameter type String is not present]org.springframework.web.client.HttpServerErrorException$InternalServerError: 500 Internal Server Error: "{"timestamp":"2025-02-25T05:24:03.195+00:00","status":500,"error":"Internal Server Error","path":"/v1/hot-articles/articles/date/20250225"}" 다른 질문글에서 언급한 500에러 해결책을 참고해봤지만 소용이 없네요. 코드를 점검해봐도 잘못 작성한게 없어보입니다. 기초 선수지식이 없는 상태에서 클론코딩을 하다보니 어디를 어떻게 더 점검해야할지 모르겠는데 제시 해주신다면 찾아서 해결해보려고 합니다. 어떻게 해야할까요?
-
미해결김영한의 실전 자바 - 고급 2편, I/O, 네트워크, 리플렉션
맥북 intelliJ 키맵 설정 질문
안녕하세요. 김영한님 강의를 입문편부터 쭉 듣고 있다가 중간에 윈도우에서 맥북으로 바꿨습니다. 단축키가 처음에 익숙하지 않더라고요.그래서 선생님 강의에서 단축키 쓰실때마다 무슨 단축키 쓰셨는지 나오는 부분을 항상 참고해서 써보는데 맥북에서는 선생님의 단축키 설정과 제 단축키 설정이 다른건지 잘 안되더라고요.현재 제 인텔리J 키맵은 IntelliJ IDEA Classic으로 되어있습니다. 김영한님의 키맵 세팅이 궁금합니다.
-
미해결김영한의 자바 입문 - 코드로 시작하는 자바 첫걸음
선생님 에버리지 값 질문입니다
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]여기에 질문 내용을 남겨주세요.선생님 에버리지 값에 SUM 을 안쓰고 저렇게 가져다 쓰면 40이 나오는 이유를 알려주시면 감사하겠습니다
-
해결됨기초 탄탄! 독하게 시작하는 Java - Part 1 : 절차적 프로그래밍
인코딩시 Modified UTF-8만 일어난다 보아도 될까요?
영상 4:50부터 나오는 자료를 보면 3가지 내용이 나오는데요 이 중에서문자열 처리 과정에서는 UTF-16BE를 Modified UTF-8로 변경해 처리해당 내용의 이해가 헷갈려서 질문드립니다.이전의 6-6강 문자와 인코딩 규칙 강의중 "인코딩 규칙에 대한 모든 것" 유튜브 영상을 권해주셔서 보고 검색도 해보니유니코드 문자중 한자와 한글은 UTF-8에서 3바이트로 변환된다는 것으로 정리가 되었고, 위와 같은 문자/문자열의 입출력시 JVM의 I/O 버퍼에서는 1바이트씩 3개 단위로 끊어서 들어가며, JVM 내부에서는 UTF-16BE로 저장 및 처리가 된다는 것으로 이해했습니다. 그런데 그렇다면 Modified UTF-8은 어떤 용도로 나온건가 싶어, GPT에 물어보고 해보니 아래 사진과 같은 상황에서는 UTF-8쓰고, 또 어떨때는 Modified UTF-8을 쓴다 하더군요 즉, Modified UTF-8 뿐만 아니라 UTF-8로도 인코딩 하는 것 같은데, 서론의 강의 내용처럼 "Modified UTF-8로 변경해 처리한다" 로만 이해해도 충분할까요?말씀하신대로 핵심 내용은 "데이터의 입출력 과정에서 인코딩이 일어난다"는 내용인데, 이해의 과정에서 저 부분이 계속 헷갈려서 질문드립니다.
-
미해결김영한의 자바 입문 - 코드로 시작하는 자바 첫걸음
강사님이 보고 계신 자료는 따로 공유안되나요?
=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)네2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)네3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)네[질문 내용]혹시 강사님이 수업중에 보시면서 하는 노션 ? 파일은 따로 없나요 ? Ex진행시에 혼자 문서를 보면서 혼자풀어보고싶은데 문제예시 같은걸 따로 보면서 할 수 없어서 저도 모르게 자꾸 강사님이 작성하신 코드를 보면서 따라치게만 되네요 ㅠ./.
-
미해결스프링 시큐리티 OAuth2
OIDC SSO 관련 질문 입니다.
안녕하세요OIDC SSO 관련 질문이 있습니다.인증서버 에서 A 시스템에 Token을 발급 해주었습니다.그리고 B시스템에서 인증을 했을 때 , 동일한 사용자 이기 때문에 인증 서버에서는 A시스템에 발급해준 Token를 가지고사용자를 찾아서 B시스템에 토큰을 발급해 줄 수 있나요 ?
-
해결됨스프링부트로 직접 만들면서 배우는 대규모 시스템 설계 - 게시판
테스트 코드 작성 관련해서 질문드립니다!
강사님 안녕하세요.강의의 테스트 코드도 보고 실무서 테스트 코드 작성시 문득 궁금한 사항이 생겼습니다.테스트 코드 작성시 단위, 통합, E2E 등 종류도 많고 일정 등 고려해야 될 사항이 많은데 강사님의 테스트 코드 작성 기준이 궁금합니다. 제가 정한 기준은 아래와 같습니다.단위 테스트(도메인 폴더 하위 순수 객체)는 반드시 작성일정 일정이 급할때 단위 테스트일정이 여유로울때단위 테스트API 테스트 or 통합 테스트서비스의 핵심 로직단위 테스트API 테스트 or 통합 테스트일정이 급해도 최대한 작성 그리고 다음과 같은 고민도 있습니다.Mockito를 이용한 테스트가 충분히 검증이 될까? 근데 될것 같기도..? XxxFacade 혹은 XxxService에 Mockito를 이용한 테스트의 정확도에 의문을 품었습니다. 그래서 @SpringBootTest를 이용한 통합 테스트를 작성하였는데 테스트를 위한 데이터 세팅이 너무 귀찮더라구요.(하하하) 그래서 도메인 모델링을 잘하고 단위 테스트를 꼼꼼하게 작성한다고 쳤을때 Mockiot의 verify를 이용해 의도한 메서드가 호출이 되었는지만 테스트만 해도 괜찮지 않을까? 란 생각이 들었습니다. 회사일도 바쁘실텐데 다음 강의 준비도 하시고 질의응답도 해주셔서 언제나 감사드립니다.
-
해결됨[말 한마디로 뚝딱!] AI와 함께 나만의 수익화 웹사이트를 만드는 법
화면이 너무 끊깁니다.
설치 과정을 따라가고 있는데, 화면이 너무 끊겨서 강의에서 어떤 버튼을 클릭하는지 또는 어떤 작업을 하는지 확인하기가 어렵습니다. 따라서 하기가 힘드네요. ㅜㅜ
-
해결됨김영한의 실전 자바 - 중급 2편
HashSet과 HashMap 메소드의 시간 복잡도에 대해 여쭤봅니다.
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예)[질문 내용]여기에 질문 내용을 남겨주세요.HashSet과 HashMap의 주요 메소드의 시간복잡도에 대해 정리한 내용인데, 제대로 이해했는지 올려봅니다. 1. HashMap은 hash table 역할을 하는 배열을 내부적으로 갖는데 기본 크기는 16이며, 저장되는 요소가 배열 크기의 75%를 초과하면 크기가 두배로 늘어나며 요소들은 re-hashing된다.2. 특정 인덱스에 저장되는 데이터가 8개 이상이 되면, 이 데이터들은 red-black tree 형태로 변환되어 add(), get(), remove()와 같은 메소드를 호출할 때 O(log N)의 접근 효율을 제공한다.3. 하지만 인덱스에 8개 이상이 아닌 2~7개의 데이터가 저장되는 경우 강의에서 설명한대로 데이터 접근에 대한 O(N)의 효율이 나온다. (해시 충돌 설명 인용)4. 그리고 HashSet은 HashMap을 기반으로 하기 때문에 위 1~3번 역시 HashSet에 동일하게 적용된다. (HashSet의 경우 각각 add(), contains(), remove()) 위 정리가 맞다고 가정해도, 특정 인덱스에 8개 이상의 요소가 저장되는 경우가 드물기 때문에 경우에 따른 시간 복잡도를 저렇게까지 깊게 구분할 필요가 없는걸까요..?
-
해결됨[말 한마디로 뚝딱!] AI와 함께 나만의 수익화 웹사이트를 만드는 법
아파치 서버 실행후
test.php 저장해서 xampp 폴더에 넣고아파치 실행후 해당 경로로 localhost/test.php 접속해보니아래와 같이 뜨는데요. 접속이 안되는 이유가 혹시 그누보드 설치를 아직 못해서 그런가요?그누보드 설치에서 막혀서, php 작동 방식 및 다른 강의부터 보고 있었는데.. 이것도 안되네요. ㅜㅠ 만약 그누보드 설치와 관계가 없다면 왜 접속이 안되는걸까요? 주소창에 localhost/ 접속시그누보드 설치페이지는 잘 뜨거든요.ㅠㅠ 그리고 그누보드 설치 막혀서 문의를 남기긴했는데,이곳에서도 남겨보겠습니다. ㅠㅠ 해결좀 부탁드립니다. 강의 영상보고 계정생성 다 똑같이 해놨거든요. 그런데 어떤 오류가 있어서 진행이 안되는지 잘 모르겠네요. 흑