실무에서의 @Valid와 @Validated의 차이에 대해 알고싶습니다. @Valiated는 내부에 groups 기능을 포함하고 있고 @Valid는 자바 표준 검증 어노테이션이라 spring-boot-starter-validation을 의존관계로 추가해야 사용할 수 있다고 하셨는데, Bean Validation을 위해서는 spring-boot-starter-validation 의존관계를 추가해야 하므로 @Valid는 바로 사용이 가능하고, 강의에서 @Validated의 groups 기능은 사실상 실무에서 사용하지 않는다고 하셨습니다. 그러면 @Validated와 @Valid가 사용상의 차이는 없는 것 같은데, 실무에서 @Validated를 쓸것이냐 @Valid를 쓸것이냐를 어떻게 판단해서 어느 것을 보통 사용하나요?
hadoop distcp /user/etc/xml/distcptest/odark.xml /user/etc/xml/distcptest/target 추후에 클러스터내에 네임노드들간에 데이터 전송과 복제가 가능하며 이 distcp 명령어는 일반적인 파일 파일복제나 복사보다는 맵리듀스상에서 다량의 데이타 파일들을 더욱 빠르게 복제하는 효과라고 말씀하셨는데 영상에서는 파일시스템 즉 클러스터내의 데이타 노드에 있는 특정 파일을 다른 target디렉토리로 맵리듀스를 이용하여 copy하는경우만 보여주셨는데.... 어떻게 네임노드들간에 복제에 이용하는거죠? hdfs-site.xml 에 설정된 namenode 디렉토리에 있는 데이타파일 복제를 얘기하시나요? 여기 namenode안에는 아무것도 없는데..... 그리고 네임노드들 간이라는게 active <-> standby 간에 얘기하시나요? 아니면 master <-> secondary 네임도드간을 얘기하는건가요? 어떤경우에 이런 distcp복제를 이용하나요?
IAM 에 사용자 aws_learner 생성후 강의 내용대로 AmazonDynamoDBReadOnlyAccess 정책을 추가한 후 시뮬레이터를 돌렸을 때 강의에선 부분적으로 allowed, denied가 되는데 저는 모두 denied가 됩니다. 이런 현상이 정상적인 것인지 질문드립니다.
안녕하세요. 프록시 강의를 복습해서 듣다 보니 궁금한게 생겼습니다. 만약 getReference로 프록시 객체를 받고 영속성 컨택스트를 통해 초기화를 진행한 후 필드값을 변경하면 트랜잭션이 종료될 때 변경감지가 정상적으로 일어나나요?? 처음 들었을 때 관련된 내용이 있었던 것 같은데 제가 놓친건지 내용이 안나와서 질문드립니다!
질문 1. 초기화는 등록된 빈 내부의 함수를 호출해서 이뤄진다는 것을 알았습니다. 그렇다면 초기화는 내부의 함수를 부르는 것으로 끝나는 경우가 많은가요? 아니면 수동 빈 등록에서 사용했던 setUrl 함수처럼 특정 값을 받아서 부르는 경우가 많은가요? - 즉, 초기화함수를 위해 수동 빈 등록해야하는 경우가 많은가요? 질문 2. 2번째 방법은 Bean(initMethod="init")은 빈 자동 등록에서는 사용 못하나요? 약간 말을 정리못해서 질문이 잘 전해졌을지 모르겠습니다. 감사합니다
import java.util.Scanner; public class cotest3_4 { public static void main(String[] args) { Scanner scanner = new Scanner(System.in); int n=scanner.nextInt(); int m= scanner.nextInt(); int[] list= new int[n]; for(int i=0; i<n; i++) { list[i]=scanner.nextInt(); } /* int answer=0; for(int i=0; i<n;i++) { int sum=0; for(int j=i; j<n; j++) { if(sum<m) { sum+=list[j]; } else { if(sum==m) {answer++; break;} break; } } } System.out.print(answer); */ } } <친구코드> import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; public class Q_04 { public static void main(String[] args) throws IOException { BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); String[] st=br.readLine().split(" "); int n = Integer.parseInt(st[0]); int m = Integer.parseInt(st[1]); String[] s = br.readLine().split(" "); int[] arr = new int[n]; for (int i = 0; i < n; i++) { arr[i] = Integer.parseInt(s[i]); } /* int cnt=0; int sum=0; int j=0; for (int i = 0; i < n; i++) { while (sum < m && i+j<n) { sum+=arr[i+j]; j++; } j=0; if (sum == m) { cnt++; } sum=0; } System.out.print(cnt); */ } } 위 주석 처리한 코드 부분이 친구와 논리가 같은데 제 코드는 오답이라고 나옵니다. 혹시 어디가 잘못되었는지 알 수 있을까요?
안녕하세요! 이제 수업을 거의 다수강해 가고 있네요. 감사합니다! 그런데 분기 한정법과 배낭 문제에 몇가지 질문할 것이 있습니다. 첫번째, bound : 현재 노드에서 앞으로 얻을 수 있는 최대 이익 이라고 하셨는데, 이 식을 보면 (bound = (현재까지 얻은 이익+나머지 노드들 중 전부 담아도 W를 넘지 않는 이익) + (전부 담으면 W가 넘는 노드 k의 이익)) 로 이해가 됩니다. 그런데, w_i배열의 마지막 값이 앞선 원소들의 합보다 월등히 크다면, 위 bound 식이 현재 노드에서 앞으로 얻을수 있는 최대 이익이 될 수 없을 것 같습니다. 그래서 제 생각에는 먼저 이익의 내림차순으로 정렬을 하면 bound의 정의를 만족할 것 같은데 제각 생각한것이 맞을까요? 두번째, , 위 두 그림에서 (3,1)과 (4,1)이 nonpromising한 이유가 bound 값이 maxprofit보다 작아서 라고 하셨는데, 제 생각에는 (bound = (현재까지 얻은 이익+나머지 노드들 중 전부 담아도 W를 넘지 않는 이익) + (전부 담으면 W가 넘는 노드 k의 이익)) 인데, 그렇다면 항상 (3,1)과 (4,1)에서의 bound 값은 maxprofit보다 크거나 같을 것 같습니다. 그래서 제 생각에는 nonpromising한 이유가 bound 값 때문이 아니라 무게의 합이 W보다 거쳐서 nonpromising 하다고 생각했는데 맞을까요? 항상 강의 잘 듣고 있습니다. 좋은강의에 늘 감사드립니다 :)
안녕하세요 chapter3에 3번 최대매출 문제에서 저랑 친구랑 거의 같은 코드인데 저만 시간초과가 나서 질문드립니다 <<친구코드>> import java.util.Scanner; public class Main { public static void main(String[] args) { Scanner sc = new Scanner(System.in); int day = sc.nextInt(); int d=sc.nextInt(); sc.nextLine(); String[] st=sc.nextLine().split(" "); sc.close(); int[] arr=new int[day]; for (int i = 0; i < day; i++) { arr[i]=Integer.parseInt(st[i]); } int max=0; for (int i = 0; i < day - d + 1; i++) { int sum = 0; for (int j = i; j < i+d; j++) { sum += arr[j]; } max = sum > max ? sum : max; } System.out.println(max); } } <<<제 코드>>> Scanner scanner = new Scanner(System.in); int n= scanner.nextInt(); int k= scanner.nextInt(); int[] list= new int[n]; scanner.nextLine(); String[] str=scanner.nextLine().split(" "); scanner.close(); for(int i=0; i<n; i++) { list[i]= Integer.parseInt(str[i]); } int max=0; for(int i=0; i<n-k +1; i++) { int sum=0; for(int j=i; j<i+k; j++) { sum+=list[j]; //if(max<sum) max=sum; max= sum>max ? sum: max; } } System.out.println(max); 실행시간이 두배 정도 차이나는데 코드가 거의 같아서 어디가 문제인지 궁금합니다 감사합니다!