자바와 스프링 부트로 생애 최초 서버 만들기, 누구나 쉽게 개발부터 배포까지! [서버 개발 올인원 패키지]
40강. git 기초사용법을 듣고 있습니다. 코드를 github에 올리는 과정에서 처음에는 git add . 작성 시 아래와 같이 에러가 나타났습니다 위와 같은 과정을 거쳤고, 커밋이 반영된듯 싶으면서도 fatal: unknown write failure on standard output이라는 문구가 떠 다음 과정을 진행하기 찝찝합니다. 이전에 git add .시 실행은 된 것 같지만 warning이 난것도 나중에 문제가 될것 같습니다..감사합니다.
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요. 1. 강의 내용과 관련된 질문을 남겨주세요. 2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요. (자주 하는 질문 링크: https://bit.ly/3fX6ygx) 3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요. (질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG) 질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요. ========================================= [질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예/아니오) 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오) 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오) [질문 내용] 여기에 질문 내용을 남겨주세요. 안녕하세요. 빌드가 잘 되지않아 여러 질문글을 읽고 hello-spring 폴더를 복사하여 C폴더 아래 dev 폴더를 넣어 빌드를 진행했습니다. 이런 오류 내용이 뜨는데 뭐가 문제일까요? gradle 파일에서 자바 17버전을 요구하는 것을 확인헀고, 자바 17을 설치하고 환경변수 JAVA_HOME에 경로 넣기, path에서 \bin 변수 넣어 최상단으로 올리기까지 설정했습니다. cmd에서 버전확인하면 17로 나옵니다. 계속 빌드가 안 되는데 원인을 모르겠습니다 뭐가 문제일까요..?
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요. 1. 강의 내용과 관련된 질문을 남겨주세요. 2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요. (자주 하는 질문 링크: https://bit.ly/3fX6ygx) 3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요. (질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG) 질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요. ========================================= [질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예/아니오) 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오) 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오) [질문 내용] 여기에 질문 내용을 남겨주세요. <div class="field-error" th:if="${errors?.containsKey('price')}" th:text="${errors['price']}"> 가격 오류 </div> 타임리프의 이 부분이 typeMismatch에 대한 메시지 코드인 '숫자를 입력해주세요' 를 출력하는 건가요? 아니면 <input type="text" id="price" th:field="*{price}" th:errorClass="field-error" class="form-control" placeholder="가격을 입력하세요"> 이 부분의 th:field가 오류 감지하고 출력하는 건가요
[질문 템플릿] 1. 강의 내용과 관련된 질문인가요? 네 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? 네 3. 질문 잘하기 메뉴얼을 읽어보셨나요? 네 [질문 내용] 안녕하세요 커넥션과 관련된 질문을 드리고 싶습니다. 해당 강의에서 커넥션이 여러번 반복되어 나오는데 커넥션 개념이 정리가 잘 되지 않습니다. 애플리케이션 로직이 커넥션을 조회하면 DB 드라이버에서 DB와 TCP/IP 커넥션 연결을 한다고 나옵니다. 그 후 다다음 단계에서 커넥션 이 생성 완료되었다고 나오는데 커넥션을 연결하는 것과 커넥션이 생성되는 것이 모호하게 이해가 잘 되질 않습니다. 이 부분에 대한 추가적인 설명을 부탁드려도 될까요? 그 후 DB드라이버는 커넥션을 반환한다고 나오는데 이것은 커넥션 객체를 말하는 것일까요?
제가 한 프로젝트에서 깃 뭐를 만졌는지는 모르는데 이것저것 만지고나서 새로운 프로젝트를 만들어서 실행을 하면 갑자기 새로운 프로젝트에서 out 파일이 만들어지면서 그 하위에 제가 깃 이것저것 막 만진 프로젝트 코드들이 업로드되면서 새로운 프로젝트안에 자동으로 들어와져요.... 인텔리제이를 삭제했다가 다시 깔았는데도 계속해서 이렇게 되는 데 혹시 새로운 프로젝트 만들어서 실행해도 out폴더가 자동으로 생기지 않게 하는 방법이 뭘까요...그리고 .gragle이랑 .idea도 생성되고 이 두개랑 out 폴더까지 총 3개 글씨가 주황색으로 변해져있어요 해결방법 없을까요?ㅜㅜ
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요. 1. 강의 내용과 관련된 질문을 남겨주세요. 2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요. (자주 하는 질문 링크: https://bit.ly/3fX6ygx) 3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요. (질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG) 질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요. ========================================= [질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예/아니오) 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오) 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오) [질문 내용] MemberServiceIntegrationTest 실행에서 계속 오류가 납니다. H2도 실행 중이고 테이블도 삭제하고 돌렸는데 계속 "java.lang.illegalstateexception: could not initialize plugin: interface org.mockit..." 라는 오류가 나네요. 프로젝트 구글 드라이브 첨부합니다: https://drive.google.com/drive/u/0/folders/1oYRjWn6uxwdLBkZoeIgnG3oEdYMHLxKd 감사합니다!
[질문 템플릿] 1. 강의 내용과 관련된 질문인가요? 예 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? 예 3. 질문 잘하기 메뉴얼을 읽어보셨나요? 예 [질문 내용] 검색해보니 RequestParam 매개변수 인식을 못해서 일어난거 라는데 어떻게 문제를 해결해야 하나요??
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요. 1. 강의 내용과 관련된 질문을 남겨주세요. 2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요. (자주 하는 질문 링크: https://bit.ly/3fX6ygx) 3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요. (질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG) 질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요. ========================================= [질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예/아니오) 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오) 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오) [질문 내용] 메뉴얼을 보고싶은데 어디있을까요?
안녕하세요 영한님. 항상 양질의 강의로 지식을 공유해주시는점에 우선 감사하다는 인사부터 올리겠습니다. 자바 메모리 구조에 대해 강의를 들으면서 문득 궁금한 점, 스스로 지식 정리가 되지 않는 부분이 있어 질문드립니다. 우선 제가 알고 있는 사실입니다. JDK 스펙에서 메소드 영역의 구현 방식에는 제한하지 않기에 벤더마다 상이하다 Java8 이전 오라클 핫스팟에선 이를 Permgen(Permanent Genration) 이라 명하였고 힙 메모리 안에 위치시켰다. 우리가 일반적으로 아는 static 변수 및 메소드, 클래스 정보, 런타임 상수 풀, String Pool 등이 이 메소드 영역 (Permgen)에 저장되었다. 하지만, Java8 이후 Permgen 의 고정된 메모리 이슈로(잦은 OOME) metaspace 라는 새로운 대체 공간을 만들고 이를 os영역인 Native memory 쪽에 두었다. java8 이후 현재, 기존의 Permgen 에 저장되던 클래스 메타 정보들 (constant pool)은 대체된 metaspace안에 저장되고 static 변수 및 메소드, String Pool(리터럴 String 및 interned String 저장 pool) 들은 Heap 영역으로 저장되게 변경되었다. 우선 제가 옳게 이해하고 있는지, 지식에 오류가 없는지 궁금하며 몇 가지 문의사항이 있습니다. 위 내용중 2)에서 Permgen을 힙 메모리 안에 두었다고 하지만 heap / non-heap 으로 구분하여 Permgen 은 non-heap 에 속한다 라고 설명하는 레퍼런스가 많습니다. Permgen이 non-heap 이라고 하는 이유가 비록 Permgen 이 논리적으로는 힙 메모리 안에 위치하지만, 일반적으로 gc 대상에선 제외되기 때문에 그런건지 아니면 실제로 물리적으로 분리된 공간이어서 non-heap 이라는건지 궁금합니다. (+ 지속적으로 찾아보니 Permgen 은 Heap 영역안에 특별한 공간 정도로 이해하면 될 듯 합니다. GC(major/full GC) 또한 동작한다고 하네요..! 이것과 별개로 metaspace의 경우도 더이상 사용하지 않는 클래스에 대해 메모리 회수가 일어난다고 합니다. 근데 이 metaspace 는 navtive 영역에 있는데 이걸 "gc가 동작하여 최적화한다" 라고 말할 수 있는 건지 아니면 그냥 Metaspace 자체에서 메모리관리를 한다고 봐야할지 궁금합니다..!) 궁극적으로 궁금한 부분인데요 메소드 영역 이라는 것에 대해 어떻게 이해하면 좋을지 의문입니다. 두 가지 정도로 생각하고 있는데, 1. 메소드 영역 이라는 것은 JDK spec 에서 정의하고있는 하나의 추상화된 공간(인터페이스)이다. 이것이 과거엔 힙에 위치한 permgen으로 구체화 되었고 현재는 native 메모리에 위치한 metaspace로 구체화 되어 대체되었다. (메소드 영역이 상위 개념이다) 2. 옛날 permgen, 현재의 metaspace 안에 특정한 데이터(클래스 메타데이터 같은)를 저장하는 별도의 공간이 있고 이를’ 메소드영역’ 이라고 한다. (메소드 영역이 하위 개념이다) 메소드 영역과 permgen, metaspace 이들간의 카테고리 상 포함관계가 어떻게 되는지 개념이 궁금합니다.(1 번과 2번중에 어떤게 맞는지) 또한 현재 메소드 영역을 담당하는 metaspace 기준으로, static 변수, string pool 등은 Heap 영역에 저장되고(static 변수의 경우 heap 영역안의 static pool 안에) 클래스 정보, 런타임 상수 풀(constant pool) 등은 Metaspace 에 저장이 되는데 “메소드 영역에는 클래스정보, static 변수, 런타임 상수 풀이 저장된다” 라는 개념이 아직도 유효하고 옳은 개념인지 문의드립니다. 이게 말이 되려면 메소드영역이란 heap 영역의 일부 + metaspace 가 되어야 하기 때문입니다. 감사합니다.
[질문 템플릿] 1. 강의 내용과 관련된 질문인가요? 예 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? 예 3. 질문 잘하기 메뉴얼을 읽어보셨나요? 예 [질문 내용] 처음 프로젝트를 생성 후 빌드 했는데 에러가 발생하네요 JDK버전을 맞춰주라고 해서 맞췄는데도 에러가 있네요 에러 사진 첨부합니다.
질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예/아니오) 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오) 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오) [질문 내용] V3까지 공부하다가 너무 헷갈려서 다시 V1으로 와서 공부하고있습니다. 3분 30초 쯤에 ControllerV1 즉 interface를 사용하는 이유를 들어도 너무 헷갈립니다. 각각의 컨트롤러는 인터페이스를 의존하고 프론트컨트롤러는 인터페이스를 통해 request, response를 넘겨주면서 각각의 컨트롤러가 받는 형식으로 생각하고 있었습니다. 근데 정작 왜 사용하는지 제대로 이해를 못하고있는 것 같아 질문드립니다.
package enumeration.ex2; public class DiscountService { public int discount(ClassGrade grade, int price) { if (grade == ClassGrade.BASIC) { return price / 100 * 10; } if (grade == ClassGrade.GOLD) { return price / 100 * 20; } if (grade == ClassGrade.DIAMOND) { return price / 100 * 30; } return 0; } } package enumeration.ex2; public class DiscountServiceTest { public int discount(ClassGrade grade, int price) { switch (grade) { case ClassGrade.BASIC -> { return price / 100 * 10; } case ClassGrade.GOLD -> { return price / 100 * 20; } case ClassGrade.DIAMOND -> { return price / 100 * 30; } default -> { return 0; } } } } 안녕하세요. 위의 코드 같이 if 문으로 사용하면 정상적으로 실행이 가능한데 아래 처럼 if 문을 개선된 switch 문으로 바꾸면 왜 컴파일 오류가 뜨는지 정확히 알고 싶습니다. case 에는 리터럴 상수만 사용 가능하고 참조값은 case에 적을 수 없는 것 같은데 맞나요?
[질문 템플릿] 1. 강의 내용과 관련된 질문인가요? 예 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? 예 3. 질문 잘하기 메뉴얼을 읽어보셨나요? 예 [질문 내용] ItemServiceApplication에 test일때만 dataSource를 직접 정의해주었는데 인메모리 DB가 properties에 정의한 datasource보다 우선되는건가요? h2 서버 끄고 properties는 그대로 둔 채 돌려도 정상작동 하는 것으로 봐선 properties의 datasource는 아예 시도를 안 하는 것 같은데... 인메모리가 있으면 무시하고 넘어가는 것인지 궁금합니다!
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요. Dynamic Web Prject 템플릿으로 프로젝트 생성후 Spring MVC prj을 수동을 만들었습니다 (필요한 xml파일과 폴더를 경로에 맞게 다 생성) 그런데 서버에 올리고 실행해보면 404에러가 납니다.. 오류내용은 Origin 서버가 대상 리소스를 위한 현재의 representation을 찾지 못했거나, 그것이 존재하는지를 밝히려 하지 않습니다.이고 구글검색후 이것저것 수정해봤는데 해결이 안되고있습니다.. https://github.com/hjlim456/springcrud 제 깃주소인데 코드좀 봐주시면 감사하겠습니다.ㅠ