이미지와 같이 Runtime Error 발생하여, 검토 요청드립니다. import java.util.*; public class Main { private int solution (int i1, int[][] i2) { int r = 0; int rt = 0; for (int i = 0; i < i1; i++) { int t = 0; boolean[] s = new boolean[i1]; for (int j = 0; j < 5; j++) { for (int k = 0; k < i1; k++) { if (i2[i][j] == i2[k][j]) { s[k] = true; } } } for (boolean a: s) { if (a) { t++; } } if (t > rt) { r = i; rt = t; } } return r + 1; } public static void main(String[] args){ Scanner in = new Scanner(System.in); int input1 = in.nextInt(); int [][] input2 = new int[input1][input1]; for (int i = 0; i < input1; i++) { for (int j = 0; j < 5; j++) { input2[i][j] = in.nextInt(); } } System.out.println(new Main().solution(input1, input2)); } }
DataInitializer 와 관련하여, EntityManager 를 @Autowired 가 아닌, @PersistenceContent 로 가져온 까닭이 궁금합니다. 제가 이해한 바에 따르면, initialize 메서드에서 정의된 ExecutorService 의 스레드 풀은 트랜잭션 전파가 이뤄지지 않으니, TransactionTemplate 을 사용하여 명시적으로 트랜잭션 블록을 지정해주고, 영속화를 위한 과정에서, entityManager 의 프록시 객체가 트랜잭션 내부에서 적절한 객체를 가져와 수행한다고 알고 있습니다. 이 과정에서, EntityManager 의 프록시 객체를 위해 @PersistenceContext 를 사용하여 선언함은 알겠으나, @Autowired 를 사용하여 스프링에서 관리하는 것 역시도 SharedEntityManager 에서 파생된, 동일한 프록시 객체를 반환하는 걸로 알고 있습니다. PersistenceContext 로 em 을 가져온 이유가 있나요? 아니면 선호하시는 방식이라 채택한 방법인가요? 물론 제가 이해한 바에서 틀린 부분이 있을 수도 있으니 잘못 이해한 바가 있으면 정정도 부탁드립니다. 강의 잘 보고 있습니다~
p.18. 다운스트림 컬렉터부분에 1.groupBy(Student::grade) 가 아니고 1.groupingBy(Student::getGrade) 로 바뀌어야 되는거 아닌지요. 오타인거 같습니다. record로 선언된 클래스가 아니어서요. p. 23 reducing 그림에서도 비슷한 오타가 보입니다.
자식 생성자 생성되고 child() 왔다가 부모 올라가서 parent() 먼저 출력후 자식내려와서 super() 이니까 또 parent() 출력하고 다시 내려와서 child constructor 해야하지 않나요? parent constructor parent constructor child constructor 라고 생각했는데 아닌 이유가 뭘까요..
30강 9:44에서 부모 자식 기본 생성자가 출력되지 않았는데 그 이유가 super에 파라미터가 있어서 그 값을 출력했다 라고 이해했는데 만약super()이런식으로 파라미터의 값을 설정하지 않았다면 부모 자식 기본 생성자가 호출 되는 건가요? Car() 이런 식으로요 10:26에서는 왜 부모 기본 생성자는 출력하는데 자식의 기본 생성자인 ECar()은 출력 하지 않나요? 부모자식 다 출력하는게 아니라 조건이 없을때 부모만 출력하는건가요?
문자열이 비어있는지 판단하는것이 string str = "Hello"; 가 있냐 없냐로 판단하는 것인가요??? 설명란에 Hello라는 문자열이 변수에 들어가 있고 그것이 비었는 지를 물어보는 기능이 참값이 나온다는데 비어있으면 참값이고 그렇지 않으면 거짓값인데 답이 거짓값이 나와서 이해가 조금 부족합니다..ㅠㅠ
상단의 스크린샷이 저의 로컬에서 확인된 거구요 아래는 선생님의 결과 입니다 [실습] 유저 이름이름 특정기간에 작성된 글 검색하는 SQL문 튜닝하기 3:30초 구간 입니다 똑같이 했는데 왜 TYPE과 KEY 변경되어 있을까요? 제가 잘못하고 있는건가요? 따라 쓴거도 아니고 NOTION에 있는걸 복붙 했습니다 ;;;
시간대는 9분 25초이구요, 기본 생성자를 거치지 않고 ElectricCar(String model, int year, int batteryCapacity) { super(model, year); this.batteryCapacity = batteryCapacity; System.out.println("ECar(" + batteryCapacity + ")"); } } 해당 코드에서 super(model, year); 을 타고 Car(String model, int year) { this.model = model; this.year = year; System.out.println("Car(" + model + ", " + year + ")"); } } 해당 코드가 실행되어 println 되고, 다음 자식 생성자가 실행되어서 ECar(75) 의 값이 나오는 걸로 보여지는데 Q. new electricCar에서 기본 생성자를 거치지않고 어째서 2번째 자식 생성자로 바로 가버려서 코딩이 되지요?? 이게 명시적 호출인가요?
안녕하세요 쿠케님 강의 잘 보고 있습니다! 강의를 보다가 갑자기 궁금한 점이 생겨서 질문 드립니다. 샤딩의 기준이 현재는 article_id로 되어 있는데, 특정 샤드에 댓글 데이터가 엄청 생성되어서 불균형하게 저장이 되는 경우도 있을까요?? 있다면 샤딩의 기준을 다시 정의하는 일도 있는지 궁금합니다. 항상 잘 보고 있습니다. 감사합니다.
안녕하세요! 수업 중에 재민 님이 말씀해주신 이미 다운로드 한 쿠폰은 내려주지 않는 것과 관련해서 질문이 있습니다. 제 나름대로 생각해 본 코드는 이렇습니다. fun getCouponsForProducts(productIds: Collection<Long>): List<Coupon> { val productTargets = couponTargetRepository.findByTargetTypeAndTargetIdInAndStatus( CouponTargetType.PRODUCT, productIds, EntityStatus.ACTIVE, ) val categoryTargets = couponTargetRepository.findByTargetTypeAndTargetIdInAndStatus( CouponTargetType.PRODUCT_CATEGORY, productCategoryRepository.findByProductIdInAndStatus(productIds, EntityStatus.ACTIVE).map { it.categoryId }, EntityStatus.ACTIVE, ) val applicableCouponIds = (productTargets + categoryTargets).map { it.id }.toSet() val downloadedCouponIds = ownedCouponRepository.findByUserIdAndState(userId, OwnedCouponState.USED) # userId 어디서 받아오지? .map { it.couponId } .toSet() val finalCouponIds = applicableCouponIds - downloadedCouponIds if (finalCouponIds.isEmpty()) { return emptyList() } return couponRepository.findByIdInAndStatus(finalCouponIds, EntityStatus.ACTIVE) .map { Coupon( id = it.id, name = it.name, type = it.type, discount = it.discount, expiredAt = it.expiredAt, ) } } 여기서 고민됐던 부분은 findByUserIdAndState 에서 userId 를 어디서, 어떻게 받는 것이 좋을지 입니다. getCouponsForProducts 함수가 호출되는 ProductController의 findProduct 메서드에서는 별도의 User 관련된 정보를 받아오지 않기 때문에 userId 를 받아올 수 없는 상황인 것 같습니다. 그런데 유저가 자신이 이미 다운로드 한 쿠폰을 중복해서 '다운로드 가능 쿠폰' 목록에서 보이지 않게 하는 소위 '개인 맞춤' 작업은 User가 꼭 필요한 정보라고 생각 되는데요. 이런 경우에 findProduct에 CouponController에서 처럼 User를 바로 넘겨주면 간단(?)하게 userId를 알 수는 있지만 이게 최선인 것 같진 않습니다. User를 파라미터로 넘겨주는 것을 인증 절차를 거친다고 생각해본다면 상품 상세 정보 보는 것은 꼭 인증을 하지 않더라도 볼 수 있어야 할테니까요. (그런데 User를 파라미터로 넘겨주는 것이 인증이 된 사용자만 이 API를 사용할 수 있다고 이해하는 것이 옳은 이해인지는 제가 잘 모르겠습니다🥹) 그래서 또 다른 접근법으로는 재민 님이 ProductController의 findProduct 메서드에서 쿠폰을 불러오는 부분 위에 주석으로 처리해놓으신 것처럼 별도의 API를 만들고 해당 API에서 User를 활용해서 진행하면 어떨까 하는 생각도 해봤습니다. 재민 님은 어떤 식으로 푸실지 궁금합니다! 감사합니다.
이전까지 업캐스팅에서 부모의 기본생성자를 먼저 출력하고 다음에 자식의 생성자를 실행한다고 배웠는데 여기선 빼고 바로 B의 생성자로 가는 이유가 무엇인가요 앞 문제와 파라미터가 들어간 메인함수는 똑같은데 오버로딩과 무슨 관련이 있나요 B의 기본생성자에서 명시적으로 파라미터가 들어간 부모 생성자를 호출하기에 부모 기본생성자를 생략해도 되는건가요