강사님께서 JPAQuery 보다는 JPAQueryFactory를 권장한다 하신걸로 기억하는데, 그 이유를 알 수 있을까요? 레퍼런스도 뒤져봤는데 " JPAQueryFactory should be the preferred option to obtain JPAQuery instances." 라는 문장 밖에 못찾겠어서요.. 이름이 Factory라 왠지 모르게 생성비용이 JPAQuery 보다 더 비쌀 거 같은 그런 느낌이 들었는데..ㅠ 궁금해 죽겠습니다! p.s 유쾌한방에 자주 놀러와주세용~ 다들 그리워합니다 ㅋㅋ 항상 보고 배우고 있습니다! 좋은 강의 감사드립니다!
선생님 강의 잘 듣고 있습니다! 다름이 아니고, 인트로 음악은 큰데 선생님 목소리는 작은 편이라, 목소리에 맞춰 소리를 키워놓으면 다음 강의로 넘어갈 때 인트로 소리가 빰하고 크게 나와서 약간 불편한 감이 있습니다 나중에 영상 찍으신다면 두 소리가 비슷한 크기면 더 좋을 것 같아요 :) 오늘도 열공하겠습니다~
안녕하세요 이 코드에 있는 중괄호는 root를 생성하고 동시에 Data값을 "R1개발실"이라고 초기화 해주는 이니셜라이저라는 것 까지는 이해했는데요 그밑에 다시 중괄호를 열어서 그 안에 node를 생성한 이유를 잘 모르겠습니다. 아래와 같이 중괄호 없이 실행해봐도 root의 children으로 node가 들어가는 것은 같던데 트리구조를 나타내기위해 쓰는 건가요?
디바이스에 pin code를 인증 하는 방식과 서버에 pin code를 인증하는 방식에서 어느쪽이 좋을까요? 디바이스에 pin code를 암호화 하여 저장한다고 해도 결국 메모리 변조나 앱변조 방법으로 우회가 가능하고 서버에서 인증하는 방법은 response를 변조하여 우회가 가능합니다. pin code를 https통신 으로 서버에서 인증하는 방식일때 파라메터의 pin code가 암호화 하지 않고 보낼때 취약점으로 잡아야 할까요? 저는 취약점은 아니라고 보고 있습니다. 일반적으로 웹 취약점 진단시 https통신에서 아이디 / 패스워드 인증할때도 패스워드를 암호화 하지 않아도 취약점으로 잡지 않기때문입니다.
안녕하세요. "스프링 시큐리니 OAuth2 인증 서버 설정" 강의 중 Token 발급 TEST 코드를 작성하면서 "/oauth/token" URL을 POST 방식으로 요청하는 것을 볼 수 있었습니다. 저희가 직접 "/oauth/token" URL에 대해 매핑을 하지 않아도 처리가 가능했던 이유는 pom.xml에서 "spring-security-oauth2-autoconfigure" 의존성 설정을 함으로써 가능했던 것이고, 더 나아가 실제로 어떤 지점에서 "/oauth/token" URL이 매핑되어 처리가 되는지 디버깅을 통해 찾아본 결과, org.springframewirk.security.oauth2.config.annotaion.web.configuration 패키지의 WebSecurityConfigurerAdapter를 상속받은 AuthorizationServerSecurityConfiguration 클래스의 configure(HttpSecurity http) 메소드가 재정의 됨으로써 "/oauth/token" URL이 매핑이 되었다는 것을 알 수 있었습니다. 제가 확인한 사항이 맞는지 궁금합니다.
안녕하세요. 좋은강의 잘 들었습니다.! 다만 질문이 한가지 있는데 원격저장소(github)로 협업하기에서 3가지 말씀해주셨는데 3번째 (나도 변하고 원격저장도소 변한경우) -> 이 경우도 2번째 (나는 변함이 없고 원격 저장소가 변한경우) 방법처럼 pull받아서 (충돌이 발생한다면) 충돌을 해결해주고 push 하면 되지 않나요??
안녕하세요 선생님. 선생님께서는 39번 문제 풀때 배열을 이용하셨지만 제가 먼저 풀어볼때는 벡터를 썼고 문제의 입출력예시는 알맞게 동작을 했었습니다. 그러나 채점폴더에서는 테스트케이스 5개 전부 시간초과가 났습니다. 제 코드는 아래와 같습니다. 어떤 부분이 잘못된 것이고 어떻게 고쳐야 할지 궁금합니다. 감사합니다. int main(int argc, char** argv){ // 배열의 크기 저장, 인덱스를 저장하는 변수 3개 (p) 셋 다 1로 시작함. int a_size, b_size, arr_size, i, p1=1, p2=1, p3=1; //freopen("input.txt", "rt", stdin); // 필요한 배열 3개 : 입력받는 배열 arr_a, arr_b, 결과배열 res // 입력받기 시작 scanf("%d", &a_size); vector<int> arr_a(a_size); for(i=1; i<=a_size; i++){ // 벡터에 숫자를 입력받는 인덱스를 1 부터 하고 있음. scanf("%d", &arr_a[i]); } scanf("%d", &b_size); vector<int> arr_b(b_size); for(i=1; i<=b_size; i++){ scanf("%d", &arr_b[i]); }// 입력받기 끝 // 결과 저장할 벡터 vector<int> res(a_size+b_size); // 인덱스 변수 2개를 가지고 작은 수가 나올 때 마다 p1 또는 p2를 이동시킴. while(p1 <= a_size && p2 <= b_size){ // 어느 한 쪽이 자기 크기보다 커질 때까지. if(arr_a[p1] < arr_b[p2]){ res[p3++] = arr_a[p1++]; // p3를 대입한 후에, 1증가 해준다. res[p3]; p3+=1; 과 같다. }else{ res[p3++] = arr_b[p2++]; } } // 한 쪽은 다 res에 들어가고, 다른 한 쪽은 res에 못들어가고 남았을 것. while(p1 <= a_size) res[p3++] = arr_a[p1++]; while(p2 <= b_size) res[p3++] = arr_b[p2++]; for(i=1; i<=a_size+b_size; i++){ // 출력 할 때도 인덱스 1부터 시작. printf("%d ", res[i]); } return 0; }