학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요. 1. 강의 내용과 관련된 질문을 남겨주세요. 2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요. (자주 하는 질문 링크: https://bit.ly/3fX6ygx) 3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요. (질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG) 질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요. ========================================= [질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예/아니오) 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오) 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오) [질문 내용] oracle openjdk 설치하려고 할 시 버전이 21은 선택이 안되고 24로 고정되어 선택되는데 vendor를 변경해도 될까요? 아니면 버전을 24로 해도 될지 궁금합니다.
출력값 3번째줄에 있는 Tesla Model 3 start는 eCar.start();에서 start가 부모 클래스안에 있으니까 거기에 입력하여 출력하고 eCar.stop();와 eCar.checkBattery();는 자식값에 재정의하였기에 재정의한 데에 넣어 출력하는 건가요?
사업 감각은 조직에 더욱 전략적으로 기여하고자 하는 보상 전문가에게 필요한 역량입니다. 이는 단순한 수치적 측면을 넘어, 사업 성과의 재무적, 전략적, 운영적 동인을 파악하여 보상 전략을 회사 목표에 맞춰 조정하는 것을 의미합니다. C8 시험으로도 알려진 WorldatWork Business Acumen 시험은 재무 분석, 가치 창출, 의사 결정 프로세스 등 보상 전문가의 핵심 사업 원칙을 평가합니다. 이 자격증을 준비하는 것은 전문성을 검증할 뿐만 아니라 비즈니스 리더에게 조언하는 데 자신감을 키워줍니다. 많은 지원자들이 성공하기 위해 C8 시험 문제 및 C8 연습 문제와 같은 도구를 활용하여 준비도를 평가하고 핵심 개념을 강화합니다. 비즈니스 감각과 보상 전문가는 리더십 결정에 더 큰 영향을 미치고, 효과적인 보상 프로그램을 설계하며, 전반적인 비즈니스 성공을 견인할 수 있습니다. 보상 전략을 더 광범위한 조직 목표와 연결하는 능력은 지원 인력에서 전략적 파트너로의 역할을 강화합니다. 시험 응시자들은 종종 최신 C8 60개 시험 문제 WorldatWork C8 시험에 맞춘 연습 자료를 제공하는 신뢰할 수 있는 플랫폼을 이용합니다. 비즈니스 감각에 투자하는 것은 단순히 시험 합격을 위한 것이 아니라, 조직 내에서 자신의 가치를 높이는 데 중요합니다.
그전까지는 그런 현상 없었는데 빌드 프로그램 이랑 에디터 동시에 켜면 이제 충돌나서 나중에 킨 프로그램이 꺼지는데 (아예) 왜그럴까요? 혹시 같은 아이디로 접속 되서 그런가요? 플레이어 프리팹스의 저장된 UID는 왜 지웠는데도 빌드시에는 그대로 들어가는건가요? 그리고 가끔 가다 Auth가 실행이 안되고 UID가 생성이 안되요 (파이어베이스 Auth에 들어가보면 생성이 안되있음)....
Querydsl fetchResults(), fetchCount() Deprecated(향후 미지원) Querydsl은 향후 fetchCount() , fetchResult() 를 지원하지 않기로 결정했다. 안녕하세요 최근 강의를 구매하고 좋은 강의 잘 들었습니다. 하지만 querydsl은 향후 강의에 나와있는 방식으로는 page처리를 못하게 되는데 이에 맞는 강의도 올라가는 것인가요?
해결 ++ 아래 질문 내용을 글로벌 큐에서 추가로 처리해 주는 거였습니다. 삭제가 안되서 최상단에 남깁니다. 이것저것 건들면서 연습하다 보니 제 환경에서 글로벌 큐 호출을 안해서 문제였습니다. 안녕하세요? 루키스님 강의를 참고하여 더미 프로젝트 하는 중에 문제가 식별 되어 제가 분석한게 맞다면 강의 코드에 문제가 있어 제보 드려봅니다. 문제라고 생각되는 부분은 JobQueue 클래스인데요, 문제 상황은 부하가 있는 상황에서 '워커스레드를 2개 이상 돌릴 때, Execute()함수가 실행되지 않는' 점을 확인하였습니다. jobCount 관련 변수의 조건이 어디서 안 맞는 것 같아서 생각해보건데, 아래와 같은 경우라고 생각됩니다. // JobQueue.cpp void JobQueue::Execute() { ... if (_jobCount.fetch_sub(jobCount) == jobCount) { // 여기서 다른 워커 스레드의 _jobCount.fetch_add 발생?! LCurrentJobQueue = nullptr; return; } ... } } 그렇기 때문의 이후의 잡들이 처리되지 못하고 해당 부분에서 prevCount가 계속 쌓이고 있었습니다. // JobQueue.cpp void JobQueue::Push(JobRef job, bool pushOnly) { const int32 prevCount = _jobCount.fetch_add(1); _jobs.Push(job); // WRITE_LOCK // 여기서 prevCount가 계속 쌓여 0이 아님 if (prevCount == 0) { //그러므로 이 부분의 Excute()도 실행되지 않음 ... } 아래는 해당 클래스 cpp 전문입니다. 귀한 시간 내시어 확인해주시면 감사하겠습니다! #include "pch.h" #include "JobQueue.h" #include "GlobalQueue.h" /*-------------- JobQueue ---------------*/ void JobQueue::Push(JobRef job, bool pushOnly) { const int32 prevCount = _jobCount.fetch_add(1); _jobs.Push(job); // WRITE_LOCK // 첫번째 Job을 넣은 쓰레드가 실행까지 담당 if (prevCount == 0) { // 이미 실행중인 JobQueue가 없으면 실행 if (LCurrentJobQueue == nullptr && pushOnly == false) { Execute(); } else { // 여유 있는 다른 쓰레드가 실행하도록 GlobalQueue에 넘긴다 GGlobalQueue->Push(shared_from_this()); } } } // 1) 일감이 너~무 몰리면? void JobQueue::Execute() { LCurrentJobQueue = this; while (true) { vector<JobRef> jobs; _jobs.PopAll(OUT jobs); const int32 jobCount = static_cast<int32>(jobs.size()); for (int32 i = 0; i < jobCount; i++) jobs[i]->Execute(); // 남은 일감이 0개라면 종료 if (_jobCount.fetch_sub(jobCount) == jobCount) { LCurrentJobQueue = nullptr; return; } const uint64 now = ::GetTickCount64(); if (now >= LEndTickCount) { LCurrentJobQueue = nullptr; // 여유 있는 다른 쓰레드가 실행하도록 GlobalQueue에 넘긴다 GGlobalQueue->Push(shared_from_this()); break; } } }
안녕하세요? 루키스님 강의를 참고하여 더미 프로젝트 하는 중에 문제가 식별 되어 제가 분석한게 맞다면 강의 코드에 문제가 있어 제보 드려봅니다. 문제라고 생각되는 부분은 JobQueue 클래스인데요, 문제 상황은 '워커스레드를 2개 이상 돌릴 때, Execute()함수가 실행되지 않는' 점을 확인하였습니다. jobCount 관련 변수의 조건이 어디서 안 맞는 것 같아서 생각해보건데, 아래와 같은 경우라고 생각됩니다. // JobQueue.cpp void JobQueue::Execute() { ... if (_jobCount.fetch_sub(jobCount) == jobCount) { // 여기서 다른 워커 스레드의 _jobCount.fetch_add 발생?! LCurrentJobQueue = nullptr; return; } ... } } 그렇기 때문의 이후의 잡들이 처리되지 못하고 해당 부분에서 prevCount가 계속 쌓이고 있었습니다. // JobQueue.cpp void JobQueue::Push(JobRef job, bool pushOnly) { const int32 prevCount = _jobCount.fetch_add(1); _jobs.Push(job); // WRITE_LOCK // 여기서 prevCount가 계속 쌓여 0이 아님 if (prevCount == 0) { //그러므로 이 부분의 Excute()도 실행되지 않음 ... } 아래는 해당 클래스 cpp 전문입니다. 귀한 시간 내시어 확인해주시면 감사하겠습니다! #include "pch.h" #include "JobQueue.h" #include "GlobalQueue.h" /*-------------- JobQueue ---------------*/ void JobQueue::Push(JobRef job, bool pushOnly) { const int32 prevCount = _jobCount.fetch_add(1); _jobs.Push(job); // WRITE_LOCK // 첫번째 Job을 넣은 쓰레드가 실행까지 담당 if (prevCount == 0) { // 이미 실행중인 JobQueue가 없으면 실행 if (LCurrentJobQueue == nullptr && pushOnly == false) { Execute(); } else { // 여유 있는 다른 쓰레드가 실행하도록 GlobalQueue에 넘긴다 GGlobalQueue->Push(shared_from_this()); } } } // 1) 일감이 너~무 몰리면? void JobQueue::Execute() { LCurrentJobQueue = this; while (true) { vector<JobRef> jobs; _jobs.PopAll(OUT jobs); const int32 jobCount = static_cast<int32>(jobs.size()); for (int32 i = 0; i < jobCount; i++) jobs[i]->Execute(); // 남은 일감이 0개라면 종료 if (_jobCount.fetch_sub(jobCount) == jobCount) { LCurrentJobQueue = nullptr; return; } const uint64 now = ::GetTickCount64(); if (now >= LEndTickCount) { LCurrentJobQueue = nullptr; // 여유 있는 다른 쓰레드가 실행하도록 GlobalQueue에 넘긴다 GGlobalQueue->Push(shared_from_this()); break; } } }
[질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예) 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예) 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예) [질문 내용] 회원 등록 api 에서 아래 코드 처럼 saveMemberV1 메서드의 반환값은 new CreateMemberResponse(id)입니다. @PostMapping("/api/v1/members") public CreateMemberResponse saveMemberV1(@RequestBody @Valid Member member){ Long id = memberService.join(member); return new CreateMemberResponse(id); } 근데 MemberForm.java 에 id를 추가하고 이걸로 리턴받으면 안되나요? 왜 굳이 DTO 를 만들어서 리턴하나요?