강의를 한번 돌리고 복습중입니다 섹션2. 정적 컨텐츠 강의에서 위와 같이 /hello-static.html을 입력하여 요청하면 우선 1번과 같이 hello-static관련 controller에서 있는지 확인하고 없으면 2번과 같이 정적 컨텐츠를 내려준다고 설명하셨습니다. 이와 관련하여 궁금증이 uri요청 자체가 hello-static.html로 요청자체에 .html을 요청하였기 때문에 .html을 찾아야 하는게 흐름상 맞지 않나라는 생각이 듭니다. gpt를 통해 알아보니 .html을 처리하는 controller가 있을 수 있기 때문이라고 하는데, 그렇다면 hello-static.html을 요청할 경우 스프링 컨테이너에서 찾는 controller의 이름이 어떻게 되나요?? dispatcher servlet처럼 논리 이름만을 생각하여 .html을 제외한 hello-static이라는 controller의 이름을 찾을 것 같은데 맞는지 궁금하네요 질문 요점: /hello-static.html로 요청했을 경우 1번 경우의 스프링 컨테이너에서 controller를 찾을때 찾는 이름의 기준이 무엇인지에 대한 질문.
안녕하세요! 한번에 모든 실습을 진행하면 좋겠지만. 섹션 별로 실습을 하고있는데 현재는 Elastic Load Balancer까지 진행하였습니다. 그런데 비용이 하루에 1달러 정도씩 나가는거같아서. 이걸 좀 줄이고 싶은데 어떤걸 중지시키면 될까요? 혹 중지 시키더라도 다시 재시작 하면 실습을 이어가면서 할 수 있나요?
해당 강의 10분 경 나온 설명으로, setName 메소드 자체가 스레드 이름에 영향을 주나? 싶은 궁금증이 들어서 확인해 보았고, 저와 비슷한 궁금증을 가지신 분들이 계실 것 같아 공유드립니다. setName은 Thread name 생성 로직에는 관여하지 않습니다. 다만, 해당 예제에서는 new Thread()로 이름 없는 스레드를 생성 후(이 때 Thread-0으로 생성), 해당 Thread를 setName을 통해 Thread name을 바꿔주고 있어서, setName을 사용하면 1부터 카운트되는 것 처럼 보였던 것입니다. -> 새로 생성된 스레드의 이름은 Thread-0 -> Thread-0이 yourThread로 치환됨 yourThread를 생성하는 부분에서 Thread의 이름을 임의로 넣어주고, 아래에서 스레드를 생성하면 0번부터 생성됨을 확인할 수 있습니다.
import java.util.Scanner; public class Main { public int solution(int n, int m, int[] arr){ int answer = 0, sum = 0; for(int i=0;i<m;i++){ sum += arr[i]; } for(int i=0;i<n-m;i++){ answer = Math.max(answer, sum); sum = sum - arr[i] + arr[i+m]; } //answer = Math.max(answer, sum); return answer; } public static void main(String[] args) { Main T = new Main(); Scanner kb = new Scanner(System.in); int n = kb.nextInt(); int m = kb.nextInt(); int[] arr = new int[n]; for(int i=0;i<n;i++) arr[i] = kb.nextInt(); System.out.println(T.solution(n, m, arr)); } } 해당 코드가 왜 정답이 되는지 모르겠습니다. 위 코드처럼 작성하면 for문의 제일 마지막번째에 sum과 answer를 비교하지 않고 answer를 리턴하게 되는건데 그럼 오답이지 않나요? 10 3 1 2 3 4 5 6 7 8 9 10 이렇게 마지막 연속된 K일에서 최댓값으로 주어진다면 값이 제대로 안 나오는데 왜 정답이 되는지 궁금합니다.
인덱스를 걸때 카디널리티 수치를 확인해 높은 컬럼을 인덱스로 설정하라고 강의에서 들었습니다. 이에 궁금한 점이 몇가지 있습니다. Q1 : WHERE 절에 검색조건으로 사용되는 컬럼이 5가지라고 가정하면 가장 카디널리티가 높은 컬럼 1개만 인덱스로 걸어야 하나요?? 아니면 카디널리티가 높은 순서대로 묶어서 하나의 복합 인덱스를 만들어 주어야 하나요?? 차이점이 궁금하고 어떤 방식이 더 나은 방식인지 궁금합니다 Q2 : WHERE 절에 사용되는 검색조건인 컬럼 한개가 있다고 가정했을때 해당 컬럼의 카디널리티 수치가 낮더라도 인덱스를 만드는게 낫지 않나요? Q3 : Mysql의 경우 범위검색의 경우 B-Tree 인덱스를 사용한다고 알고있습니다 . 강의에서 만든 인덱스도 날짜이고 범위검색이니 B-Tree 인덱스를 사용한거 같습니다. 정확한 일치 검색의 경우 해시 인덱스를 사용할 수 있다고 들었습니다. 이때는 인덱스를 만들때 코드를 어떻게 써줘야 해시 인덱스를 만들 수 있나요?
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요. 1. 강의 내용과 관련된 질문을 남겨주세요. 2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요. (자주 하는 질문 링크: https://bit.ly/3fX6ygx) 3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요. (질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG) 질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요. ========================================= [질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예/아니오) 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오) 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오) [질문 내용] 안녕하세요. 다름이 아니라 강의를 보며 코드를 작성하며 수업을 따라가고 싶은데 제공된 소스코드를 import 하지 않으면 수업을 따라가는데 힘들까요?
현재 컴퓨터에서 스프링 강의를 따라하며 개발했고 코드가 잘 돌아갔습니다. 그런데 이를 깃허브를 통해 다른 컴퓨터에서 강의를 이어 들으려고 하는데 cannot resolve symbol 문제가 뜹니다. build.gradle 파일도 제대로 되어 있고, refresh dependency도 해보고 아니면 invalid cache를 하는 등 여러 가지를 해봤는데도 문제가 해결되지 않는데, 어떻게 해야 할까요?
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요. 1. 강의 내용과 관련된 질문을 남겨주세요. 2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요. (자주 하는 질문 링크: https://bit.ly/3fX6ygx) 3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요. (질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG) 질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요. ========================================= [질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예/아니오) 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오) 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오) [질문 내용] 안녕하세요. 강의 잘 듣고 있습니다. 자바 버전만 수정해서 빌드그래들 교안 그대로 입력하면 되나요? 자주하는 질문에는 다른 내용이 들어가 있는 것 같아서요
스위치문(*) 문제풀이 과정에서 선생님께서 아래와같이 진행하셧습니다. * 김영한의 자바 입문 - 코드로 시작하는 자바 첫걸음, 섹션 4. 조건문, switch문 관련 건 해당 문제를 자바 14 새로운 switch문 관련하여 알려주신 내용이 있어 그 방법으로도 풀어봐야겠다 싶어, 진행해 보았는데요. 아래와같이 default 를 지워도 값이 나오지 않을뿐이지 에러메시지가 출력되진 않더라구요? 해당사항이 없으면 에러가 날거같은데 그렇지않아서 제가 자바 14 새로운 switch문 관련하여 문제를 잘못푼것인지 무언가를 놓친게 있는것인지 궁금하여 여쭤봅니다. 감사합니다!!
질문 답변을 제공하지만, 강의 비용에는 Q&A는 포함되어 있지 않습니다. 다만 실습이 안되거나, 잘못된 내용의 경우는 알려주시면 가능한 빠르게 조치하겠습니다! [질문 전 답변] 1. 강의에서 다룬 내용과 관련된 질문인가요? [예] 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? [예] 3. 질문 잘하기 법을 읽어보셨나요? [예] ( https://www.inflearn.com/blogs/1719 ) 4. 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요. 5. vagrant up 에서 발생하는 문제는 주로 호스트 시스템(Windows, MacOS)과 연관된 다양한 조건에 의해 발생합니다. 따라서 이를 모두 제가 파악할 수 없어서 해결이 어렵습니다. vagrant up 으로 진행이 어렵다면 제공해 드리는 가상 머신(VM) 이미지를 import해서 진행하시기 바랍니다. ( https://www.inflearn.com/questions/992407/comment/281901 ) [질문 하기] 안녕하세요 예전에 강의를 들을 때에는 당장 쓸 일이 없어서 듣고 까먹었다가 이제 쓸 일이 생겨서 다시 공부 중인데 따라서 진행하다가 막혀서 질문드립니다. `6.2 쿠버네티스 기본 오브젝트`강의의 8분 지점에서 root@cp-k8s:pwd /root/_Lecture_k8s_starter.kit/ch6/6.2 root@cp-k8s:~/_Lecture_k8s_starter.kit/ch6/6.2# k apply -f ./dpy-chk-log.yaml # 위의 명령어를 수행 root@cp-k8s:~/_Lecture_k8s_starter.kit/ch6/6.2# k get pods NAME READY STATUS RESTARTS AGE dpy-chk-log-6b765b4569-5v6d7 0/1 ContainerCreating 0 70m dpy-chk-log-6b765b4569-9944j 0/1 ContainerCreating 0 70m dpy-chk-log-6b765b4569-rrj9p 0/1 ContainerCreating 0 70m 위와 같이 1시간이 지나도 생성이 안되는 문제 발생. 이전까지의 강의를 다시 들으면서 했을 때 다른 deployment는 apply로 했을 때 정상적으로 생성이 되었습니다. 혹시 강의가 업데이트 되면서 따로 수정해야 하는 사항이 있었을까요? root@cp-k8s:~/_Lecture_k8s_starter.kit/ch6/6.2# ls / bin cdrom dev home lib32 libx32 media nfs_shared proc run srv sys usr boot core etc lib lib64 lost+found mnt opt root sbin swap.img tmp var root@cp-k8s:~/_Lecture_k8s_starter.kit/ch6/6.2# ls /nfs_shared/ log 위와 같이 이전에 실행해야하는 스크립트는 수행했습니다. 아래 현재 상황을 추가 작성합니다. root@cp-k8s:~/_Lecture_k8s_starter.kit/ch6/6.2# cat /etc/exports # /etc/exports: the access control list for filesystems which may be exported # to NFS clients. See exports(5). # # Example for NFSv2 and NFSv3: # /srv/homes hostname1(rw,sync,no_subtree_check) hostname2(ro,sync,no_subtree_check) # # Example for NFSv4: # /srv/nfs4 gss/krb5i(rw,sync,fsid=0,crossmnt,no_subtree_check) # /srv/nfs4/homes gss/krb5i(rw,sync,no_subtree_check) # /nfs_shared/log 192.168.1.0/24(rw,sync,no_root_squash) root@cp-k8s:~/_Lecture_k8s_starter.kit/ch6/6.2# k describe pods Name: dpy-chk-log-6b765b4569-5v6d7 Namespace: default Priority: 0 Service Account: default Node: w2-k8s/192.168.1.102 Start Time: Mon, 05 Aug 2024 16:32:32 +0900 Labels: app=dpy-chk-log pod-template-hash=6b765b4569 Annotations: <none> Status: Pending IP: IPs: <none> Controlled By: ReplicaSet/dpy-chk-log-6b765b4569 Containers: dpy-chk-log: Container ID: Image: sysnet4admin/chk-log Image ID: Port: <none> Host Port: <none> State: Waiting Reason: ContainerCreating Ready: False Restart Count: 0 Environment: <none> Mounts: /audit from nfs-vol (rw) /var/run/secrets/kubernetes.io/serviceaccount from kube-api-access-v2gdf (ro) Conditions: Type Status PodReadyToStartContainers False Initialized True Ready False ContainersReady False PodScheduled True Volumes: nfs-vol: Type: NFS (an NFS mount that lasts the lifetime of a pod) Server: 192.168.1.10 Path: /nfs_shared/log ReadOnly: false kube-api-access-v2gdf: Type: Projected (a volume that contains injected data from multiple sources) TokenExpirationSeconds: 3607 ConfigMapName: kube-root-ca.crt ConfigMapOptional: <nil> DownwardAPI: true QoS Class: BestEffort Node-Selectors: <none> Tolerations: node.kubernetes.io/not-ready:NoExecute op=Exists for 300s node.kubernetes.io/unreachable:NoExecute op=Exists for 300s Events: Type Reason Age From Message ---- ------ ---- ---- ------- Warning FailedMount 107s (x43 over 73m) kubelet MountVolume.SetUp failed for volume "nfs-vol" : mount failed: exit status 32 Mounting command: mount Mounting arguments: -t nfs 192.168.1.10:/nfs_shared/log /var/lib/kubelet/pods/b592c7c9-acfd-4cce-bb83-af99e9dcc186/volumes/kubernetes.io~nfs/nfs-vol Output: mount.nfs: access denied by server while mounting 192.168.1.10:/nfs_shared/log Name: dpy-chk-log-6b765b4569-9944j Namespace: default Priority: 0 Service Account: default Node: w1-k8s/192.168.1.101 Start Time: Mon, 05 Aug 2024 16:32:32 +0900 Labels: app=dpy-chk-log pod-template-hash=6b765b4569 Annotations: <none> Status: Pending IP: IPs: <none> Controlled By: ReplicaSet/dpy-chk-log-6b765b4569 Containers: dpy-chk-log: Container ID: Image: sysnet4admin/chk-log Image ID: Port: <none> Host Port: <none> State: Waiting Reason: ContainerCreating Ready: False Restart Count: 0 Environment: <none> Mounts: /audit from nfs-vol (rw) /var/run/secrets/kubernetes.io/serviceaccount from kube-api-access-qxxmn (ro) Conditions: Type Status PodReadyToStartContainers False Initialized True Ready False ContainersReady False PodScheduled True Volumes: nfs-vol: Type: NFS (an NFS mount that lasts the lifetime of a pod) Server: 192.168.1.10 Path: /nfs_shared/log ReadOnly: false kube-api-access-qxxmn: Type: Projected (a volume that contains injected data from multiple sources) TokenExpirationSeconds: 3607 ConfigMapName: kube-root-ca.crt ConfigMapOptional: <nil> DownwardAPI: true QoS Class: BestEffort Node-Selectors: <none> Tolerations: node.kubernetes.io/not-ready:NoExecute op=Exists for 300s node.kubernetes.io/unreachable:NoExecute op=Exists for 300s Events: Type Reason Age From Message ---- ------ ---- ---- ------- Warning FailedMount 107s (x43 over 73m) kubelet MountVolume.SetUp failed for volume "nfs-vol" : mount failed: exit status 32 Mounting command: mount Mounting arguments: -t nfs 192.168.1.10:/nfs_shared/log /var/lib/kubelet/pods/66ecef69-42e7-4075-a6c5-034b30b0f757/volumes/kubernetes.io~nfs/nfs-vol Output: mount.nfs: access denied by server while mounting 192.168.1.10:/nfs_shared/log Name: dpy-chk-log-6b765b4569-rrj9p Namespace: default Priority: 0 Service Account: default Node: w3-k8s/192.168.1.103 Start Time: Mon, 05 Aug 2024 16:32:32 +0900 Labels: app=dpy-chk-log pod-template-hash=6b765b4569 Annotations: <none> Status: Pending IP: IPs: <none> Controlled By: ReplicaSet/dpy-chk-log-6b765b4569 Containers: dpy-chk-log: Container ID: Image: sysnet4admin/chk-log Image ID: Port: <none> Host Port: <none> State: Waiting Reason: ContainerCreating Ready: False Restart Count: 0 Environment: <none> Mounts: /audit from nfs-vol (rw) /var/run/secrets/kubernetes.io/serviceaccount from kube-api-access-v2tdb (ro) Conditions: Type Status PodReadyToStartContainers False Initialized True Ready False ContainersReady False PodScheduled True Volumes: nfs-vol: Type: NFS (an NFS mount that lasts the lifetime of a pod) Server: 192.168.1.10 Path: /nfs_shared/log ReadOnly: false kube-api-access-v2tdb: Type: Projected (a volume that contains injected data from multiple sources) TokenExpirationSeconds: 3607 ConfigMapName: kube-root-ca.crt ConfigMapOptional: <nil> DownwardAPI: true QoS Class: BestEffort Node-Selectors: <none> Tolerations: node.kubernetes.io/not-ready:NoExecute op=Exists for 300s node.kubernetes.io/unreachable:NoExecute op=Exists for 300s Events: Type Reason Age From Message ---- ------ ---- ---- ------- Warning FailedMount 107s (x43 over 73m) kubelet MountVolume.SetUp failed for volume "nfs-vol" : mount failed: exit status 32 Mounting command: mount Mounting arguments: -t nfs 192.168.1.10:/nfs_shared/log /var/lib/kubelet/pods/fb54e7a8-70e3-48af-8537-73ab56a9dfaf/volumes/kubernetes.io~nfs/nfs-vol Output: mount.nfs: access denied by server while mounting 192.168.1.10:/nfs_shared/log 맨 밑에 에러를 보니 Warning FailedMount 107s (x43 over 73m) kubelet MountVolume.SetUp failed for volume "nfs-vol" : mount failed: exit status 32 Mounting command: mount Mounting arguments: -t nfs 192.168.1.10:/nfs_shared/log /var/lib/kubelet/pods/fb54e7a8-70e3-48af-8537-73ab56a9dfaf/volumes/kubernetes.io~nfs/nfs-vol Output: mount.nfs: access denied by server while mounting 192.168.1.10:/nfs_shared/log 이런 에러가 있는데 어떻게 처리해야할 지 모르겠어서 질문드립니다. 감사합니다.
FetchBoardsCount는 search를 입력 받아 검색 결과에 대한 개수를 가져오는데 FetchUsedItemsISold는 내가 등록한 상품에 대한 전체 개수만 반환하고 있어 검색 결과에 대한 page 개수를 가져오지 못해 pagination에 검색 결과가 1개여도 내가 등록한 상품의 전체 개수를 한 page가 표시 됩니다. 검색 결과에 대한 refetch를 게시글이 없을 때까지 해주고 그걸 토대로 page 구성하기는 아닌 것 같아서 API의 search의 Count에 의존 하지 않고 page를 해결할 수 있는 방법이 있을까요?
질문 답변을 제공하지만, 강의 비용에는 Q&A는 포함되어 있지 않습니다. 다만 실습이 안되거나, 잘못된 내용의 경우는 알려주시면 가능한 빠르게 조치하겠습니다! [질문 전 답변] 1. 강의에서 다룬 내용과 관련된 질문인가요? 예 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? 예 3. 질문 잘하기 법을 읽어보셨나요? 예 ( https://www.inflearn.com/blogs/1719 ) 4. 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요. 5. vagrant up 에서 발생하는 문제는 주로 호스트 시스템(Windows, MacOS)과 연관된 다양한 조건에 의해 발생합니다. 따라서 이를 모두 제가 파악할 수 없어서 해결이 어렵습니다. vagrant up 으로 진행이 어렵다면 제공해 드리는 가상 머신(VM) 이미지를 import해서 진행하시기 바랍니다. ( https://www.inflearn.com/questions/992407/comment/281901 ) [질문 하기] 안녕하세요 windows 환경에서 테스트 중인데 LB생성 부분에서 아래와 같이 문제가 있어 질문 드립니다. POD 생성 하였는데 실행이 안되고 삭제도 안되는 상황 입니다. 어떻게 해야할까요? 삭제를 하면 1시간이 지나도 삭제가 안되고 있습니다.
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문 전에 다음을 꼭 확인해주세요. 1. 강의 내용과 관련된 질문을 남겨주세요. 2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요. (자주 하는 질문 링크: https://bit.ly/3fX6ygx) 3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요. (질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG) 질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요. ========================================= [질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예/아니오) 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오) 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오) [질문 내용] 쓰레드의 동시성이슈를 syncronized로 해결하였을때 로그를 보면, 00:53:11.012 [ t1] 거래 시작: BankAccountV3 00:53:11.012 [ t2] 거래 시작: BankAccountV3 00:53:11.020 [ t1] [검증 시작] 출금액: 800, 잔액: 1000 00:53:11.021 [ t1] [검증 완료] 출금액:800, 잔액: 1000 00:53:11.489 [ main] t1 state: TIMED_WAITING 00:53:11.490 [ main] t2 state: TIMED_WAITING 00:53:12.021 [ t1] [출금 완료] 출금액:800, 잔액: 200 00:53:12.021 [ t1] 거래 종료 00:53:12.021 [ t2] [검증 시작] 출금액: 800, 잔액: 200 00:53:12.022 [ t2] [검증 실패] 00:53:12.024 [ main] 최종 잔액: 200 이런식으로 t1, t2 두 쓰레드중 하나가 blocked 되는 것이 아니라 모두 time_waiting상태로 유지 됩니다. 뭔가 느낌으로는 큰 상관은 없을 것 같고, 시스템 환경에 따른 차이인 거 같은데, 혹시나 제가 세팅을 잘못했거나 코드를 잘못 짰을 가능성도 있을까요. ## 메인 클래스를 반복해서 실행해보니 t1, t2 스레드 모두 time waiting 상태이거나 모두 blocked 상태가 됩니다.
안녕하세요. JPA를 이용해서 스터디를 하다가 막히는 부분이 있어서 질문 드립니다. 우선 요구사항은 아래 내용입니다. 신규 회원은 1명의 회원을 추천할 수 있습니다. 회원은 본인이 추천받은 총 횟수를 알 수 있습니다. 위 내용을 기반으로 엔티티를 Customer, Referee 2개를 생성 했습니다. 그리고 Referee 엔티티에서 추천한 회원 ID와 추천받은 회원 ID를 필드로 가지려고 합니다. 추천한 회원 ID 필드는 OneToOne 관계로, 추천받은 회원 ID는 ManyToOne 관계로 풀고 싶습니다. 이런 경우에는 어떤식으로 정의를 해야 할까요? @NoArgsConstructor(access = AccessLevel.PROTECTED) @Getter @Entity public class Referee extends CreatedDateTimeEntity { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) @Column(name = "referee_id") private Long id; @OneToOne(fetch = FetchType.LAZY) @JoinColumn(name = "customer_id") private Customer customer; @ManyToOne(fetch = FetchType.LAZY) @JoinColumn(name = "customer_id") private Customer refereeCustomer; } 감사합니다.