3장의 초반 내용중에 read() 의 반환값이 byte가 아닌 int 인 이유를 설명해주셨는데요. (EOF 을 알기위해서...) 그렇다면 write(byte b) 가 아니라 write(int b) 인 이유는 뭘까요? 어차피 4byte 중에 하위 1byte만 write될 건데 write(int b) 로 한 이유가 궁금하네요. write(-1) 이렇게 한다고 해서 read()에서 -1로 읽혀서 EOF 라고 판단되지도 않을거 같아요.
안녕하세요. 앞서 db1강의에서 트랜잭션 관련 내용을 바탕으로 커넥션 관련해서 제가 이해하는 바가 맞는지 질문드립니다..! 트랜잭션을 시작하고 JdbcTemplate.update() 등등이 호출되면, 먼저 데이터베이스에 접근할 수 있는 커넥션을 얻는다. 이때 내부적으로 DataSourceUtils.getConnection()을 호출해서 트랜잭션 동기화 매니저에서 관리하는 커넥션을 가져오거나, 새로운 커넥션을 생성(등록된 dataSource로 부터 커넥션을 생성)한다. 그리고 나서 SQL 쿼리를 실행한다. 이때 커넥션을 통해 데이터베이스와 통신한다. 즉, JdbcTemplate을 통해 update 작업을 수행할 때, 커넥션을 사용하여 데이터베이스에 접근하여 SQL 쿼리를 실행하고, 그 결과로 데이터베이스의 내용이 업데이트된다. 트랜잭션을 시작하지않고 JdbcTemplate.update() 등등이 호출되면, 이때도 먼저 데이터베이스에 접근할 수 있는 커넥션을 얻는다. 이때 내부적으로 DataSourceUtils.getConnection()을 호출해서 트랜잭션 동기화 매니저에서 관리하는 커넥션을 가져오거나, 새로운 커넥션을 생성(등록된 dataSource로 부터 커넥션을 생성)한다. 그리고나서 SQL쿼리를 실행한다. 이때 커넥션을 통해 데이터베이스와 통신한다. 마찬가지로, 커넥션을 사용하여 데이터베이스에 접근하여 SQL 쿼리를 실행하고, 그 결과로 데이터베이스의 내용이 업데이트된다. 트랜잭션을 사용하지 않고 JdbcTemplate.update()를 호출하면, 커넥션은 기본적으로 자동 커밋 모드로 동작하여, 쿼리가 실행된 후 즉시 데이터베이스에 반영된다. 트랜잭션이 있든 없든 JdbcTemplate은 항상 커넥션을 사용하여 데이터베이스에 접근하고, 쿼리를 실행하여 그 결과로 데이터베이스의 내용을 수정하거나 조회하는 작업을 수행한다. 트랜잭션 및 커넥션 관련해서 이렇게 이해하면서 정리해보았는데, 이렇게 이해하면 될까요?
[질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예) 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예) 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예) [질문 내용] 헷갈리는 부분이 있어서요. 예시에 나온 Student 클래스를 예로 들면 student1 객체를 만들었을때 student1.name = "익명" 이라고한다면 name이라는 멤버변수에 접근을 해서 "익명"이라는 값을 할당하는게 실제 Student 클래스의 name에다가 해당 값을 할당하는게 아니라 Student 클래스를 바탕으로 만들어진 메모리 x001에 있는 name 변수에다가 값을 할당한다는거 같은데 제가 이해한게 맞나요?
[질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예) 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예) 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예) [질문 내용] 강의처럼 src 패키지에 main 클래스만 있는게 아니라 이상한 패키지가 다수 생성되는데 어떻게 하나요 ?
[질문 템플릿] 1. 강의 내용과 관련된 질문인가요? 예 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? 예 3. 질문 잘하기 메뉴얼을 읽어보셨나요? 예 [질문 내용] 해당 강의에서 5:35초를 보시게 되면, 원래는 fetch join이 아닌 join이지만 public List<OrderSimpleQueryDto> findOrderDtos() { return em.createQuery( "select new jpabook.jpashop.repository.OrderSimpleQueryDto(o) " + " from Order o" + " join fetch o.member m" + " join fetch o.delivery d", OrderSimpleQueryDto.class ).getResultList(); } fetch join을 하게 되면 v3메서드와 동일한 결과가 나옴과 동시에 쿼리문도 동일하게 1개가 출력된 것을 확인하였습니다. 여기서 드는 의문점은 ' fetch join은 select절에 entity가 아닌 DTO를 명시하게 되면 안된다' 즉, 'fetch join은 select절에 entity만을 명시해야 한다' 라고 질문 글을 찾아보며 알게되었습니다. 하지만 결과는 예상과 다르게 잘 작동하여 의문이 들게 되었습니다.
java 기출변형 강의 8분 업캐스팅 예외 사례문제에서 a.f() 는 스태틱에 의해 부모를 따라 가서 fp가 출력 된다는 것은 이해했으나, 아래에 있는 a.g()는 어째서 일반적인 업캐스팅의 형태로 자식인 gc를 출력을 해야하는 것인지 강의를 아무리 돌려봐도 이해가 안됩니다.
[질문 내용] Scanner scanner = new Scanner(System.in); int total = 0; while (true) { System.out.println("1 : 상품 입력, 2 : 결제, 3 : 프로그램 종료"); int option = scanner.nextInt(); scanner.nextLine(); // 이전에 입력된 개행문자 제거 switch (option) { case 1: System.out.print("상품명을 입력하세요. : "); String pName = scanner.nextLine(); System.out.print("상품의 가격을 입력하세요. : "); int pPrice = scanner.nextInt(); System.out.print("구매 수량을 입력하세요. : "); int pQuantity = scanner.nextInt(); total += pPrice * pQuantity; System.out.println("상품명 : " + pName + " 가격 : " + pPrice + "원 수량 : " + pQuantity + " 합계 : " + (pPrice * pQuantity)); break; case 2: System.out.println("총 비용 : " + total); total = 0; // // 결제 후 총 비용 초기화 break; case 3: System.out.println("프로그램을 종료합니다."); break; default: System.out.println("잘못된 접근입니다."); } } 김영한 강사님께서 마지막쯤에 switch() 로 활용해서 풀어봐도 좋다고 하셔서 해보았습니다. 그런데 switch문은 각 case마다 break; 를 넣어야지 해당 case 값에 속한 코드마다 수행을 할 수있는데 문제는 이게 while(true)로 무한반복중이라 3. 프로그램 종료 를 눌러봐도 콘솔에 계속 무한로딩이 끝나지 않고 있습니다. 어떻게 하면 좋을까요?
파이썬 알고리즘 트레이딩 파트2: Interactive Brokers API를 활용한 실시간 알고리즘 트레이딩
Trader Workstation을 offline으로 설치한 이후에 로그인이 안되어서요 ㅠㅠ 이상한게 아래와 같이 포탈로는 새로 만든 아이디로 접속이 되는데 동일한 아이디 패스워드로 Trader Workstation > Paper trading 접속하면 아래과 같은 메세지가 나옵니다. (조심스럽게 패스워드를 여러번 입력해 봐서 제 타이핑 실수는 아닌 거 같아요, 말씀드렸듯이 인터넷 포탈 페이지 접속은 되구요) 혹시 몰라 다른 아이디를 만들어서 해 보았고 가상머신에서도 시도했는데 동일한 증상이 발생하네요. 시간이 좀 지나면 되는지 확인하려고 3일째 이러고 있는데 역시 같은 문제입니다. 혹시 이런 문제 생기는 분 계실까요?
[질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예) 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예) 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예) [질문 내용] 풀이를 보니 풀이가 훨씬 좋은 방법인건 인지가 되지만 제가 생각했을때 제 코드도 실행은 되어야 맞는데 자꾸 출금을 할때 출금 후 while문 처음으로 되돌아가지 않고 다시 출금액을 입력하라고 나옵니다 이유가 뭘까요..? 입금 시에는 정상적으로 while문 처음으로 돌아갑니다 .