묻고 답해요
147만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
미해결스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
ViewResolver 오류
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오) 예2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오) 예3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)예[질문 내용]강사님과 똑같이 코드를 짯는데 저는 실행이 돼지 않습니다.ViewResolver setup!이라고 문구가 발생하는데 어떤 부분을 확인해야할까요강사님과 같은 JAVA 및 HTML 파일 작성실행했으나 500 ERROR 발생파일의 경로 및 소스코드 확인했으나 이상 없음
-
미해결스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
addAttribute 질문
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오) 예2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오) 예3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)예[질문 내용]현지 저는 사정상 이클립스로 진행을 하고 있는데요model.addAttribute 부분에서model.addAttribute (attributeName:"data", attributeValue:"hello!!"); 로 하면 오류가 나고model.addAttribute ("data","hello!!");로 수정하면 오류가 나지 않습니다 차이가 뭔지 알 수 있을까요
-
미해결실리콘밸리 엔지니어와 함께하는 Gradle
gradle build 오류 문의
안녕하세요? gradle init로 그레들 프로젝트 생성했습니다.(그레들 버전 : 8.12)Type : Application나머진 수업해서 지정한 그대로 입니다.(java, groovy, ..)아무런 변경 없이 gradle app:test 혹은 gradle app:build를 실행했습니다.그럼, 다음의 예외가 발생합니다.java.lang.ClassNotFoundException: org.example.AppTest at java.base/jdk.internal.loader.BuiltinClassLoader.loadClass(BuiltinClassLoader.java:606)실습한 환경은 윈도우즈이고 CLI는 윈도우즈의 cmd입니다.혹시, 도움 받을 힌트가 있을까요?참고로 이클립스 프로젝트로 import하고 build 태스크를 실행하면 정상적으로 test가 진행됩니다.
-
해결됨스프링부트로 직접 만들면서 배우는 대규모 시스템 설계 - 게시판
실무에서 Primary Key 생성 전략 질문 있습니다.
Primary Key 생성 전략에서 많은 것들을 알기 쉽게 설명해주셔서 감사합니다 🙂 제가 개인적으로 생각하는 가장 베스트 방법 2가지만 설명 드리도록 하겠습니다. Primary Key 값을 Snowflake 알고리즘으로 해결장점인덱스 탐색에 있어서 정렬된 순서로 차례대로 저장 하다보니 범위 검색에 있어서 장점이 될 수 있다.단점Secondary Index 생성시 각각 Leaf Node 에 PK 값 (포인터) 를 가지고 있다보니 아무래도 생성된 Snowflake 알고리즘 값은 길이가 길어서 인덱스 저장용량이 증가 될 수 있다.PK 생성 전략을 Auto_Increment 로 하고 샤딩키(article_id) 값을 Snowflake 알고리즘으로 설정 해서 저장 한다. (단 client 에게는 PK 값 대신 article_id 으로 노출 한다.)장점Secondary Index 생성시 각각 Leaf Node 에 PK 값 (포인터) 값이 용량이 작아 인덱스 저장 용량 부담이 없다.인덱스 탐색에 있어서 정렬된 순서로 차례대로 저장 하다보니 범위 검색에 있어서 장점이 될 수 있다.단점client 으로 부터 요청시 샤딩키(article_id) 값으로 데이터 조회를 해야 하기 떄문에 Secondary Index -> Clustered_Index 까지 두번 인덱스 트리를 탐색 해야 하는 단점이 있다. 일단 이렇게 각각의 장단점을 설명 드렸습니다.여기서 제가 궁금한것은 실무에서 데이터베이스 테이블 설계시 이 두가지 방법 중 하나를 선택 하는데 있어서 각각 어떤 경우에 적합한지 판단 내리기가 힘든 부분이 있습니다. 각각 케이스 마다 장단점을 알고 있지만 아무래도 자세하게 수치화 된 지표 가 없어 선택하는데 있어서 어려움이 있는데요.선생님 경우는 실무에서 이 두가지 중 선택시 어떤 경우에 적절하게 판단 하시는지 노하우를 알려주시면 정말 감사 하겠습니다 🙂
-
미해결자바 ORM 표준 JPA 프로그래밍 - 기본편
쓰기지연저장소에 쿼리저장시점 관련 질문드립니다.
안녕하세요. 트랜잭션 커밋전에 쿼리를 생성해서 쓰기지연저장소에 저장하는것인지, 아니면 트랜잭션 커밋 이후 내부적으로 flush()호출 시 쿼리를 생성해서 쓰기지연 저장소에 저장하는것인지에 대해서 강의와 다른질문들, 구글링을 종합해보면 insert, update, delete를 할때에 쓰기지연저장소에 SQL쿼리를 생성해서 저장하는 시점이 약간 다른거같아서 아래와 같이 정리해 보았는데, 전체적으로 제가 이해한바가 맞는지 확인하고 싶어서 질문드립니다. 감사합니다. <update>0. em.find()나, em.persist()로 인해 이미 1차캐시에 있는 엔티티의 필드값 변경1. 트랜잭션 커밋. JPA는 트랜잭션을 커밋할때 변경된 엔티티 유무와 상관없이 항상 내부적으로 엔티티매니저의 flush()가 호출된다.2. 영속성컨텍스트의 엔티티와 스냅샷을 비교한다.3. UPDATE SQL을 생성해서 쓰기지연SQL저장소에 SQL쿼리를 저장한다.4. 쓰기지연SQL저장소에있는 쿼리를 데이터베이스에 전송(=flush)한다.5. 쓰기지연SQL저장소에있는 쿼리를 데이터베이스에 전송하고나서, 엔티티트랜잭션에 의해 트랜잭션이 커밋된다. <insert>1. em.persist()를 하면, 해당 엔티티가 1차캐시에 추가되고, INSERT SQL을 생성해서 쓰기지연SQL저장소에 SQL쿼리를 저장한다.2. 트랜잭션 커밋. JPA는 트랜잭션을 커밋할때 변경된 엔티티 유무와 상관없이 항상 내부적으로 엔티티매니저의 flush()가 호출된다.3. 쓰기지연SQL저장소에있는 쿼리를 데이터베이스에 전송(=flush)한다.4. 쓰기지연SQL저장소에있는 쿼리를 데이터베이스에 전송하고나서, 엔티티트랜잭션에 의해 트랜잭션이 커밋된다. <delete>1. em.remove()를 하면, 해당 엔티티가 1차캐시에서 제거되고, DELETE SQL을 생성해서 쓰기지연SQL저장소에 SQL쿼리를 저장한다.2. 트랜잭션 커밋. JPA는 트랜잭션을 커밋할때 변경된 엔티티 유무와 상관없이 항상 내부적으로 엔티티매니저의 flush()가 호출된다.3. 쓰기지연SQL저장소에있는 쿼리를 데이터베이스에 전송(=flush)한다.4. 쓰기지연SQL저장소에있는 쿼리를 데이터베이스에 전송하고나서, 엔티티트랜잭션에 의해 트랜잭션이 커밋된다.
-
미해결자바 ORM 표준 JPA 프로그래밍 - 기본편
쓰기지연저장소 쿼리 저장 시점 관련 질문드립니다.
강의 내용에서, 트랜잭션 커밋전에 em.persist나 em.remove를 하면, 영속성컨텍스트의 1차캐시에 값이 저장 또는 삭제되고, 쿼리를 생성해서 쓰기지연저장소에 저장한다고 하셨는데요. 트랜잭션 커밋전에 쿼리를 생성해서 쓰기지연저장소에 저장하는것인가요? 아니면 트랜잭션 커밋 이후 내부적으로 flush()호출 시 쿼리를 생성해서 쓰기지연 저장소에 저장하는것인가요??
-
미해결스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
자바 코드로 직접 스프링 빈 등록하기 강의 관련 질문입니다~
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]여기에 질문 내용을 남겨주세요. 강의에서 의존성 주입의 3가지 방법에 대한 내용이 나왔는데요.그 중에서 "setter 주입" 방법의 경우, 만약 MemberController를 예를 들면,스프링 서버가 뜰 때, MemberController 객체가 생성될 때 생성자가 호출되는 건 이해를 하는데, setter 주입 방식은 객체 생성 시 생성자 뿐만 아니라 setter도 같이 스프링에서 호출하는 걸까요? 그리고 위와같이 setter 주입 시 private으로 변경해도 스프링 서버 run하는데는 문제가 없던데 이유가 있을까요? 강의에서는 public으로 setter를 노출시키는게 setter 주입 방식의 단점이라고 하셔서요.
-
미해결스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
그래들 오류
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오) 예2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오) 예3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)예[질문 내용]저는 Gradle - Groovy / 3.4.1 / open JDK 17 / 이클립스-STS4로 강의를 설정하려 하는데 계쏙 오류가 나서 질문드려봅니다.메이븐으로 설정할 시에는 위와 같은 옵션 및 이클립스에서 서버 구동까지 문제없이 잘 되는데 그래들로 하는경우 계속 오류가 나서 프로젝트가 설정되지 않습니다.그래들로 할 경우 인텔리제이로 해야하는건가요??
-
해결됨(2025) 일주일만에 합격하는 정보처리기사 실기
sum+=arr[i] 합계 문의
14:28 부분인데요밑에 어느분이 합계 25로 나왓는데 이해가 안간다는 글을 봣습니다. 저도 결과는 다르지만 이 부분이 이해가 안됩니다.for문으로 수행될때....sum=+arr[i]1 0 13 1 26 3 310 6 4i=5는 수행이 안됨 이렇게 해서 sum값이 10이 안될까요?왜 1+2+3+4+5 의 값 15가 되는지 이해가 안되네요
-
미해결스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
프로젝트 생성해서 intellij에서 열었는데 오류
[질문 내용]쌤, 이렇게 프로젝트를 생성했는데, 오류가 납니다. ㅠㅠ뭘 해줘야할까요? 프로젝트 지우고 다시 generate해서 압축 풀고 build.gradle로 열어도 또 똑같은 오류가 납니다 ㅠㅠ!
-
해결됨스프링부트로 직접 만들면서 배우는 대규모 시스템 설계 - 게시판
멀티 모듈 방식 질문입니다.
안녕하세요 강의 잘 듣고 있습니다.현재 게시글 조회수 부분 보고있는데요 헷갈리는게 있습니다.멀티 모듈 방식 이라 aricle과 view 모듈이 나눠져 있는데요현재는 게시글 조회 api와 게시글 조회수 증가 api가 나뉘어져 있는거같은데요 프론트에서 게시글 조회 시 이 2개의 api를 사용하는 걸까요?게시글 조회 api에서 게시글 조회 -> redis 조회수 1 증가 이렇게 하나의 api가 아니라 실무에서도 api를 나누는 방식으로 진행하는걸까요?
-
미해결실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발
ERD 설계 질문
숨고와 같은 구인 구직 사이트인데 특정 작물에 대한 전문가와 매칭해주고 견적이 나오는 서비스를 프로젝트로 만들려고 생각중입니다. 이렇게 종류를 선택하면(위에 사진1에서 아래 사진2으로 넘어감니다.) 서비스일 경우 이런 카테고리는 따로 erd를 만들어 주어야 하나요? 아니면 enum으로 빼는 건지 감이 정말 1도 안 잡혀서 질문 드립니다. 견적 엔티티를 이런식으로 만들고 컨설팅 형태 이런 것도 enum으로 만드나요?나머지는 속성값으로 들어가는 것은 알고 습니다.) 그리고 맨 밑에 경우 만약 사진하고 글을 같이 첨부해서 컨설팅 내용을 신청할경우 이것도 erd로 따로 빼 놓나요?( aws 로 작업할경우 s3로 이미지만 따로 저장하는 것은 알 고 있습니다.)
-
미해결김영한의 자바 입문 - 코드로 시작하는 자바 첫걸음
맥북에서 ._Var8.java와 같이 ._*파일이 계속 생겨 오류가 생깁니다.
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)아니오.2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)예3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)예[질문 내용]여기에 질문 내용을 남겨주세요. 실습중 맥북에서 ._Var8.java와 같이 ._*파일이 계속 생겨 오류가 생깁니다. 맥북 M1입니다.혹시 해결하는 법도 알 수 있을까요..?
-
미해결김영한의 실전 자바 - 고급 2편, I/O, 네트워크, 리플렉션
채팅서버가 2개일때 서버간 socketManager 공유방법
안녕하세요.해당 강의에서는 채팅 서버가 하나지만만약 채팅서버를 2개 운영한다고 가정했을때 (A.jar, B.jar)배포를 위해 A jar 를 내리고 다시 올릴때 서버가 내려가기전 A jar 의 socket 객체정보를 B jar 로 보내려면 어떤 방법을 사용해야할까요? socket 을 직렬화해서 보내려고 했는데 socket 은 제가 만든 클래스가 아니다보니 Serializable 를 상속받지못해 불가능할것같은데.. 실무에서는 채팅 이중화서버운영 무중단 배포를 어떤식으로 하는지 궁금합니다 ㅠㅠ .. 강의보다 심화된 내용이지만 해당 부분에 대한 지식을 쌓기가 힘들어서 글을 작성하게 되었습니다. 감사합니다.
-
미해결실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발
OrderController 에서 {orderId} 경로변수 질문
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]안녕하세요. 강의를 듣던 중 궁금한 내용이 생겨 질문합니다.<td> <a th:if="${item.status.name() == 'ORDER'}" href="#" th:href="'javascript:cancel('+${item.id}+')'" class="btn btn-danger">CANCEL</a> </td> function cancel(id) { var form = document.createElement("form"); form.setAttribute("method", "post"); form.setAttribute("action", "/orders/" + id + "/cancel"); document.body.appendChild(form); form.submit(); }위 자바 스크립트 코드를 보면, post 방식으로 전송할때, item.id 를 cancel 함수의 매개변수로 전달하고, 이 item.id 가 /orders/id/cancel 에 들어갑니다. @PostMapping("/orders/{orderId}/cancel") public String cancelOrder(@PathVariable Long orderId){ orderService.cancelOrder(orderId); return "redirect:/orders"; }반면에 , OrderController 의 위 메소드에서는 , 경로변수가 {orderId} 로 설정이 되어있습니다. 왜 itemId 를 받아와서 orderId 로 사용하는 것인지 궁금합니다. 만약 그것이 아니라면 제가 어떤 부분을 놓치고 있는 것인지 궁금합니다.
-
해결됨스프링부트로 직접 만들면서 배우는 대규모 시스템 설계 - 게시판
강의자료 파워포인트 기준 361~362 페이지를 보면
이렇게 나타나고 있는데요.path > '00a0z' 아닌가요??
-
미해결김영한의 실전 자바 - 기본편
static2.ex 첫번째 문제
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예)[질문 내용]여기에 질문 내용을 남겨주세요.Car 클래스 안에 this.carName안에 왜 굳이 carName을 할당했는지 잘 이해가 가지 않습니다. private String carName가 사용되지 않아서 변수 선언도 불필요하다고 생각됩니다.
-
미해결김영한의 자바 입문 - 코드로 시작하는 자바 첫걸음
openJDK 23 설치
OpenJDK 21이 없어서 Temurin을 다운 받았는데, 위의 메시지가 뜹니다. 강의 수강에는 딱히 문제가 되지 않나요?
-
미해결자바 ORM 표준 JPA 프로그래밍 - 기본편
프록시 객체 질문 있습니다.
em.getReference() 를 호출하면, 프록시 객체를 1차 캐시에 저장하고, 해당 프록시 객체를 반환em.find() 를 호출하면, 실제 엔티티 객체를 생성하고 프록시 객체를 초기화 이런식으로 동작하는데2번 과정에서 생성된 실제 엔티티 객체는 1차 캐시에 저장되는지 안되는지가 궁금합니다초기화된 프록시 객체에서 setXXX() 같은 메서드를 호출하면 프록시 객체에 연결된 실제 엔티티의 setXXX() 메서드가 호출될텐데, 이런 경우 update 쿼리가 나가는 것을 보니까 실제 엔티티를 영속성 컨텍스트에서 관리해주고 있는 것 같긴한데프록시 객체와 실제 엔티티 객체의 id값이 같은데 1차 캐시에 두 개 다 저장되는게 맞는건가 싶어서 질문드립니다.
-
미해결자바 개발자를 위한 코틀린 입문(Java to Kotlin Starter Guide)
타입캐스팅 궁금한점 질문드립니다.
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요.안녕하세요 코틀린을 처음 접해봤습니다. 질문이 이상하더라도 양해를 구하며 상세히 알려주시면 정말 감사하겠습니다.fun printAgeIfPerson(obf:Any?){val person = obj as? Person......}여기서 질문 드립니다.앞에서 변수 선언을 할 때 val,var을 배웠는데, 매개변수를 선언하는 부분에서 obf:Any? 대신에 val obj:Any?로는 안 쓰나요? 앞에서 모든 변수에는 var/val 을 붙여서 선언한다고 하셨어서요. obj는 매개변수에서 선언된 변수 아닌가요?2.위 코드에서 obj as? Person 의 값이 결과값 또는 null로 나온다고 하셨는데, 그렇게 되면 lvalue인 val person에도 null이 들어갈 여지가 있으므로 val person? 나 val person:Person?으로 선언이 되어야 하는 것 아닌가요?자바와 다른 점이 많아서 헷갈립니다.