자바와 스프링 부트로 생애 최초 서버 만들기, 누구나 쉽게 개발부터 배포까지! [서버 개발 올인원 패키지]
4일차 과제의 문제 1번을 해결하려고 코드를 작성하고 Table도 생성해서 run 해보았는데, 자꾸 Table not found 에러가 뜨면서 500 internal error가 발생합니다. 이 에러 때문에 테이블도 3번 다시 생성하고, show tables 했을 때도 table이 모두 잘 출력됩니다. 대소문자 바꿔서도 다 해봤는데 왜 이런 오류가 뜨는지 모르겠습니다..ㅜㅜ 도와주세요ㅠ
각각 3개로 한정된 소비자, 생산자 스레드가 있습니다. 생산자가 생산자를 깨운 것 처럼 notify()로 일어난 스레드가 다시 wait() 해야하는 경우 락을 반납하고 대기 상태에 든다면 이후 다시 notify()하는 스레드가 없기 때문에 교착상태가 발생하는건가요? (새롭게 추가되는 여러 스레드가 있다면 해결될 가능성도 있으나 새롭게 추가되지 않는 한정된 상황이라면 교착상태가 발생할 수 있으니 notifyAll() 사용이 올바른 선택인지 궁금합니다)
강의에서도 잠깐 언급되지만, 전체적인 강의 내용이 만들면서 배우는 클린 아키텍처의 저자가 주장하는 내용과는 지향하는 바는 같지만 그 구현에 있어서 어느정도 거리가 있다고 느껴지는데요..! "만들면서 배우는 클린 아키텍처" 이 책을 읽으면서도 저자가 주장하는 내용이 좋은 아키텍처라는 생각이 들었었고, 그 지름길에 대해서도 많은 생각이 들었습니다. 그러다보니 강의에서 언급해주시는 일부 내용들은 이 지름길을 사용했다는 것으로도 저한테는 느껴지기도 하는데요. 하지만 또 다른 측면으로 토비 선생님께서 강의에서 말씀하시는 내용들이 매우 타당하고 이것 또한 매우 클린하며 헥사고날 아키텍처의 장점을 매우 잘 살리고 있다는 생각도 들었습니다. 제가 궁금한 건 "만들면서 배우는 클린 아키텍처" 에서 저자가 주장하는 내용들에 대해 토비 선생님께서는 어떻게 생각하고 계시는지 궁금합니다! 회사에서 많은 시니어 분들이 헥사고날과 관련해서는 저자마다 주장하는 내용이 다른 경우가 많으니 최대한 많이 접하고 스스로 기준을 삼는 것이 좋다라고 조언을 주시기도 하셔서 더욱 궁금하네요 ㅎㅎ:)!
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요. 1. 강의 내용과 관련된 질문을 남겨주세요. 2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요. (자주 하는 질문 링크: https://bit.ly/3fX6ygx) 3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요. (질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG) 질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요. ========================================= [질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예/아니오) 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오) 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오) [질문 내용] 강의를 듣다 보니까. int형 변수를 toString 메서드로 반환하여 String으로 바뀐 값을 sout 출력으로 확인 시켜주시는대. 출력된 결과로 int형으로 출력된건지. String으로 출력된건지 알 수 있는건가요?
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요. 1. 강의 내용과 관련된 질문을 남겨주세요. 2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요. (자주 하는 질문 링크: https://bit.ly/3fX6ygx) 3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요. (질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG) 질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요. ========================================= [질문 템플릿] 1. 강의 내용과 관련된 질문인가요? 예 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? 아니요 3. 질문 잘하기 메뉴얼을 읽어보셨나요? 예 [질문 내용] 여기에 질문 내용을 남겨주세요. https://inf.run/Viaq1 저도 이분과 같은 증상이 나타나서 여쭤봅니다. main메소드를 한번만 실행하여 진행하여도 em.persist() 메소드가 여러번 실행될 때 현재 값이 51이 아닌 101이 됩니다 혹시 24년도 최신버전으로 진행할때 자바는 17, 하이버네이트는 6으로 업데이트되면서 javax가 아닌 jakarta를 사용해서 생기는 일인지 궁금합니다
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요. 1. 강의 내용과 관련된 질문을 남겨주세요. 2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요. (자주 하는 질문 링크: https://bit.ly/3fX6ygx) 3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요. (질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG) 질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요. ========================================= [질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예/아니오) 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오) 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오) [질문 내용] 11번 문제에서 toString을 해주는 이유가 뭔가요? reverse()까지만 하고 출력해도 잘 나오는데 왜 그렇게 하는건지 궁금합니다.
완전 초보입니다. 온라인 강의 들으면서, 하나하나 단계별로 따라하고 있는데, Gradle 동기화 오류가 발생하고 있습니다. ChatGPT 답변에 따라 계속 해 봤는데, 해결이 안되고 있습니다. 처음에는 한글명으로 되어 있어서 문제인가 싶어서,, "한글명" --> yunkkim 으로 변경했는데, 그것도 해결책이 아닌거 같고, gradle.properties 파일을 추가해 보기도 하고,, 어찌 해결 해야 할까요? Multiple build operations failed. Could not move temporary workspace (C:\Users\yunkkim\.gradle\caches\8.14.3\transforms\dab9c5aa8765a6befd44e49da2bac9d1-1b58f335-d72b-448f-a093-89ca330d8ea9) to immutable location (C:\Users\yunkkim\.gradle\caches\8.14.3\transforms\dab9c5aa8765a6befd44e49da2bac9d1) Could not move temporary workspace (C:\Users\yunkkim\.gradle\caches\8.14.3\transforms\cfc6584c7a788e7d4dba5168f57ef3f7-cdad1752-221b-4e79-8033-98f49d023da3) to immutable location (C:\Users\yunkkim\.gradle\caches\8.14.3\transforms\cfc6584c7a788e7d4dba5168f57ef3f7) >
질문이 있어 남깁니다. 30. 회원 애플리케이션 기능 추가 강의 중 Activate 메서드를 작성하면서 설명해주신 Spring Data Jpa 사용시 save를 사용해야 한다고 공식문서에 나와있다고 하셨는데 해당 문서에 대한 링크를 알수있을까요? save를 안티패턴이라고도 설명을하고 불필요한 오버헤드 발생에 대해서는 어떻게 생각하시나요? 강의의 내용 처럼 JpaRepository가 아닌 Repository를 사용 하는경우에는 필수적으로 save를 해야 하나 JpaRepository의 경우는 Jpa 자체에서는 save라는 것이 없기 때문에 새로운 엔티티를 생성할때만 사용을하고 업데이트의 경우는 생략을 해야하는 것일까요?
안녕하세요. 좋아요가 없는 경우 팩토리 메소드로 좋아요 객체를 생성하고 영속시키는 부분은 이해가 되었습니다. 그런데 비관적 락의 select for update 를 할 때 데이터가 없으면 row 도 없으니까 락이 안잡히지 않나요? row가 존재해야만 락이 생성되는게 아닌지 궁금합니다. 그리고 이 경우 신규 데이터를 생성할때 0으로 초기화 하고 1을 증가시켜 저장할 때 여러 요청이 있게 되면 다시 경쟁 상태에 놓이게 되는게 아닌가요?
안녕하세요 강사님, 강의 정말 잘 듣고 있습니다! 기존에는 항상 커버링 인덱스를 활용하셨었는데, comment_v2 인피니트 스크롤에서는 서브쿼리를 빼고 바로 전체 데이터를 조회하시더라구요. 혹시 특별한 이유가 있을까요? 커버링 인덱스를 일부러 포기한 구조인지, 아니면 path 기반 설계에서는 서브쿼리 자체가 필요 없어졌기 때문인지 궁금합니다.
강의 00:30 경에 List<Child> childList 가 나오는데요, 이거는 엔티티라고 하시고 이후에 값 타입 컬렉션을 코드를 보면 Set<String> favoriteFoods , List<Address> addressHistory 는 값 타입 컬렉션이라고 하시죠. 그런데 아무리봐도 엔티티와 값타입의 차이점이 뭔지 모르겠습니다. 값 타입 컬렉션의 테이블 구조가 위와 같은데 일반 1:N 엔티티 구조에서도 위와 비슷할 것같구요.. 강의 2분 55분 정도부터 언급하시는데 별도의 id 를 넣으면 엔티티라고 하시는데, 그렇다면 엔티티와 값타입의 차이점은 단지 별도의 id 유무인가요? 클래스 관점에서나 테이블 관점에서 둘의 차이점이 궁금합니다. 엔티티는 별도의 pk(id)가 존재하고, 값 타입은 엔티티처럼 별도의 하나의 pk는 존재하지는 않고 그저 여러 필드?컬럼?값들을 묶어서 pk로 구성하는 건가요? 이것이 맞다면 id차이 하나로 엔티티 따로 값 타입 컬렉션 따로 개념이 나뉘고 값 타입 컬렉션에는 별도의 어노태이션을 사용하고 삽입, 삭제, 변경의 방법도 다를 정도인건가요? id차이로 이렇게까지 나눌 이유가 있는건가요?
5번째 계단으로 오는 방법의 수가 8인 이유가 제가 이해한 게 맞는지 궁급합니다. i - 2번째 계단에서는 두 칸 점프 즉 +2가 붙는 경우를 고려한거고 i - 1번째 계단에서는 한 칸 점프 즉 +1이 붙는 경우를 고려한건가요? 5번째 계단을 구할 때 3번째 계단까지 오는 경우의 수는 3이고 이 3개의 경우에 전부 +2가 붙어서 5가 되고 4번째 계단까지 오는 경우의 수는 5인데 이 5개의 경우 전부 +1씩해서 5가 되어서 3 + 5 = 8이 되는 로직이 맞는지 질문드립니다.
import java.io.BufferedReader; import java.io.InputStreamReader; import java.util.*; public class Main { static int cnt = 0; public static void dfs(int sum, int n) { int[] arr = {1, 2}; for (int i = 0; i < arr.length; i++) { sum += arr[i]; if (sum == n) { cnt++; sum -= arr[i]; } else { if (sum < n) dfs(sum, n); sum -= arr[i]; } } } public static void main(String[] args) throws Exception { BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(System.in)); int n = Integer.parseInt(bufferedReader.readLine()); dfs(0, n); System.out.println(cnt); } } dp를 잘 몰라서 자력으로 dfs 방식으로 풀었는데 그닥 좋지 않은 접근일까요...?
[질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예) 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예) 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예) [질문 내용] 회원, 부서 테이블을 생성하다 고민이 생겨 해당 강의를 다시 복습해봐도 어떻게 하는게 좋을지 모르겠어 질문하게 되었습니다. 먼저 회원테이블은 회원 ID (PK) 부서 ID (FK, 부서테이블PK) , NULL 부서 테이블은 부서 ID (PK) 부서생성자 ID(FK, 회원테이블PK), NOT NULL 로 구성되어 있는 상황입니다. 필드의 개수를 최대한 간략히 나타내었는데, 이러한 상황에서 1. 중간테이블을 만드는게 나을지 ( 이 경우 유저ID, 부서ID, type{소속 or 생성}), 2. 회원테이블의 부서ID와 부서테이블의 회원ID에 각각 ManyToOne을 걸어주는게 나을지 더 좋은 방법을 찾기가 어려워 질문드립니다!