dashboard Pending 상태 관련하여 질문이 있습니다.
미해결
대세는 쿠버네티스 (초급~중급편)
기초 다지기 5번까지 진행했습니다. kubectl get pods -A 명령어 실행 시 dashboard만 Pending 상태로 계속 유지되어, 그 다음 진행을 못하고 있습니다 ㅠ
- docker
- kubernetes
172만명의 커뮤니티!! 함께 토론해봐요.
미해결
대세는 쿠버네티스 (초급~중급편)
기초 다지기 5번까지 진행했습니다. kubectl get pods -A 명령어 실행 시 dashboard만 Pending 상태로 계속 유지되어, 그 다음 진행을 못하고 있습니다 ㅠ
미해결
AWS로 쉽고 빠르지만 아주 견고한 서버 환경을 구축하는 방법
user-data 스크립트를 복사하여 진행하였습니다. 깃 클론이 동작하지 않는것 같으며, 몇개의 인스턴스를 새로 만들어 보았으나 똑같은 상황이고, 직접 복사해서 터미널에 붙여 넣으니 정상적으로 클론 & 빌드 됩니다. 헤결해보려했으나 잘 안되서 질문드립니다.. 어디서 실수를 한것일까요? --------------------------------------------------------- cat /var/log/cloud-init-output.log Cloud-init v. 22.2.2 running 'init' at Wed, 25 Sep 2024 05:33:28 +0000. Up 5.06 seconds. ci-info: ++++++++++++++++++++++++++++++++++++++Net device info+++++++++++++++++++++++++++++++++++++++ ci-info: +--------+------+-----------------------------+---------------+--------+-------------------+ ci-info: | Device | Up | Address | Mask | Scope | Hw-Address | ci-info: +--------+------+-----------------------------+---------------+--------+-------------------+ ci-info: | ens5 | True | 10.0.2.183 | 255.255.255.0 | global | 0a:46:c1:75:88:63 | ci-info: | ens5 | True | fe80::846:c1ff:fe75:8863/64 | . | link | 0a:46:c1:75:88:63 | ci-info: | lo | True | 127.0.0.1 | 255.0.0.0 | host | . | ci-info: | lo | True | ::1/128 | . | host | . | ci-info: +--------+------+-----------------------------+---------------+--------+-------------------+ ci-info: ++++++++++++++++++++++++++++Route IPv4 info+++++++++++++++++++++++++++++ ci-info: +-------+-------------+----------+-----------------+-----------+-------+ ci-info: | Route | Destination | Gateway | Genmask | Interface | Flags | ci-info: +-------+-------------+----------+-----------------+-----------+-------+ ci-info: | 0 | 0.0.0.0 | 10.0.2.1 | 0.0.0.0 | ens5 | UG | ci-info: | 1 | 10.0.0.2 | 10.0.2.1 | 255.255.255.255 | ens5 | UGH | ci-info: | 2 | 10.0.2.0 | 0.0.0.0 | 255.255.255.0 | ens5 | U | ci-info: | 3 | 10.0.2.1 | 0.0.0.0 | 255.255.255.255 | ens5 | UH | ci-info: +-------+-------------+----------+-----------------+-----------+-------+ ci-info: +++++++++++++++++++Route IPv6 info+++++++++++++++++++ ci-info: +-------+-------------+---------+-----------+-------+ ci-info: | Route | Destination | Gateway | Interface | Flags | ci-info: +-------+-------------+---------+-----------+-------+ ci-info: | 0 | fe80::/64 | :: | ens5 | U | ci-info: | 2 | local | :: | ens5 | U | ci-info: | 3 | multicast | :: | ens5 | U | ci-info: +-------+-------------+---------+-----------+-------+ Generating public/private ed25519 key pair. Your identification has been saved in /etc/ssh/ssh_host_ed25519_key Your public key has been saved in /etc/ssh/ssh_host_ed25519_key.pub The key fingerprint is: SHA256:fpsHSruoIojFa8d8/mYqtdccZq0Cr3EmxaAgllKrGAI root@ip-10-0-2-183.eu-north-1.compute.internal The key's randomart image is: +--[ED25519 256]--+ |E . | |.... | |=oo . | |=+ . . o | |o. . S . | | o oo. = . | |o. + .o=+B.+ | |+ + = o*O.+o. | | o o.==Booo. | +----[SHA256]-----+ Generating public/private ecdsa key pair. Your identification has been saved in /etc/ssh/ssh_host_ecdsa_key Your public key has been saved in /etc/ssh/ssh_host_ecdsa_key.pub The key fingerprint is: SHA256:/A37KFDhyVfBSIbDAullypcuJM8J98k4VrUgMrAgNBI root@ip-10-0-2-183.eu-north-1.compute.internal The key's randomart image is: +---[ECDSA 256]---+ |E= .o . ooo.. | |+.+ o = *.. o | |. = = B = . | | o +. . | | B O oS.. | | O * . + | | . o . o . | | . o | | .. . | +----[SHA256]-----+ Cloud-init v. 22.2.2 running 'modules:config' at Wed, 25 Sep 2024 05:33:30 +0000. Up 7.27 seconds. Cloud-init v. 22.2.2 running 'modules:final' at Wed, 25 Sep 2024 05:33:31 +0000. Up 7.97 seconds. Amazon Linux 2023 repository 49 MB/s | 27 MB 00:00 Amazon Linux 2023 Kernel Livepatch repository 42 kB/s | 8.3 kB 00:00 Last metadata expiration check: 0:00:01 ago on Wed Sep 25 05:33:43 2024. Dependencies resolved. Nothing to do. Complete! Last metadata expiration check: 0:00:02 ago on Wed Sep 25 05:33:43 2024. Dependencies resolved. ======================================================================================== Package Arch Version Repository Size ======================================================================================== Installing: java-17-amazon-corretto-headless aarch64 1:17.0.12+7-1.amzn2023.1 amazonlinux 91 M Installing dependencies: alsa-lib aarch64 1.2.7.2-1.amzn2023.0.2 amazonlinux 492 k cairo aarch64 1.17.6-2.amzn2023.0.1 amazonlinux 669 k dejavu-sans-fonts noarch 2.37-16.amzn2023.0.2 amazonlinux 1.3 M dejavu-sans-mono-fonts noarch 2.37-16.amzn2023.0.2 amazonlinux 467 k dejavu-serif-fonts noarch 2.37-16.amzn2023.0.2 amazonlinux 1.0 M fontconfig aarch64 2.13.94-2.amzn2023.0.2 amazonlinux 278 k fonts-filesystem noarch 1:2.0.5-12.amzn2023.0.2 amazonlinux 9.5 k freetype aarch64 2.13.2-5.amzn2023.0.1 amazonlinux 413 k google-noto-fonts-common noarch 20201206-2.amzn2023.0.2 amazonlinux 15 k google-noto-sans-vf-fonts noarch 20201206-2.amzn2023.0.2 amazonlinux 492 k graphite2 aarch64 1.3.14-7.amzn2023.0.2 amazonlinux 93 k harfbuzz aarch64 7.0.0-2.amzn2023.0.1 amazonlinux 843 k javapackages-filesystem noarch 6.0.0-7.amzn2023.0.6 amazonlinux 12 k langpacks-core-font-en noarch 3.0-21.amzn2023.0.4 amazonlinux 10 k libX11 aarch64 1.7.2-3.amzn2023.0.4 amazonlinux 648 k libX11-common noarch 1.7.2-3.amzn2023.0.4 amazonlinux 152 k libXau aarch64 1.0.9-6.amzn2023.0.2 amazonlinux 32 k libXext aarch64 1.3.4-6.amzn2023.0.2 amazonlinux 40 k libXrender aarch64 0.9.10-14.amzn2023.0.2 amazonlinux 27 k libbrotli aarch64 1.0.9-4.amzn2023.0.2 amazonlinux 316 k libjpeg-turbo aarch64 2.1.4-2.amzn2023.0.5 amazonlinux 191 k libpng aarch64 2:1.6.37-10.amzn2023.0.6 amazonlinux 121 k libxcb aarch64 1.13.1-7.amzn2023.0.2 amazonlinux 231 k pixman aarch64 0.40.0-3.amzn2023.0.3 amazonlinux 194 k xml-common noarch 0.6.3-56.amzn2023.0.2 amazonlinux 32 k Transaction Summary ======================================================================================== Install 26 Packages Total download size: 99 M Installed size: 273 M Downloading Packages: (1/26): dejavu-sans-fonts-2.37-16.amzn2023.0.2. 16 MB/s | 1.3 MB 00:00 (2/26): cairo-1.17.6-2.amzn2023.0.1.aarch64.rpm 6.4 MB/s | 669 kB 00:00 (3/26): alsa-lib-1.2.7.2-1.amzn2023.0.2.aarch64 4.5 MB/s | 492 kB 00:00 (4/26): dejavu-sans-mono-fonts-2.37-16.amzn2023 15 MB/s | 467 kB 00:00 (5/26): dejavu-serif-fonts-2.37-16.amzn2023.0.2 32 MB/s | 1.0 MB 00:00 (6/26): fonts-filesystem-2.0.5-12.amzn2023.0.2. 402 kB/s | 9.5 kB 00:00 (7/26): fontconfig-2.13.94-2.amzn2023.0.2.aarch 6.3 MB/s | 278 kB 00:00 (8/26): google-noto-fonts-common-20201206-2.amz 876 kB/s | 15 kB 00:00 (9/26): google-noto-sans-vf-fonts-20201206-2.am 19 MB/s | 492 kB 00:00 (10/26): freetype-2.13.2-5.amzn2023.0.1.aarch64 8.6 MB/s | 413 kB 00:00 (11/26): graphite2-1.3.14-7.amzn2023.0.2.aarch6 2.5 MB/s | 93 kB 00:00 (12/26): javapackages-filesystem-6.0.0-7.amzn20 602 kB/s | 12 kB 00:00 (13/26): langpacks-core-font-en-3.0-21.amzn2023 636 kB/s | 10 kB 00:00 (14/26): harfbuzz-7.0.0-2.amzn2023.0.1.aarch64. 14 MB/s | 843 kB 00:00 (15/26): libX11-common-1.7.2-3.amzn2023.0.4.noa 5.8 MB/s | 152 kB 00:00 (16/26): libX11-1.7.2-3.amzn2023.0.4.aarch64.rp 12 MB/s | 648 kB 00:00 (17/26): libXau-1.0.9-6.amzn2023.0.2.aarch64.rp 1.1 MB/s | 32 kB 00:00 (18/26): libXrender-0.9.10-14.amzn2023.0.2.aarc 1.5 MB/s | 27 kB 00:00 (19/26): libXext-1.3.4-6.amzn2023.0.2.aarch64.r 1.2 MB/s | 40 kB 00:00 (20/26): libbrotli-1.0.9-4.amzn2023.0.2.aarch64 6.1 MB/s | 316 kB 00:00 (21/26): libjpeg-turbo-2.1.4-2.amzn2023.0.5.aar 3.7 MB/s | 191 kB 00:00 (22/26): libpng-1.6.37-10.amzn2023.0.6.aarch64. 2.6 MB/s | 121 kB 00:00 (23/26): libxcb-1.13.1-7.amzn2023.0.2.aarch64.r 5.2 MB/s | 231 kB 00:00 (24/26): xml-common-0.6.3-56.amzn2023.0.2.noarc 1.7 MB/s | 32 kB 00:00 (25/26): pixman-0.40.0-3.amzn2023.0.3.aarch64.r 4.1 MB/s | 194 kB 00:00 (26/26): java-17-amazon-corretto-headless-17.0. 79 MB/s | 91 MB 00:01 -------------------------------------------------------------------------------- Total 69 MB/s | 99 MB 00:01 [ec2-user@ip-10-0-2-183 ~]$ vi /var/log/cloud-init-output.log [ec2-user@ip-10-0-2-183 ~]$ ping github.com PING github.com (140.82.121.3) 56(84) bytes of data. 64 bytes from lb-140-82-121-3-fra.github.com (140.82.121.3): icmp_seq=1 ttl=49 time=21.3 ms 64 bytes from lb-140-82-121-3-fra.github.com (140.82.121.3): icmp_seq=2 ttl=49 time=21.4 ms 64 bytes from lb-140-82-121-3-fra.github.com (140.82.121.3): icmp_seq=3 ttl=49 time=21.4 ms ^C --- github.com ping statistics --- 3 packets transmitted, 3 received, 0% packet loss, time 2004ms rtt min/avg/max/mdev = 21.284/21.366/21.423/0.059 ms [ec2-user@ip-10-0-2-183 ~]$ ls -l total 0 [ec2-user@ip-10-0-2-183 ~]$
미해결
김영한의 실전 자바 - 중급 1편
[질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예/아니오) 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오) 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오) [질문 내용] equals는 매개변수를 받으면 -> User2 클래스로 변환 (다운캐스팅) -> 만들어진 User2객체에서 id 추출 -> 그걸 User2 id와 비교 정리하면 들어온 Object를 User2로 바꾸어 id를 확인하는 메서드인데 User2를 User2로 다운캐스팅하여 User2와 비교 후 User1 과 비교하는 로직 아닌가요? 어느부분이 잘못된건지 모르겠습니다ㅜㅜ
미해결
실전! 스프링 부트와 JPA 활용2 - API 개발과 성능 최적화
질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요. ========================================= [질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예) 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예) 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (아니오) [질문 내용] Lazy 강제 초기화 시, order.getMember().getName() 는 @GetMapping("/api/v1/orders") public List<Order> listV1() { List<Order> orders = orderRepository.findAll(new OrderSearch()); for (Order order : orders) { order.getMember().getName(); ... } return orders; } 다음과 같은 결과를 기대합니다. { "id": 1, "member":{ "name": "memberA", }, ... } 하지만 order.getMember() 까지만 초기화 되어, 다음과 같은 결과가 나옵니다. { "id": 1, "member":{ "id": 1, "name": "memberA", "address":{ "city": "주소", "street": "거리", "zipcode": "우편번호" } }, ... } Intelij 에서도 'Member. getName()'의 결과가 무시되었습니다 라고 에러가 뜨는데 그 이유가 궁금합니다.
해결됨
김영한의 실전 자바 - 중급 2편
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요. 1. 강의 내용과 관련된 질문을 남겨주세요. 2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요. (자주 하는 질문 링크: https://bit.ly/3fX6ygx) 3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요. (질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG) 질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요. ========================================= [질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예/아니오) 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오) 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오) [질문 내용] 안녕하세요. 강의를 듣다가 질문이 생겨서 질문을 남깁니다. 마지막에서 잘못된 타입의 인수를 전달할 때 해결 방법으로 instance-of가 생각나더라고요. 근데 이 방법이 있어도 안 한 이유가, IntegrBox랑 ObjectBox랑 대조 설명 하시면서, 코드의 재사용성, 코드의 안정성을 말씀하시던데, instance-of를 하게 되면(클래스를 만들든 메서드로 만들든) 타입마다 계속 비교해서 코드가 한없이 길어지기 때문에, 코드의 재사용X 이기 때문에 안 하신건가요? 추가1 아니면 다른 이유가 있는 것 인가요? 답변 부탁 드립니다.
미해결
김영한의 실전 자바 - 고급 1편, 멀티스레드와 동시성
public class BoundedQueueV4 implements BoundedQueue { private final Lock lock = new ReentrantLock(); private final Condition condition = lock.newCondition(); private final Queue<String> queue = new ArrayDeque<>(); private final int max; public BoundedQueueV4(int max) { this.max = max; } @Override public void put(String data) { lock.lock(); try { while (queue.size() == max) { log("[put] 큐가 가득 참, 생산자 대기"); try { condition.await(); log("[put] 생산자 깨어남"); } catch (InterruptedException e) { throw new RuntimeException(e); } } queue.offer(data); log("[put] 생산자 데이터 저장, notify() 호출"); condition.signal(); } finally { lock.unlock(); } } @Override public String take() { lock.lock(); try { while (queue.isEmpty()) { log("[take] 큐에 데이터가 없음, 소비자 대기"); try { condition.await(); log("[take] 소비자 깨어남"); } catch (InterruptedException e) { throw new RuntimeException(e); } } String data = queue.poll(); log("[take] 소비자 데이터 획득, notify() 호출"); condition.signal(); return data; } finally { lock.unlock(); } } @Override public String toString() { return queue.toString(); } } synchronized를 사용 했을때는 객체가 기본적으로 가지고 있는 락과 스레드 대기 공간을 사용하는거 같습니다. 궁금한점은 ReentrantLock 객체를 생성하고 Condition 객체를 생성하면 BoundedQueueV4 내부에 또 다른 락과 스레드 대기 공간이 생성 되는건가요?
미해결
김영한의 실전 자바 - 중급 1편
[질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예) 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예) 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예) [질문 내용] 강의중에 나온 이부분에 관해 질문이 있습니다. memberB.getAddress().setValue("부산"); memberB.setAddress(new ImmutableAddress("부산")); 여기서, 멤버B의 주소를 바꿔 줄때, memberB.getAddress().setValue("부산"); 를 하셨는데, 그냥 memberB.setValue("부산"); 라고 하면 안돼는 이유가 무엇인지 너무 궁금 합니다
미해결
김영한의 실전 자바 - 중급 1편
========================================= [질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예/아니오) 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오) 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오) [질문 내용] 자바 코테 준비하는데 위 함수들을 외우는 꿀팁같은거 없나요?
해결됨
실전! 스프링 부트와 JPA 활용2 - API 개발과 성능 최적화
JPA 기본편 강의 내용을 까먹어서 질문드립니다. MemberService의 update()에서 반환 타입을 void가 아닌 Member로 한 경우, controller에서 해당 Member를 반환받았을 때 이 Member는 영속성 컨텍스트가 관리하는 엔티티가 아닌건가요? 아니면 service와는 다른 영속성 컨텍스트에서 관리되는 엔티티인건가요?
미해결
실전! 스프링 부트와 JPA 활용2 - API 개발과 성능 최적화
MemberApiController의 saveMemberV2()에서 @Valid에 의해 검증 오류가 발생한 경우에도 오류에 대한 api를 내려줘야 하잖아요. 이때에도 오류가 없는 경우와 마찬가지로 CreateMemberResponse를 반환해야 하는 건가요? 검증 오류가 발생했을 때 api를 어떻게 전달해야하는지를 잘 모르겠습니다.
해결됨
PZM기반 실무중심 백엔드 부트캠프(프리트레이닝)
안녕하세요~ 선생님 강의 정말 재미있게 듣고 있습니다. 49강 강의를 듣는 중에 restful api json 객체 한글 깨짐 현상이 있습니다. 혹시 chrome 문제였나 싶어 postman 으로도 띄워봤지만 여전합니다.ㅠㅠㅠ 구글 찾아가며 해결해보려고 했지만 잘 해결되지 않습니다. // http://localhost:8081/myweb/rest @RequestMapping("/rest" ) public List<String> rest(HttpServletResponse response){ response.setCharacterEncoding("UTF-8"); List<String> list=new ArrayList<>(); list.add("스프링 프레임워크"); list.add("잘 하면"); list.add("된다"); System.out.println("Returning list: " + list); return list; // rest.jsp <-- 뷰를 만들면 된다.(X) : JSON -> [{ key:value, , ,}.{ },{ }] } System.out.println("Returning list: " + list); 이 부분 콘솔에 찍힌 값도 Returning list: [�뒪�봽留� �봽�젅�엫�썙�겕, �옒 �븯硫�, �맂�떎] 이렇게 나옵니다. 수정: // http://localhost:8081/myweb/rest @RequestMapping("/rest" ) public List<String> rest(){ List<String> list=new ArrayList<>(); list.add("스프링 프레임워크"); list.add("잘 하면"); list.add("된다"); System.out.println("Returning list: " + list); System.out.println("안녕"); return list; // rest.jsp <-- 뷰를 만들면 된다.(X) : JSON -> [{ key:value, , ,}.{ },{ }] } System.out.println("안녕"); 이 부분도 깨져서 나와용. ㅠㅠㅠㅠㅠ 감사합니다~ package com.example.controller; import com.example.entity.Book; import com.example.repository.BookMapper; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Controller; import org.springframework.ui.Model; import org.springframework.web.bind.annotation.*; import java.util.ArrayList; import java.util.List; @RestController public class SpringRestController { // http://localhost:8081/myweb/rest @RequestMapping("/rest") public List<String> rest(){ List<String> list=new ArrayList<>(); list.add("스프링 프레임워크"); list.add("잘 하면"); list.add("된다"); return list; // rest.jsp <-- 뷰를 만들면 된다.(X) : JSON -> [{ key:value, , ,}.{ },{ }] } }
해결됨
실전! 스프링 부트와 JPA 활용2 - API 개발과 성능 최적화
타임리프를 사용했을 때는 회원가입 시에 @GetMapping을 사용하고 뷰 템플릿을 반환하도록 했는데요. api로 개발 시에는 회원가입 폼을 요청하는 url을 따로 만들지 않아도 되는 건가요? 이 경우에는 어떻게 처리되나요..?
미해결
스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
[질문 템플릿] 1. 강의 내용과 관련된 질문인가요? 예 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? 예 3. 질문 잘하기 메뉴얼을 읽어보셨나요? 예 [질문 내용] MemoryMemberRepository 클래스에는 생성자가 없는데 어떻게 스프링 컨테이너에 등록이 되는거죠? 그리고 MemberRepository의 구현체가 몇가지 더 있는 경우 MemberService의 생성자 파라미터에는 어떤 구현체가 들어가나요?
미해결
AWS로 쉽고 빠르지만 아주 견고한 서버 환경을 구축하는 방법
위는 현재 설정상태이고, 컨테이너도 잘 실행되는 상태에서 아래처럼 조회가 장바구니 서비스만 실패하는 상황입니다 (장바구니 서비스 배포 시 사용한 명령어 docker run --rm -d -p 8000:8000 --network goopang-network -e "msa.product-service.url=product-service-container:8001" -e "msa.user-service.url=user-service-container:8002" --name cart-service-container -t 009160049723.dkr.ecr.ap-northeast-2.amazonaws.com/goopang-cart-servic e) 메시지는 거부되었다는 메시지이긴 한데.. 8000번은 정상적으로 설정한 것 같거든요, 컨테이너도 잘 실행되고있구요 (API 요청했을 때 컨테이너에 로그가 실시간으로 찍히는지도 봤는데 별다른 로그가 찍히지는 않는것 같아보입니다) 혹시 살펴볼 것이 있을까요?
미해결
나도코딩의 자바 기본편 - 풀코스 (20시간)
클래스 객체 사용 X 클래스 객체 사용 O 먼저 결론적으로 말씀드리면 제품의 정보를 일일이 정의한 것과 클래스 객체를 통해 코드를 작성한 것의 차이를 잘 모르겠습니다. 제가 챕터 7의 1번째 강의를 중에서 블랙박스의 정보는 이보다 실제로 많기 때문에 이 모든 것을 일일이 정의한다면 코드가 방대해 진다고 들었습니다. 그런데 제가 실습하고 나서 코드를 살펴보니 클래스 객체에 대한 필요성을 느끼지 못하였습니다. 알려주신다면 감사하겠습니다.
해결됨
비전공자도 이해할 수 있는 Docker 입문/실전
안녕하세요 '[실습] 백엔드 프로젝트(Spring Boot) 프로젝트를 Docker로 실행시키기'에서 그대로 따라 했는데 이렇게 RestController가 인식이 안 됩니다 build.gradle이고 이걸 다시 run했는데 동일합니다 아래는 run 후 콘솔에 찍히는 내용입니다 확인 후 답변 부탁드립니다! 오후 4:51:31: Executing... > Task :help Welcome to Gradle 8.10.1. To run a build, run gradle <task> ... To see a list of available tasks, run gradle tasks To see more detail about a task, run gradle help --task <task> To see a list of command-line options, run gradle --help For more detail on using Gradle, see https://docs.gradle.org/8.10.1/userguide/command_line_interface.html For troubleshooting, visit https://help.gradle.org Deprecated Gradle features were used in this build, making it incompatible with Gradle 9.0. You can use '--warning-mode all' to show the individual deprecation warnings and determine if they come from your own scripts or plugins. For more on this, please refer to https://docs.gradle.org/8.10.1/userguide/command_line_interface.html#sec:command_line_warnings in the Gradle documentation. BUILD SUCCESSFUL in 451ms 1 actionable task: 1 executed 오후 4:51:32: Execution finished. 시키기
미해결
김영한의 실전 자바 - 고급 1편, 멀티스레드와 동시성
@Override public synchronized void put(String data) { while (queue.size() == max) { log("[put] 큐가 가득 참, 생산자 대기"); try { wait(); // RUNNABLE -> WAITING, 락 반납 log("[put] 생산자 깨어남"); } catch (InterruptedException e) { throw new RuntimeException(e); } } queue.offer(data); log("[put] 생산자 데이터 저장, notify() 호출"); notify(); // 대기 스레드, WAIT -> BLOCKED } 생산자 스레드가 먼저 실행되면 마지막 스레드는 wait() 호출 후 스레드 대기 집합에서 관리 되는걸로 이해했습니다. 이 상태에서 소비자 스레드가 실행되면 데이터를 처리하고 마지막에 notify()를 호출하면 스레드 대기 집합에서 관리 되던 생산자 스레드가 깨어날텐대 여기서 wait(); 바로 다음 코드를 실행하지 않고 바로 BLOCKED 상태가 되는건가요? BLOCKED 상태에 있다가 소비자 스레드가 락을 반납 했을때 BLOCKED 상태가 풀리면서 wait() 바로 다음 코드를 실행한다고 이해하면 될까요?
미해결
김영한의 자바 입문 - 코드로 시작하는 자바 첫걸음
질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요. ========================================= [질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예) 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예) 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예) [질문 내용] 영상 기준 4:46초쯤에 void 메서드는 return이 생략되어도 자바 컴파일러가 마지막줄에 넣어준다고 하셨는데 .class로 컴파일된 파일을 확인해보니 반대로 적어두었던 return도 생략이 되어있습니다. 자바 버전이 올라가면서 바뀐걸까요 아니면 컴파일된 파일이 아닌 파일을 실행 시에 return이 추가가 되는건가요?
해결됨
자바 ORM 표준 JPA 프로그래밍 - 기본편
[질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예/아니오) 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오) 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오) [질문 내용] 여기에 질문 내용을 남겨주세요. // flush 자동 호출 commit, query int resultCnt = em.createQuery("update Member m set m.age = 20") .executeUpdate(); Member findMember = em.find(Member.class, member1.getId()); System.out.println("findMember.getAge() = " + findMember.getAge()); 이 부분을 보시면 영한님의 12분 코드와 같잖아요? 이때 Member findMember = em.find(Member.class, member1.getId()); 의 findember를 출력할 때, 영속성 컨텍스트 때문에 update문의 age가 20인 것이 반영이 안 돼야 하는데 제 환경에서는 반영이 되는 걸로 나옵니다..! 정리하면, em.clear() 를 하지 않았을 때는 age가 0이 나와야 하지만, em.clear() 를 하지 않았음에도 불구하고 age가 20이 나옵니다 물론 아래처럼 member의 age 초기값을 0으로 지정해줬습니다 Member member1 = new Member(); member1.setUsername("회원1"); member1.setAge(0); member1.changeTeam(teamA); em.persist(member1); 이유가 무엇일까요??
미해결
재고시스템으로 알아보는 동시성이슈 해결방법
안녕하세요. Pessimistic Lock 소스에서 각각의 테스트 하나하나는 통과하는데요. 테스트 코드 전체로 돌리면 에러가 나더라고요. public interface StockRepository extends JpaRepository<Stock, Long> { @Lock(LockModeType.PESSIMISTIC_WRITE) @Query("select s from Stock s where s.id = :id") Stock findByIdWithPessimisticLock(@Param("id") Long id); } StockServiceTest.java package com.example.stock.service; import com.example.stock.domain.Stock; import com.example.stock.repository.StockRepository; import org.junit.jupiter.api.*; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.test.context.SpringBootTest; import java.util.concurrent.CountDownLatch; import java.util.concurrent.ExecutorService; import java.util.concurrent.Executors; import static org.assertj.core.api.Assertions.assertThat; @SpringBootTest class StockServiceTest { @Autowired private PessimisticLockStockService stockService; @Autowired private StockRepository stockRepository; @BeforeEach public void before() { stockRepository.saveAndFlush(new Stock(1L, 100L)); } @AfterEach public void after() { stockRepository.deleteAll(); } @Test @DisplayName("재고1개 감소 테스트") public void 재고감소() { stockService.decrease(1L, 1L); //100 - 1 = 99 Stock stock = stockRepository.findById(1L).orElseThrow(); assertThat(stock.getQuantity()).isEqualTo(99L); } @Test @DisplayName("동시에 100개 요청 테스트") public void 동시에_100개_요청() throws InterruptedException { int threadCount = 100; ExecutorService executorService = Executors.newFixedThreadPool(32); CountDownLatch countDownLatch = new CountDownLatch(threadCount); for (int i = 0; i < threadCount; i++) { executorService.submit(() -> { try { stockService.decrease(1L, 1L); } finally { countDownLatch.countDown(); } }); } countDownLatch.await(); Stock stock = stockRepository.findById(1L).orElseThrow(); assertThat(stock.getQuantity()).isEqualTo(0L); } } 이런 오류가 나는데 @BeforeEach에서 새로 등록하고 @AfterEach에서 delete를 해줘서 각각의 테스트에 영향이 없을거 같은데 왜 나는지 잘 모르겠어요 ㅠ github : https://github.com/nhs0912/stock