[질문 내용] OrderServiceTest에서 테스트 메서드를 실행하면서 H2 DB에 쿼리가 들어가는지 확인하기 위해 Test 폴더 안에 resources를 지우고 상품주문 테스트 메서드 안에 RollBack(value = false), em.flush()를 통해서 실제 데이터가 들어가는것을 확인하였습니다. 그런데 다시 원래대로 돌리는 과정에서 Test폴더 안에 resource를 만들고 해당 테스트의 application.yml를 돌려났음에도 불구하고 실행했음에도 H2 DB 안에 데이터는 그대로 남더라고요. 그래서 RollBack(value = false), em.flush()를 지우고 다시 실행해도 계속 데이터가 남는데 어떻게 해결하면 좋을까요?
해당 예제(22:17)의 setString(String param)에서 string 필드 변수의 값을 수정하고자 아래 구문을 사용하셨는데요, string = param.getBytes().clone(); clone() 메서드를 사용하지 않아도(아래 구문) string 필드 변수의 수정이 가능한데, clone() 메서드를 사용한 이유를 알 수 있을까요? string = param.getBytes(); 해당 의문에 대해서 얇은/깊은 복사 와 관련이 있는지 확인해보기 위해 디버깅을 해본 결과, 두 변수는 값은 같으나, 다른 메모리 위치를 갖는 것으로 확인을 했습니다. -> clone() 메서드가 있는 코드/없는 코드 모두 위와 동일하게 동작하는 것을 확인했습니다. 그래서 다른 이유로 clone() 메서드를 사용하신 거 같은데, 어떤 이유인지 문의 드립니다.
실전! 코틀린과 스프링 부트로 도서관리 애플리케이션 개발하기 (Java 프로젝트 리팩토링)
안녕하세요 강사님. 코틀린을 배우는데 좋은강의 만들어주셔서 감사합니다. 테스트를 위한 fixture 코드 부분에 대해 의견 여쭤보고 싶습니다. 강의에선 직접 엔티티 내부에 테스트를 위한 fixture 함수를 만들어 주셨는데, 팀 내부 의사결정에 따라 두어도 괜찮을 수도 있을 것 같지만 만약 테스트용 코드는 분리해야 한다고 하면 아래처럼 테스트 코드 패키지쪽에 fixture 생성을 위한 유틸파일을 만들고, 테스트 코드에서만 Book.fixture(...) 같은 형태로 사용할 수 있도록 엔티티에 비어있는 companion object를 만든 뒤 확장함수를 작성하는 형태로 해도 괜찮을지 의견 여쭤보고 싶습니다.! 테스트코드용 유틸 생성 User, Book 등의 엔티티에 비어있는 동행객체 선언 엔티티별 Companion 확장함수 작성 테스트 코드에서 엔티티.fixture() 형태로 사용
안녕하세요! [Java의 특징과 JVM]강의에서 4:10초 정도에 시작하는 C,C++로 만든 어플리케이션의 특징 부분을 설명해 주시는 부분에서 질문이 있어서 글 남깁니다. (C/C++에 대해서는 깊게 공부한 적이 없습니다...) 1번 질문 C,C++로 만든 프로그램을 실행하면 '프로세스'가 생성되고 '프로세스'안에 특정 CPU가 실행 가능한 '기계어'가 포함되어있다고 하셨는데 앞선 강의에서 보여주셨던 '특정 CPU가 바로 실행할 수 있는 16진수로 된 기계어'를 말씀하시는게 맞나요? 2번 질문 자바로 만든 어플리케이션A,B,C가 각각 있고 3개 다 실행했을 때 프로세스A, 프로세스B, 프로세스C가 각각 만들어져서 실행되는걸로 알고 있습니다. User mode process JVM 내용에서 "유저모드 어플리케이션 관점에서 프로세스다"라는 말씀이 JVM도 어쨌든 하나의 프로그램을 실행시킨 프로세스여서 그런건가요? 아니면 OS의 통제를 받아서 그런건가요? 3번 질문 스레드에 관해서 다루지 않는다고 하셨지만.. PC Register의 정확한 역할이 궁금해서 질문 남깁니다! 제가 알기론 실제 CPU에는 여러가지 레지스터들이 있고 그중에 PC Register는 실행 지점(다음 명령어가 담겨있는 메모리 주소)만 들고 있는 역할로 알고 있는데 런타임 데이터 영역에 있는 PC Register도 각 스레드별 실행 지점만 가지고 있는게 맞나요? 아니면 실행지점 + 명령어도 가지고 있는건가요?
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문 전에 다음을 꼭 확인해주세요. 1. 강의 내용과 관련된 질문을 남겨주세요. 2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요. (자주 하는 질문 링크: https://bit.ly/3fX6ygx) 3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요. (질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG) 질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요. ========================================= [질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예/아니오) 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오) 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오) [질문 내용] MyAtomicInteger 와 다른 구현체 들의 성능을 테스트 하는 코드에서 강의에 결과와 다른 결과가 나옵니다... package thread.cas.increment; import java.util.concurrent.atomic.AtomicInteger; public class MyAtomicInteger implements IncrementInteger{ AtomicInteger atomicInteger = new AtomicInteger(0); // 이미 동시성 문제가 다 해결되어 있는 클래스이다. @Override public synchronized void increment() { atomicInteger.incrementAndGet(); } @Override public int get() { return atomicInteger.get(); } } package thread.cas.increment; import static util.MyLog.log; public class IncrementPerformanceMain { public static final long COUNT = 100_000_000; public static void main(String[] args) { test(new BasicInteger()); //가장 빠르다 CPU 캐시를 가장 적극 사용한다. 멀티스레드 환경에서는 사용할 수 없다. 단일 스레드일 경우 가장 효율적 test(new VolatileInteger()); // 메인메모리를 직접 사용한다. 안전한 임계영역은 없기 때문에 멀티스레드 환경에는 사용할수 없다. test(new SyncInteger()); test(new MyAtomicInteger()); } private static void test(IncrementInteger incrementInteger) { long startMs = System.currentTimeMillis(); for (long i = 0; i < COUNT; i++) { incrementInteger.increment(); } long endMs = System.currentTimeMillis(); log(incrementInteger.getClass().getSimpleName() + ": ms=" + (endMs - startMs)); } } 아토믹이 그냥 synchronized보다 더 느린 결과가나오는데 제가 놓친 부분이 있을까요?
안녕하세요. 강사님 2025년 새해복 많이 받으세요! 반드시 알아야 할 중요한 시점 까지 강의를 시청한 상태입니다. 기초적인 질문인것 같지만... 3가지 질문 있습니다! 1번 질문 : javac.exe나 java.exe라는 것이 javac.exe : 실행시키면 .java 파일들을 .class로 번역하는 모듈 -> 컴파일러 java.exe : .class파일을 로딩 + 실행시키는 모듈 -> JVM 위의 내용처럼 이미 누군가가(JDK 개발사?) 만들어 놓은 모듈이여서 딸깍! 실행만 시켜주면 정해진 로직을 하는 프로그램(모듈)인가요? 2번 질문 : javac.exe <- 이게 컴파일러인가요? 맞다면 이것도 java나 c,c++같은 native code로 작성되어있는건가요? 3번 질문 : 종합적으로 Main.java(Hello, World!라는 문자열을 출력)를 작성한 상태라고 가정하면 Main.java를 JDK포함되어 있는 컴파일러(이미 만들어져있는 javac.exe)를 실행시켜서 컴파일하고 컴파일한 바이트코드를 JRE(JVM)에서(만들어져 있는 java.exe) 실행시키는 거라고 이해했는데 맞나요?
안녕하세요 교수님. 친구들과 현재 언리얼로 1대1 멀티플레이 게임을 제작하려고 있습니다. 저는 서버 쪽을 맡아 지금부터 공부해나가는 상황입니다. 하지만 아직 2강까지 밖에 안들은 시점이어서 그런지, 저희가 프로젝트를 진행할 때 어떤 식으로 협업을 하면 될지 머리에 그려지지 않습니다. 저희같은 소규모 팀에서는 클라이언트 / 서버 개발을 어떻게 나누어 진행하면 좋을지 조언 주실 수 있으실까요? 좋은 강의 제공해주심에 항상 감사합니다.
22분 쯤 모든 Component들의 상태가 Data_Available이 됐을 때 ExtensionComponenot::CheckDefaultInitialization의 CheckDefaultInitializationForImplementers에 의해 다른 Component들이 Data_Initialized State로 전환된다고 하셨는데, CheckDefaultInitializationForImpleters는 Data_Available 이 될 수 있음에도 되지 못한 Component가 있는지 확인해서 Update 해주고 ContinueInitStateChain 에서 비로소 호출한 Component의 State를 가장 먼저 Change 해주니 ExtensionComponent의 State가 Data_Initailizaed 상태로 바뀌고 나머지 Component들은 ExtensionComponent의 상태를 보고 Data_Initialized 상태로 바뀌는거 같습니다. CheckDefaultInitializationForImplementers 에서 모든 Component들의 상태가 Data_Initialized 로 바뀌는게 이해가 잘 안되네요. 제가 생각한 로직에서 틀린 부분이 있을까요?
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요. 1. 강의 내용과 관련된 질문을 남겨주세요. 2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요. (자주 하는 질문 링크: https://bit.ly/3fX6ygx) 3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요. (질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG) 질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요. ========================================= [질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예/아니오) 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오) 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오) [질문 내용] 오디오만 나오고 화면이 안나옵니다. 캐쉬도 날려보고 브라우저도 바꿔봤는데 동일하게 안나옵니다.
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요. 1. 강의 내용과 관련된 질문을 남겨주세요. 2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요. (자주 하는 질문 링크: https://bit.ly/3fX6ygx) 3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요. (질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG) 질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요. ========================================= [질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예/아니오) 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오) 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오) [질문 내용] 여기에 질문 내용을 남겨주세요. toString()강의부터 소리만 나오고 검은색 화면만 보이는데 인프런측의 문제일까요..?
C4067 전처리기 지시문 다음에 예기치 않은 토큰이 있습니다. 줄 바꿈 문자가 필요합니다. C4668 '__has_feature'은(는) 전처리기 매크로로 정의되어 있지 않으므로 '#if/#elif'에 해당하는 '0'으로 바뀝니다. MSB3073 ""C:\Program Files\Epic Games\UE_5.4\Engine\Build\BatchFiles\Build.bat" ArenaBattleEditor Win64 Development -Project="C:\Users\Runner\Downloads\UnrealGAS1-10\UnrealGAS1-10\ArenaBattleGAS.uproject" -WaitMutex -FromMsBuild -architecture=x64" 명령이 종료되었습니다(코드: 6). 안녕하세요, 강의 자료 깃허브를 통해 브랜치 10 의 프로젝트를 다운 받아 열어보려고 하는 데 빌드가 되지 않아 프로젝트 실행조차 되지 않고 있습니다. 아래에 해결을 위해 시도한 내용들도 함께 작성하니 도움 부탁 드립니다. 새해 복 많이 받으세요.^^ <시도한 내용들> Binaries 삭제 후 Generate, Visual Studio에서 리빌드/빌드 -> MSB3073 오류 발생 uproject에서 VisualStudioTools 플러그인 확인 후 1번 과정 재진행 -> 해당 플러그인이 없음을 확인했으나 여전히 MSB3073 오류 발생 언리얼 마켓플레이스(Fab)에서 Visual Studio Integration Tool 다운 후 1번 과정 재진행 -> uproject에 VisualStudioTools 플러그인이 존재했으나 여전히 MSB3073 오류 발생 다른 브랜치로 다운 받은 프로젝트 실행 -> 브랜치 1, 2 등 다른 브랜치의 프로젝트로 다운 받아 실행해도 MSB3073 오류 발생
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요. 1. 강의 내용과 관련된 질문을 남겨주세요. 2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요. (자주 하는 질문 링크: https://bit.ly/3fX6ygx) 3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요. (질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG) 질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요. ========================================= [질문 템플릿] 1. 강의 내용과 관련된 질문인가요? 예 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? 예 3. 질문 잘하기 메뉴얼을 읽어보셨나요? 예 [질문 내용] 안녕하세요 jpa 기본편 수강 중인 학생입니다. 애플리케이션 개발 강의에서 member.setId(1L); member.setName("HelloA"); 하고 2L,HelloB로 바꿔서 실행 후 테이블조회를 하면 1L과HelloA는 뜨지 않고 2L,HelloB만 조회가 됩니다. 코드는 똑같이 작성한 것 같은데 어디가 문제일까요? public class JpaMain { public static void main(String[] args) { EntityManagerFactory emf = Persistence.createEntityManagerFactory("hello"); EntityManager em = emf.createEntityManager(); EntityTransaction tx = em.getTransaction(); tx.begin(); try { //code Member member = new Member(); member.setId(1L); member.setName("HelloA"); em.persist(member); tx.commit(); } catch (Exception e) { tx.rollback(); } finally { em.close(); } emf.close(); } } 실행을 시키면 Hibernate: drop table if exists Member cascade 1월 01, 2025 5:44:30 오후 org.hibernate.resource.transaction.backend.jdbc.internal.DdlTransactionIsolatorNonJtaImpl getIsolatedConnection INFO: HHH10001501: Connection obtained from JdbcConnectionAccess [org.hibernate.engine.jdbc.env.internal.JdbcEnvironmentInitiator$ConnectionProviderJdbcConnectionAccess@4ed4a7e4] for (non-JTA) DDL execution was not in auto-commit mode; the Connection 'local transaction' will be committed and the Connection will be set into auto-commit mode. Hibernate: create table Member ( id bigint not null, name varchar(255), primary key (id) ) 1월 01, 2025 5:44:30 오후 org.hibernate.resource.transaction.backend.jdbc.internal.DdlTransactionIsolatorNonJtaImpl getIsolatedConnection INFO: HHH10001501: Connection obtained from JdbcConnectionAccess [org.hibernate.engine.jdbc.env.internal.JdbcEnvironmentInitiator$ConnectionProviderJdbcConnectionAccess@134ff8f8] for (non-JTA) DDL execution was not in auto-commit mode; the Connection 'local transaction' will be committed and the Connection will be set into auto-commit mode. Hibernate: /* insert for hellojpa.Member */insert into Member (name, id) values (?, ?) drop하고 create가 됩니다...
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요. 1. 강의 내용과 관련된 질문을 남겨주세요. 2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요. (자주 하는 질문 링크: https://bit.ly/3fX6ygx) 3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요. (질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG) 질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요. ========================================= [질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예/아니오) 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오) 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오) [질문 내용] 연습문제 회원 관리 기능을 만드는중 findByName에서 헷갈려서 질문을 남김니다. 다음은 제가 작성한 소스코드입니다 /** * get 메서드는 key값을 통해서 value를 반환한다 * key-> id, value ->memeber * value의 구조는 STRING: ID, STRING NAME이므로 * value를 하나로 펼쳐서 순회한 다음, 이름에 맞는 member를 반환 * */ public Member findByName(String name) { Boolean findMember = memberMap.containsValue(name); if(findMember!=null){ for(Map.Entry<String, Member> entry: memberMap.entrySet() ){ String key =entry.getValue().getId(); String parameterName = entry.getValue().getName(); if(parameterName==name) { return memberMap.get(key); } } } return null; } 다행히 결과는 문제 없이 돌아가가나 String key = entry.getValue().getId()에 디버그를 찍으면 Boolean findMember = memberMap.containsValue(name);//findMember:false, name: 회원3 다음과 같이 표기 되는데 분명 회원3의 값을 저장 했는데 왜 findMember가 false로 나오는 걸까요? 이유가 궁금합니다. 그리고 제가 작성한 findByMember 로직이 맞을까요 ? 많은 피드백 부탁드립니다!
수업 내용을 스크립트로 볼 수 있어서 매우 큰 도움을 받고 있습니다. 듣는 도중 자잘한 오타는 건의를 하는 편인데, 이번 건은 3줄이 모두 이상한 말로 등록되어 있어서 인프런측에 제보합니다. 7:33, 7:36, 7:42 의 자막이 강사님 말과는 전혀 다른 엉뚱한 자막이 삽입되어 있습니다. 확인 후 수정 요청합니다.
마지막에 빌드를 하고 exe 파일을 실행해보는데 검은 화면만 뜨고 아무것도 나오지 않습니다. 프로젝트 세팅에서 default game mode랑 level다 지정해 뒀는데도 검은 화면만 나오고 cmd에서 -log로 실행해봐도 콘솔창에 아무런 로그도 올라오지 않습니다. 어디가 문제인걸까요?
[질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예) 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예) 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예) [질문 내용] 프로젝트 세팅시 intellij project structure에서 jdk 17로 맞추는데, 왜 굳이 Build and run using과 Run tests using을 Gradle로 설정하나요??? 결국 Gradle로 설정하면 앞에서 project structure jdk 굳이 맞추는 의미가 없지 않나요??? 현업에서도 주로 이렇게 사용하나요??
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문 전에 다음을 꼭 확인해주세요. 1. 강의 내용과 관련된 질문을 남겨주세요. 2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요. (자주 하는 질문 링크: https://bit.ly/3fX6ygx) 3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요. (질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG) 질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요. ========================================= [질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예/아니오) 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오) 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오) [질문 내용] 안녕하세요. 제가 큰 규모의 작업은 다루지 못했다보니 이런 개념들이 사용되는 실제 상황의 예시가 있을까요? 보통 스프링에서 제공하는 component를 사용해서 stateless하게만 만들어두다 보니 실제로 적용해보려 한다면 어디에 해야하지? 하는 생각이 그려지지 않습니다. 혹시 몇가지 실제 예시를 들어주실 수 있나요?